@aws-cdk/aws-bedrock-agentcore-alpha 2.235.1-alpha.0 → 2.237.0-alpha.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 (54) hide show
  1. package/.jsii +1709 -625
  2. package/.jsii.tabl.json.gz +0 -0
  3. package/.warnings.jsii.js +41 -1
  4. package/README.md +275 -14
  5. package/lib/common/types.d.ts +35 -0
  6. package/lib/common/types.js +41 -0
  7. package/lib/gateway/gateway-base.d.ts +2 -2
  8. package/lib/gateway/gateway-base.js +4 -4
  9. package/lib/gateway/gateway.d.ts +59 -7
  10. package/lib/gateway/gateway.js +103 -7
  11. package/lib/gateway/inbound-auth/authorizer.d.ts +25 -0
  12. package/lib/gateway/inbound-auth/authorizer.js +17 -7
  13. package/lib/gateway/inbound-auth/custom-claim.d.ts +50 -0
  14. package/lib/gateway/inbound-auth/custom-claim.js +127 -0
  15. package/lib/gateway/interceptor.d.ts +137 -0
  16. package/lib/gateway/interceptor.js +143 -0
  17. package/lib/gateway/outbound-auth/api-key.js +1 -1
  18. package/lib/gateway/outbound-auth/credential-provider.js +1 -1
  19. package/lib/gateway/protocol.js +2 -2
  20. package/lib/gateway/targets/schema/api-schema.js +7 -6
  21. package/lib/gateway/targets/schema/tool-schema.js +7 -6
  22. package/lib/gateway/targets/target-base.js +1 -1
  23. package/lib/gateway/targets/target-configuration.js +5 -5
  24. package/lib/gateway/targets/target.d.ts +2 -1
  25. package/lib/gateway/targets/target.js +11 -4
  26. package/lib/index.d.ts +5 -1
  27. package/lib/index.js +9 -2
  28. package/lib/memory/memory-strategy.d.ts +19 -0
  29. package/lib/memory/memory-strategy.js +41 -2
  30. package/lib/memory/memory.d.ts +5 -4
  31. package/lib/memory/memory.js +16 -9
  32. package/lib/memory/strategies/managed-strategy.d.ts +26 -0
  33. package/lib/memory/strategies/managed-strategy.js +46 -4
  34. package/lib/memory/strategies/self-managed-strategy.js +1 -1
  35. package/lib/network/network-configuration.js +4 -4
  36. package/lib/runtime/inbound-auth/custom-claim.d.ts +50 -0
  37. package/lib/runtime/inbound-auth/custom-claim.js +127 -0
  38. package/lib/runtime/{runtime-authorizer-configuration.d.ts → inbound-auth/runtime-authorizer-configuration.d.ts} +10 -3
  39. package/lib/runtime/inbound-auth/runtime-authorizer-configuration.js +183 -0
  40. package/lib/runtime/runtime-artifact.js +1 -1
  41. package/lib/runtime/runtime-base.d.ts +2 -2
  42. package/lib/runtime/runtime-base.js +4 -4
  43. package/lib/runtime/runtime-endpoint-base.d.ts +2 -2
  44. package/lib/runtime/runtime-endpoint-base.js +4 -4
  45. package/lib/runtime/runtime-endpoint.d.ts +2 -1
  46. package/lib/runtime/runtime-endpoint.js +11 -4
  47. package/lib/runtime/runtime.d.ts +3 -2
  48. package/lib/runtime/runtime.js +11 -4
  49. package/lib/tools/browser.d.ts +5 -5
  50. package/lib/tools/browser.js +22 -14
  51. package/lib/tools/code-interpreter.d.ts +5 -5
  52. package/lib/tools/code-interpreter.js +16 -8
  53. package/package.json +19 -11
  54. package/lib/runtime/runtime-authorizer-configuration.js +0 -159
@@ -5,6 +5,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  const aws_cdk_lib_1 = require("aws-cdk-lib");
6
6
  const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
7
  const s3_assets = require("aws-cdk-lib/aws-s3-assets");
8
+ const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
8
9
  const base_schema_1 = require("./base-schema");
9
10
  /**
10
11
  * Error thrown when an ApiSchema is not properly initialized.
@@ -24,7 +25,7 @@ class ApiSchemaError extends Error {
24
25
  * Represents the concept of an API Schema for a Gateway Target.
25
26
  */
26
27
  class ApiSchema extends base_schema_1.TargetSchema {
27
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ApiSchema", version: "2.235.1-alpha.0" };
28
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ApiSchema", version: "2.237.0-alpha.0" };
28
29
  /**
29
30
  * Creates an API Schema from a local file.
30
31
  * @param path - the path to the local file containing the OpenAPI schema for the action group
@@ -82,7 +83,7 @@ exports.ApiSchema = ApiSchema;
82
83
  class AssetApiSchema extends ApiSchema {
83
84
  path;
84
85
  options;
85
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.AssetApiSchema", version: "2.235.1-alpha.0" };
86
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.AssetApiSchema", version: "2.237.0-alpha.0" };
86
87
  asset;
87
88
  constructor(path, options = {}) {
88
89
  super();
@@ -108,7 +109,7 @@ class AssetApiSchema extends ApiSchema {
108
109
  if (!this.asset) {
109
110
  // Note: Validation is handled at the target configuration level where we know the schema type
110
111
  // and whether validation is enabled
111
- this.asset = new s3_assets.Asset(scope, 'Schema', {
112
+ this.asset = new s3_assets.Asset(scope, `Schema${(0, helpers_internal_1.md5hash)(this.path)}`, {
112
113
  path: this.path,
113
114
  ...this.options,
114
115
  });
@@ -144,7 +145,7 @@ exports.AssetApiSchema = AssetApiSchema;
144
145
  */
145
146
  class InlineApiSchema extends ApiSchema {
146
147
  schema;
147
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.InlineApiSchema", version: "2.235.1-alpha.0" };
148
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.InlineApiSchema", version: "2.237.0-alpha.0" };
148
149
  constructor(schema) {
149
150
  super(undefined, undefined, schema);
150
151
  this.schema = schema;
@@ -174,7 +175,7 @@ exports.InlineApiSchema = InlineApiSchema;
174
175
  class S3ApiSchema extends ApiSchema {
175
176
  location;
176
177
  bucketOwnerAccountId;
177
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.S3ApiSchema", version: "2.235.1-alpha.0" };
178
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.S3ApiSchema", version: "2.237.0-alpha.0" };
178
179
  constructor(location, bucketOwnerAccountId) {
179
180
  super(location, bucketOwnerAccountId, undefined);
180
181
  this.location = location;
@@ -204,4 +205,4 @@ class S3ApiSchema extends ApiSchema {
204
205
  }
205
206
  }
206
207
  exports.S3ApiSchema = S3ApiSchema;
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXNjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFwaS1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZDQUFrQztBQUNsQyxpREFBbUQ7QUFFbkQsdURBQXVEO0FBRXZELCtDQUE2QztBQUU3Qzs7R0FFRztBQUNILE1BQU0sY0FBZSxTQUFRLEtBQUs7SUFDYTtJQUE3QyxZQUFZLE9BQWUsRUFBa0IsS0FBYztRQUN6RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFENEIsVUFBSyxHQUFMLEtBQUssQ0FBUztRQUV6RCxJQUFJLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDO0tBQzlCO0NBQ0Y7QUFFRDs7K0VBRStFO0FBQy9FOztHQUVHO0FBQ0gsTUFBc0IsU0FBVSxTQUFRLDBCQUFZOztJQUNsRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQVk7UUFDdkMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNqQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBYztRQUNyQyxPQUFPLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3BDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQWUsRUFBRSxTQUFpQixFQUFFLG9CQUE2QjtRQUN4RixPQUFPLElBQUksV0FBVyxDQUNwQjtZQUNFLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtZQUM3QixTQUFTLEVBQUUsU0FBUztTQUNyQixFQUNELG9CQUFvQixDQUNyQixDQUFDO0tBQ0g7SUFFRDs7O09BR0c7SUFDYSxNQUFNLENBQVk7SUFFbEM7OztPQUdHO0lBQ2EsWUFBWSxDQUFVO0lBRXRDOztPQUVHO0lBQ2Esb0JBQW9CLENBQVU7SUFFOUMsWUFBc0IsTUFBaUIsRUFBRSxvQkFBNkIsRUFBRSxZQUFxQjtRQUMzRixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUks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QUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2FBQ3RGO1NBQ0YsQ0FBQztLQUNIO0lBRU0sSUFBSSxDQUFDLEtBQWdCO1FBQzFCLElBQUksS0FBSyxFQUFFLENBQUM7UUFDWixDQUFDO0tBRUY7SUFFTSxzQkFBc0IsQ0FBQyxJQUFXO1FBQ3ZDLGVBQUssQ0FBQyxjQUFjLENBQUM7WUFDbkIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7WUFDekIsWUFBWSxFQUFFLENBQUMsT0FBTyxpQkFBRyxDQUFDLFNBQVMsU0FBUyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ25HLENBQUMsQ0FBQztLQUNKOztBQTVCSCxrQ0E2QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBd3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBHcmFudCwgSVJvbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElCdWNrZXQsIExvY2F0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHMzX2Fzc2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgVGFyZ2V0U2NoZW1hIH0gZnJvbSAnLi9iYXNlLXNjaGVtYSc7XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gYW4gQXBpU2NoZW1hIGlzIG5vdCBwcm9wZXJseSBpbml0aWFsaXplZC5cbiAqL1xuY2xhc3MgQXBpU2NoZW1hRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgcHVibGljIHJlYWRvbmx5IGNhdXNlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ0FwaVNjaGVtYUVycm9yJztcbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgQVBJIFNDSEVNQSBDTEFTU1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBjb25jZXB0IG9mIGFuIEFQSSBTY2hlbWEgZm9yIGEgR2F0ZXdheSBUYXJnZXQuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcGlTY2hlbWEgZXh0ZW5kcyBUYXJnZXRTY2hlbWEge1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBBUEkgU2NoZW1hIGZyb20gYSBsb2NhbCBmaWxlLlxuICAgKiBAcGFyYW0gcGF0aCAtIHRoZSBwYXRoIHRvIHRoZSBsb2NhbCBmaWxlIGNvbnRhaW5pbmcgdGhlIE9wZW5BUEkgc2NoZW1hIGZvciB0aGUgYWN0aW9uIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Mb2NhbEFzc2V0KHBhdGg6IHN0cmluZyk6IEFzc2V0QXBpU2NoZW1hIHtcbiAgICByZXR1cm4gbmV3IEFzc2V0QXBpU2NoZW1hKHBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gQVBJIFNjaGVtYSBmcm9tIGFuIGlubGluZSBzdHJpbmcuXG4gICAqIEBwYXJhbSBzY2hlbWEgLSB0aGUgSlNPTiBvciBZQU1MIHBheWxvYWQgZGVmaW5pbmcgdGhlIHNjaGVtYSAoT3BlbkFQSSBvciBTbWl0aHkpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbmxpbmUoc2NoZW1hOiBzdHJpbmcpOiBJbmxpbmVBcGlTY2hlbWEge1xuICAgIHJldHVybiBuZXcgSW5saW5lQXBpU2NoZW1hKHNjaGVtYSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBBUEkgU2NoZW1hIGZyb20gYW4gUzMgRmlsZVxuICAgKiBAcGFyYW0gYnVja2V0IC0gdGhlIGJ1Y2tldCBjb250YWluaW5nIHRoZSBsb2NhbCBmaWxlIGNvbnRhaW5pbmcgdGhlIE9wZW5BUEkgc2NoZW1hIGZvciB0aGUgYWN0aW9uIGdyb3VwXG4gICAqIEBwYXJhbSBvYmplY3RLZXkgLSBvYmplY3Qga2V5IGluIHRoZSBidWNrZXRcbiAgICogQHBhcmFtIGJ1Y2tldE93bmVyQWNjb3VudElkIC0gb3B0aW9uYWwgVGhlIGFjY291bnQgSUQgb2YgdGhlIEFtYXpvbiBTMyBidWNrZXQgb3duZXIuIFRoaXMgSUQgaXMgdXNlZCBmb3IgY3Jvc3MtYWNjb3VudCBhY2Nlc3MgdG8gdGhlIGJ1Y2tldC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVMzRmlsZShidWNrZXQ6IElCdWNrZXQsIG9iamVjdEtleTogc3RyaW5nLCBidWNrZXRPd25lckFjY291bnRJZD86IHN0cmluZyk6IFMzQXBpU2NoZW1hIHtcbiAgICByZXR1cm4gbmV3IFMzQXBpU2NoZW1hKFxuICAgICAge1xuICAgICAgICBidWNrZXROYW1lOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgb2JqZWN0S2V5OiBvYmplY3RLZXksXG4gICAgICB9LFxuICAgICAgYnVja2V0T3duZXJBY2NvdW50SWQsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgUzMgbG9jYXRpb24gb2YgdGhlIEFQSSBzY2hlbWEgZmlsZSwgaWYgdXNpbmcgYW4gUzMtYmFzZWQgc2NoZW1hLlxuICAgKiBDb250YWlucyB0aGUgYnVja2V0IG5hbWUgYW5kIG9iamVjdCBrZXkgaW5mb3JtYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgczNGaWxlPzogTG9jYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBpbmxpbmUgT3BlbkFQSSBzY2hlbWEgZGVmaW5pdGlvbiBhcyBhIHN0cmluZywgaWYgdXNpbmcgYW4gaW5saW5lIHNjaGVtYS5cbiAgICogQ2FuIGJlIGluIEpTT04gb3IgWUFNTCBmb3JtYXQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5saW5lU2NoZW1hPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudCBJRCBvZiB0aGUgUzMgYnVja2V0IG93bmVyIGZvciBjcm9zcy1hY2NvdW50IGFjY2Vzc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1Y2tldE93bmVyQWNjb3VudElkPzogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihzM0ZpbGU/OiBMb2NhdGlvbiwgYnVja2V0T3duZXJBY2NvdW50SWQ/OiBzdHJpbmcsIGlubGluZVNjaGVtYT86IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zM0ZpbGUgPSBzM0ZpbGU7XG4gICAgdGhpcy5pbmxpbmVTY2hlbWEgPSBpbmxpbmVTY2hlbWE7XG4gICAgdGhpcy5idWNrZXRPd25lckFjY291bnRJZCA9IGJ1Y2tldE93bmVyQWNjb3VudElkO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBhcyBDRk4gcHJvcGVydGllc1xuICAgKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBfcmVuZGVyKCk6IGFueTtcbn1cblxuLyoqXG4gKiBBUEkgU2NoZW1hIGZyb20gYSBsb2NhbCBhc3NldC5cbiAqXG4gKiBUaGUgYXNzZXQgaXMgdXBsb2FkZWQgdG8gYW4gUzMgc3RhZ2luZyBidWNrZXQsIHRoZW4gbW92ZWQgdG8gaXRzIGZpbmFsIGxvY2F0aW9uXG4gKiBieSBDbG91ZEZvcm1hdGlvbiBkdXJpbmcgZGVwbG95bWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIEFzc2V0QXBpU2NoZW1hIGV4dGVuZHMgQXBpU2NoZW1hIHtcbiAgcHJpdmF0ZSBhc3NldD86IHMzX2Fzc2V0cy5Bc3NldDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHBhdGg6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBzM19hc3NldHMuQXNzZXRPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGZpbGUgcGF0aCBmb3IgaW50ZXJuYWwgdmFsaWRhdGlvbiBwdXJwb3Nlc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfZ2V0RmlsZVBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIHRoaXMgQVBJIHNjaGVtYSB0byBhIGNvbnN0cnVjdCBzY29wZS5cbiAgICogVGhpcyBtZXRob2QgaW5pdGlhbGl6ZXMgdGhlIFMzIGFzc2V0IGlmIGl0IGhhc24ndCBiZWVuIGluaXRpYWxpemVkIHlldC5cbiAgICogTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHJlbmRlcmluZyB0aGUgc2NoZW1hIGFzIENGTiBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgY29uc3RydWN0IHNjb3BlIHRvIGJpbmQgdG9cbiAgICovXG4gIHB1YmxpYyBiaW5kKHNjb3BlOiBDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICAvLyBJZiB0aGUgc2FtZSBBc3NldEFwaVNjaGVtYSBpcyB1c2VkIG11bHRpcGxlIHRpbWVzLCByZXRhaW4gb25seSB0aGUgZmlyc3QgaW5zdGFudGlhdGlvblxuICAgIGlmICghdGhpcy5hc3NldCkge1xuICAgICAgLy8gTm90ZTogVmFsaWRhdGlvbiBpcyBoYW5kbGVkIGF0IHRoZSB0YXJnZXQgY29uZmlndXJhdGlvbiBsZXZlbCB3aGVyZSB3ZSBrbm93IHRoZSBzY2hlbWEgdHlwZVxuICAgICAgLy8gYW5kIHdoZXRoZXIgdmFsaWRhdGlvbiBpcyBlbmFibGVkXG4gICAgICB0aGlzLmFzc2V0ID0gbmV3IHMzX2Fzc2V0cy5Bc3NldChzY29wZSwgJ1NjaGVtYScsIHtcbiAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICB9KTtcbiAgICAgIC8vIE5vdGU6IFBlcm1pc3Npb25zIHdpbGwgYmUgZ3JhbnRlZCBieSB0aGUgR2F0ZXdheSB0YXJnZXQgY29uc3RydWN0IHdoZW4gYWRkaW5nIHRoZSB0YXJnZXRcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IGFzIENGTiBwcm9wZXJ0aWVzXG4gICAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LlxuICAgKi9cbiAgcHVibGljIF9yZW5kZXIoKTogYW55IHtcbiAgICBpZiAoIXRoaXMuYXNzZXQpIHtcbiAgICAgIHRocm93IG5ldyBBcGlTY2hlbWFFcnJvcihcbiAgICAgICAgJ0FwaVNjaGVtYSBtdXN0IGJlIGJvdW5kIHRvIGEgc2NvcGUgYmVmb3JlIHJlbmRlcmluZy4gQ2FsbCBiaW5kKCkgZmlyc3QuJyxcbiAgICAgICAgJ0Fzc2V0IG5vdCBpbml0aWFsaXplZCcsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzMzoge1xuICAgICAgICB1cmk6IGBzMzovLyR7dGhpcy5hc3NldC5zM0J1Y2tldE5hbWV9LyR7dGhpcy5hc3NldC5zM09iamVjdEtleX1gLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdyYW50UGVybWlzc2lvbnNUb1JvbGUocm9sZTogSVJvbGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hc3NldCkge1xuICAgICAgdGhpcy5hc3NldC5ncmFudFJlYWQocm9sZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLyoqXG4gKiBDbGFzcyB0byBkZWZpbmUgYW4gQVBJIFNjaGVtYSBmcm9tIGFuIGlubGluZSBzdHJpbmcuXG4gKiBUaGUgc2NoZW1hIGNhbiBiZSBwcm92aWRlZCBkaXJlY3RseSBhcyBhIHN0cmluZy5cbiAqIFZhbGlkYXRpb24gaXMgcGVyZm9ybWVkIGF0IHRoZSB0YXJnZXQgY29uZmlndXJhdGlvbiBsZXZlbCB3aGVyZSB0aGUgc2NoZW1hIHR5cGUgaXMga25vd24uXG4gKi9cbmV4cG9ydCBjbGFzcyBJbmxpbmVBcGlTY2hlbWEgZXh0ZW5kcyBBcGlTY2hlbWEge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHNjaGVtYTogc3RyaW5nKSB7XG4gICAgc3VwZXIodW5kZWZpbmVkLCB1bmRlZmluZWQsIHNjaGVtYSk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkuXG4gICAqL1xuICBwdWJsaWMgX3JlbmRlcigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBpbmxpbmVQYXlsb2FkOiB0aGlzLnNjaGVtYSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdyYW50UGVybWlzc2lvbnNUb1JvbGUoX3JvbGU6IElSb2xlKTogdm9pZCB7XG4gICAgLy8gTm8tb3AgLSBJbmxpbmVBcGlTY2hlbWEgZG9lc24ndCBuZWVkIHBlcm1pc3Npb25zXG4gIH1cblxuICBwdWJsaWMgYmluZChzY29wZTogQ29uc3RydWN0KTogdm9pZCB7XG4gICAgaWYgKHNjb3BlKSB7XG4gICAgfVxuICAgIC8vIE5vLW9wIC0gdmFsaWRhdGlvbiBpcyBoYW5kbGVkIGF0IHRoZSB0YXJnZXQgY29uZmlndXJhdGlvbiBsZXZlbFxuICAgIC8vIHdoZXJlIHdlIGtub3cgd2hldGhlciB0aGlzIGlzIE9wZW5BUEkgb3IgU21pdGh5XG4gIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTMyBGaWxlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qKlxuICogQ2xhc3MgdG8gZGVmaW5lIGFuIEFQSSBTY2hlbWEgZnJvbSBhbiBTMyBvYmplY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBTM0FwaVNjaGVtYSBleHRlbmRzIEFwaVNjaGVtYSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb246IExvY2F0aW9uLCBwdWJsaWMgcmVhZG9ubHkgYnVja2V0T3duZXJBY2NvdW50SWQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihsb2NhdGlvbiwgYnVja2V0T3duZXJBY2NvdW50SWQsIHVuZGVmaW5lZCk7XG4gIH1cbiAgLyoqXG4gICAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LlxuICAgKi9cbiAgcHVibGljIF9yZW5kZXIoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgczM6IHtcbiAgICAgICAgdXJpOiBgczM6Ly8ke3RoaXMubG9jYXRpb24uYnVja2V0TmFtZX0vJHt0aGlzLmxvY2F0aW9uLm9iamVjdEtleX1gLFxuICAgICAgICAuLi4odGhpcy5idWNrZXRPd25lckFjY291bnRJZCAmJiB7IGJ1Y2tldE93bmVyQWNjb3VudElkOiB0aGlzLmJ1Y2tldE93bmVyQWNjb3VudElkIH0pLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGJpbmQoc2NvcGU6IENvbnN0cnVjdCk6IHZvaWQge1xuICAgIGlmIChzY29wZSkge1xuICAgIH1cbiAgICAvLyBOby1vcFxuICB9XG5cbiAgcHVibGljIGdyYW50UGVybWlzc2lvbnNUb1JvbGUocm9sZTogSVJvbGUpOiB2b2lkIHtcbiAgICBHcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiByb2xlLFxuICAgICAgYWN0aW9uczogWydzMzpHZXRPYmplY3QnXSxcbiAgICAgIHJlc291cmNlQXJuczogW2Bhcm46JHtBd3MuUEFSVElUSU9OfTpzMzo6OiR7dGhpcy5sb2NhdGlvbi5idWNrZXROYW1lfS8ke3RoaXMubG9jYXRpb24ub2JqZWN0S2V5fWBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXNjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFwaS1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZDQUFrQztBQUNsQyxpREFBbUQ7QUFFbkQsdURBQXVEO0FBQ3ZELDRFQUFnRTtBQUVoRSwrQ0FBNkM7QUFFN0M7O0dBRUc7QUFDSCxNQUFNLGNBQWUsU0FBUSxLQUFLO0lBQ2E7SUFBN0MsWUFBWSxPQUFlLEVBQWtCLEtBQWM7UUFDekQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRDRCLFVBQUssR0FBTCxLQUFLLENBQVM7UUFFekQsSUFBSSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztLQUM5QjtDQUNGO0FBRUQ7OytFQUUrRTtBQUMvRTs7R0FFRztBQUNILE1BQXNCLFNBQVUsU0FBUSwwQkFBWTs7SUFDbEQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFZO1FBQ3ZDLE9BQU8sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQWM7UUFDckMsT0FBTyxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNwQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFlLEVBQUUsU0FBaUIsRUFBRSxvQkFBNkI7UUFDeEYsT0FBTyxJQUFJLFdBQVcsQ0FDcEI7WUFDRSxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7WUFDN0IsU0FBUyxFQUFFLFNBQVM7U0FDckIsRUFDRCxvQkFBb0IsQ0FDckIsQ0FBQztLQUNIO0lBRUQ7OztPQUdHO0lBQ2EsTUFBTSxDQUFZO0lBRWxDOzs7T0FHRztJQUNhLFlBQVksQ0FBVTtJQUV0Qzs7T0FFRztJQUNhLG9CQUFvQixDQUFVO0lBRTlDLFlBQXNCLE1BQWlCLEVBQUUsb0JBQTZCLEVBQUUsWUFBcUI7UUFDM0YsS0FBSyxFQUFFLENB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bEUsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2FBQ3RGO1NBQ0YsQ0FBQztLQUNIO0lBRU0sSUFBSSxDQUFDLEtBQWdCO1FBQzFCLElBQUksS0FBSyxFQUFFLENBQUM7UUFDWixDQUFDO0tBRUY7SUFFTSxzQkFBc0IsQ0FBQyxJQUFXO1FBQ3ZDLGVBQUssQ0FBQyxjQUFjLENBQUM7WUFDbkIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7WUFDekIsWUFBWSxFQUFFLENBQUMsT0FBTyxpQkFBRyxDQUFDLFNBQVMsU0FBUyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ25HLENBQUMsQ0FBQztLQUNKOztBQTVCSCxrQ0E2QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBd3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBHcmFudCwgSVJvbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElCdWNrZXQsIExvY2F0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHMzX2Fzc2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcbmltcG9ydCB7IG1kNWhhc2ggfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgVGFyZ2V0U2NoZW1hIH0gZnJvbSAnLi9iYXNlLXNjaGVtYSc7XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gYW4gQXBpU2NoZW1hIGlzIG5vdCBwcm9wZXJseSBpbml0aWFsaXplZC5cbiAqL1xuY2xhc3MgQXBpU2NoZW1hRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgcHVibGljIHJlYWRvbmx5IGNhdXNlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ0FwaVNjaGVtYUVycm9yJztcbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgQVBJIFNDSEVNQSBDTEFTU1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBjb25jZXB0IG9mIGFuIEFQSSBTY2hlbWEgZm9yIGEgR2F0ZXdheSBUYXJnZXQuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcGlTY2hlbWEgZXh0ZW5kcyBUYXJnZXRTY2hlbWEge1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBBUEkgU2NoZW1hIGZyb20gYSBsb2NhbCBmaWxlLlxuICAgKiBAcGFyYW0gcGF0aCAtIHRoZSBwYXRoIHRvIHRoZSBsb2NhbCBmaWxlIGNvbnRhaW5pbmcgdGhlIE9wZW5BUEkgc2NoZW1hIGZvciB0aGUgYWN0aW9uIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Mb2NhbEFzc2V0KHBhdGg6IHN0cmluZyk6IEFzc2V0QXBpU2NoZW1hIHtcbiAgICByZXR1cm4gbmV3IEFzc2V0QXBpU2NoZW1hKHBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gQVBJIFNjaGVtYSBmcm9tIGFuIGlubGluZSBzdHJpbmcuXG4gICAqIEBwYXJhbSBzY2hlbWEgLSB0aGUgSlNPTiBvciBZQU1MIHBheWxvYWQgZGVmaW5pbmcgdGhlIHNjaGVtYSAoT3BlbkFQSSBvciBTbWl0aHkpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbmxpbmUoc2NoZW1hOiBzdHJpbmcpOiBJbmxpbmVBcGlTY2hlbWEge1xuICAgIHJldHVybiBuZXcgSW5saW5lQXBpU2NoZW1hKHNjaGVtYSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBBUEkgU2NoZW1hIGZyb20gYW4gUzMgRmlsZVxuICAgKiBAcGFyYW0gYnVja2V0IC0gdGhlIGJ1Y2tldCBjb250YWluaW5nIHRoZSBsb2NhbCBmaWxlIGNvbnRhaW5pbmcgdGhlIE9wZW5BUEkgc2NoZW1hIGZvciB0aGUgYWN0aW9uIGdyb3VwXG4gICAqIEBwYXJhbSBvYmplY3RLZXkgLSBvYmplY3Qga2V5IGluIHRoZSBidWNrZXRcbiAgICogQHBhcmFtIGJ1Y2tldE93bmVyQWNjb3VudElkIC0gb3B0aW9uYWwgVGhlIGFjY291bnQgSUQgb2YgdGhlIEFtYXpvbiBTMyBidWNrZXQgb3duZXIuIFRoaXMgSUQgaXMgdXNlZCBmb3IgY3Jvc3MtYWNjb3VudCBhY2Nlc3MgdG8gdGhlIGJ1Y2tldC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVMzRmlsZShidWNrZXQ6IElCdWNrZXQsIG9iamVjdEtleTogc3RyaW5nLCBidWNrZXRPd25lckFjY291bnRJZD86IHN0cmluZyk6IFMzQXBpU2NoZW1hIHtcbiAgICByZXR1cm4gbmV3IFMzQXBpU2NoZW1hKFxuICAgICAge1xuICAgICAgICBidWNrZXROYW1lOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgb2JqZWN0S2V5OiBvYmplY3RLZXksXG4gICAgICB9LFxuICAgICAgYnVja2V0T3duZXJBY2NvdW50SWQsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgUzMgbG9jYXRpb24gb2YgdGhlIEFQSSBzY2hlbWEgZmlsZSwgaWYgdXNpbmcgYW4gUzMtYmFzZWQgc2NoZW1hLlxuICAgKiBDb250YWlucyB0aGUgYnVja2V0IG5hbWUgYW5kIG9iamVjdCBrZXkgaW5mb3JtYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgczNGaWxlPzogTG9jYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBpbmxpbmUgT3BlbkFQSSBzY2hlbWEgZGVmaW5pdGlvbiBhcyBhIHN0cmluZywgaWYgdXNpbmcgYW4gaW5saW5lIHNjaGVtYS5cbiAgICogQ2FuIGJlIGluIEpTT04gb3IgWUFNTCBmb3JtYXQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5saW5lU2NoZW1hPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudCBJRCBvZiB0aGUgUzMgYnVja2V0IG93bmVyIGZvciBjcm9zcy1hY2NvdW50IGFjY2Vzc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1Y2tldE93bmVyQWNjb3VudElkPzogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihzM0ZpbGU/OiBMb2NhdGlvbiwgYnVja2V0T3duZXJBY2NvdW50SWQ/OiBzdHJpbmcsIGlubGluZVNjaGVtYT86IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zM0ZpbGUgPSBzM0ZpbGU7XG4gICAgdGhpcy5pbmxpbmVTY2hlbWEgPSBpbmxpbmVTY2hlbWE7XG4gICAgdGhpcy5idWNrZXRPd25lckFjY291bnRJZCA9IGJ1Y2tldE93bmVyQWNjb3VudElkO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBhcyBDRk4gcHJvcGVydGllc1xuICAgKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBfcmVuZGVyKCk6IGFueTtcbn1cblxuLyoqXG4gKiBBUEkgU2NoZW1hIGZyb20gYSBsb2NhbCBhc3NldC5cbiAqXG4gKiBUaGUgYXNzZXQgaXMgdXBsb2FkZWQgdG8gYW4gUzMgc3RhZ2luZyBidWNrZXQsIHRoZW4gbW92ZWQgdG8gaXRzIGZpbmFsIGxvY2F0aW9uXG4gKiBieSBDbG91ZEZvcm1hdGlvbiBkdXJpbmcgZGVwbG95bWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIEFzc2V0QXBpU2NoZW1hIGV4dGVuZHMgQXBpU2NoZW1hIHtcbiAgcHJpdmF0ZSBhc3NldD86IHMzX2Fzc2V0cy5Bc3NldDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHBhdGg6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBzM19hc3NldHMuQXNzZXRPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGZpbGUgcGF0aCBmb3IgaW50ZXJuYWwgdmFsaWRhdGlvbiBwdXJwb3Nlc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfZ2V0RmlsZVBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIHRoaXMgQVBJIHNjaGVtYSB0byBhIGNvbnN0cnVjdCBzY29wZS5cbiAgICogVGhpcyBtZXRob2QgaW5pdGlhbGl6ZXMgdGhlIFMzIGFzc2V0IGlmIGl0IGhhc24ndCBiZWVuIGluaXRpYWxpemVkIHlldC5cbiAgICogTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHJlbmRlcmluZyB0aGUgc2NoZW1hIGFzIENGTiBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgY29uc3RydWN0IHNjb3BlIHRvIGJpbmQgdG9cbiAgICovXG4gIHB1YmxpYyBiaW5kKHNjb3BlOiBDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICAvLyBJZiB0aGUgc2FtZSBBc3NldEFwaVNjaGVtYSBpcyB1c2VkIG11bHRpcGxlIHRpbWVzLCByZXRhaW4gb25seSB0aGUgZmlyc3QgaW5zdGFudGlhdGlvblxuICAgIGlmICghdGhpcy5hc3NldCkge1xuICAgICAgLy8gTm90ZTogVmFsaWRhdGlvbiBpcyBoYW5kbGVkIGF0IHRoZSB0YXJnZXQgY29uZmlndXJhdGlvbiBsZXZlbCB3aGVyZSB3ZSBrbm93IHRoZSBzY2hlbWEgdHlwZVxuICAgICAgLy8gYW5kIHdoZXRoZXIgdmFsaWRhdGlvbiBpcyBlbmFibGVkXG4gICAgICB0aGlzLmFzc2V0ID0gbmV3IHMzX2Fzc2V0cy5Bc3NldChzY29wZSwgYFNjaGVtYSR7bWQ1aGFzaCh0aGlzLnBhdGgpfWAsIHtcbiAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICB9KTtcbiAgICAgIC8vIE5vdGU6IFBlcm1pc3Npb25zIHdpbGwgYmUgZ3JhbnRlZCBieSB0aGUgR2F0ZXdheSB0YXJnZXQgY29uc3RydWN0IHdoZW4gYWRkaW5nIHRoZSB0YXJnZXRcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IGFzIENGTiBwcm9wZXJ0aWVzXG4gICAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LlxuICAgKi9cbiAgcHVibGljIF9yZW5kZXIoKTogYW55IHtcbiAgICBpZiAoIXRoaXMuYXNzZXQpIHtcbiAgICAgIHRocm93IG5ldyBBcGlTY2hlbWFFcnJvcihcbiAgICAgICAgJ0FwaVNjaGVtYSBtdXN0IGJlIGJvdW5kIHRvIGEgc2NvcGUgYmVmb3JlIHJlbmRlcmluZy4gQ2FsbCBiaW5kKCkgZmlyc3QuJyxcbiAgICAgICAgJ0Fzc2V0IG5vdCBpbml0aWFsaXplZCcsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzMzoge1xuICAgICAgICB1cmk6IGBzMzovLyR7dGhpcy5hc3NldC5zM0J1Y2tldE5hbWV9LyR7dGhpcy5hc3NldC5zM09iamVjdEtleX1gLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdyYW50UGVybWlzc2lvbnNUb1JvbGUocm9sZTogSVJvbGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hc3NldCkge1xuICAgICAgdGhpcy5hc3NldC5ncmFudFJlYWQocm9sZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLyoqXG4gKiBDbGFzcyB0byBkZWZpbmUgYW4gQVBJIFNjaGVtYSBmcm9tIGFuIGlubGluZSBzdHJpbmcuXG4gKiBUaGUgc2NoZW1hIGNhbiBiZSBwcm92aWRlZCBkaXJlY3RseSBhcyBhIHN0cmluZy5cbiAqIFZhbGlkYXRpb24gaXMgcGVyZm9ybWVkIGF0IHRoZSB0YXJnZXQgY29uZmlndXJhdGlvbiBsZXZlbCB3aGVyZSB0aGUgc2NoZW1hIHR5cGUgaXMga25vd24uXG4gKi9cbmV4cG9ydCBjbGFzcyBJbmxpbmVBcGlTY2hlbWEgZXh0ZW5kcyBBcGlTY2hlbWEge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHNjaGVtYTogc3RyaW5nKSB7XG4gICAgc3VwZXIodW5kZWZpbmVkLCB1bmRlZmluZWQsIHNjaGVtYSk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkuXG4gICAqL1xuICBwdWJsaWMgX3JlbmRlcigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBpbmxpbmVQYXlsb2FkOiB0aGlzLnNjaGVtYSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdyYW50UGVybWlzc2lvbnNUb1JvbGUoX3JvbGU6IElSb2xlKTogdm9pZCB7XG4gICAgLy8gTm8tb3AgLSBJbmxpbmVBcGlTY2hlbWEgZG9lc24ndCBuZWVkIHBlcm1pc3Npb25zXG4gIH1cblxuICBwdWJsaWMgYmluZChzY29wZTogQ29uc3RydWN0KTogdm9pZCB7XG4gICAgaWYgKHNjb3BlKSB7XG4gICAgfVxuICAgIC8vIE5vLW9wIC0gdmFsaWRhdGlvbiBpcyBoYW5kbGVkIGF0IHRoZSB0YXJnZXQgY29uZmlndXJhdGlvbiBsZXZlbFxuICAgIC8vIHdoZXJlIHdlIGtub3cgd2hldGhlciB0aGlzIGlzIE9wZW5BUEkgb3IgU21pdGh5XG4gIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTMyBGaWxlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qKlxuICogQ2xhc3MgdG8gZGVmaW5lIGFuIEFQSSBTY2hlbWEgZnJvbSBhbiBTMyBvYmplY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBTM0FwaVNjaGVtYSBleHRlbmRzIEFwaVNjaGVtYSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb246IExvY2F0aW9uLCBwdWJsaWMgcmVhZG9ubHkgYnVja2V0T3duZXJBY2NvdW50SWQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihsb2NhdGlvbiwgYnVja2V0T3duZXJBY2NvdW50SWQsIHVuZGVmaW5lZCk7XG4gIH1cbiAgLyoqXG4gICAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LlxuICAgKi9cbiAgcHVibGljIF9yZW5kZXIoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgczM6IHtcbiAgICAgICAgdXJpOiBgczM6Ly8ke3RoaXMubG9jYXRpb24uYnVja2V0TmFtZX0vJHt0aGlzLmxvY2F0aW9uLm9iamVjdEtleX1gLFxuICAgICAgICAuLi4odGhpcy5idWNrZXRPd25lckFjY291bnRJZCAmJiB7IGJ1Y2tldE93bmVyQWNjb3VudElkOiB0aGlzLmJ1Y2tldE93bmVyQWNjb3VudElkIH0pLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGJpbmQoc2NvcGU6IENvbnN0cnVjdCk6IHZvaWQge1xuICAgIGlmIChzY29wZSkge1xuICAgIH1cbiAgICAvLyBOby1vcFxuICB9XG5cbiAgcHVibGljIGdyYW50UGVybWlzc2lvbnNUb1JvbGUocm9sZTogSVJvbGUpOiB2b2lkIHtcbiAgICBHcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiByb2xlLFxuICAgICAgYWN0aW9uczogWydzMzpHZXRPYmplY3QnXSxcbiAgICAgIHJlc291cmNlQXJuczogW2Bhcm46JHtBd3MuUEFSVElUSU9OfTpzMzo6OiR7dGhpcy5sb2NhdGlvbi5idWNrZXROYW1lfS8ke3RoaXMubG9jYXRpb24ub2JqZWN0S2V5fWBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -5,6 +5,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  const aws_cdk_lib_1 = require("aws-cdk-lib");
6
6
  const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
7
  const s3_assets = require("aws-cdk-lib/aws-s3-assets");
8
+ const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
8
9
  const base_schema_1 = require("./base-schema");
9
10
  /**
10
11
  * Schema definition types
@@ -39,7 +40,7 @@ class ToolSchemaError extends Error {
39
40
  * TOOL SCHEMA CLASS
40
41
  *****************************************************************************/
41
42
  class ToolSchema extends base_schema_1.TargetSchema {
42
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ToolSchema", version: "2.235.1-alpha.0" };
43
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ToolSchema", version: "2.237.0-alpha.0" };
43
44
  /**
44
45
  * Creates a tool Schema from a local file.
45
46
  * @param path - the path to the local file containing the function schema for the tool
@@ -97,7 +98,7 @@ exports.ToolSchema = ToolSchema;
97
98
  class AssetToolSchema extends ToolSchema {
98
99
  path;
99
100
  options;
100
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.AssetToolSchema", version: "2.235.1-alpha.0" };
101
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.AssetToolSchema", version: "2.237.0-alpha.0" };
101
102
  asset;
102
103
  constructor(path, options = {}) {
103
104
  super();
@@ -114,7 +115,7 @@ class AssetToolSchema extends ToolSchema {
114
115
  bind(scope) {
115
116
  // If the same AssetToolSchema is used multiple times, retain only the first instantiation
116
117
  if (!this.asset) {
117
- this.asset = new s3_assets.Asset(scope, 'Schema', {
118
+ this.asset = new s3_assets.Asset(scope, `Schema${(0, helpers_internal_1.md5hash)(this.path)}`, {
118
119
  path: this.path,
119
120
  ...this.options,
120
121
  });
@@ -150,7 +151,7 @@ exports.AssetToolSchema = AssetToolSchema;
150
151
  */
151
152
  class InlineToolSchema extends ToolSchema {
152
153
  schema;
153
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.InlineToolSchema", version: "2.235.1-alpha.0" };
154
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.InlineToolSchema", version: "2.237.0-alpha.0" };
154
155
  constructor(schema) {
155
156
  super(undefined, undefined, schema);
156
157
  this.schema = schema;
@@ -180,7 +181,7 @@ exports.InlineToolSchema = InlineToolSchema;
180
181
  class S3ToolSchema extends ToolSchema {
181
182
  location;
182
183
  bucketOwnerAccountId;
183
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.S3ToolSchema", version: "2.235.1-alpha.0" };
184
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.S3ToolSchema", version: "2.237.0-alpha.0" };
184
185
  constructor(location, bucketOwnerAccountId) {
185
186
  super(location, bucketOwnerAccountId, undefined);
186
187
  this.location = location;
@@ -210,4 +211,4 @@ class S3ToolSchema extends ToolSchema {
210
211
  }
211
212
  }
212
213
  exports.S3ToolSchema = S3ToolSchema;
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0b29sLXNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkNBQWtDO0FBQ2xDLGlEQUFtRDtBQUVuRCx1REFBdUQ7QUFFdkQsK0NBQTZDO0FBc0I3Qzs7R0FFRztBQUNILElBQVksb0JBYVg7QUFiRCxXQUFZLG9CQUFvQjtJQUM5QixrQkFBa0I7SUFDbEIseUNBQWlCLENBQUE7SUFDakIsa0JBQWtCO0lBQ2xCLHlDQUFpQixDQUFBO0lBQ2pCLGtCQUFrQjtJQUNsQix5Q0FBaUIsQ0FBQTtJQUNqQixpQkFBaUI7SUFDakIsdUNBQWUsQ0FBQTtJQUNmLG1CQUFtQjtJQUNuQiwyQ0FBbUIsQ0FBQTtJQUNuQixtQkFBbUI7SUFDbkIsMkNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQWJXLG9CQUFvQixvQ0FBcEIsb0JBQW9CLFFBYS9CO0FBMEVEOztHQUVHO0FBQ0gsTUFBTSxlQUFnQixTQUFRLEtBQUs7SUFDWTtJQUE3QyxZQUFZLE9BQWUsRUFBa0IsS0FBYztRQUN6RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFENEIsVUFBSyxHQUFMLEtBQUssQ0FBUztRQUV6RCxJQUFJLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO0tBQy9CO0NBQ0Y7QUFFRDs7K0VBRStFO0FBQy9FLE1BQXNCLFVBQVcsU0FBUSwwQkFBWTs7SUFDbkQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFZO1FBQ3ZDLE9BQU8sSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbEM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQXdCO1FBQy9DLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFlLEVBQUUsU0FBaUIsRUFBRSxvQkFBNkI7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QUFDO1FBRHRCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBa0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFTO0tBRTdGO0lBQ0Q7O09BRUc7SUFDSSxPQUFPO1FBQ1osT0FBTztZQUNMLEVBQUUsRUFBRTtnQkFDRixHQUFHLEVBQUUsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRTtnQkFDbEUsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2FBQ3RGO1NBQ0YsQ0FBQztLQUNIO0lBRU0sSUFBSSxDQUFDLEtBQWdCO1FBQzFCLElBQUksS0FBSyxFQUFFLENBQUM7UUFDWixDQUFDO0tBRUY7SUFFTSxzQkFBc0IsQ0FBQyxJQUFXO1FBQ3ZDLGVBQUssQ0FBQyxjQUFjLENBQUM7WUFDbkIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7WUFDekIsWUFBWSxFQUFFLENBQUMsT0FBTyxpQkFBRyxDQUFDLFNBQVMsU0FBUyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ25HLENBQUMsQ0FBQztLQUNKOztBQTVCSCxvQ0E2QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBd3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBHcmFudCwgSVJvbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElCdWNrZXQsIExvY2F0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHMzX2Fzc2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgVGFyZ2V0U2NoZW1hIH0gZnJvbSAnLi9iYXNlLXNjaGVtYSc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb29sIFNjaGVtYSBDb25maWd1cmF0aW9uXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQWJzdHJhY3QgaW50ZXJmYWNlIGZvciB0b29sIHNjaGVtYSBjb25maWd1cmF0aW9uXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVG9vbFNjaGVtYUNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIHRvb2wgc2NoZW1hIGNvbmZpZ3VyYXRpb24gdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdG9vbFNjaGVtYVR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRvb2wgc2NoZW1hIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqL1xuICByZWFkb25seSBjb25maWd1cmF0aW9uOiBhbnk7XG59XG5cbi8qKlxuICogU2NoZW1hIGRlZmluaXRpb24gdHlwZXNcbiAqL1xuZXhwb3J0IGVudW0gU2NoZW1hRGVmaW5pdGlvblR5cGUge1xuICAvKiogU3RyaW5nIHR5cGUgKi9cbiAgU1RSSU5HID0gJ3N0cmluZycsXG4gIC8qKiBOdW1iZXIgdHlwZSAqL1xuICBOVU1CRVIgPSAnbnVtYmVyJyxcbiAgLyoqIE9iamVjdCB0eXBlICovXG4gIE9CSkVDVCA9ICdvYmplY3QnLFxuICAvKiogQXJyYXkgdHlwZSAqL1xuICBBUlJBWSA9ICdhcnJheScsXG4gIC8qKiBCb29sZWFuIHR5cGUgKi9cbiAgQk9PTEVBTiA9ICdib29sZWFuJyxcbiAgLyoqIEludGVnZXIgdHlwZSAqL1xuICBJTlRFR0VSID0gJ2ludGVnZXInLFxufVxuXG4vKipcbiAqIFNjaGVtYSBkZWZpbml0aW9uIGZvciB0b29sIGlucHV0L291dHB1dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYURlZmluaXRpb24ge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIHNjaGVtYSBkZWZpbml0aW9uLiBUaGlzIGZpZWxkIHNwZWNpZmllcyB0aGUgZGF0YSB0eXBlIG9mIHRoZSBzY2hlbWEuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBTY2hlbWFEZWZpbml0aW9uVHlwZTtcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzY2hlbWEgZGVmaW5pdGlvbi4gVGhpcyBkZXNjcmlwdGlvbiBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHVycG9zZSBhbmQgdXNhZ2Ugb2YgdGhlIHNjaGVtYS5cbiAgICovXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHNjaGVtYSBkZWZpbml0aW9uLiBUaGlzIGRlc2NyaXB0aW9uIHByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwdXJwb3NlIGFuZCB1c2FnZSBvZiB0aGUgc2NoZW1hLlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGl0ZW1zIGluIHRoZSBzY2hlbWEgZGVmaW5pdGlvbi4gVGhpcyBmaWVsZCBpcyB1c2VkIGZvciBhcnJheSB0eXBlcyB0byBkZWZpbmUgdGhlIHN0cnVjdHVyZSBvZiB0aGUgYXJyYXkgZWxlbWVudHMuXG4gICAqL1xuICAvKipcbiAgICogVGhlIGl0ZW1zIGluIHRoZSBzY2hlbWEgZGVmaW5pdGlvbi4gVGhpcyBmaWVsZCBpcyB1c2VkIGZvciBhcnJheSB0eXBlcyB0byBkZWZpbmUgdGhlIHN0cnVjdHVyZSBvZiB0aGUgYXJyYXkgZWxlbWVudHMuXG4gICAqIEBkZWZhdWx0IC0gTm8gaXRlbXMgZGVmaW5pdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXM/OiBTY2hlbWFEZWZpbml0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvcGVydGllcyBvZiB0aGUgc2NoZW1hIGRlZmluaXRpb24uIFRoZXNlIHByb3BlcnRpZXMgZGVmaW5lIHRoZSBmaWVsZHMgaW4gdGhlIHNjaGVtYS5cbiAgICovXG4gIC8qKlxuICAgKiBUaGUgcHJvcGVydGllcyBvZiB0aGUgc2NoZW1hIGRlZmluaXRpb24uIFRoZXNlIHByb3BlcnRpZXMgZGVmaW5lIHRoZSBmaWVsZHMgaW4gdGhlIHNjaGVtYS5cbiAgICogQGRlZmF1bHQgLSBObyBwcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogUmVjb3JkPHN0cmluZywgU2NoZW1hRGVmaW5pdGlvbj47XG5cbiAgLyoqXG4gICAqIFRoZSByZXF1aXJlZCBmaWVsZHMgaW4gdGhlIHNjaGVtYSBkZWZpbml0aW9uLiBUaGVzZSBmaWVsZHMgbXVzdCBiZSBwcm92aWRlZCB3aGVuIHVzaW5nIHRoZSBzY2hlbWEuXG4gICAqIEBkZWZhdWx0IC0gTm8gcmVxdWlyZWQgZmllbGRzXG4gICAqL1xuICByZWFkb25seSByZXF1aXJlZD86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRvb2wgZGVmaW5pdGlvbiBmb3IgaW5saW5lIHBheWxvYWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb29sRGVmaW5pdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdG9vbC4gVGhpcyBuYW1lIGlkZW50aWZpZXMgdGhlIHRvb2wgaW4gdGhlIE1vZGVsIENvbnRleHQgUHJvdG9jb2wuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgdG9vbC4gVGhpcyBkZXNjcmlwdGlvbiBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHVycG9zZSBhbmQgdXNhZ2Ugb2YgdGhlIHRvb2wuXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgc2NoZW1hIGZvciB0aGUgdG9vbC4gVGhpcyBzY2hlbWEgZGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBpbnB1dCB0aGF0IHRoZSB0b29sIGFjY2VwdHMuXG4gICAqL1xuICByZWFkb25seSBpbnB1dFNjaGVtYTogU2NoZW1hRGVmaW5pdGlvbjtcblxuICAvKipcbiAgICogVGhlIG91dHB1dCBzY2hlbWEgZm9yIHRoZSB0b29sLiBUaGlzIHNjaGVtYSBkZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG91dHB1dCB0aGF0IHRoZSB0b29sIHByb2R1Y2VzLlxuICAgKi9cbiAgLyoqXG4gICAqIFRoZSBvdXRwdXQgc2NoZW1hIGZvciB0aGUgdG9vbC4gVGhpcyBzY2hlbWEgZGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBvdXRwdXQgdGhhdCB0aGUgdG9vbCBwcm9kdWNlcy5cbiAgICogQGRlZmF1bHQgLSBObyBvdXRwdXQgc2NoZW1hXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRTY2hlbWE/OiBTY2hlbWFEZWZpbml0aW9uO1xufVxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIGEgVG9vbFNjaGVtYSBpcyBub3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQuXG4gKi9cbmNsYXNzIFRvb2xTY2hlbWFFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBwdWJsaWMgcmVhZG9ubHkgY2F1c2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnVG9vbFNjaGVtYUVycm9yJztcbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgVE9PTCBTQ0hFTUEgQ0xBU1NcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUb29sU2NoZW1hIGV4dGVuZHMgVGFyZ2V0U2NoZW1hIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB0b29sIFNjaGVtYSBmcm9tIGEgbG9jYWwgZmlsZS5cbiAgICogQHBhcmFtIHBhdGggLSB0aGUgcGF0aCB0byB0aGUgbG9jYWwgZmlsZSBjb250YWluaW5nIHRoZSBmdW5jdGlvbiBzY2hlbWEgZm9yIHRoZSB0b29sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Mb2NhbEFzc2V0KHBhdGg6IHN0cmluZyk6IFRvb2xTY2hlbWEge1xuICAgIHJldHVybiBuZXcgQXNzZXRUb29sU2NoZW1hKHBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBUb29sIFNjaGVtYSBmcm9tIGFuIGlubGluZSBzdHJpbmcuXG4gICAqIEBwYXJhbSBzY2hlbWEgLSB0aGUgSlNPTiBvciBZQU1MIHBheWxvYWQgZGVmaW5pbmcgdGhlIE9wZW5BUEkgc2NoZW1hIGZvciB0aGUgYWN0aW9uIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbmxpbmUoc2NoZW1hOiBUb29sRGVmaW5pdGlvbltdKTogSW5saW5lVG9vbFNjaGVtYSB7XG4gICAgcmV0dXJuIG5ldyBJbmxpbmVUb29sU2NoZW1hKHNjaGVtYSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIFRvb2wgU2NoZW1hIGZyb20gYW4gUzMgRmlsZVxuICAgKiBAcGFyYW0gYnVja2V0IC0gdGhlIGJ1Y2tldCBjb250YWluaW5nIHRoZSBsb2NhbCBmaWxlIGNvbnRhaW5pbmcgdGhlIE9wZW5BUEkgc2NoZW1hIGZvciB0aGUgYWN0aW9uIGdyb3VwXG4gICAqIEBwYXJhbSBvYmplY3RLZXkgLSBvYmplY3Qga2V5IGluIHRoZSBidWNrZXRcbiAgICogQHBhcmFtIGJ1Y2tldE93bmVyQWNjb3VudElkIC0gb3B0aW9uYWwgVGhlIGFjY291bnQgSUQgb2YgdGhlIEFtYXpvbiBTMyBidWNrZXQgb3duZXIuIFRoaXMgSUQgaXMgdXNlZCBmb3IgY3Jvc3MtYWNjb3VudCBhY2Nlc3MgdG8gdGhlIGJ1Y2tldC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVMzRmlsZShidWNrZXQ6IElCdWNrZXQsIG9iamVjdEtleTogc3RyaW5nLCBidWNrZXRPd25lckFjY291bnRJZD86IHN0cmluZyk6IFMzVG9vbFNjaGVtYSB7XG4gICAgcmV0dXJuIG5ldyBTM1Rvb2xTY2hlbWEoXG4gICAgICB7XG4gICAgICAgIGJ1Y2tldE5hbWU6IGJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICBvYmplY3RLZXk6IG9iamVjdEtleSxcbiAgICAgIH0sXG4gICAgICBidWNrZXRPd25lckFjY291bnRJZCxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBTMyBsb2NhdGlvbiBvZiB0aGUgdG9vbCBzY2hlbWEgZmlsZSwgaWYgdXNpbmcgYW4gUzMtYmFzZWQgc2NoZW1hLlxuICAgKiBDb250YWlucyB0aGUgYnVja2V0IG5hbWUgYW5kIG9iamVjdCBrZXkgaW5mb3JtYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgczNGaWxlPzogTG9jYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBpbmxpbmUgdG9vbCBzY2hlbWEgZGVmaW5pdGlvbiBhcyBhIHN0cmluZywgaWYgdXNpbmcgYW4gaW5saW5lIHNjaGVtYS5cbiAgICogQ2FuIGJlIGluIEpTT04gb3IgWUFNTCBmb3JtYXQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5saW5lU2NoZW1hPzogVG9vbERlZmluaXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIGFjY291bnQgSUQgb2YgdGhlIFMzIGJ1Y2tldCBvd25lciBmb3IgY3Jvc3MtYWNjb3VudCBhY2Nlc3NcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBidWNrZXRPd25lckFjY291bnRJZD86IHN0cmluZztcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoczNGaWxlPzogTG9jYXRpb24sIGJ1Y2tldE93bmVyQWNjb3VudElkPzogc3RyaW5nLCBpbmxpbmVTY2hlbWE/OiBUb29sRGVmaW5pdGlvbltdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnMzRmlsZSA9IHMzRmlsZTtcbiAgICB0aGlzLmlubGluZVNjaGVtYSA9IGlubGluZVNjaGVtYTtcbiAgICB0aGlzLmJ1Y2tldE93bmVyQWNjb3VudElkID0gYnVja2V0T3duZXJBY2NvdW50SWQ7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IGFzIENGTiBwcm9wZXJ0aWVzXG4gICAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IF9yZW5kZXIoKTogYW55O1xufVxuXG4vKipcbiAqIFRvb2wgU2NoZW1hIGZyb20gYSBsb2NhbCBhc3NldC5cbiAqXG4gKiBUaGUgYXNzZXQgaXMgdXBsb2FkZWQgdG8gYW4gUzMgc3RhZ2luZyBidWNrZXQsIHRoZW4gbW92ZWQgdG8gaXRzIGZpbmFsIGxvY2F0aW9uXG4gKiBieSBDbG91ZEZvcm1hdGlvbiBkdXJpbmcgZGVwbG95bWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIEFzc2V0VG9vbFNjaGVtYSBleHRlbmRzIFRvb2xTY2hlbWEge1xuICBwcml2YXRlIGFzc2V0PzogczNfYXNzZXRzLkFzc2V0O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcGF0aDogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IHMzX2Fzc2V0cy5Bc3NldE9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgdGhpcyB0b29sIHNjaGVtYSB0byBhIGNvbnN0cnVjdCBzY29wZS5cbiAgICogVGhpcyBtZXRob2QgaW5pdGlhbGl6ZXMgdGhlIFMzIGFzc2V0IGlmIGl0IGhhc24ndCBiZWVuIGluaXRpYWxpemVkIHlldC5cbiAgICogTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHJlbmRlcmluZyB0aGUgc2NoZW1hIGFzIENGTiBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgY29uc3RydWN0IHNjb3BlIHRvIGJpbmQgdG9cbiAgICovXG4gIHB1YmxpYyBiaW5kKHNjb3BlOiBDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICAvLyBJZiB0aGUgc2FtZSBBc3NldFRvb2xTY2hlbWEgaXMgdXNlZCBtdWx0aXBsZSB0aW1lcywgcmV0YWluIG9ubHkgdGhlIGZpcnN0IGluc3RhbnRpYXRpb25cbiAgICBpZiAoIXRoaXMuYXNzZXQpIHtcbiAgICAgIHRoaXMuYXNzZXQgPSBuZXcgczNfYXNzZXRzLkFzc2V0KHNjb3BlLCAnU2NoZW1hJywge1xuICAgICAgICBwYXRoOiB0aGlzLnBhdGgsXG4gICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgIH0pO1xuICAgICAgLy8gTm90ZTogUGVybWlzc2lvbnMgd2lsbCBiZSBncmFudGVkIGJ5IHRoZSBHYXRld2F5IHRhcmdldCBjb25zdHJ1Y3Qgd2hlbiBhZGRpbmcgdGhlIHRhcmdldFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgYXMgQ0ZOIHByb3BlcnRpZXNcbiAgICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkuXG4gICAqL1xuICBwdWJsaWMgX3JlbmRlcigpOiBhbnkge1xuICAgIGlmICghdGhpcy5hc3NldCkge1xuICAgICAgdGhyb3cgbmV3IFRvb2xTY2hlbWFFcnJvcihcbiAgICAgICAgJ1Rvb2xTY2hlbWEgbXVzdCBiZSBib3VuZCB0byBhIHNjb3BlIGJlZm9yZSByZW5kZXJpbmcuIENhbGwgYmluZCgpIGZpcnN0LicsXG4gICAgICAgICdBc3NldCBub3QgaW5pdGlhbGl6ZWQnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgczM6IHtcbiAgICAgICAgdXJpOiBgczM6Ly8ke3RoaXMuYXNzZXQuczNCdWNrZXROYW1lfS8ke3RoaXMuYXNzZXQuczNPYmplY3RLZXl9YCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudFBlcm1pc3Npb25zVG9Sb2xlKHJvbGU6IElSb2xlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFzc2V0KSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbFNjaGVtYUVycm9yKFxuICAgICAgICAnVG9vbFNjaGVtYSBtdXN0IGJlIGJvdW5kIHRvIGEgc2NvcGUgYmVmb3JlIHJlbmRlcmluZy4gQ2FsbCBiaW5kKCkgZmlyc3QuJyxcbiAgICAgICAgJ0Fzc2V0IG5vdCBpbml0aWFsaXplZCcsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmFzc2V0LmdyYW50UmVhZChyb2xlKTtcbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qKlxuICogQ2xhc3MgdG8gZGVmaW5lIGEgVG9vbCBTY2hlbWEgZnJvbSBhbiBpbmxpbmUgc3RyaW5nLlxuICogVGhlIHNjaGVtYSBjYW4gYmUgcHJvdmlkZWQgZGlyZWN0bHkgYXMgYSBzdHJpbmcgaW4gZWl0aGVyIEpTT04gb3IgWUFNTCBmb3JtYXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbmxpbmVUb29sU2NoZW1hIGV4dGVuZHMgVG9vbFNjaGVtYSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2NoZW1hOiBUb29sRGVmaW5pdGlvbltdKSB7XG4gICAgc3VwZXIodW5kZWZpbmVkLCB1bmRlZmluZWQsIHNjaGVtYSk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkuXG4gICAqL1xuICBwdWJsaWMgX3JlbmRlcigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBpbmxpbmVQYXlsb2FkOiB0aGlzLnNjaGVtYSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGJpbmQoc2NvcGU6IENvbnN0cnVjdCk6IHZvaWQge1xuICAgIGlmIChzY29wZSkge1xuICAgIH1cbiAgICAvLyBOby1vcFxuICB9XG5cbiAgcHVibGljIGdyYW50UGVybWlzc2lvbnNUb1JvbGUoX3JvbGU6IElSb2xlKTogdm9pZCB7XG4gICAgLy8gTm8tb3AgLSBJbmxpbmVUb29sU2NoZW1hIGRvZXNuJ3QgbmVlZCBwZXJtaXNzaW9uc1xuICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUzMgRmlsZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKipcbiAqIENsYXNzIHRvIGRlZmluZSBhIFRvb2wgU2NoZW1hIGZyb20gYW4gUzMgb2JqZWN0LlxuICovXG5leHBvcnQgY2xhc3MgUzNUb29sU2NoZW1hIGV4dGVuZHMgVG9vbFNjaGVtYSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb246IExvY2F0aW9uLCBwdWJsaWMgcmVhZG9ubHkgYnVja2V0T3duZXJBY2NvdW50SWQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihsb2NhdGlvbiwgYnVja2V0T3duZXJBY2NvdW50SWQsIHVuZGVmaW5lZCk7XG4gIH1cbiAgLyoqXG4gICAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LlxuICAgKi9cbiAgcHVibGljIF9yZW5kZXIoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgczM6IHtcbiAgICAgICAgdXJpOiBgczM6Ly8ke3RoaXMubG9jYXRpb24uYnVja2V0TmFtZX0vJHt0aGlzLmxvY2F0aW9uLm9iamVjdEtleX1gLFxuICAgICAgICAuLi4odGhpcy5idWNrZXRPd25lckFjY291bnRJZCAmJiB7IGJ1Y2tldE93bmVyQWNjb3VudElkOiB0aGlzLmJ1Y2tldE93bmVyQWNjb3VudElkIH0pLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGJpbmQoc2NvcGU6IENvbnN0cnVjdCk6IHZvaWQge1xuICAgIGlmIChzY29wZSkge1xuICAgIH1cbiAgICAvLyBOby1vcFxuICB9XG5cbiAgcHVibGljIGdyYW50UGVybWlzc2lvbnNUb1JvbGUocm9sZTogSVJvbGUpOiB2b2lkIHtcbiAgICBHcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiByb2xlLFxuICAgICAgYWN0aW9uczogWydzMzpHZXRPYmplY3QnXSxcbiAgICAgIHJlc291cmNlQXJuczogW2Bhcm46JHtBd3MuUEFSVElUSU9OfTpzMzo6OiR7dGhpcy5sb2NhdGlvbi5idWNrZXROYW1lfS8ke3RoaXMubG9jYXRpb24ub2JqZWN0S2V5fWBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0b29sLXNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkNBQWtDO0FBQ2xDLGlEQUFtRDtBQUVuRCx1REFBdUQ7QUFDdkQsNEVBQWdFO0FBRWhFLCtDQUE2QztBQXNCN0M7O0dBRUc7QUFDSCxJQUFZLG9CQWFYO0FBYkQsV0FBWSxvQkFBb0I7SUFDOUIsa0JBQWtCO0lBQ2xCLHlDQUFpQixDQUFBO0lBQ2pCLGtCQUFrQjtJQUNsQix5Q0FBaUIsQ0FBQTtJQUNqQixrQkFBa0I7SUFDbEIseUNBQWlCLENBQUE7SUFDakIsaUJBQWlCO0lBQ2pCLHVDQUFlLENBQUE7SUFDZixtQkFBbUI7SUFDbkIsMkNBQW1CLENBQUE7SUFDbkIsbUJBQW1CO0lBQ25CLDJDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFiVyxvQkFBb0Isb0NBQXBCLG9CQUFvQixRQWEvQjtBQTBFRDs7R0FFRztBQUNILE1BQU0sZUFBZ0IsU0FBUSxLQUFLO0lBQ1k7SUFBN0MsWUFBWSxPQUFlLEVBQWtCLEtBQWM7UUFDekQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRDRCLFVBQUssR0FBTCxLQUFLLENBQVM7UUFFekQsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztLQUMvQjtDQUNGO0FBRUQ7OytFQUUrRTtBQUMvRSxNQUFzQixVQUFXLFNBQVEsMEJBQVk7O0lBQ25EOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBWTtRQUN2QyxPQUFPLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUF3QjtRQUMvQyxPQUFPLElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDckM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBZSxFQUFFLFNBQWlC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QUE2QjtRQUM1RixLQUFLLENBQUMsUUFBUSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRHRCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBa0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFTO0tBRTdGO0lBQ0Q7O09BRUc7SUFDSSxPQUFPO1FBQ1osT0FBTztZQUNMLEVBQUUsRUFBRTtnQkFDRixHQUFHLEVBQUUsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRTtnQkFDbEUsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2FBQ3RGO1NBQ0YsQ0FBQztLQUNIO0lBRU0sSUFBSSxDQUFDLEtBQWdCO1FBQzFCLElBQUksS0FBSyxFQUFFLENBQUM7UUFDWixDQUFDO0tBRUY7SUFFTSxzQkFBc0IsQ0FBQyxJQUFXO1FBQ3ZDLGVBQUssQ0FBQyxjQUFjLENBQUM7WUFDbkIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7WUFDekIsWUFBWSxFQUFFLENBQUMsT0FBTyxpQkFBRyxDQUFDLFNBQVMsU0FBUyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ25HLENBQUMsQ0FBQztLQUNKOztBQTVCSCxvQ0E2QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBd3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBHcmFudCwgSVJvbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElCdWNrZXQsIExvY2F0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHMzX2Fzc2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcbmltcG9ydCB7IG1kNWhhc2ggfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgVGFyZ2V0U2NoZW1hIH0gZnJvbSAnLi9iYXNlLXNjaGVtYSc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb29sIFNjaGVtYSBDb25maWd1cmF0aW9uXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQWJzdHJhY3QgaW50ZXJmYWNlIGZvciB0b29sIHNjaGVtYSBjb25maWd1cmF0aW9uXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVG9vbFNjaGVtYUNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIHRvb2wgc2NoZW1hIGNvbmZpZ3VyYXRpb24gdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdG9vbFNjaGVtYVR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRvb2wgc2NoZW1hIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqL1xuICByZWFkb25seSBjb25maWd1cmF0aW9uOiBhbnk7XG59XG5cbi8qKlxuICogU2NoZW1hIGRlZmluaXRpb24gdHlwZXNcbiAqL1xuZXhwb3J0IGVudW0gU2NoZW1hRGVmaW5pdGlvblR5cGUge1xuICAvKiogU3RyaW5nIHR5cGUgKi9cbiAgU1RSSU5HID0gJ3N0cmluZycsXG4gIC8qKiBOdW1iZXIgdHlwZSAqL1xuICBOVU1CRVIgPSAnbnVtYmVyJyxcbiAgLyoqIE9iamVjdCB0eXBlICovXG4gIE9CSkVDVCA9ICdvYmplY3QnLFxuICAvKiogQXJyYXkgdHlwZSAqL1xuICBBUlJBWSA9ICdhcnJheScsXG4gIC8qKiBCb29sZWFuIHR5cGUgKi9cbiAgQk9PTEVBTiA9ICdib29sZWFuJyxcbiAgLyoqIEludGVnZXIgdHlwZSAqL1xuICBJTlRFR0VSID0gJ2ludGVnZXInLFxufVxuXG4vKipcbiAqIFNjaGVtYSBkZWZpbml0aW9uIGZvciB0b29sIGlucHV0L291dHB1dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYURlZmluaXRpb24ge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIHNjaGVtYSBkZWZpbml0aW9uLiBUaGlzIGZpZWxkIHNwZWNpZmllcyB0aGUgZGF0YSB0eXBlIG9mIHRoZSBzY2hlbWEuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBTY2hlbWFEZWZpbml0aW9uVHlwZTtcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzY2hlbWEgZGVmaW5pdGlvbi4gVGhpcyBkZXNjcmlwdGlvbiBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHVycG9zZSBhbmQgdXNhZ2Ugb2YgdGhlIHNjaGVtYS5cbiAgICovXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHNjaGVtYSBkZWZpbml0aW9uLiBUaGlzIGRlc2NyaXB0aW9uIHByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwdXJwb3NlIGFuZCB1c2FnZSBvZiB0aGUgc2NoZW1hLlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGl0ZW1zIGluIHRoZSBzY2hlbWEgZGVmaW5pdGlvbi4gVGhpcyBmaWVsZCBpcyB1c2VkIGZvciBhcnJheSB0eXBlcyB0byBkZWZpbmUgdGhlIHN0cnVjdHVyZSBvZiB0aGUgYXJyYXkgZWxlbWVudHMuXG4gICAqL1xuICAvKipcbiAgICogVGhlIGl0ZW1zIGluIHRoZSBzY2hlbWEgZGVmaW5pdGlvbi4gVGhpcyBmaWVsZCBpcyB1c2VkIGZvciBhcnJheSB0eXBlcyB0byBkZWZpbmUgdGhlIHN0cnVjdHVyZSBvZiB0aGUgYXJyYXkgZWxlbWVudHMuXG4gICAqIEBkZWZhdWx0IC0gTm8gaXRlbXMgZGVmaW5pdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXM/OiBTY2hlbWFEZWZpbml0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvcGVydGllcyBvZiB0aGUgc2NoZW1hIGRlZmluaXRpb24uIFRoZXNlIHByb3BlcnRpZXMgZGVmaW5lIHRoZSBmaWVsZHMgaW4gdGhlIHNjaGVtYS5cbiAgICovXG4gIC8qKlxuICAgKiBUaGUgcHJvcGVydGllcyBvZiB0aGUgc2NoZW1hIGRlZmluaXRpb24uIFRoZXNlIHByb3BlcnRpZXMgZGVmaW5lIHRoZSBmaWVsZHMgaW4gdGhlIHNjaGVtYS5cbiAgICogQGRlZmF1bHQgLSBObyBwcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogUmVjb3JkPHN0cmluZywgU2NoZW1hRGVmaW5pdGlvbj47XG5cbiAgLyoqXG4gICAqIFRoZSByZXF1aXJlZCBmaWVsZHMgaW4gdGhlIHNjaGVtYSBkZWZpbml0aW9uLiBUaGVzZSBmaWVsZHMgbXVzdCBiZSBwcm92aWRlZCB3aGVuIHVzaW5nIHRoZSBzY2hlbWEuXG4gICAqIEBkZWZhdWx0IC0gTm8gcmVxdWlyZWQgZmllbGRzXG4gICAqL1xuICByZWFkb25seSByZXF1aXJlZD86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRvb2wgZGVmaW5pdGlvbiBmb3IgaW5saW5lIHBheWxvYWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb29sRGVmaW5pdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdG9vbC4gVGhpcyBuYW1lIGlkZW50aWZpZXMgdGhlIHRvb2wgaW4gdGhlIE1vZGVsIENvbnRleHQgUHJvdG9jb2wuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgdG9vbC4gVGhpcyBkZXNjcmlwdGlvbiBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHVycG9zZSBhbmQgdXNhZ2Ugb2YgdGhlIHRvb2wuXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgc2NoZW1hIGZvciB0aGUgdG9vbC4gVGhpcyBzY2hlbWEgZGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBpbnB1dCB0aGF0IHRoZSB0b29sIGFjY2VwdHMuXG4gICAqL1xuICByZWFkb25seSBpbnB1dFNjaGVtYTogU2NoZW1hRGVmaW5pdGlvbjtcblxuICAvKipcbiAgICogVGhlIG91dHB1dCBzY2hlbWEgZm9yIHRoZSB0b29sLiBUaGlzIHNjaGVtYSBkZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG91dHB1dCB0aGF0IHRoZSB0b29sIHByb2R1Y2VzLlxuICAgKi9cbiAgLyoqXG4gICAqIFRoZSBvdXRwdXQgc2NoZW1hIGZvciB0aGUgdG9vbC4gVGhpcyBzY2hlbWEgZGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBvdXRwdXQgdGhhdCB0aGUgdG9vbCBwcm9kdWNlcy5cbiAgICogQGRlZmF1bHQgLSBObyBvdXRwdXQgc2NoZW1hXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRTY2hlbWE/OiBTY2hlbWFEZWZpbml0aW9uO1xufVxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIGEgVG9vbFNjaGVtYSBpcyBub3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQuXG4gKi9cbmNsYXNzIFRvb2xTY2hlbWFFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBwdWJsaWMgcmVhZG9ubHkgY2F1c2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnVG9vbFNjaGVtYUVycm9yJztcbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgVE9PTCBTQ0hFTUEgQ0xBU1NcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUb29sU2NoZW1hIGV4dGVuZHMgVGFyZ2V0U2NoZW1hIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB0b29sIFNjaGVtYSBmcm9tIGEgbG9jYWwgZmlsZS5cbiAgICogQHBhcmFtIHBhdGggLSB0aGUgcGF0aCB0byB0aGUgbG9jYWwgZmlsZSBjb250YWluaW5nIHRoZSBmdW5jdGlvbiBzY2hlbWEgZm9yIHRoZSB0b29sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Mb2NhbEFzc2V0KHBhdGg6IHN0cmluZyk6IFRvb2xTY2hlbWEge1xuICAgIHJldHVybiBuZXcgQXNzZXRUb29sU2NoZW1hKHBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBUb29sIFNjaGVtYSBmcm9tIGFuIGlubGluZSBzdHJpbmcuXG4gICAqIEBwYXJhbSBzY2hlbWEgLSB0aGUgSlNPTiBvciBZQU1MIHBheWxvYWQgZGVmaW5pbmcgdGhlIE9wZW5BUEkgc2NoZW1hIGZvciB0aGUgYWN0aW9uIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbmxpbmUoc2NoZW1hOiBUb29sRGVmaW5pdGlvbltdKTogSW5saW5lVG9vbFNjaGVtYSB7XG4gICAgcmV0dXJuIG5ldyBJbmxpbmVUb29sU2NoZW1hKHNjaGVtYSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIFRvb2wgU2NoZW1hIGZyb20gYW4gUzMgRmlsZVxuICAgKiBAcGFyYW0gYnVja2V0IC0gdGhlIGJ1Y2tldCBjb250YWluaW5nIHRoZSBsb2NhbCBmaWxlIGNvbnRhaW5pbmcgdGhlIE9wZW5BUEkgc2NoZW1hIGZvciB0aGUgYWN0aW9uIGdyb3VwXG4gICAqIEBwYXJhbSBvYmplY3RLZXkgLSBvYmplY3Qga2V5IGluIHRoZSBidWNrZXRcbiAgICogQHBhcmFtIGJ1Y2tldE93bmVyQWNjb3VudElkIC0gb3B0aW9uYWwgVGhlIGFjY291bnQgSUQgb2YgdGhlIEFtYXpvbiBTMyBidWNrZXQgb3duZXIuIFRoaXMgSUQgaXMgdXNlZCBmb3IgY3Jvc3MtYWNjb3VudCBhY2Nlc3MgdG8gdGhlIGJ1Y2tldC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVMzRmlsZShidWNrZXQ6IElCdWNrZXQsIG9iamVjdEtleTogc3RyaW5nLCBidWNrZXRPd25lckFjY291bnRJZD86IHN0cmluZyk6IFMzVG9vbFNjaGVtYSB7XG4gICAgcmV0dXJuIG5ldyBTM1Rvb2xTY2hlbWEoXG4gICAgICB7XG4gICAgICAgIGJ1Y2tldE5hbWU6IGJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICBvYmplY3RLZXk6IG9iamVjdEtleSxcbiAgICAgIH0sXG4gICAgICBidWNrZXRPd25lckFjY291bnRJZCxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBTMyBsb2NhdGlvbiBvZiB0aGUgdG9vbCBzY2hlbWEgZmlsZSwgaWYgdXNpbmcgYW4gUzMtYmFzZWQgc2NoZW1hLlxuICAgKiBDb250YWlucyB0aGUgYnVja2V0IG5hbWUgYW5kIG9iamVjdCBrZXkgaW5mb3JtYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgczNGaWxlPzogTG9jYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBpbmxpbmUgdG9vbCBzY2hlbWEgZGVmaW5pdGlvbiBhcyBhIHN0cmluZywgaWYgdXNpbmcgYW4gaW5saW5lIHNjaGVtYS5cbiAgICogQ2FuIGJlIGluIEpTT04gb3IgWUFNTCBmb3JtYXQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5saW5lU2NoZW1hPzogVG9vbERlZmluaXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIGFjY291bnQgSUQgb2YgdGhlIFMzIGJ1Y2tldCBvd25lciBmb3IgY3Jvc3MtYWNjb3VudCBhY2Nlc3NcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBidWNrZXRPd25lckFjY291bnRJZD86IHN0cmluZztcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoczNGaWxlPzogTG9jYXRpb24sIGJ1Y2tldE93bmVyQWNjb3VudElkPzogc3RyaW5nLCBpbmxpbmVTY2hlbWE/OiBUb29sRGVmaW5pdGlvbltdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnMzRmlsZSA9IHMzRmlsZTtcbiAgICB0aGlzLmlubGluZVNjaGVtYSA9IGlubGluZVNjaGVtYTtcbiAgICB0aGlzLmJ1Y2tldE93bmVyQWNjb3VudElkID0gYnVja2V0T3duZXJBY2NvdW50SWQ7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IGFzIENGTiBwcm9wZXJ0aWVzXG4gICAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IF9yZW5kZXIoKTogYW55O1xufVxuXG4vKipcbiAqIFRvb2wgU2NoZW1hIGZyb20gYSBsb2NhbCBhc3NldC5cbiAqXG4gKiBUaGUgYXNzZXQgaXMgdXBsb2FkZWQgdG8gYW4gUzMgc3RhZ2luZyBidWNrZXQsIHRoZW4gbW92ZWQgdG8gaXRzIGZpbmFsIGxvY2F0aW9uXG4gKiBieSBDbG91ZEZvcm1hdGlvbiBkdXJpbmcgZGVwbG95bWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIEFzc2V0VG9vbFNjaGVtYSBleHRlbmRzIFRvb2xTY2hlbWEge1xuICBwcml2YXRlIGFzc2V0PzogczNfYXNzZXRzLkFzc2V0O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcGF0aDogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IHMzX2Fzc2V0cy5Bc3NldE9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgdGhpcyB0b29sIHNjaGVtYSB0byBhIGNvbnN0cnVjdCBzY29wZS5cbiAgICogVGhpcyBtZXRob2QgaW5pdGlhbGl6ZXMgdGhlIFMzIGFzc2V0IGlmIGl0IGhhc24ndCBiZWVuIGluaXRpYWxpemVkIHlldC5cbiAgICogTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHJlbmRlcmluZyB0aGUgc2NoZW1hIGFzIENGTiBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgY29uc3RydWN0IHNjb3BlIHRvIGJpbmQgdG9cbiAgICovXG4gIHB1YmxpYyBiaW5kKHNjb3BlOiBDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICAvLyBJZiB0aGUgc2FtZSBBc3NldFRvb2xTY2hlbWEgaXMgdXNlZCBtdWx0aXBsZSB0aW1lcywgcmV0YWluIG9ubHkgdGhlIGZpcnN0IGluc3RhbnRpYXRpb25cbiAgICBpZiAoIXRoaXMuYXNzZXQpIHtcbiAgICAgIHRoaXMuYXNzZXQgPSBuZXcgczNfYXNzZXRzLkFzc2V0KHNjb3BlLCBgU2NoZW1hJHttZDVoYXNoKHRoaXMucGF0aCl9YCwge1xuICAgICAgICBwYXRoOiB0aGlzLnBhdGgsXG4gICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgIH0pO1xuICAgICAgLy8gTm90ZTogUGVybWlzc2lvbnMgd2lsbCBiZSBncmFudGVkIGJ5IHRoZSBHYXRld2F5IHRhcmdldCBjb25zdHJ1Y3Qgd2hlbiBhZGRpbmcgdGhlIHRhcmdldFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgYXMgQ0ZOIHByb3BlcnRpZXNcbiAgICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkuXG4gICAqL1xuICBwdWJsaWMgX3JlbmRlcigpOiBhbnkge1xuICAgIGlmICghdGhpcy5hc3NldCkge1xuICAgICAgdGhyb3cgbmV3IFRvb2xTY2hlbWFFcnJvcihcbiAgICAgICAgJ1Rvb2xTY2hlbWEgbXVzdCBiZSBib3VuZCB0byBhIHNjb3BlIGJlZm9yZSByZW5kZXJpbmcuIENhbGwgYmluZCgpIGZpcnN0LicsXG4gICAgICAgICdBc3NldCBub3QgaW5pdGlhbGl6ZWQnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgczM6IHtcbiAgICAgICAgdXJpOiBgczM6Ly8ke3RoaXMuYXNzZXQuczNCdWNrZXROYW1lfS8ke3RoaXMuYXNzZXQuczNPYmplY3RLZXl9YCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudFBlcm1pc3Npb25zVG9Sb2xlKHJvbGU6IElSb2xlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFzc2V0KSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbFNjaGVtYUVycm9yKFxuICAgICAgICAnVG9vbFNjaGVtYSBtdXN0IGJlIGJvdW5kIHRvIGEgc2NvcGUgYmVmb3JlIHJlbmRlcmluZy4gQ2FsbCBiaW5kKCkgZmlyc3QuJyxcbiAgICAgICAgJ0Fzc2V0IG5vdCBpbml0aWFsaXplZCcsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmFzc2V0LmdyYW50UmVhZChyb2xlKTtcbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qKlxuICogQ2xhc3MgdG8gZGVmaW5lIGEgVG9vbCBTY2hlbWEgZnJvbSBhbiBpbmxpbmUgc3RyaW5nLlxuICogVGhlIHNjaGVtYSBjYW4gYmUgcHJvdmlkZWQgZGlyZWN0bHkgYXMgYSBzdHJpbmcgaW4gZWl0aGVyIEpTT04gb3IgWUFNTCBmb3JtYXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbmxpbmVUb29sU2NoZW1hIGV4dGVuZHMgVG9vbFNjaGVtYSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2NoZW1hOiBUb29sRGVmaW5pdGlvbltdKSB7XG4gICAgc3VwZXIodW5kZWZpbmVkLCB1bmRlZmluZWQsIHNjaGVtYSk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkuXG4gICAqL1xuICBwdWJsaWMgX3JlbmRlcigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBpbmxpbmVQYXlsb2FkOiB0aGlzLnNjaGVtYSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGJpbmQoc2NvcGU6IENvbnN0cnVjdCk6IHZvaWQge1xuICAgIGlmIChzY29wZSkge1xuICAgIH1cbiAgICAvLyBOby1vcFxuICB9XG5cbiAgcHVibGljIGdyYW50UGVybWlzc2lvbnNUb1JvbGUoX3JvbGU6IElSb2xlKTogdm9pZCB7XG4gICAgLy8gTm8tb3AgLSBJbmxpbmVUb29sU2NoZW1hIGRvZXNuJ3QgbmVlZCBwZXJtaXNzaW9uc1xuICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUzMgRmlsZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKipcbiAqIENsYXNzIHRvIGRlZmluZSBhIFRvb2wgU2NoZW1hIGZyb20gYW4gUzMgb2JqZWN0LlxuICovXG5leHBvcnQgY2xhc3MgUzNUb29sU2NoZW1hIGV4dGVuZHMgVG9vbFNjaGVtYSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb246IExvY2F0aW9uLCBwdWJsaWMgcmVhZG9ubHkgYnVja2V0T3duZXJBY2NvdW50SWQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihsb2NhdGlvbiwgYnVja2V0T3duZXJBY2NvdW50SWQsIHVuZGVmaW5lZCk7XG4gIH1cbiAgLyoqXG4gICAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LlxuICAgKi9cbiAgcHVibGljIF9yZW5kZXIoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgczM6IHtcbiAgICAgICAgdXJpOiBgczM6Ly8ke3RoaXMubG9jYXRpb24uYnVja2V0TmFtZX0vJHt0aGlzLmxvY2F0aW9uLm9iamVjdEtleX1gLFxuICAgICAgICAuLi4odGhpcy5idWNrZXRPd25lckFjY291bnRJZCAmJiB7IGJ1Y2tldE93bmVyQWNjb3VudElkOiB0aGlzLmJ1Y2tldE93bmVyQWNjb3VudElkIH0pLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGJpbmQoc2NvcGU6IENvbnN0cnVjdCk6IHZvaWQge1xuICAgIGlmIChzY29wZSkge1xuICAgIH1cbiAgICAvLyBOby1vcFxuICB9XG5cbiAgcHVibGljIGdyYW50UGVybWlzc2lvbnNUb1JvbGUocm9sZTogSVJvbGUpOiB2b2lkIHtcbiAgICBHcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiByb2xlLFxuICAgICAgYWN0aW9uczogWydzMzpHZXRPYmplY3QnXSxcbiAgICAgIHJlc291cmNlQXJuczogW2Bhcm46JHtBd3MuUEFSVElUSU9OfTpzMzo6OiR7dGhpcy5sb2NhdGlvbi5idWNrZXROYW1lfS8ke3RoaXMubG9jYXRpb24ub2JqZWN0S2V5fWBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -39,7 +39,7 @@ var McpTargetType;
39
39
  * permission management and property definitions.
40
40
  */
41
41
  class GatewayTargetBase extends aws_cdk_lib_1.Resource {
42
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayTargetBase", version: "2.235.1-alpha.0" };
42
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayTargetBase", version: "2.237.0-alpha.0" };
43
43
  /**
44
44
  * Grants IAM actions to the IAM Principal
45
45
  *
@@ -16,7 +16,7 @@ const validation_helpers_1 = require("../validation-helpers");
16
16
  * Provides common functionality for all MCP target types
17
17
  */
18
18
  class McpTargetConfiguration {
19
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.McpTargetConfiguration", version: "2.235.1-alpha.0" };
19
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.McpTargetConfiguration", version: "2.237.0-alpha.0" };
20
20
  /**
21
21
  * Renders the configuration as CloudFormation properties
22
22
  * @internal
@@ -38,7 +38,7 @@ exports.McpTargetConfiguration = McpTargetConfiguration;
38
38
  * allowing the gateway to invoke the function to provide tool capabilities.
39
39
  */
40
40
  class LambdaTargetConfiguration extends McpTargetConfiguration {
41
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.LambdaTargetConfiguration", version: "2.235.1-alpha.0" };
41
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.LambdaTargetConfiguration", version: "2.237.0-alpha.0" };
42
42
  /**
43
43
  * Create a Lambda target configuration
44
44
  *
@@ -128,7 +128,7 @@ exports.LambdaTargetConfiguration = LambdaTargetConfiguration;
128
128
  * allowing the gateway to transform API operations into tool calls.
129
129
  */
130
130
  class OpenApiTargetConfiguration extends McpTargetConfiguration {
131
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.OpenApiTargetConfiguration", version: "2.235.1-alpha.0" };
131
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.OpenApiTargetConfiguration", version: "2.237.0-alpha.0" };
132
132
  /**
133
133
  * Create an OpenAPI target configuration
134
134
  *
@@ -246,7 +246,7 @@ exports.OpenApiTargetConfiguration = OpenApiTargetConfiguration;
246
246
  * allowing the gateway to transform Smithy operations into tool calls.
247
247
  */
248
248
  class SmithyTargetConfiguration extends McpTargetConfiguration {
249
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.SmithyTargetConfiguration", version: "2.235.1-alpha.0" };
249
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.SmithyTargetConfiguration", version: "2.237.0-alpha.0" };
250
250
  /**
251
251
  * Create a Smithy target configuration
252
252
  *
@@ -328,7 +328,7 @@ exports.SmithyTargetConfiguration = SmithyTargetConfiguration;
328
328
  * synchronization.
329
329
  */
330
330
  class McpServerTargetConfiguration extends McpTargetConfiguration {
331
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.McpServerTargetConfiguration", version: "2.235.1-alpha.0" };
331
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.McpServerTargetConfiguration", version: "2.237.0-alpha.0" };
332
332
  /**
333
333
  * Create an MCP server target configuration
334
334
  *
@@ -18,8 +18,9 @@ export interface GatewayTargetCommonProps {
18
18
  * The name of the gateway target
19
19
  * The name must be unique within the gateway
20
20
  * Pattern: ^([0-9a-zA-Z][-]?){1,100}$
21
+ * @default - auto generate
21
22
  */
22
- readonly gatewayTargetName: string;
23
+ readonly gatewayTargetName?: string;
23
24
  /**
24
25
  * Optional description for the gateway target
25
26
  * The description can have up to 200 characters
@@ -78,7 +78,7 @@ let GatewayTarget = (() => {
78
78
  GatewayTarget = _classThis = _classDescriptor.value;
79
79
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
80
80
  }
81
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayTarget", version: "2.235.1-alpha.0" };
81
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayTarget", version: "2.237.0-alpha.0" };
82
82
  /** Uniquely identifies this class. */
83
83
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.GatewayTarget';
84
84
  /**
@@ -285,7 +285,14 @@ let GatewayTarget = (() => {
285
285
  targetResource;
286
286
  targetConfiguration;
287
287
  constructor(scope, id, props) {
288
- super(scope, id);
288
+ super(scope, id, {
289
+ // Maximum name length of 100 characters
290
+ // @see https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-bedrockagentcore-gatewaytarget.html#cfn-bedrockagentcore-gatewaytarget-name
291
+ physicalName: props.gatewayTargetName ??
292
+ aws_cdk_lib_1.Lazy.string({
293
+ produce: () => aws_cdk_lib_1.Names.uniqueResourceName(this, { maxLength: 100 }),
294
+ }),
295
+ });
289
296
  try {
290
297
  jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_GatewayTargetProps(props);
291
298
  }
@@ -298,7 +305,7 @@ let GatewayTarget = (() => {
298
305
  // Enhanced CDK Analytics Telemetry
299
306
  (0, metadata_resource_1.addConstructMetadata)(this, props);
300
307
  // Validate and assign properties
301
- this.name = props.gatewayTargetName;
308
+ this.name = this.physicalName;
302
309
  this.validateGatewayTargetName(this.name);
303
310
  this.description = props.description;
304
311
  if (this.description) {
@@ -443,4 +450,4 @@ let GatewayTarget = (() => {
443
450
  return GatewayTarget = _classThis;
444
451
  })();
445
452
  exports.GatewayTarget = GatewayTarget;
446
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGFyZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEwQztBQUMxQyxxRUFBcUU7QUFDckUsMkNBQTJDO0FBRTNDLDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFHMUUsb0NBQThDO0FBRzlDLCtDQUErSDtBQUMvSCxpRUFBOEs7QUFDOUssOEVBQTRHO0FBQzVHLDhEQUFtRztBQXNNbkc7OytFQUUrRTtBQUUvRTs7Ozs7Ozs7O0dBU0c7SUFFVSxhQUFhOzRCQUR6QixvQ0FBa0I7Ozs7c0JBQ2dCLCtCQUFpQjs7OzZCQUF6QixTQUFRLFdBQWlCOzs7O3FDQW1SakQsSUFBQSxrQ0FBYyxHQUFFO1lBQ2pCLDhLQUFPLFNBQVMsNkRBTWY7WUExUkgsNktBK1hDOzs7OztRQTlYQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLG9EQUFvRCxDQUFDO1FBQzVHOzs7Ozs7OztXQVFHO1FBQ0ksTUFBTSxDQUFDLDJCQUEyQixDQUN2QyxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBOEI7Ozs7Ozs7Ozs7WUFFOUIsTUFBTSxxQkFBc0IsU0FBUSwrQkFBaUI7Z0JBQ25DLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUM1QixRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFDMUIsSUFBSSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0IsV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQzNCLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO2dCQUN4QixnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7Z0JBQ3RDLGtCQUFrQixHQUFHLHVDQUF5QixDQUFDLEdBQUcsQ0FBQztnQkFDbkQsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQ3RCLGFBQWEsR0FB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QjtnQkFDdkMsU0FBUyxFQUFFLENBQUM7Z0JBQ1osU0FBUyxFQUFFLEdBQUc7YUFDZixDQUFDLENBQUM7WUFFSCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sSUFBSSxvQ0FBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMvQyxDQUFDO1NBQ0Y7O1lBOVhVLHVEQUFhOzs7OztBQUFiLHNDQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGF6eSwgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBiZWRyb2NrYWdlbnRjb3JlIGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSUdhdGV3YXkgfSBmcm9tICcuLi9nYXRld2F5LWJhc2UnO1xuaW1wb3J0IHsgR0FURVdBWV9TWU5DX1BFUk1TIH0gZnJvbSAnLi4vcGVybXMnO1xuaW1wb3J0IHsgQXBpU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEvYXBpLXNjaGVtYSc7XG5pbXBvcnQgeyBUb29sU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEvdG9vbC1zY2hlbWEnO1xuaW1wb3J0IHsgR2F0ZXdheVRhcmdldEJhc2UsIEdhdGV3YXlUYXJnZXRQcm90b2NvbFR5cGUsIElHYXRld2F5VGFyZ2V0LCBJTWNwR2F0ZXdheVRhcmdldCwgTWNwVGFyZ2V0VHlwZSB9IGZyb20gJy4vdGFyZ2V0LWJhc2UnO1xuaW1wb3J0IHsgSVRhcmdldENvbmZpZ3VyYXRpb24sIExhbWJkYVRhcmdldENvbmZpZ3VyYXRpb24sIE1jcFNlcnZlclRhcmdldENvbmZpZ3VyYXRpb24sIE9wZW5BcGlUYXJnZXRDb25maWd1cmF0aW9uLCBTbWl0aHlUYXJnZXRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi90YXJnZXQtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyLCBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnIH0gZnJvbSAnLi4vb3V0Ym91bmQtYXV0aC9jcmVkZW50aWFsLXByb3ZpZGVyJztcbmltcG9ydCB7IHZhbGlkYXRlU3RyaW5nRmllbGQsIHZhbGlkYXRlRmllbGRQYXR0ZXJuLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi92YWxpZGF0aW9uLWhlbHBlcnMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvcHNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBDb21tb24gcHJvcGVydGllcyBmb3IgYWxsIEdhdGV3YXkgVGFyZ2V0IHR5cGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheVRhcmdldENvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBUaGUgbmFtZSBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGdhdGV3YXlcbiAgICogUGF0dGVybjogXihbMC05YS16QS1aXVstXT8pezEsMTAwfSRcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlUYXJnZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogVGhlIGRlc2NyaXB0aW9uIGNhbiBoYXZlIHVwIHRvIDIwMCBjaGFyYWN0ZXJzXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgR2F0ZXdheSBUYXJnZXQgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5VGFyZ2V0UHJvcHMgZXh0ZW5kcyBHYXRld2F5VGFyZ2V0Q29tbW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIGdhdGV3YXkgdGhpcyB0YXJnZXQgYmVsb25ncyB0b1xuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheTogSUdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgY29uZmlndXJhdGlvbiAoTGFtYmRhLCBPcGVuQVBJLCBvciBTbWl0aHkpXG4gICAqIFVzZSBvbmUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaGVscGVyIGNsYXNzZXM6XG4gICAqIC0gTGFtYmRhVGFyZ2V0Q29uZmlndXJhdGlvbi5jcmVhdGUoKVxuICAgKiAtIE9wZW5BcGlUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZSgpXG4gICAqIC0gU21pdGh5VGFyZ2V0Q29uZmlndXJhdGlvbi5jcmVhdGUoKVxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0Q29uZmlndXJhdGlvbjogSVRhcmdldENvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKiBAZGVmYXVsdCAtIFtHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyLmZyb21JYW1Sb2xlKCldXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz86IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIExhbWJkYS1iYXNlZCBHYXRld2F5IFRhcmdldFxuICogQ29udmVuaWVuY2UgaW50ZXJmYWNlIGZvciB0aGUgbW9zdCBjb21tb24gdXNlIGNhc2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5VGFyZ2V0TGFtYmRhUHJvcHMgZXh0ZW5kcyBHYXRld2F5VGFyZ2V0Q29tbW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIGdhdGV3YXkgdGhpcyB0YXJnZXQgYmVsb25ncyB0b1xuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheTogSUdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIFRoZSBMYW1iZGEgZnVuY3Rpb24gdG8gYXNzb2NpYXRlIHdpdGggdGhpcyB0YXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUZ1bmN0aW9uOiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0b29sIHNjaGVtYSBkZWZpbmluZyB0aGUgYXZhaWxhYmxlIHRvb2xzXG4gICAqL1xuICByZWFkb25seSB0b29sU2NoZW1hOiBUb29sU2NoZW1hO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICogTGFtYmRhIHRhcmdldHMgb25seSBzdXBwb3J0IElBTSByb2xlIGF1dGhlbnRpY2F0aW9uXG4gICAqIEBkZWZhdWx0IC0gW0dhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIuZnJvbUlhbVJvbGUoKV1cbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPzogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGFuIE9wZW5BUEktYmFzZWQgR2F0ZXdheSBUYXJnZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5VGFyZ2V0T3BlbkFwaVByb3BzIGV4dGVuZHMgR2F0ZXdheVRhcmdldENvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHRoaXMgdGFyZ2V0IGJlbG9uZ3MgdG9cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk6IElHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBUaGUgT3BlbkFQSSBzY2hlbWEgZGVmaW5pbmcgdGhlIEFQSVxuICAgKi9cbiAgcmVhZG9ubHkgYXBpU2NoZW1hOiBBcGlTY2hlbWE7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdmFsaWRhdGUgdGhlIE9wZW5BUEkgc2NoZW1hIChvbmx5IGFwcGxpZXMgdG8gaW5saW5lIHNjaGVtYXMpXG4gICAqIE5vdGU6IFZhbGlkYXRpb24gaXMgb25seSBwZXJmb3JtZWQgZm9yIGlubGluZSBzY2hlbWFzIGR1cmluZyBDREsgc3ludGhlc2lzLlxuICAgKiBTMyBhbmQgYXNzZXQtYmFzZWQgc2NoZW1hcyBjYW5ub3QgYmUgdmFsaWRhdGVkIGF0IHN5bnRoZXNpcyB0aW1lLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0ZU9wZW5BcGlTY2hlbWE/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICogT3BlbkFQSSB0YXJnZXRzIHN1cHBvcnQgQVBJIGtleSBhbmQgT0F1dGggYXV0aGVudGljYXRpb24gKG5vdCBJQU0pXG4gICAqIEBkZWZhdWx0IC0gSWYgbm90IHByb3ZpZGVkLCBkZWZhdWx0cyB0byBJQU0gcm9sZSB3aGljaCB3aWxsIGZhaWwgYXQgcnVudGltZVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM/OiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBTbWl0aHktYmFzZWQgR2F0ZXdheSBUYXJnZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5VGFyZ2V0U21pdGh5UHJvcHMgZXh0ZW5kcyBHYXRld2F5VGFyZ2V0Q29tbW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIGdhdGV3YXkgdGhpcyB0YXJnZXQgYmVsb25ncyB0b1xuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheTogSUdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIFRoZSBTbWl0aHkgbW9kZWwgZGVmaW5pbmcgdGhlIEFQSVxuICAgKi9cbiAgcmVhZG9ubHkgc21pdGh5TW9kZWw6IEFwaVNjaGVtYTtcblxuICAvKipcbiAgICogQ3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqIFNtaXRoeSB0YXJnZXRzIG9ubHkgc3VwcG9ydCBJQU0gcm9sZSBhdXRoZW50aWNhdGlvblxuICAgKiBAZGVmYXVsdCAtIFtHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyLmZyb21JYW1Sb2xlKCldXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz86IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhbiBNQ1AgU2VydmVyLWJhc2VkIEdhdGV3YXkgVGFyZ2V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheVRhcmdldE1jcFNlcnZlclByb3BzIGV4dGVuZHMgR2F0ZXdheVRhcmdldENvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHRoaXMgdGFyZ2V0IGJlbG9uZ3MgdG9cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk6IElHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBUaGUgSFRUUFMgZW5kcG9pbnQgVVJMIG9mIHRoZSBNQ1Agc2VydmVyXG4gICAqXG4gICAqIFRoZSBlbmRwb2ludCBtdXN0OlxuICAgKiAtIFVzZSBIVFRQUyBwcm90b2NvbFxuICAgKiAtIEJlIHByb3Blcmx5IFVSTC1lbmNvZGVkXG4gICAqIC0gUG9pbnQgdG8gYW4gTUNQIHNlcnZlciB0aGF0IGltcGxlbWVudHMgdG9vbCBjYXBhYmlsaXRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcbn1cblxuLyoqXG4gKiBBdHRyaWJ1dGVzIGZvciBpbXBvcnRpbmcgYW4gZXhpc3RpbmcgR2F0ZXdheSBUYXJnZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5VGFyZ2V0QXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheVRhcmdldE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGdhdGV3YXkgdGhpcyB0YXJnZXQgYmVsb25ncyB0b1xuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheTogSUdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHN0YXR1cyBvZiB0aGUgdGFyZ2V0XG4gICAqIEBkZWZhdWx0IC0gTm8gc3RhdHVzXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNyZWF0aW9uIHRpbWVzdGFtcFxuICAgKiBAZGVmYXVsdCAtIE5vIGNyZWF0aW9uIHRpbWVzdGFtcFxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlZEF0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBsYXN0IHVwZGF0ZSB0aW1lc3RhbXBcbiAgICogQGRlZmF1bHQgLSBObyB1cGRhdGUgdGltZXN0YW1wXG4gICAqL1xuICByZWFkb25seSB1cGRhdGVkQXQ/OiBzdHJpbmc7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqXG4gKiBEZWZpbmVzIHRvb2xzIHRoYXQgeW91ciBnYXRld2F5IHdpbGwgaG9zdC4gU3VwcG9ydHMgbXVsdGlwbGUgdGFyZ2V0IHR5cGVzOlxuICogLSBMYW1iZGE6IFdyYXBzIGEgTGFtYmRhIGZ1bmN0aW9uIGFzIE1DUCB0b29sc1xuICogLSBPcGVuQVBJOiBFeHBvc2VzIGFuIE9wZW5BUEkvUkVTVCBBUEkgYXMgTUNQIHRvb2xzXG4gKiAtIFNtaXRoeTogRXhwb3NlcyBhIFNtaXRoeS1tb2RlbGVkIEFQSSBhcyBNQ1AgdG9vbHNcbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpCZWRyb2NrQWdlbnRDb3JlOjpHYXRld2F5VGFyZ2V0XG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS9sYXRlc3QvZGV2Z3VpZGUvZ2F0ZXdheS1idWlsZGluZy1hZGRpbmctdGFyZ2V0cy5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBHYXRld2F5VGFyZ2V0IGV4dGVuZHMgR2F0ZXdheVRhcmdldEJhc2UgaW1wbGVtZW50cyBJTWNwR2F0ZXdheVRhcmdldCB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWJlZHJvY2stYWdlbnRjb3JlLWFscGhhLkdhdGV3YXlUYXJnZXQnO1xuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIEdhdGV3YXkgVGFyZ2V0IHVzaW5nIGl0cyBhdHRyaWJ1dGVzXG4gICAqIFRoaXMgYWxsb3dzIHlvdSB0byByZWZlcmVuY2UgYSBHYXRld2F5IFRhcmdldCB0aGF0IHdhcyBjcmVhdGVkIG91dHNpZGUgb2YgQ0RLXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBhdHRycyBUaGUgYXR0cmlidXRlcyBvZiB0aGUgZXhpc3RpbmcgR2F0ZXdheSBUYXJnZXRcbiAgICogQHJldHVybnMgQW4gSUdhdGV3YXlUYXJnZXQgaW5zdGFuY2UgcmVwcmVzZW50aW5nIHRoZSBpbXBvcnRlZCB0YXJnZXRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUdhdGV3YXlUYXJnZXRBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogR2F0ZXdheVRhcmdldEF0dHJpYnV0ZXMsXG4gICk6IElHYXRld2F5VGFyZ2V0IHtcbiAgICBjbGFzcyBJbXBvcnRlZEdhdGV3YXlUYXJnZXQgZXh0ZW5kcyBHYXRld2F5VGFyZ2V0QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0QXJuID0gYXR0cnMudGFyZ2V0QXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhcmdldElkID0gYXR0cnMudGFyZ2V0SWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZSA9IGF0dHJzLmdhdGV3YXlUYXJnZXROYW1lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gYXR0cnMuc3RhdHVzO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGdhdGV3YXkgPSBhdHRycy5nYXRld2F5O1xuICAgICAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zID0gW107XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0UHJvdG9jb2xUeXBlID0gR2F0ZXdheVRhcmdldFByb3RvY29sVHlwZS5NQ1A7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzID0gYXR0cnMuc3RhdHVzO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHN0YXR1c1JlYXNvbnMgPSB1bmRlZmluZWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlZEF0ID0gYXR0cnMuY3JlYXRlZEF0O1xuICAgICAgcHVibGljIHJlYWRvbmx5IHVwZGF0ZWRBdCA9IGF0dHJzLnVwZGF0ZWRBdDtcblxuICAgICAgY29uc3RydWN0b3IoczogQ29uc3RydWN0LCBpOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocywgaSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRHYXRld2F5VGFyZ2V0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgTGFtYmRhLWJhc2VkIE1DUCB0YXJnZXRcbiAgICogQ29udmVuaWVuY2UgbWV0aG9kIGZvciBjcmVhdGluZyBhIHRhcmdldCB0aGF0IHdyYXBzIGEgTGFtYmRhIGZ1bmN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcGVydGllcyBmb3IgdGhlIExhbWJkYSB0YXJnZXRcbiAgICogQHJldHVybnMgQSBuZXcgR2F0ZXdheVRhcmdldCBpbnN0YW5jZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JMYW1iZGEoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBHYXRld2F5VGFyZ2V0TGFtYmRhUHJvcHMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVRhcmdldChzY29wZSwgaWQsIHtcbiAgICAgIGdhdGV3YXk6IHByb3BzLmdhdGV3YXksXG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBMYW1iZGFUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZShcbiAgICAgICAgcHJvcHMubGFtYmRhRnVuY3Rpb24sXG4gICAgICAgIHByb3BzLnRvb2xTY2hlbWEsXG4gICAgICApLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBPcGVuQVBJLWJhc2VkIE1DUCB0YXJnZXRcbiAgICogQ29udmVuaWVuY2UgbWV0aG9kIGZvciBjcmVhdGluZyBhIHRhcmdldCB0aGF0IGV4cG9zZXMgYW4gT3BlbkFQSS9SRVNUIEFQSVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCBpZFxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIHByb3BlcnRpZXMgZm9yIHRoZSBPcGVuQVBJIHRhcmdldFxuICAgKiBAcmV0dXJucyBBIG5ldyBHYXRld2F5VGFyZ2V0IGluc3RhbmNlXG4gICAqXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZvck9wZW5BcGkoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBHYXRld2F5VGFyZ2V0T3BlbkFwaVByb3BzLFxuICApOiBHYXRld2F5VGFyZ2V0IHtcbiAgICByZXR1cm4gbmV3IEdhdGV3YXlUYXJnZXQoc2NvcGUsIGlkLCB7XG4gICAgICBnYXRld2F5OiBwcm9wcy5nYXRld2F5LFxuICAgICAgZ2F0ZXdheVRhcmdldE5hbWU6IHByb3BzLmdhdGV3YXlUYXJnZXROYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zLFxuICAgICAgdGFyZ2V0Q29uZmlndXJhdGlvbjogT3BlbkFwaVRhcmdldENvbmZpZ3VyYXRpb24uY3JlYXRlKHByb3BzLmFwaVNjaGVtYSwgcHJvcHMudmFsaWRhdGVPcGVuQXBpU2NoZW1hKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBTbWl0aHktYmFzZWQgTUNQIHRhcmdldFxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGNyZWF0aW5nIGEgdGFyZ2V0IHRoYXQgZXhwb3NlcyBhIFNtaXRoeS1tb2RlbGVkIEFQSVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCBpZFxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIHByb3BlcnRpZXMgZm9yIHRoZSBTbWl0aHkgdGFyZ2V0XG4gICAqIEByZXR1cm5zIEEgbmV3IEdhdGV3YXlUYXJnZXQgaW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZm9yU21pdGh5KFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogR2F0ZXdheVRhcmdldFNtaXRoeVByb3BzLFxuICApOiBHYXRld2F5VGFyZ2V0IHtcbiAgICByZXR1cm4gbmV3IEdhdGV3YXlUYXJnZXQoc2NvcGUsIGlkLCB7XG4gICAgICBnYXRld2F5OiBwcm9wcy5nYXRld2F5LFxuICAgICAgZ2F0ZXdheVRhcmdldE5hbWU6IHByb3BzLmdhdGV3YXlUYXJnZXROYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zLFxuICAgICAgdGFyZ2V0Q29uZmlndXJhdGlvbjogU21pdGh5VGFyZ2V0Q29uZmlndXJhdGlvbi5jcmVhdGUocHJvcHMuc21pdGh5TW9kZWwpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBNQ1AgU2VydmVyLWJhc2VkIHRhcmdldFxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGNyZWF0aW5nIGEgdGFyZ2V0IHRoYXQgY29ubmVjdHMgdG8gYW4gZXh0ZXJuYWwgTUNQIHNlcnZlclxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCBpZFxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIHByb3BlcnRpZXMgZm9yIHRoZSBNQ1Agc2VydmVyIHRhcmdldFxuICAgKiBAcmV0dXJucyBBIG5ldyBHYXRld2F5VGFyZ2V0IGluc3RhbmNlXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9nYXRld2F5LXRhcmdldC1NQ1BzZXJ2ZXJzLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZm9yTWNwU2VydmVyKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogR2F0ZXdheVRhcmdldE1jcFNlcnZlclByb3BzLFxuICApOiBHYXRld2F5VGFyZ2V0IHtcbiAgICByZXR1cm4gbmV3IEdhdGV3YXlUYXJnZXQoc2NvcGUsIGlkLCB7XG4gICAgICBnYXRld2F5OiBwcm9wcy5nYXRld2F5LFxuICAgICAgZ2F0ZXdheVRhcmdldE5hbWU6IHByb3BzLmdhdGV3YXlUYXJnZXROYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zLFxuICAgICAgdGFyZ2V0Q29uZmlndXJhdGlvbjogTWNwU2VydmVyVGFyZ2V0Q29uZmlndXJhdGlvbi5jcmVhdGUocHJvcHMuZW5kcG9pbnQpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRBcm47XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldElkO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHRoaXMgdGFyZ2V0IGJlbG9uZ3MgdG9cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnYXRld2F5O1xuXG4gIC8qKlxuICAgKiBUaGUgY3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIHRoaXMgdGFyZ2V0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHByb3RvY29sIHR5cGUgKGFsd2F5cyBNQ1AgZm9yIG5vdylcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRQcm90b2NvbFR5cGUgPSBHYXRld2F5VGFyZ2V0UHJvdG9jb2xUeXBlLk1DUDtcblxuICAvKipcbiAgICogVGhlIHNwZWNpZmljIE1DUCB0YXJnZXQgdHlwZSAoTGFtYmRhLCBPcGVuQVBJLCBTbWl0aHksIG9yIE1DUCBTZXJ2ZXIpXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0VHlwZTogTWNwVGFyZ2V0VHlwZTtcblxuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1cz87XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgcmVhc29ucyBmb3IgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdGF0dXNSZWFzb25zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCB3aGVuIHRoZSBnYXRld2F5IHRhcmdldCB3YXMgY3JlYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlZEF0PztcblxuICAvKipcbiAgICogVGltZXN0YW1wIHdoZW4gdGhlIGdhdGV3YXkgdGFyZ2V0IHdhcyBsYXN0IHVwZGF0ZWRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVwZGF0ZWRBdD87XG5cbiAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXRSZXNvdXJjZTogYmVkcm9ja2FnZW50Y29yZS5DZm5HYXRld2F5VGFyZ2V0O1xuICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldENvbmZpZ3VyYXRpb246IElUYXJnZXRDb25maWd1cmF0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBHYXRld2F5VGFyZ2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgLy8gVmFsaWRhdGUgYW5kIGFzc2lnbiBwcm9wZXJ0aWVzXG4gICAgdGhpcy5uYW1lID0gcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWU7XG4gICAgdGhpcy52YWxpZGF0ZUdhdGV3YXlUYXJnZXROYW1lKHRoaXMubmFtZSk7XG5cbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gcHJvcHMuZGVzY3JpcHRpb247XG4gICAgaWYgKHRoaXMuZGVzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudmFsaWRhdGVEZXNjcmlwdGlvbih0aGlzLmRlc2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLmdhdGV3YXkgPSBwcm9wcy5nYXRld2F5O1xuICAgIHRoaXMudGFyZ2V0Q29uZmlndXJhdGlvbiA9IHByb3BzLnRhcmdldENvbmZpZ3VyYXRpb247XG4gICAgdGhpcy50YXJnZXRUeXBlID0gdGhpcy50YXJnZXRDb25maWd1cmF0aW9uLnRhcmdldFR5cGU7XG5cbiAgICAvLyBHZXQgdGFyZ2V0LXNwZWNpZmljIGNyZWRlbnRpYWwgY29uZmlndXJhdGlvbnNcbiAgICB0aGlzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zID0gdGhpcy5fZ2V0VGFyZ2V0U3BlY2lmaWNDcmVkZW50aWFscyhcbiAgICAgIHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zLFxuICAgICk7XG5cbiAgICAvLyBCaW5kIHRoZSB0YXJnZXQgY29uZmlndXJhdGlvblxuICAgIC8vIFRoaXMgc2V0cyB1cCBwZXJtaXNzaW9ucyBhbmQgZGVwZW5kZW5jaWVzXG4gICAgdGhpcy50YXJnZXRDb25maWd1cmF0aW9uLmJpbmQodGhpcywgdGhpcy5nYXRld2F5KTtcblxuICAgIC8vIENyZWF0ZSB0aGUgTDEgY29uc3RydWN0XG4gICAgY29uc3QgY2ZuUHJvcHM6IGJlZHJvY2thZ2VudGNvcmUuQ2ZuR2F0ZXdheVRhcmdldFByb3BzID0ge1xuICAgICAgZ2F0ZXdheUlkZW50aWZpZXI6IHRoaXMuZ2F0ZXdheS5nYXRld2F5SWQsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBMYXp5LmFueSh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IHRoaXMuX3JlbmRlckNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zKCksXG4gICAgICB9KSxcblxuICAgICAgdGFyZ2V0Q29uZmlndXJhdGlvbjogTGF6eS5hbnkoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiB0aGlzLnRhcmdldENvbmZpZ3VyYXRpb24uX3JlbmRlcigpLFxuICAgICAgfSksXG4gICAgfTtcblxuICAgIHRoaXMudGFyZ2V0UmVzb3VyY2UgPSBuZXcgYmVkcm9ja2FnZW50Y29yZS5DZm5HYXRld2F5VGFyZ2V0KFxuICAgICAgdGhpcyxcbiAgICAgICdSZXNvdXJjZScsXG4gICAgICBjZm5Qcm9wcyxcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMpIHtcbiAgICAgIGZvciAoY29uc3QgcHJvdmlkZXIgb2YgdGhpcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucykge1xuICAgICAgICBwcm92aWRlclxuICAgICAgICAgIC5ncmFudE5lZWRlZFBlcm1pc3Npb25zVG9Sb2xlKHRoaXMuZ2F0ZXdheS5yb2xlKVxuICAgICAgICAgID8uYXBwbHlCZWZvcmUodGhpcy50YXJnZXRSZXNvdXJjZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50YXJnZXRJZCA9IHRoaXMudGFyZ2V0UmVzb3VyY2UuYXR0clRhcmdldElkO1xuICAgIHRoaXMudGFyZ2V0QXJuID0gdGhpcy50YXJnZXRSZXNvdXJjZS5yZWY7XG4gICAgdGhpcy5zdGF0dXMgPSB0aGlzLnRhcmdldFJlc291cmNlLmF0dHJTdGF0dXM7XG4gICAgdGhpcy5zdGF0dXNSZWFzb25zID0gdGhpcy50YXJnZXRSZXNvdXJjZS5hdHRyU3RhdHVzUmVhc29ucztcbiAgICB0aGlzLmNyZWF0ZWRBdCA9IHRoaXMudGFyZ2V0UmVzb3VyY2UuYXR0ckNyZWF0ZWRBdDtcbiAgICB0aGlzLnVwZGF0ZWRBdCA9IHRoaXMudGFyZ2V0UmVzb3VyY2UuYXR0clVwZGF0ZWRBdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBzeW5jaHJvbml6ZSB0aGlzIGdhdGV3YXkncyB0YXJnZXRzXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGdyYW50cyB0aGUgYFN5bmNocm9uaXplR2F0ZXdheVRhcmdldHNgIHBlcm1pc3Npb24sIHdoaWNoIGlzIHByaW1hcmlseVxuICAgKiBuZWVkZWQgZm9yIE1DUCBTZXJ2ZXIgdGFyZ2V0cyB3aGVuIHlvdSBuZWVkIHRvIHJlZnJlc2ggdGhlIHRvb2wgY2F0YWxvZyBhZnRlciB0aGVcbiAgICogTUNQIHNlcnZlcidzIHRvb2xzIGhhdmUgY2hhbmdlZC5cbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgZ3JhbnRTeW5jKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICBhY3Rpb25zOiBHQVRFV0FZX1NZTkNfUEVSTVMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLmdhdGV3YXkuZ2F0ZXdheUFybl0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgY3JlZGVudGlhbCBwcm92aWRlciBjb25maWd1cmF0aW9ucyBiYXNlZCBvbiB0YXJnZXQgdHlwZVxuICAgKlxuICAgKiAtIExhbWJkYSAmIFNtaXRoeTogRGVmYXVsdCB0byBJQU0gcm9sZSBpZiBub3QgcHJvdmlkZWRcbiAgICogLSBNQ1AgU2VydmVyOiBSZXR1cm4gdW5kZWZpbmVkIGlmIG5vdCBwcm92aWRlZCAoc2VydmljZSBoYW5kbGVzIE5vQXV0aClcbiAgICogLSBPcGVuQVBJOiBSZXR1cm4gYXMtaXMgKG11c3QgYmUgZXhwbGljaXRseSBwcm92aWRlZClcbiAgICpcbiAgICogQHBhcmFtIHByb3ZpZGVkQ3JlZGVudGlhbHMgVGhlIGNyZWRlbnRpYWxzIGZyb20gcHJvcHNcbiAgICogQHJldHVybnMgVGhlIGNyZWRlbnRpYWwgY29uZmlndXJhdGlvbnMgdG8gdXNlLCBvciB1bmRlZmluZWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIF9nZXRUYXJnZXRTcGVjaWZpY0NyZWRlbnRpYWxzKFxuICAgIHByb3ZpZGVkQ3JlZGVudGlhbHM6IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXSB8IHVuZGVmaW5lZCxcbiAgKTogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAocHJvdmlkZWRDcmVkZW50aWFscyAmJiBwcm92aWRlZENyZWRlbnRpYWxzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBwcm92aWRlZENyZWRlbnRpYWxzO1xuICAgIH1cbiAgICAvLyBBcHBseSB0YXJnZXQtc3BlY2lmaWMgZGVmYXVsdHMgd2hlbiBub3QgcHJvdmlkZWRcbiAgICBzd2l0Y2ggKHRoaXMudGFyZ2V0VHlwZSkge1xuICAgICAgY2FzZSBNY3BUYXJnZXRUeXBlLkxBTUJEQTpcbiAgICAgIGNhc2UgTWNwVGFyZ2V0VHlwZS5TTUlUSFlfTU9ERUw6XG4gICAgICAgIHJldHVybiBbR2F0ZXdheUNyZWRlbnRpYWxQcm92aWRlci5mcm9tSWFtUm9sZSgpXTtcblxuICAgICAgY2FzZSBNY3BUYXJnZXRUeXBlLk1DUF9TRVJWRVI6XG4gICAgICAgIC8vIFJldHVybiBlbXB0eSBhcnJheSwgLSBzZXJ2aWNlIGhhbmRsZXMgTm9BdXRoIGF1dG9tYXRpY2FsbHlcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgY2FzZSBNY3BUYXJnZXRUeXBlLk9QRU5BUElfU0NIRU1BOlxuICAgICAgICAvLyBObyBkZWZhdWx0IC0gbXVzdCBiZSBleHBsaWNpdGx5IHByb3ZpZGVkLCBzZXJ2aWNlIGhhbmRsZXMgYXV0b21hdGljYWxseVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gW0dhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIuZnJvbUlhbVJvbGUoKV07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgY3JlZGVudGlhbCBwcm92aWRlciBjb25maWd1cmF0aW9ucyBmb3IgQ2xvdWRGb3JtYXRpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIF9yZW5kZXJDcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPy5tYXAocHJvdmlkZXIgPT4gcHJvdmlkZXIuX3JlbmRlcigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGdhdGV3YXkgdGFyZ2V0IG5hbWUgZm9ybWF0XG4gICAqIFBhdHRlcm46IF4oWzAtOWEtekEtWl1bLV0/KXsxLDEwMH0kXG4gICAqIE1heCBsZW5ndGg6IDEwMCBjaGFyYWN0ZXJzXG4gICAqIEBwYXJhbSBnYXRld2F5VGFyZ2V0TmFtZSBUaGUgZ2F0ZXdheSB0YXJnZXQgbmFtZSB0byB2YWxpZGF0ZVxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBuYW1lIGlzIGludmFsaWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlR2F0ZXdheVRhcmdldE5hbWUoZ2F0ZXdheVRhcmdldE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQoZ2F0ZXdheVRhcmdldE5hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGVuZ3RoRXJyb3JzID0gdmFsaWRhdGVTdHJpbmdGaWVsZCh7XG4gICAgICB2YWx1ZTogZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBmaWVsZE5hbWU6ICdHYXRld2F5IHRhcmdldCBuYW1lJyxcbiAgICAgIG1pbkxlbmd0aDogMSxcbiAgICAgIG1heExlbmd0aDogMTAwLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcGF0dGVybkVycm9ycyA9IHZhbGlkYXRlRmllbGRQYXR0ZXJuKFxuICAgICAgZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICAnR2F0ZXdheSB0YXJnZXQgbmFtZScsXG4gICAgICAvXihbMC05YS16QS1aXVstXT8pezEsMTAwfSQvLFxuICAgICAgJ0dhdGV3YXkgdGFyZ2V0IG5hbWUgbXVzdCBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIGh5cGhlbnMsIHdpdGggaHlwaGVucyBvbmx5IGJldHdlZW4gY2hhcmFjdGVycycsXG4gICAgKTtcblxuICAgIGNvbnN0IGFsbEVycm9ycyA9IFsuLi5sZW5ndGhFcnJvcnMsIC4uLnBhdHRlcm5FcnJvcnNdO1xuICAgIGlmIChhbGxFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihhbGxFcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGRlc2NyaXB0aW9uIGZvcm1hdFxuICAgKiBNdXN0IGJlIGJldHdlZW4gMSBhbmQgMjAwIGNoYXJhY3RlcnNcbiAgICogQHRocm93cyBFcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKGRlc2NyaXB0aW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgdmFsdWU6IGRlc2NyaXB0aW9uLFxuICAgICAgZmllbGROYW1lOiAnR2F0ZXdheSB0YXJnZXQgZGVzY3JpcHRpb24nLFxuICAgICAgbWluTGVuZ3RoOiAxLFxuICAgICAgbWF4TGVuZ3RoOiAyMDAsXG4gICAgfSk7XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoZXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
453
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGFyZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUFpRDtBQUNqRCxxRUFBcUU7QUFDckUsMkNBQTJDO0FBRTNDLDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFHMUUsb0NBQThDO0FBRzlDLCtDQUErSDtBQUMvSCxpRUFBOEs7QUFDOUssOEVBQTRHO0FBQzVHLDhEQUFtRztBQXVNbkc7OytFQUUrRTtBQUUvRTs7Ozs7Ozs7O0dBU0c7SUFFVSxhQUFhOzRCQUR6QixvQ0FBa0I7Ozs7c0JBQ2dCLCtCQUFpQjs7OzZCQUF6QixTQUFRLFdBQWlCOzs7O3FDQTBSakQsSUFBQSxrQ0FBYyxHQUFFO1lBQ2pCLDhLQUFPLFNBQVMsNkRBTWY7WUFqU0gsNktBc1lDOzs7OztRQXJZQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLG9EQUFvRCxDQUFDO1FBQzVHOzs7Ozs7OztXQVFHO1FBQ0ksTUFBTSxDQUFDLDJCQUEyQixDQUN2QyxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBOEI7Ozs7Ozs7Ozs7WUFFOUIsTUFBTSxxQkFBc0IsU0FBUSwrQkFBaUI7Z0JBQ25DLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUM1QixRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFDMUIsSUFBSSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0IsV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQzNCLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO2dCQUN4QixnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7Z0JBQ3RDLGtCQUFrQixHQUFHLHVDQUF5QixDQUFDLEdBQUcsQ0FBQztnQkFDbkQsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQ3RCLGFBQWEsR0FB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LENBQUM7U0FDRjtRQUVEOzs7OztXQUtHO1FBQ0ssbUJBQW1CLENBQUMsV0FBbUI7WUFDN0MsSUFBSSxtQkFBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLElBQUEsd0NBQW1CLEVBQUM7Z0JBQ2pDLEtBQUssRUFBRSxXQUFXO2dCQUNsQixTQUFTLEVBQUUsNEJBQTRCO2dCQUN2QyxTQUFTLEVBQUUsQ0FBQztnQkFDWixTQUFTLEVBQUUsR0FBRzthQUNmLENBQUMsQ0FBQztZQUVILElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxJQUFJLG9DQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQy9DLENBQUM7U0FDRjs7WUFyWVUsdURBQWE7Ozs7O0FBQWIsc0NBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYXp5LCBUb2tlbiwgTmFtZXMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBiZWRyb2NrYWdlbnRjb3JlIGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSUdhdGV3YXkgfSBmcm9tICcuLi9nYXRld2F5LWJhc2UnO1xuaW1wb3J0IHsgR0FURVdBWV9TWU5DX1BFUk1TIH0gZnJvbSAnLi4vcGVybXMnO1xuaW1wb3J0IHsgQXBpU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEvYXBpLXNjaGVtYSc7XG5pbXBvcnQgeyBUb29sU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEvdG9vbC1zY2hlbWEnO1xuaW1wb3J0IHsgR2F0ZXdheVRhcmdldEJhc2UsIEdhdGV3YXlUYXJnZXRQcm90b2NvbFR5cGUsIElHYXRld2F5VGFyZ2V0LCBJTWNwR2F0ZXdheVRhcmdldCwgTWNwVGFyZ2V0VHlwZSB9IGZyb20gJy4vdGFyZ2V0LWJhc2UnO1xuaW1wb3J0IHsgSVRhcmdldENvbmZpZ3VyYXRpb24sIExhbWJkYVRhcmdldENvbmZpZ3VyYXRpb24sIE1jcFNlcnZlclRhcmdldENvbmZpZ3VyYXRpb24sIE9wZW5BcGlUYXJnZXRDb25maWd1cmF0aW9uLCBTbWl0aHlUYXJnZXRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi90YXJnZXQtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyLCBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnIH0gZnJvbSAnLi4vb3V0Ym91bmQtYXV0aC9jcmVkZW50aWFsLXByb3ZpZGVyJztcbmltcG9ydCB7IHZhbGlkYXRlU3RyaW5nRmllbGQsIHZhbGlkYXRlRmllbGRQYXR0ZXJuLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi92YWxpZGF0aW9uLWhlbHBlcnMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvcHNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBDb21tb24gcHJvcGVydGllcyBmb3IgYWxsIEdhdGV3YXkgVGFyZ2V0IHR5cGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheVRhcmdldENvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBUaGUgbmFtZSBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGdhdGV3YXlcbiAgICogUGF0dGVybjogXihbMC05YS16QS1aXVstXT8pezEsMTAwfSRcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5VGFyZ2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBUaGUgZGVzY3JpcHRpb24gY2FuIGhhdmUgdXAgdG8gMjAwIGNoYXJhY3RlcnNcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBHYXRld2F5IFRhcmdldCByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlUYXJnZXRQcm9wcyBleHRlbmRzIEdhdGV3YXlUYXJnZXRDb21tb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSB0aGlzIHRhcmdldCBiZWxvbmdzIHRvXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5OiBJR2F0ZXdheTtcblxuICAvKipcbiAgICogVGhlIHRhcmdldCBjb25maWd1cmF0aW9uIChMYW1iZGEsIE9wZW5BUEksIG9yIFNtaXRoeSlcbiAgICogVXNlIG9uZSBvZiB0aGUgY29uZmlndXJhdGlvbiBoZWxwZXIgY2xhc3NlczpcbiAgICogLSBMYW1iZGFUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZSgpXG4gICAqIC0gT3BlbkFwaVRhcmdldENvbmZpZ3VyYXRpb24uY3JlYXRlKClcbiAgICogLSBTbWl0aHlUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZSgpXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRDb25maWd1cmF0aW9uOiBJVGFyZ2V0Q29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogQ3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqIEBkZWZhdWx0IC0gW0dhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIuZnJvbUlhbVJvbGUoKV1cbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPzogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgTGFtYmRhLWJhc2VkIEdhdGV3YXkgVGFyZ2V0XG4gKiBDb252ZW5pZW5jZSBpbnRlcmZhY2UgZm9yIHRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlUYXJnZXRMYW1iZGFQcm9wcyBleHRlbmRzIEdhdGV3YXlUYXJnZXRDb21tb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSB0aGlzIHRhcmdldCBiZWxvbmdzIHRvXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5OiBJR2F0ZXdheTtcblxuICAvKipcbiAgICogVGhlIExhbWJkYSBmdW5jdGlvbiB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIHRhcmdldFxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhRnVuY3Rpb246IElGdW5jdGlvbjtcblxuICAvKipcbiAgICogVGhlIHRvb2wgc2NoZW1hIGRlZmluaW5nIHRoZSBhdmFpbGFibGUgdG9vbHNcbiAgICovXG4gIHJlYWRvbmx5IHRvb2xTY2hlbWE6IFRvb2xTY2hlbWE7XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKiBMYW1iZGEgdGFyZ2V0cyBvbmx5IHN1cHBvcnQgSUFNIHJvbGUgYXV0aGVudGljYXRpb25cbiAgICogQGRlZmF1bHQgLSBbR2F0ZXdheUNyZWRlbnRpYWxQcm92aWRlci5mcm9tSWFtUm9sZSgpXVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM/OiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gT3BlbkFQSS1iYXNlZCBHYXRld2F5IFRhcmdldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlUYXJnZXRPcGVuQXBpUHJvcHMgZXh0ZW5kcyBHYXRld2F5VGFyZ2V0Q29tbW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIGdhdGV3YXkgdGhpcyB0YXJnZXQgYmVsb25ncyB0b1xuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheTogSUdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIFRoZSBPcGVuQVBJIHNjaGVtYSBkZWZpbmluZyB0aGUgQVBJXG4gICAqL1xuICByZWFkb25seSBhcGlTY2hlbWE6IEFwaVNjaGVtYTtcblxuICAvKipcbiAgICogV2hldGhlciB0byB2YWxpZGF0ZSB0aGUgT3BlbkFQSSBzY2hlbWEgKG9ubHkgYXBwbGllcyB0byBpbmxpbmUgc2NoZW1hcylcbiAgICogTm90ZTogVmFsaWRhdGlvbiBpcyBvbmx5IHBlcmZvcm1lZCBmb3IgaW5saW5lIHNjaGVtYXMgZHVyaW5nIENESyBzeW50aGVzaXMuXG4gICAqIFMzIGFuZCBhc3NldC1iYXNlZCBzY2hlbWFzIGNhbm5vdCBiZSB2YWxpZGF0ZWQgYXQgc3ludGhlc2lzIHRpbWUuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRlT3BlbkFwaVNjaGVtYT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKiBPcGVuQVBJIHRhcmdldHMgc3VwcG9ydCBBUEkga2V5IGFuZCBPQXV0aCBhdXRoZW50aWNhdGlvbiAobm90IElBTSlcbiAgICogQGRlZmF1bHQgLSBJZiBub3QgcHJvdmlkZWQsIGRlZmF1bHRzIHRvIElBTSByb2xlIHdoaWNoIHdpbGwgZmFpbCBhdCBydW50aW1lXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz86IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIFNtaXRoeS1iYXNlZCBHYXRld2F5IFRhcmdldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlUYXJnZXRTbWl0aHlQcm9wcyBleHRlbmRzIEdhdGV3YXlUYXJnZXRDb21tb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSB0aGlzIHRhcmdldCBiZWxvbmdzIHRvXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5OiBJR2F0ZXdheTtcblxuICAvKipcbiAgICogVGhlIFNtaXRoeSBtb2RlbCBkZWZpbmluZyB0aGUgQVBJXG4gICAqL1xuICByZWFkb25seSBzbWl0aHlNb2RlbDogQXBpU2NoZW1hO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICogU21pdGh5IHRhcmdldHMgb25seSBzdXBwb3J0IElBTSByb2xlIGF1dGhlbnRpY2F0aW9uXG4gICAqIEBkZWZhdWx0IC0gW0dhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIuZnJvbUlhbVJvbGUoKV1cbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPzogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGFuIE1DUCBTZXJ2ZXItYmFzZWQgR2F0ZXdheSBUYXJnZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5VGFyZ2V0TWNwU2VydmVyUHJvcHMgZXh0ZW5kcyBHYXRld2F5VGFyZ2V0Q29tbW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIGdhdGV3YXkgdGhpcyB0YXJnZXQgYmVsb25ncyB0b1xuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheTogSUdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIFRoZSBIVFRQUyBlbmRwb2ludCBVUkwgb2YgdGhlIE1DUCBzZXJ2ZXJcbiAgICpcbiAgICogVGhlIGVuZHBvaW50IG11c3Q6XG4gICAqIC0gVXNlIEhUVFBTIHByb3RvY29sXG4gICAqIC0gQmUgcHJvcGVybHkgVVJMLWVuY29kZWRcbiAgICogLSBQb2ludCB0byBhbiBNQ1Agc2VydmVyIHRoYXQgaW1wbGVtZW50cyB0b29sIGNhcGFiaWxpdGllc1xuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgZm9yIGltcG9ydGluZyBhbiBleGlzdGluZyBHYXRld2F5IFRhcmdldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlUYXJnZXRBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqL1xuICByZWFkb25seSB0YXJnZXRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqL1xuICByZWFkb25seSBnYXRld2F5VGFyZ2V0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSB0aGlzIHRhcmdldCBiZWxvbmdzIHRvXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5OiBJR2F0ZXdheTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgc3RhdHVzIG9mIHRoZSB0YXJnZXRcbiAgICogQGRlZmF1bHQgLSBObyBzdGF0dXNcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgY3JlYXRpb24gdGltZXN0YW1wXG4gICAqIEBkZWZhdWx0IC0gTm8gY3JlYXRpb24gdGltZXN0YW1wXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGxhc3QgdXBkYXRlIHRpbWVzdGFtcFxuICAgKiBAZGVmYXVsdCAtIE5vIHVwZGF0ZSB0aW1lc3RhbXBcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZWRBdD86IHN0cmluZztcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICpcbiAqIERlZmluZXMgdG9vbHMgdGhhdCB5b3VyIGdhdGV3YXkgd2lsbCBob3N0LiBTdXBwb3J0cyBtdWx0aXBsZSB0YXJnZXQgdHlwZXM6XG4gKiAtIExhbWJkYTogV3JhcHMgYSBMYW1iZGEgZnVuY3Rpb24gYXMgTUNQIHRvb2xzXG4gKiAtIE9wZW5BUEk6IEV4cG9zZXMgYW4gT3BlbkFQSS9SRVNUIEFQSSBhcyBNQ1AgdG9vbHNcbiAqIC0gU21pdGh5OiBFeHBvc2VzIGEgU21pdGh5LW1vZGVsZWQgQVBJIGFzIE1DUCB0b29sc1xuICpcbiAqIEByZXNvdXJjZSBBV1M6OkJlZHJvY2tBZ2VudENvcmU6OkdhdGV3YXlUYXJnZXRcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9nYXRld2F5LWJ1aWxkaW5nLWFkZGluZy10YXJnZXRzLmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEdhdGV3YXlUYXJnZXQgZXh0ZW5kcyBHYXRld2F5VGFyZ2V0QmFzZSBpbXBsZW1lbnRzIElNY3BHYXRld2F5VGFyZ2V0IHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtYmVkcm9jay1hZ2VudGNvcmUtYWxwaGEuR2F0ZXdheVRhcmdldCc7XG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgR2F0ZXdheSBUYXJnZXQgdXNpbmcgaXRzIGF0dHJpYnV0ZXNcbiAgICogVGhpcyBhbGxvd3MgeW91IHRvIHJlZmVyZW5jZSBhIEdhdGV3YXkgVGFyZ2V0IHRoYXQgd2FzIGNyZWF0ZWQgb3V0c2lkZSBvZiBDREtcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBleGlzdGluZyBHYXRld2F5IFRhcmdldFxuICAgKiBAcmV0dXJucyBBbiBJR2F0ZXdheVRhcmdldCBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIGltcG9ydGVkIHRhcmdldFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tR2F0ZXdheVRhcmdldEF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGF0dHJzOiBHYXRld2F5VGFyZ2V0QXR0cmlidXRlcyxcbiAgKTogSUdhdGV3YXlUYXJnZXQge1xuICAgIGNsYXNzIEltcG9ydGVkR2F0ZXdheVRhcmdldCBleHRlbmRzIEdhdGV3YXlUYXJnZXRCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YXJnZXRBcm4gPSBhdHRycy50YXJnZXRBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0SWQgPSBhdHRycy50YXJnZXRJZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBuYW1lID0gYXR0cnMuZ2F0ZXdheVRhcmdldE5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb24gPSBhdHRycy5zdGF0dXM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ2F0ZXdheSA9IGF0dHJzLmdhdGV3YXk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMgPSBbXTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YXJnZXRQcm90b2NvbFR5cGUgPSBHYXRld2F5VGFyZ2V0UHJvdG9jb2xUeXBlLk1DUDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzdGF0dXMgPSBhdHRycy5zdGF0dXM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzUmVhc29ucyA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBjcmVhdGVkQXQgPSBhdHRycy5jcmVhdGVkQXQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRlZEF0ID0gYXR0cnMudXBkYXRlZEF0O1xuXG4gICAgICBjb25zdHJ1Y3RvcihzOiBDb25zdHJ1Y3QsIGk6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzLCBpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZEdhdGV3YXlUYXJnZXQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBMYW1iZGEtYmFzZWQgTUNQIHRhcmdldFxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGNyZWF0aW5nIGEgdGFyZ2V0IHRoYXQgd3JhcHMgYSBMYW1iZGEgZnVuY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIHByb3BzIFRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgTGFtYmRhIHRhcmdldFxuICAgKiBAcmV0dXJucyBBIG5ldyBHYXRld2F5VGFyZ2V0IGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZvckxhbWJkYShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEdhdGV3YXlUYXJnZXRMYW1iZGFQcm9wcyxcbiAgKTogR2F0ZXdheVRhcmdldCB7XG4gICAgcmV0dXJuIG5ldyBHYXRld2F5VGFyZ2V0KHNjb3BlLCBpZCwge1xuICAgICAgZ2F0ZXdheTogcHJvcHMuZ2F0ZXdheSxcbiAgICAgIGdhdGV3YXlUYXJnZXROYW1lOiBwcm9wcy5nYXRld2F5VGFyZ2V0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyxcbiAgICAgIHRhcmdldENvbmZpZ3VyYXRpb246IExhbWJkYVRhcmdldENvbmZpZ3VyYXRpb24uY3JlYXRlKFxuICAgICAgICBwcm9wcy5sYW1iZGFGdW5jdGlvbixcbiAgICAgICAgcHJvcHMudG9vbFNjaGVtYSxcbiAgICAgICksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIE9wZW5BUEktYmFzZWQgTUNQIHRhcmdldFxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGNyZWF0aW5nIGEgdGFyZ2V0IHRoYXQgZXhwb3NlcyBhbiBPcGVuQVBJL1JFU1QgQVBJXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcGVydGllcyBmb3IgdGhlIE9wZW5BUEkgdGFyZ2V0XG4gICAqIEByZXR1cm5zIEEgbmV3IEdhdGV3YXlUYXJnZXQgaW5zdGFuY2VcbiAgICpcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZm9yT3BlbkFwaShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEdhdGV3YXlUYXJnZXRPcGVuQXBpUHJvcHMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVRhcmdldChzY29wZSwgaWQsIHtcbiAgICAgIGdhdGV3YXk6IHByb3BzLmdhdGV3YXksXG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBPcGVuQXBpVGFyZ2V0Q29uZmlndXJhdGlvbi5jcmVhdGUocHJvcHMuYXBpU2NoZW1hLCBwcm9wcy52YWxpZGF0ZU9wZW5BcGlTY2hlbWEpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIFNtaXRoeS1iYXNlZCBNQ1AgdGFyZ2V0XG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSB0YXJnZXQgdGhhdCBleHBvc2VzIGEgU21pdGh5LW1vZGVsZWQgQVBJXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcGVydGllcyBmb3IgdGhlIFNtaXRoeSB0YXJnZXRcbiAgICogQHJldHVybnMgQSBuZXcgR2F0ZXdheVRhcmdldCBpbnN0YW5jZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JTbWl0aHkoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBHYXRld2F5VGFyZ2V0U21pdGh5UHJvcHMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVRhcmdldChzY29wZSwgaWQsIHtcbiAgICAgIGdhdGV3YXk6IHByb3BzLmdhdGV3YXksXG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBTbWl0aHlUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZShwcm9wcy5zbWl0aHlNb2RlbCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIE1DUCBTZXJ2ZXItYmFzZWQgdGFyZ2V0XG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSB0YXJnZXQgdGhhdCBjb25uZWN0cyB0byBhbiBleHRlcm5hbCBNQ1Agc2VydmVyXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcGVydGllcyBmb3IgdGhlIE1DUCBzZXJ2ZXIgdGFyZ2V0XG4gICAqIEByZXR1cm5zIEEgbmV3IEdhdGV3YXlUYXJnZXQgaW5zdGFuY2VcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL2dhdGV3YXktdGFyZ2V0LU1DUHNlcnZlcnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JNY3BTZXJ2ZXIoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBHYXRld2F5VGFyZ2V0TWNwU2VydmVyUHJvcHMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVRhcmdldChzY29wZSwgaWQsIHtcbiAgICAgIGdhdGV3YXk6IHByb3BzLmdhdGV3YXksXG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBNY3BTZXJ2ZXJUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZShwcm9wcy5lbmRwb2ludCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldEFybjtcblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0SWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWU7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbjtcblxuICAvKipcbiAgICogVGhlIGdhdGV3YXkgdGhpcyB0YXJnZXQgYmVsb25ncyB0b1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIFRoZSBjcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgdGhpcyB0YXJnZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvdG9jb2wgdHlwZSAoYWx3YXlzIE1DUCBmb3Igbm93KVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldFByb3RvY29sVHlwZSA9IEdhdGV3YXlUYXJnZXRQcm90b2NvbFR5cGUuTUNQO1xuXG4gIC8qKlxuICAgKiBUaGUgc3BlY2lmaWMgTUNQIHRhcmdldCB0eXBlIChMYW1iZGEsIE9wZW5BUEksIFNtaXRoeSwgb3IgTUNQIFNlcnZlcilcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRUeXBlOiBNY3BUYXJnZXRUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzPztcblxuICAvKipcbiAgICogVGhlIHN0YXR1cyByZWFzb25zIGZvciB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c1JlYXNvbnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGltZXN0YW1wIHdoZW4gdGhlIGdhdGV3YXkgdGFyZ2V0IHdhcyBjcmVhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVhdGVkQXQ/O1xuXG4gIC8qKlxuICAgKiBUaW1lc3RhbXAgd2hlbiB0aGUgZ2F0ZXdheSB0YXJnZXQgd2FzIGxhc3QgdXBkYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRlZEF0PztcblxuICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldFJlc291cmNlOiBiZWRyb2NrYWdlbnRjb3JlLkNmbkdhdGV3YXlUYXJnZXQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFyZ2V0Q29uZmlndXJhdGlvbjogSVRhcmdldENvbmZpZ3VyYXRpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEdhdGV3YXlUYXJnZXRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLy8gTWF4aW11bSBuYW1lIGxlbmd0aCBvZiAxMDAgY2hhcmFjdGVyc1xuICAgICAgLy8gQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1RlbXBsYXRlUmVmZXJlbmNlL2F3cy1yZXNvdXJjZS1iZWRyb2NrYWdlbnRjb3JlLWdhdGV3YXl0YXJnZXQuaHRtbCNjZm4tYmVkcm9ja2FnZW50Y29yZS1nYXRld2F5dGFyZ2V0LW5hbWVcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUgPz9cbiAgICAgICAgTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogMTAwIH0pLFxuICAgICAgICB9KSxcbiAgICB9KTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIC8vIFZhbGlkYXRlIGFuZCBhc3NpZ24gcHJvcGVydGllc1xuICAgIHRoaXMubmFtZSA9IHRoaXMucGh5c2ljYWxOYW1lO1xuICAgIHRoaXMudmFsaWRhdGVHYXRld2F5VGFyZ2V0TmFtZSh0aGlzLm5hbWUpO1xuXG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IHByb3BzLmRlc2NyaXB0aW9uO1xuICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlRGVzY3JpcHRpb24odGhpcy5kZXNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy5nYXRld2F5ID0gcHJvcHMuZ2F0ZXdheTtcbiAgICB0aGlzLnRhcmdldENvbmZpZ3VyYXRpb24gPSBwcm9wcy50YXJnZXRDb25maWd1cmF0aW9uO1xuICAgIHRoaXMudGFyZ2V0VHlwZSA9IHRoaXMudGFyZ2V0Q29uZmlndXJhdGlvbi50YXJnZXRUeXBlO1xuXG4gICAgLy8gR2V0IHRhcmdldC1zcGVjaWZpYyBjcmVkZW50aWFsIGNvbmZpZ3VyYXRpb25zXG4gICAgdGhpcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyA9IHRoaXMuX2dldFRhcmdldFNwZWNpZmljQ3JlZGVudGlhbHMoXG4gICAgICBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyxcbiAgICApO1xuXG4gICAgLy8gQmluZCB0aGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb25cbiAgICAvLyBUaGlzIHNldHMgdXAgcGVybWlzc2lvbnMgYW5kIGRlcGVuZGVuY2llc1xuICAgIHRoaXMudGFyZ2V0Q29uZmlndXJhdGlvbi5iaW5kKHRoaXMsIHRoaXMuZ2F0ZXdheSk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIEwxIGNvbnN0cnVjdFxuICAgIGNvbnN0IGNmblByb3BzOiBiZWRyb2NrYWdlbnRjb3JlLkNmbkdhdGV3YXlUYXJnZXRQcm9wcyA9IHtcbiAgICAgIGdhdGV3YXlJZGVudGlmaWVyOiB0aGlzLmdhdGV3YXkuZ2F0ZXdheUlkLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogTGF6eS5hbnkoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiB0aGlzLl9yZW5kZXJDcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucygpLFxuICAgICAgfSksXG5cbiAgICAgIHRhcmdldENvbmZpZ3VyYXRpb246IExhenkuYW55KHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy50YXJnZXRDb25maWd1cmF0aW9uLl9yZW5kZXIoKSxcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICB0aGlzLnRhcmdldFJlc291cmNlID0gbmV3IGJlZHJvY2thZ2VudGNvcmUuQ2ZuR2F0ZXdheVRhcmdldChcbiAgICAgIHRoaXMsXG4gICAgICAnUmVzb3VyY2UnLFxuICAgICAgY2ZuUHJvcHMsXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIHRoaXMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMpIHtcbiAgICAgICAgcHJvdmlkZXJcbiAgICAgICAgICAuZ3JhbnROZWVkZWRQZXJtaXNzaW9uc1RvUm9sZSh0aGlzLmdhdGV3YXkucm9sZSlcbiAgICAgICAgICA/LmFwcGx5QmVmb3JlKHRoaXMudGFyZ2V0UmVzb3VyY2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudGFyZ2V0SWQgPSB0aGlzLnRhcmdldFJlc291cmNlLmF0dHJUYXJnZXRJZDtcbiAgICB0aGlzLnRhcmdldEFybiA9IHRoaXMudGFyZ2V0UmVzb3VyY2UucmVmO1xuICAgIHRoaXMuc3RhdHVzID0gdGhpcy50YXJnZXRSZXNvdXJjZS5hdHRyU3RhdHVzO1xuICAgIHRoaXMuc3RhdHVzUmVhc29ucyA9IHRoaXMudGFyZ2V0UmVzb3VyY2UuYXR0clN0YXR1c1JlYXNvbnM7XG4gICAgdGhpcy5jcmVhdGVkQXQgPSB0aGlzLnRhcmdldFJlc291cmNlLmF0dHJDcmVhdGVkQXQ7XG4gICAgdGhpcy51cGRhdGVkQXQgPSB0aGlzLnRhcmdldFJlc291cmNlLmF0dHJVcGRhdGVkQXQ7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gc3luY2hyb25pemUgdGhpcyBnYXRld2F5J3MgdGFyZ2V0c1xuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBncmFudHMgdGhlIGBTeW5jaHJvbml6ZUdhdGV3YXlUYXJnZXRzYCBwZXJtaXNzaW9uLCB3aGljaCBpcyBwcmltYXJpbHlcbiAgICogbmVlZGVkIGZvciBNQ1AgU2VydmVyIHRhcmdldHMgd2hlbiB5b3UgbmVlZCB0byByZWZyZXNoIHRoZSB0b29sIGNhdGFsb2cgYWZ0ZXIgdGhlXG4gICAqIE1DUCBzZXJ2ZXIncyB0b29scyBoYXZlIGNoYW5nZWQuXG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGdyYW50U3luYyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgYWN0aW9uczogR0FURVdBWV9TWU5DX1BFUk1TLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5nYXRld2F5LmdhdGV3YXlBcm5dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgdGhlIGNyZWRlbnRpYWwgcHJvdmlkZXIgY29uZmlndXJhdGlvbnMgYmFzZWQgb24gdGFyZ2V0IHR5cGVcbiAgICpcbiAgICogLSBMYW1iZGEgJiBTbWl0aHk6IERlZmF1bHQgdG8gSUFNIHJvbGUgaWYgbm90IHByb3ZpZGVkXG4gICAqIC0gTUNQIFNlcnZlcjogUmV0dXJuIHVuZGVmaW5lZCBpZiBub3QgcHJvdmlkZWQgKHNlcnZpY2UgaGFuZGxlcyBOb0F1dGgpXG4gICAqIC0gT3BlbkFQSTogUmV0dXJuIGFzLWlzIChtdXN0IGJlIGV4cGxpY2l0bHkgcHJvdmlkZWQpXG4gICAqXG4gICAqIEBwYXJhbSBwcm92aWRlZENyZWRlbnRpYWxzIFRoZSBjcmVkZW50aWFscyBmcm9tIHByb3BzXG4gICAqIEByZXR1cm5zIFRoZSBjcmVkZW50aWFsIGNvbmZpZ3VyYXRpb25zIHRvIHVzZSwgb3IgdW5kZWZpbmVkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0VGFyZ2V0U3BlY2lmaWNDcmVkZW50aWFscyhcbiAgICBwcm92aWRlZENyZWRlbnRpYWxzOiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW10gfCB1bmRlZmluZWQsXG4gICk6IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHByb3ZpZGVkQ3JlZGVudGlhbHMgJiYgcHJvdmlkZWRDcmVkZW50aWFscy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gcHJvdmlkZWRDcmVkZW50aWFscztcbiAgICB9XG4gICAgLy8gQXBwbHkgdGFyZ2V0LXNwZWNpZmljIGRlZmF1bHRzIHdoZW4gbm90IHByb3ZpZGVkXG4gICAgc3dpdGNoICh0aGlzLnRhcmdldFR5cGUpIHtcbiAgICAgIGNhc2UgTWNwVGFyZ2V0VHlwZS5MQU1CREE6XG4gICAgICBjYXNlIE1jcFRhcmdldFR5cGUuU01JVEhZX01PREVMOlxuICAgICAgICByZXR1cm4gW0dhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIuZnJvbUlhbVJvbGUoKV07XG5cbiAgICAgIGNhc2UgTWNwVGFyZ2V0VHlwZS5NQ1BfU0VSVkVSOlxuICAgICAgICAvLyBSZXR1cm4gZW1wdHkgYXJyYXksIC0gc2VydmljZSBoYW5kbGVzIE5vQXV0aCBhdXRvbWF0aWNhbGx5XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgIGNhc2UgTWNwVGFyZ2V0VHlwZS5PUEVOQVBJX1NDSEVNQTpcbiAgICAgICAgLy8gTm8gZGVmYXVsdCAtIG11c3QgYmUgZXhwbGljaXRseSBwcm92aWRlZCwgc2VydmljZSBoYW5kbGVzIGF1dG9tYXRpY2FsbHlcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFtHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyLmZyb21JYW1Sb2xlKCldO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGNyZWRlbnRpYWwgcHJvdmlkZXIgY29uZmlndXJhdGlvbnMgZm9yIENsb3VkRm9ybWF0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBfcmVuZGVyQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz8ubWFwKHByb3ZpZGVyID0+IHByb3ZpZGVyLl9yZW5kZXIoKSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBnYXRld2F5IHRhcmdldCBuYW1lIGZvcm1hdFxuICAgKiBQYXR0ZXJuOiBeKFswLTlhLXpBLVpdWy1dPyl7MSwxMDB9JFxuICAgKiBNYXggbGVuZ3RoOiAxMDAgY2hhcmFjdGVyc1xuICAgKiBAcGFyYW0gZ2F0ZXdheVRhcmdldE5hbWUgVGhlIGdhdGV3YXkgdGFyZ2V0IG5hbWUgdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyBFcnJvciBpZiB0aGUgbmFtZSBpcyBpbnZhbGlkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUdhdGV3YXlUYXJnZXROYW1lKGdhdGV3YXlUYXJnZXROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKGdhdGV3YXlUYXJnZXROYW1lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aEVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgdmFsdWU6IGdhdGV3YXlUYXJnZXROYW1lLFxuICAgICAgZmllbGROYW1lOiAnR2F0ZXdheSB0YXJnZXQgbmFtZScsXG4gICAgICBtaW5MZW5ndGg6IDEsXG4gICAgICBtYXhMZW5ndGg6IDEwMCxcbiAgICB9KTtcblxuICAgIGNvbnN0IHBhdHRlcm5FcnJvcnMgPSB2YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICAgIGdhdGV3YXlUYXJnZXROYW1lLFxuICAgICAgJ0dhdGV3YXkgdGFyZ2V0IG5hbWUnLFxuICAgICAgL14oWzAtOWEtekEtWl1bLV0/KXsxLDEwMH0kLyxcbiAgICAgICdHYXRld2F5IHRhcmdldCBuYW1lIG11c3QgY29udGFpbiBvbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCBoeXBoZW5zLCB3aXRoIGh5cGhlbnMgb25seSBiZXR3ZWVuIGNoYXJhY3RlcnMnLFxuICAgICk7XG5cbiAgICBjb25zdCBhbGxFcnJvcnMgPSBbLi4ubGVuZ3RoRXJyb3JzLCAuLi5wYXR0ZXJuRXJyb3JzXTtcbiAgICBpZiAoYWxsRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYWxsRXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBkZXNjcmlwdGlvbiBmb3JtYXRcbiAgICogTXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIwMCBjaGFyYWN0ZXJzXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChkZXNjcmlwdGlvbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZVN0cmluZ0ZpZWxkKHtcbiAgICAgIHZhbHVlOiBkZXNjcmlwdGlvbixcbiAgICAgIGZpZWxkTmFtZTogJ0dhdGV3YXkgdGFyZ2V0IGRlc2NyaXB0aW9uJyxcbiAgICAgIG1pbkxlbmd0aDogMSxcbiAgICAgIG1heExlbmd0aDogMjAwLFxuICAgIH0pO1xuXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
package/lib/index.d.ts CHANGED
@@ -3,11 +3,13 @@ export * from './memory/strategies/managed-strategy';
3
3
  export * from './memory/strategies/self-managed-strategy';
4
4
  export * from './memory/memory-strategy';
5
5
  export * from './network/network-configuration';
6
+ export * from './common/types';
6
7
  export * from './runtime/perms';
7
8
  export * from './runtime/types';
8
9
  export * from './runtime/runtime-base';
9
10
  export * from './runtime/runtime-artifact';
10
- export * from './runtime/runtime-authorizer-configuration';
11
+ export * from './runtime/inbound-auth/custom-claim';
12
+ export * from './runtime/inbound-auth/runtime-authorizer-configuration';
11
13
  export * from './runtime/runtime-endpoint-base';
12
14
  export * from './runtime/runtime-endpoint';
13
15
  export * from './runtime/runtime';
@@ -15,9 +17,11 @@ export * from './tools/code-interpreter';
15
17
  export * from './tools/browser';
16
18
  export * from './gateway/gateway-base';
17
19
  export * from './gateway/gateway';
20
+ export * from './gateway/interceptor';
18
21
  export * from './gateway/perms';
19
22
  export * from './gateway/protocol';
20
23
  export * from './gateway/inbound-auth/authorizer';
24
+ export * from './gateway/inbound-auth/custom-claim';
21
25
  export * from './gateway/outbound-auth/credential-provider';
22
26
  export * from './gateway/outbound-auth/api-key';
23
27
  export * from './gateway/outbound-auth/iam-role';
package/lib/index.js CHANGED
@@ -23,13 +23,18 @@ __exportStar(require("./memory/memory-strategy"), exports);
23
23
  // ===================================
24
24
  __exportStar(require("./network/network-configuration"), exports);
25
25
  // ===================================
26
+ // Common (shared types)
27
+ // ===================================
28
+ __exportStar(require("./common/types"), exports);
29
+ // ===================================
26
30
  // Runtime
27
31
  // ===================================
28
32
  __exportStar(require("./runtime/perms"), exports);
29
33
  __exportStar(require("./runtime/types"), exports);
30
34
  __exportStar(require("./runtime/runtime-base"), exports);
31
35
  __exportStar(require("./runtime/runtime-artifact"), exports);
32
- __exportStar(require("./runtime/runtime-authorizer-configuration"), exports);
36
+ __exportStar(require("./runtime/inbound-auth/custom-claim"), exports);
37
+ __exportStar(require("./runtime/inbound-auth/runtime-authorizer-configuration"), exports);
33
38
  __exportStar(require("./runtime/runtime-endpoint-base"), exports);
34
39
  __exportStar(require("./runtime/runtime-endpoint"), exports);
35
40
  __exportStar(require("./runtime/runtime"), exports);
@@ -42,6 +47,7 @@ __exportStar(require("./tools/browser"), exports);
42
47
  // ===================================
43
48
  __exportStar(require("./gateway/gateway-base"), exports);
44
49
  __exportStar(require("./gateway/gateway"), exports);
50
+ __exportStar(require("./gateway/interceptor"), exports);
45
51
  __exportStar(require("./gateway/perms"), exports);
46
52
  __exportStar(require("./gateway/protocol"), exports);
47
53
  // validation-helpers contains internal utilities and should not be exported
@@ -49,6 +55,7 @@ __exportStar(require("./gateway/protocol"), exports);
49
55
  // Gateway - Inbound Auth
50
56
  // ===================================
51
57
  __exportStar(require("./gateway/inbound-auth/authorizer"), exports);
58
+ __exportStar(require("./gateway/inbound-auth/custom-claim"), exports);
52
59
  // ===================================
53
60
  // Gateway - Outbound Auth
54
61
  // ===================================
@@ -68,4 +75,4 @@ __exportStar(require("./gateway/targets/target-configuration"), exports);
68
75
  __exportStar(require("./gateway/targets/schema/base-schema"), exports);
69
76
  __exportStar(require("./gateway/targets/schema/api-schema"), exports);
70
77
  __exportStar(require("./gateway/targets/schema/tool-schema"), exports);
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQWdDO0FBQ2hDLHVFQUFxRDtBQUNyRCw0RUFBMEQ7QUFDMUQsMkRBQXlDO0FBQ3pDLHNDQUFzQztBQUN0Qyx3QkFBd0I7QUFDeEIsc0NBQXNDO0FBQ3RDLGtFQUFnRDtBQUVoRCxzQ0FBc0M7QUFDdEMsVUFBVTtBQUNWLHNDQUFzQztBQUN0QyxrREFBZ0M7QUFDaEMsa0RBQWdDO0FBQ2hDLHlEQUF1QztBQUN2Qyw2REFBMkM7QUFDM0MsNkVBQTJEO0FBQzNELGtFQUFnRDtBQUNoRCw2REFBMkM7QUFDM0Msb0RBQWtDO0FBQ2xDLFFBQVE7QUFDUixzQ0FBc0M7QUFDdEMsMkRBQXlDO0FBQ3pDLGtEQUFnQztBQUVoQyxzQ0FBc0M7QUFDdEMsVUFBVTtBQUNWLHNDQUFzQztBQUN0Qyx5REFBdUM7QUFDdkMsb0RBQWtDO0FBQ2xDLGtEQUFnQztBQUNoQyxxREFBbUM7QUFDbkMsNEVBQTRFO0FBRTVFLHNDQUFzQztBQUN0Qyx5QkFBeUI7QUFDekIsc0NBQXNDO0FBQ3RDLG9FQUFrRDtBQUVsRCxzQ0FBc0M7QUFDdEMsMEJBQTBCO0FBQzFCLHNDQUFzQztBQUN0Qyw4RUFBNEQ7QUFDNUQsa0VBQWdEO0FBQ2hELG1FQUFpRDtBQUNqRCxnRUFBOEM7QUFFOUMsc0NBQXNDO0FBQ3RDLG9CQUFvQjtBQUNwQixzQ0FBc0M7QUFDdEMsZ0VBQThDO0FBQzlDLDJEQUF5QztBQUN6Qyx5RUFBdUQ7QUFFdkQsc0NBQXNDO0FBQ3RDLG9CQUFvQjtBQUNwQixzQ0FBc0M7QUFDdEMsdUVBQXFEO0FBQ3JELHNFQUFvRDtBQUNwRCx1RUFBcUQiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21lbW9yeS9tZW1vcnknO1xuZXhwb3J0ICogZnJvbSAnLi9tZW1vcnkvc3RyYXRlZ2llcy9tYW5hZ2VkLXN0cmF0ZWd5JztcbmV4cG9ydCAqIGZyb20gJy4vbWVtb3J5L3N0cmF0ZWdpZXMvc2VsZi1tYW5hZ2VkLXN0cmF0ZWd5JztcbmV4cG9ydCAqIGZyb20gJy4vbWVtb3J5L21lbW9yeS1zdHJhdGVneSc7XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTmV0d29yayBDb25maWd1cmF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0ICogZnJvbSAnLi9uZXR3b3JrL25ldHdvcmstY29uZmlndXJhdGlvbic7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSdW50aW1lXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0ICogZnJvbSAnLi9ydW50aW1lL3Blcm1zJztcbmV4cG9ydCAqIGZyb20gJy4vcnVudGltZS90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3J1bnRpbWUvcnVudGltZS1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vcnVudGltZS9ydW50aW1lLWFydGlmYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vcnVudGltZS9ydW50aW1lLWF1dGhvcml6ZXItY29uZmlndXJhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3J1bnRpbWUvcnVudGltZS1lbmRwb2ludC1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vcnVudGltZS9ydW50aW1lLWVuZHBvaW50JztcbmV4cG9ydCAqIGZyb20gJy4vcnVudGltZS9ydW50aW1lJztcbi8vIFRvb2xzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0ICogZnJvbSAnLi90b29scy9jb2RlLWludGVycHJldGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdG9vbHMvYnJvd3Nlcic7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHYXRld2F5XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5L2dhdGV3YXktYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2dhdGV3YXkvZ2F0ZXdheSc7XG5leHBvcnQgKiBmcm9tICcuL2dhdGV3YXkvcGVybXMnO1xuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5L3Byb3RvY29sJztcbi8vIHZhbGlkYXRpb24taGVscGVycyBjb250YWlucyBpbnRlcm5hbCB1dGlsaXRpZXMgYW5kIHNob3VsZCBub3QgYmUgZXhwb3J0ZWRcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdhdGV3YXkgLSBJbmJvdW5kIEF1dGhcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgKiBmcm9tICcuL2dhdGV3YXkvaW5ib3VuZC1hdXRoL2F1dGhvcml6ZXInO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2F0ZXdheSAtIE91dGJvdW5kIEF1dGhcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgKiBmcm9tICcuL2dhdGV3YXkvb3V0Ym91bmQtYXV0aC9jcmVkZW50aWFsLXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZ2F0ZXdheS9vdXRib3VuZC1hdXRoL2FwaS1rZXknO1xuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5L291dGJvdW5kLWF1dGgvaWFtLXJvbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5L291dGJvdW5kLWF1dGgvb2F1dGgnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2F0ZXdheSAtIFRhcmdldHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgKiBmcm9tICcuL2dhdGV3YXkvdGFyZ2V0cy90YXJnZXQtYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2dhdGV3YXkvdGFyZ2V0cy90YXJnZXQnO1xuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5L3RhcmdldHMvdGFyZ2V0LWNvbmZpZ3VyYXRpb24nO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2F0ZXdheSAtIFNjaGVtYXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgKiBmcm9tICcuL2dhdGV3YXkvdGFyZ2V0cy9zY2hlbWEvYmFzZS1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5L3RhcmdldHMvc2NoZW1hL2FwaS1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5L3RhcmdldHMvc2NoZW1hL3Rvb2wtc2NoZW1hJztcbiJdfQ==
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQWdDO0FBQ2hDLHVFQUFxRDtBQUNyRCw0RUFBMEQ7QUFDMUQsMkRBQXlDO0FBQ3pDLHNDQUFzQztBQUN0Qyx3QkFBd0I7QUFDeEIsc0NBQXNDO0FBQ3RDLGtFQUFnRDtBQUVoRCxzQ0FBc0M7QUFDdEMsd0JBQXdCO0FBQ3hCLHNDQUFzQztBQUN0QyxpREFBK0I7QUFFL0Isc0NBQXNDO0FBQ3RDLFVBQVU7QUFDVixzQ0FBc0M7QUFDdEMsa0RBQWdDO0FBQ2hDLGtEQUFnQztBQUNoQyx5REFBdUM7QUFDdkMsNkRBQTJDO0FBQzNDLHNFQUFvRDtBQUNwRCwwRkFBd0U7QUFDeEUsa0VBQWdEO0FBQ2hELDZEQUEyQztBQUMzQyxvREFBa0M7QUFDbEMsUUFBUTtBQUNSLHNDQUFzQztBQUN0QywyREFBeUM7QUFDekMsa0RBQWdDO0FBRWhDLHNDQUFzQztBQUN0QyxVQUFVO0FBQ1Ysc0NBQXNDO0FBQ3RDLHlEQUF1QztBQUN2QyxvREFBa0M7QUFDbEMsd0RBQXNDO0FBQ3RDLGtEQUFnQztBQUNoQyxxREFBbUM7QUFDbkMsNEVBQTRFO0FBRTVFLHNDQUFzQztBQUN0Qyx5QkFBeUI7QUFDekIsc0NBQXNDO0FBQ3RDLG9FQUFrRDtBQUNsRCxzRUFBb0Q7QUFFcEQsc0NBQXNDO0FBQ3RDLDBCQUEwQjtBQUMxQixzQ0FBc0M7QUFDdEMsOEVBQTREO0FBQzVELGtFQUFnRDtBQUNoRCxtRUFBaUQ7QUFDakQsZ0VBQThDO0FBRTlDLHNDQUFzQztBQUN0QyxvQkFBb0I7QUFDcEIsc0NBQXNDO0FBQ3RDLGdFQUE4QztBQUM5QywyREFBeUM7QUFDekMseUVBQXVEO0FBRXZELHNDQUFzQztBQUN0QyxvQkFBb0I7QUFDcEIsc0NBQXNDO0FBQ3RDLHVFQUFxRDtBQUNyRCxzRUFBb0Q7QUFDcEQsdUVBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tZW1vcnkvbWVtb3J5JztcbmV4cG9ydCAqIGZyb20gJy4vbWVtb3J5L3N0cmF0ZWdpZXMvbWFuYWdlZC1zdHJhdGVneSc7XG5leHBvcnQgKiBmcm9tICcuL21lbW9yeS9zdHJhdGVnaWVzL3NlbGYtbWFuYWdlZC1zdHJhdGVneSc7XG5leHBvcnQgKiBmcm9tICcuL21lbW9yeS9tZW1vcnktc3RyYXRlZ3knO1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE5ldHdvcmsgQ29uZmlndXJhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCAqIGZyb20gJy4vbmV0d29yay9uZXR3b3JrLWNvbmZpZ3VyYXRpb24nO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29tbW9uIChzaGFyZWQgdHlwZXMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0ICogZnJvbSAnLi9jb21tb24vdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVudGltZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCAqIGZyb20gJy4vcnVudGltZS9wZXJtcyc7XG5leHBvcnQgKiBmcm9tICcuL3J1bnRpbWUvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9ydW50aW1lL3J1bnRpbWUtYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL3J1bnRpbWUvcnVudGltZS1hcnRpZmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL3J1bnRpbWUvaW5ib3VuZC1hdXRoL2N1c3RvbS1jbGFpbSc7XG5leHBvcnQgKiBmcm9tICcuL3J1bnRpbWUvaW5ib3VuZC1hdXRoL3J1bnRpbWUtYXV0aG9yaXplci1jb25maWd1cmF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vcnVudGltZS9ydW50aW1lLWVuZHBvaW50LWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9ydW50aW1lL3J1bnRpbWUtZW5kcG9pbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ydW50aW1lL3J1bnRpbWUnO1xuLy8gVG9vbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgKiBmcm9tICcuL3Rvb2xzL2NvZGUtaW50ZXJwcmV0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi90b29scy9icm93c2VyJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdhdGV3YXlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgKiBmcm9tICcuL2dhdGV3YXkvZ2F0ZXdheS1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vZ2F0ZXdheS9nYXRld2F5JztcbmV4cG9ydCAqIGZyb20gJy4vZ2F0ZXdheS9pbnRlcmNlcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2dhdGV3YXkvcGVybXMnO1xuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5L3Byb3RvY29sJztcbi8vIHZhbGlkYXRpb24taGVscGVycyBjb250YWlucyBpbnRlcm5hbCB1dGlsaXRpZXMgYW5kIHNob3VsZCBub3QgYmUgZXhwb3J0ZWRcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdhdGV3YXkgLSBJbmJvdW5kIEF1dGhcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgKiBmcm9tICcuL2dhdGV3YXkvaW5ib3VuZC1hdXRoL2F1dGhvcml6ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5L2luYm91bmQtYXV0aC9jdXN0b20tY2xhaW0nO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2F0ZXdheSAtIE91dGJvdW5kIEF1dGhcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgKiBmcm9tICcuL2dhdGV3YXkvb3V0Ym91bmQtYXV0aC9jcmVkZW50aWFsLXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZ2F0ZXdheS9vdXRib3VuZC1hdXRoL2FwaS1rZXknO1xuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5L291dGJvdW5kLWF1dGgvaWFtLXJvbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5L291dGJvdW5kLWF1dGgvb2F1dGgnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2F0ZXdheSAtIFRhcmdldHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgKiBmcm9tICcuL2dhdGV3YXkvdGFyZ2V0cy90YXJnZXQtYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2dhdGV3YXkvdGFyZ2V0cy90YXJnZXQnO1xuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5L3RhcmdldHMvdGFyZ2V0LWNvbmZpZ3VyYXRpb24nO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2F0ZXdheSAtIFNjaGVtYXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgKiBmcm9tICcuL2dhdGV3YXkvdGFyZ2V0cy9zY2hlbWEvYmFzZS1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5L3RhcmdldHMvc2NoZW1hL2FwaS1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5L3RhcmdldHMvc2NoZW1hL3Rvb2wtc2NoZW1hJztcbiJdfQ==