@effect-aws/client-kms 1.0.0 → 1.1.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @effect-aws/client-kms
2
2
 
3
+ ## 1.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#80](https://github.com/floydspace/effect-aws/pull/80) [`4b16fbe`](https://github.com/floydspace/effect-aws/commit/4b16fbebce8131df7798ee92f43cf6b7df3e907c) Thanks [@floydspace](https://github.com/floydspace)! - simplify layers configuration (closes #78)
8
+
9
+ ## 1.0.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [#75](https://github.com/floydspace/effect-aws/pull/75) [`9dc170d`](https://github.com/floydspace/effect-aws/commit/9dc170d975c04888bbc7ca7b241b4b5265668fb5) Thanks [@godu](https://github.com/godu)! - export the HttpHandlerOptions type
14
+
3
15
  ## 1.0.0
4
16
 
5
17
  ### Major Changes
package/README.md CHANGED
@@ -14,13 +14,13 @@ npm install --save @effect-aws/client-kms
14
14
  With default KMSClient instance:
15
15
 
16
16
  ```typescript
17
- import { KMSService, DefaultKMSServiceLayer } from "@effect-aws/client-kms";
17
+ import { KMS } from "@effect-aws/client-kms";
18
18
 
19
- const program = KMSService.listKeys(args);
19
+ const program = KMS.listKeys(args);
20
20
 
21
21
  const result = pipe(
22
22
  program,
23
- Effect.provide(DefaultKMSServiceLayer),
23
+ Effect.provide(KMS.defaultLayer),
24
24
  Effect.runPromise,
25
25
  );
26
26
  ```
@@ -28,23 +28,15 @@ const result = pipe(
28
28
  With custom KMSClient instance:
29
29
 
30
30
  ```typescript
31
- import {
32
- KMSService,
33
- BaseKMSServiceLayer,
34
- KMSClientInstance,
35
- } from "@effect-aws/client-kms";
31
+ import { KMS } from "@effect-aws/client-kms";
36
32
 
37
- const program = KMSService.listKeys(args);
38
-
39
- const KMSClientInstanceLayer = Layer.succeed(
40
- KMSClientInstance,
41
- new KMSClient({ region: "eu-central-1" }),
42
- );
33
+ const program = KMS.listKeys(args);
43
34
 
44
35
  const result = await pipe(
45
36
  program,
46
- Effect.provide(BaseKMSServiceLayer),
47
- Effect.provide(KMSClientInstanceLayer),
37
+ Effect.provide(
38
+ KMS.baseLayer(() => new KMSClient({ region: "eu-central-1" })),
39
+ ),
48
40
  Effect.runPromise,
49
41
  );
50
42
  ```
@@ -52,34 +44,15 @@ const result = await pipe(
52
44
  With custom KMSClient configuration:
53
45
 
54
46
  ```typescript
55
- import {
56
- KMSService,
57
- BaseKMSServiceLayer,
58
- DefaultKMSClientConfigLayer,
59
- KMSClientInstance,
60
- KMSClientInstanceConfig,
61
- } from "@effect-aws/client-kms";
62
-
63
- const program = KMSService.listKeys(args);
64
-
65
- const KMSClientInstanceLayer = Layer.provide(
66
- Layer.effect(
67
- KMSClientInstance,
68
- KMSClientInstanceConfig.pipe(
69
- Effect.map(
70
- (config) => new KMSClient({ ...config, region: "eu-central-1" }),
71
- ),
72
- ),
73
- ),
74
- DefaultKMSClientConfigLayer,
75
- );
47
+ import { KMS } from "@effect-aws/client-kms";
48
+
49
+ const program = KMS.listKeys(args);
76
50
 
77
51
  const result = await pipe(
78
52
  program,
79
- Effect.provide(BaseKMSServiceLayer),
80
- Effect.provide(KMSClientInstanceLayer),
53
+ Effect.provide(KMS.layer({ region: "eu-central-1" })),
81
54
  Effect.runPromiseExit,
82
55
  );
83
56
  ```
84
57
 
85
- or map over `DefaultKMSClientConfigLayer` layer context and update the configuration...
58
+ or use `KMS.baseLayer((default) => new KMSClient({ ...default, region: "eu-central-1" }))`
@@ -1,11 +1,15 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import { type CancelKeyDeletionCommandInput, type CancelKeyDeletionCommandOutput, type ConnectCustomKeyStoreCommandInput, type ConnectCustomKeyStoreCommandOutput, type CreateAliasCommandInput, type CreateAliasCommandOutput, type CreateCustomKeyStoreCommandInput, type CreateCustomKeyStoreCommandOutput, type CreateGrantCommandInput, type CreateGrantCommandOutput, type CreateKeyCommandInput, type CreateKeyCommandOutput, type DecryptCommandInput, type DecryptCommandOutput, type DeleteAliasCommandInput, type DeleteAliasCommandOutput, type DeleteCustomKeyStoreCommandInput, type DeleteCustomKeyStoreCommandOutput, type DeleteImportedKeyMaterialCommandInput, type DeleteImportedKeyMaterialCommandOutput, type DeriveSharedSecretCommandInput, type DeriveSharedSecretCommandOutput, type DescribeCustomKeyStoresCommandInput, type DescribeCustomKeyStoresCommandOutput, type DescribeKeyCommandInput, type DescribeKeyCommandOutput, type DisableKeyCommandInput, type DisableKeyCommandOutput, type DisableKeyRotationCommandInput, type DisableKeyRotationCommandOutput, type DisconnectCustomKeyStoreCommandInput, type DisconnectCustomKeyStoreCommandOutput, type EnableKeyCommandInput, type EnableKeyCommandOutput, type EnableKeyRotationCommandInput, type EnableKeyRotationCommandOutput, type EncryptCommandInput, type EncryptCommandOutput, type GenerateDataKeyCommandInput, type GenerateDataKeyCommandOutput, type GenerateDataKeyPairCommandInput, type GenerateDataKeyPairCommandOutput, type GenerateDataKeyPairWithoutPlaintextCommandInput, type GenerateDataKeyPairWithoutPlaintextCommandOutput, type GenerateDataKeyWithoutPlaintextCommandInput, type GenerateDataKeyWithoutPlaintextCommandOutput, type GenerateMacCommandInput, type GenerateMacCommandOutput, type GenerateRandomCommandInput, type GenerateRandomCommandOutput, type GetKeyPolicyCommandInput, type GetKeyPolicyCommandOutput, type GetKeyRotationStatusCommandInput, type GetKeyRotationStatusCommandOutput, type GetParametersForImportCommandInput, type GetParametersForImportCommandOutput, type GetPublicKeyCommandInput, type GetPublicKeyCommandOutput, type ImportKeyMaterialCommandInput, type ImportKeyMaterialCommandOutput, type ListAliasesCommandInput, type ListAliasesCommandOutput, type ListGrantsCommandInput, type ListGrantsCommandOutput, type ListKeyPoliciesCommandInput, type ListKeyPoliciesCommandOutput, type ListKeyRotationsCommandInput, type ListKeyRotationsCommandOutput, type ListKeysCommandInput, type ListKeysCommandOutput, type ListResourceTagsCommandInput, type ListResourceTagsCommandOutput, type ListRetirableGrantsCommandInput, type ListRetirableGrantsCommandOutput, type PutKeyPolicyCommandInput, type PutKeyPolicyCommandOutput, type ReEncryptCommandInput, type ReEncryptCommandOutput, type ReplicateKeyCommandInput, type ReplicateKeyCommandOutput, type RetireGrantCommandInput, type RetireGrantCommandOutput, type RevokeGrantCommandInput, type RevokeGrantCommandOutput, type RotateKeyOnDemandCommandInput, type RotateKeyOnDemandCommandOutput, type ScheduleKeyDeletionCommandInput, type ScheduleKeyDeletionCommandOutput, type SignCommandInput, type SignCommandOutput, type TagResourceCommandInput, type TagResourceCommandOutput, type UntagResourceCommandInput, type UntagResourceCommandOutput, type UpdateAliasCommandInput, type UpdateAliasCommandOutput, type UpdateCustomKeyStoreCommandInput, type UpdateCustomKeyStoreCommandOutput, type UpdateKeyDescriptionCommandInput, type UpdateKeyDescriptionCommandOutput, type UpdatePrimaryRegionCommandInput, type UpdatePrimaryRegionCommandOutput, type VerifyCommandInput, type VerifyCommandOutput, type VerifyMacCommandInput, type VerifyMacCommandOutput } from "@aws-sdk/client-kms";
4
+ import { type KMSClient, type KMSClientConfig, type CancelKeyDeletionCommandInput, type CancelKeyDeletionCommandOutput, type ConnectCustomKeyStoreCommandInput, type ConnectCustomKeyStoreCommandOutput, type CreateAliasCommandInput, type CreateAliasCommandOutput, type CreateCustomKeyStoreCommandInput, type CreateCustomKeyStoreCommandOutput, type CreateGrantCommandInput, type CreateGrantCommandOutput, type CreateKeyCommandInput, type CreateKeyCommandOutput, type DecryptCommandInput, type DecryptCommandOutput, type DeleteAliasCommandInput, type DeleteAliasCommandOutput, type DeleteCustomKeyStoreCommandInput, type DeleteCustomKeyStoreCommandOutput, type DeleteImportedKeyMaterialCommandInput, type DeleteImportedKeyMaterialCommandOutput, type DeriveSharedSecretCommandInput, type DeriveSharedSecretCommandOutput, type DescribeCustomKeyStoresCommandInput, type DescribeCustomKeyStoresCommandOutput, type DescribeKeyCommandInput, type DescribeKeyCommandOutput, type DisableKeyCommandInput, type DisableKeyCommandOutput, type DisableKeyRotationCommandInput, type DisableKeyRotationCommandOutput, type DisconnectCustomKeyStoreCommandInput, type DisconnectCustomKeyStoreCommandOutput, type EnableKeyCommandInput, type EnableKeyCommandOutput, type EnableKeyRotationCommandInput, type EnableKeyRotationCommandOutput, type EncryptCommandInput, type EncryptCommandOutput, type GenerateDataKeyCommandInput, type GenerateDataKeyCommandOutput, type GenerateDataKeyPairCommandInput, type GenerateDataKeyPairCommandOutput, type GenerateDataKeyPairWithoutPlaintextCommandInput, type GenerateDataKeyPairWithoutPlaintextCommandOutput, type GenerateDataKeyWithoutPlaintextCommandInput, type GenerateDataKeyWithoutPlaintextCommandOutput, type GenerateMacCommandInput, type GenerateMacCommandOutput, type GenerateRandomCommandInput, type GenerateRandomCommandOutput, type GetKeyPolicyCommandInput, type GetKeyPolicyCommandOutput, type GetKeyRotationStatusCommandInput, type GetKeyRotationStatusCommandOutput, type GetParametersForImportCommandInput, type GetParametersForImportCommandOutput, type GetPublicKeyCommandInput, type GetPublicKeyCommandOutput, type ImportKeyMaterialCommandInput, type ImportKeyMaterialCommandOutput, type ListAliasesCommandInput, type ListAliasesCommandOutput, type ListGrantsCommandInput, type ListGrantsCommandOutput, type ListKeyPoliciesCommandInput, type ListKeyPoliciesCommandOutput, type ListKeyRotationsCommandInput, type ListKeyRotationsCommandOutput, type ListKeysCommandInput, type ListKeysCommandOutput, type ListResourceTagsCommandInput, type ListResourceTagsCommandOutput, type ListRetirableGrantsCommandInput, type ListRetirableGrantsCommandOutput, type PutKeyPolicyCommandInput, type PutKeyPolicyCommandOutput, type ReEncryptCommandInput, type ReEncryptCommandOutput, type ReplicateKeyCommandInput, type ReplicateKeyCommandOutput, type RetireGrantCommandInput, type RetireGrantCommandOutput, type RevokeGrantCommandInput, type RevokeGrantCommandOutput, type RotateKeyOnDemandCommandInput, type RotateKeyOnDemandCommandOutput, type ScheduleKeyDeletionCommandInput, type ScheduleKeyDeletionCommandOutput, type SignCommandInput, type SignCommandOutput, type TagResourceCommandInput, type TagResourceCommandOutput, type UntagResourceCommandInput, type UntagResourceCommandOutput, type UpdateAliasCommandInput, type UpdateAliasCommandOutput, type UpdateCustomKeyStoreCommandInput, type UpdateCustomKeyStoreCommandOutput, type UpdateKeyDescriptionCommandInput, type UpdateKeyDescriptionCommandOutput, type UpdatePrimaryRegionCommandInput, type UpdatePrimaryRegionCommandOutput, type VerifyCommandInput, type VerifyCommandOutput, type VerifyMacCommandInput, type VerifyMacCommandOutput } from "@aws-sdk/client-kms";
5
5
  import { Effect, Layer } from "effect";
6
6
  import { AlreadyExistsError, CloudHsmClusterInUseError, CloudHsmClusterInvalidConfigurationError, CloudHsmClusterNotActiveError, CloudHsmClusterNotFoundError, CloudHsmClusterNotRelatedError, ConflictError, CustomKeyStoreHasCMKsError, CustomKeyStoreInvalidStateError, CustomKeyStoreNameInUseError, CustomKeyStoreNotFoundError, DependencyTimeoutError, DisabledError, DryRunOperationError, ExpiredImportTokenError, IncorrectKeyError, IncorrectKeyMaterialError, IncorrectTrustAnchorError, InvalidAliasNameError, InvalidArnError, InvalidCiphertextError, InvalidGrantIdError, InvalidGrantTokenError, InvalidImportTokenError, InvalidKeyUsageError, InvalidMarkerError, KMSInternalError, KMSInvalidMacError, KMSInvalidSignatureError, KMSInvalidStateError, KeyUnavailableError, LimitExceededError, MalformedPolicyDocumentError, NotFoundError, TagError, UnsupportedOperationError, XksKeyAlreadyInUseError, XksKeyInvalidConfigurationError, XksKeyNotFoundError, XksProxyIncorrectAuthenticationCredentialError, XksProxyInvalidConfigurationError, XksProxyInvalidResponseError, XksProxyUriEndpointInUseError, XksProxyUriInUseError, XksProxyUriUnreachableError, XksProxyVpcEndpointServiceInUseError, XksProxyVpcEndpointServiceInvalidConfigurationError, XksProxyVpcEndpointServiceNotFoundError, SdkError } from "./Errors";
7
7
  import { KMSClientInstance } from "./KMSClientInstance";
8
- interface HttpHandlerOptions {
8
+ import { KMSClientInstanceConfig } from "./KMSClientInstanceConfig";
9
+ /**
10
+ * @since 1.0.0
11
+ */
12
+ export interface HttpHandlerOptions {
9
13
  /**
10
14
  * The maximum time in milliseconds that the connection phase of a request
11
15
  * may take before the connection attempt is abandoned.
@@ -227,6 +231,11 @@ interface KMSService$ {
227
231
  */
228
232
  verifyMac(args: VerifyMacCommandInput, options?: HttpHandlerOptions): Effect.Effect<VerifyMacCommandOutput, SdkError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KeyUnavailableError | KMSInternalError | KMSInvalidMacError | KMSInvalidStateError | NotFoundError>;
229
233
  }
234
+ /**
235
+ * @since 1.0.0
236
+ * @category constructors
237
+ */
238
+ export declare const makeKMSService: Effect.Effect<KMSService$, never, KMSClientInstance>;
230
239
  declare const KMSService_base: import("effect/Context").TagClass<KMSService, "@effect-aws/client-kms/KMSService", KMSService$> & {
231
240
  readonly _: Effect.Effect<KMSService$["_"], never, KMSService>;
232
241
  cancelKeyDeletion: (args: CancelKeyDeletionCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<CancelKeyDeletionCommandOutput, DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | SdkError, KMSService>;
@@ -290,25 +299,32 @@ declare const KMSService_base: import("effect/Context").TagClass<KMSService, "@e
290
299
  * @category models
291
300
  */
292
301
  export declare class KMSService extends KMSService_base {
302
+ static readonly defaultLayer: Layer.Layer<KMSService, never, never>;
303
+ static readonly layer: (config: KMSClientConfig) => Layer.Layer<KMSService, never, never>;
304
+ static readonly baseLayer: (evaluate: (defaultConfig: KMSClientConfig) => KMSClient) => Layer.Layer<KMSService, never, never>;
293
305
  }
294
306
  /**
295
307
  * @since 1.0.0
296
- * @category constructors
308
+ * @category models
309
+ * @alias KMSService
297
310
  */
298
- export declare const makeKMSService: Effect.Effect<KMSService$, never, KMSClientInstance>;
311
+ export declare const KMS: typeof KMSService;
299
312
  /**
300
313
  * @since 1.0.0
301
314
  * @category layers
315
+ * @deprecated use KMS.baseLayer instead
302
316
  */
303
317
  export declare const BaseKMSServiceLayer: Layer.Layer<KMSService, never, KMSClientInstance>;
304
318
  /**
305
319
  * @since 1.0.0
306
320
  * @category layers
321
+ * @deprecated use KMS.layer instead
307
322
  */
308
- export declare const KMSServiceLayer: Layer.Layer<KMSService, never, import("./KMSClientInstanceConfig").KMSClientInstanceConfig>;
323
+ export declare const KMSServiceLayer: Layer.Layer<KMSService, never, KMSClientInstanceConfig>;
309
324
  /**
310
325
  * @since 1.0.0
311
326
  * @category layers
327
+ * @deprecated use KMS.defaultLayer instead
312
328
  */
313
329
  export declare const DefaultKMSServiceLayer: Layer.Layer<KMSService, never, never>;
314
330
  export {};
package/lib/KMSService.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
+ var _a;
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DefaultKMSServiceLayer = exports.KMSServiceLayer = exports.BaseKMSServiceLayer = exports.makeKMSService = exports.KMSService = void 0;
4
+ exports.DefaultKMSServiceLayer = exports.KMSServiceLayer = exports.BaseKMSServiceLayer = exports.KMS = exports.KMSService = exports.makeKMSService = void 0;
4
5
  /**
5
6
  * @since 1.0.0
6
7
  */
@@ -64,13 +65,6 @@ const commands = {
64
65
  VerifyCommand: client_kms_1.VerifyCommand,
65
66
  VerifyMacCommand: client_kms_1.VerifyMacCommand,
66
67
  };
67
- /**
68
- * @since 1.0.0
69
- * @category models
70
- */
71
- class KMSService extends effect_1.Effect.Tag("@effect-aws/client-kms/KMSService")() {
72
- }
73
- exports.KMSService = KMSService;
74
68
  /**
75
69
  * @since 1.0.0
76
70
  * @category constructors
@@ -109,19 +103,39 @@ exports.makeKMSService = effect_1.Effect.gen(function* (_) {
109
103
  return { ...acc, [methodName]: methodImpl };
110
104
  }, {});
111
105
  });
106
+ /**
107
+ * @since 1.0.0
108
+ * @category models
109
+ */
110
+ class KMSService extends effect_1.Effect.Tag("@effect-aws/client-kms/KMSService")() {
111
+ }
112
+ exports.KMSService = KMSService;
113
+ _a = KMSService;
114
+ KMSService.defaultLayer = effect_1.Layer.effect(_a, exports.makeKMSService).pipe(effect_1.Layer.provide(KMSClientInstance_1.KMSClientInstanceLayer), effect_1.Layer.provide(KMSClientInstanceConfig_1.DefaultKMSClientConfigLayer));
115
+ KMSService.layer = (config) => effect_1.Layer.effect(_a, exports.makeKMSService).pipe(effect_1.Layer.provide(KMSClientInstance_1.KMSClientInstanceLayer), effect_1.Layer.provide(effect_1.Layer.effect(KMSClientInstanceConfig_1.KMSClientInstanceConfig, KMSClientInstanceConfig_1.makeDefaultKMSClientInstanceConfig.pipe(effect_1.Effect.map((defaultConfig) => ({ ...defaultConfig, ...config }))))));
116
+ KMSService.baseLayer = (evaluate) => effect_1.Layer.effect(_a, exports.makeKMSService).pipe(effect_1.Layer.provide(effect_1.Layer.effect(KMSClientInstance_1.KMSClientInstance, effect_1.Effect.map(KMSClientInstanceConfig_1.makeDefaultKMSClientInstanceConfig, evaluate))));
117
+ /**
118
+ * @since 1.0.0
119
+ * @category models
120
+ * @alias KMSService
121
+ */
122
+ exports.KMS = KMSService;
112
123
  /**
113
124
  * @since 1.0.0
114
125
  * @category layers
126
+ * @deprecated use KMS.baseLayer instead
115
127
  */
116
128
  exports.BaseKMSServiceLayer = effect_1.Layer.effect(KMSService, exports.makeKMSService);
117
129
  /**
118
130
  * @since 1.0.0
119
131
  * @category layers
132
+ * @deprecated use KMS.layer instead
120
133
  */
121
134
  exports.KMSServiceLayer = exports.BaseKMSServiceLayer.pipe(effect_1.Layer.provide(KMSClientInstance_1.KMSClientInstanceLayer));
122
135
  /**
123
136
  * @since 1.0.0
124
137
  * @category layers
138
+ * @deprecated use KMS.defaultLayer instead
125
139
  */
126
- exports.DefaultKMSServiceLayer = exports.KMSServiceLayer.pipe(effect_1.Layer.provide(KMSClientInstanceConfig_1.DefaultKMSClientConfigLayer));
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS01TU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9LTVNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsb0RBaUs2QjtBQUM3QixtQ0FBcUQ7QUFDckQscUNBb0RrQjtBQUNsQiwyREFBZ0Y7QUFDaEYsdUVBQXdFO0FBVXhFLE1BQU0sUUFBUSxHQUFHO0lBQ2Ysd0JBQXdCLEVBQXhCLHFDQUF3QjtJQUN4Qiw0QkFBNEIsRUFBNUIseUNBQTRCO0lBQzVCLGtCQUFrQixFQUFsQiwrQkFBa0I7SUFDbEIsMkJBQTJCLEVBQTNCLHdDQUEyQjtJQUMzQixrQkFBa0IsRUFBbEIsK0JBQWtCO0lBQ2xCLGdCQUFnQixFQUFoQiw2QkFBZ0I7SUFDaEIsY0FBYyxFQUFkLDJCQUFjO0lBQ2Qsa0JBQWtCLEVBQWxCLCtCQUFrQjtJQUNsQiwyQkFBMkIsRUFBM0Isd0NBQTJCO0lBQzNCLGdDQUFnQyxFQUFoQyw2Q0FBZ0M7SUFDaEMseUJBQXlCLEVBQXpCLHNDQUF5QjtJQUN6Qiw4QkFBOEIsRUFBOUIsMkNBQThCO0lBQzlCLGtCQUFrQixFQUFsQiwrQkFBa0I7SUFDbEIsaUJBQWlCLEVBQWpCLDhCQUFpQjtJQUNqQix5QkFBeUIsRUFBekIsc0NBQXlCO0lBQ3pCLCtCQUErQixFQUEvQiw0Q0FBK0I7SUFDL0IsZ0JBQWdCLEVBQWhCLDZCQUFnQjtJQUNoQix3QkFBd0IsRUFBeEIscUNBQXdCO0lBQ3hCLGNBQWMsRUFBZCwyQkFBYztJQUNkLHNCQUFzQixFQUF0QixtQ0FBc0I7SUFDdEIsMEJBQTBCLEVBQTFCLHVDQUEwQjtJQUMxQiwwQ0FBMEMsRUFBMUMsdURBQTBDO0lBQzFDLHNDQUFzQyxFQUF0QyxtREFBc0M7SUFDdEMsa0JBQWtCLEVBQWxCLCtCQUFrQjtJQUNsQixxQkFBcUIsRUFBckIsa0NBQXFCO0lBQ3JCLG1CQUFtQixFQUFuQixnQ0FBbUI7SUFDbkIsMkJBQTJCLEVBQTNCLHdDQUEy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QztnQkFDRCxNQUFNLENBQUMsQ0FBQztZQUNWLENBQUM7U0FDRixDQUFDLENBQUM7UUFDTCxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUN0RSxVQUFVLEVBQ1YsRUFBRSxDQUNILENBQUM7UUFDRixPQUFPLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUM5QyxDQUFDLEVBQUUsRUFBRSxDQUFnQixDQUFDO0FBQ3hCLENBQUMsQ0FBQyxDQUFDO0FBRUg7OztHQUdHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRyxjQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxzQkFBYyxDQUFDLENBQUM7QUFFNUU7OztHQUdHO0FBQ1UsUUFBQSxlQUFlLEdBQUcsMkJBQW1CLENBQUMsSUFBSSxDQUNyRCxjQUFLLENBQUMsT0FBTyxDQUFDLDBDQUFzQixDQUFDLENBQ3RDLENBQUM7QUFFRjs7O0dBR0c7QUFDVSxRQUFBLHNCQUFzQixHQUFHLHVCQUFlLENBQUMsSUFBSSxDQUN4RCxjQUFLLENBQUMsT0FBTyxDQUFDLHFEQUEyQixDQUFDLENBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQge1xuICBLTVNTZXJ2aWNlRXhjZXB0aW9uLFxuICBDYW5jZWxLZXlEZWxldGlvbkNvbW1hbmQsXG4gIHR5cGUgQ2FuY2VsS2V5RGVsZXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQ2FuY2VsS2V5RGVsZXRpb25Db21tYW5kT3V0cHV0LFxuICBDb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kLFxuICB0eXBlIENvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVHcmFudENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlR3JhbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlR3JhbnRDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVLZXlDb21tYW5kLFxuICB0eXBlIENyZWF0ZUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVLZXlDb21tYW5kT3V0cHV0LFxuICBEZWNyeXB0Q29tbWFuZCxcbiAgdHlwZSBEZWNyeXB0Q29tbWFuZElucHV0LFxuICB0eXBlIERlY3J5cHRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBEZWxldGVDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBEZWxldGVJbXBvcnRlZEtleU1hdGVyaWFsQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVJbXBvcnRlZEtleU1hdGVyaWFsQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUltcG9ydGVkS2V5TWF0ZXJpYWxDb21tYW5kT3V0cHV0LFxuICBEZXJpdmVTaGFyZWRTZWNyZXRDb21tYW5kLFxuICB0eXBlIERlcml2ZVNoYXJlZFNlY3JldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXJpdmVTaGFyZWRTZWNyZXRDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUN1c3RvbUtleVN0b3Jlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVDdXN0b21LZXlTdG9yZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVDdXN0b21LZXlTdG9yZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUtleUNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVLZXlDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVLZXlDb21tYW5kT3V0cHV0LFxuICBEaXNhYmxlS2V5Q29tbWFuZCxcbiAgdHlwZSBEaXNhYmxlS2V5Q29tbWFuZElucHV0LFxuICB0eXBlIERpc2FibGVLZXlDb21tYW5kT3V0cHV0LFxuICBEaXNhYmxlS2V5Um90YXRpb25Db21tYW5kLFxuICB0eXBlIERpc2FibGVLZXlSb3RhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEaXNhYmxlS2V5Um90YXRpb25Db21tYW5kT3V0cHV0LFxuICBEaXNjb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kLFxuICB0eXBlIERpc2Nvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEaXNjb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBFbmFibGVLZXlDb21tYW5kLFxuICB0eXBlIEVuYWJsZUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBFbmFibGVLZXlDb21tYW5kT3V0cHV0LFxuICBFbmFibGVLZXlSb3RhdGlvbkNvbW1hbmQsXG4gIHR5cGUgRW5hYmxlS2V5Um90YXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgRW5hYmxlS2V5Um90YXRpb25Db21tYW5kT3V0cHV0LFxuICBFbmNyeXB0Q29tbWFuZCxcbiAgdHlwZSBFbmNyeXB0Q29tbWFuZElucHV0LFxuICB0eXBlIEVuY3J5cHRDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZURhdGFLZXlDb21tYW5kLFxuICB0eXBlIEdlbmVyYXRlRGF0YUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZW5lcmF0ZURhdGFLZXlDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZURhdGFLZXlQYWlyQ29tbWFuZCxcbiAgdHlwZSBHZW5lcmF0ZURhdGFLZXlQYWlyQ29tbWFuZElucHV0LFxuICB0eXBlIEdlbmVyYXRlRGF0YUtleVBhaXJDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZURhdGFLZXlQYWlyV2l0aG91dFBsYWludGV4dENvbW1hbmQsXG4gIHR5cGUgR2VuZXJhdGVEYXRhS2V5UGFpcldpdGhvdXRQbGFpbnRleHRDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2VuZXJhdGVEYXRhS2V5UGFpcldpdGhvdXRQbGFpbnRleHRDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZURhdGFLZXlXaXRob3V0UGxhaW50ZXh0Q29tbWFuZCxcbiAgdHlwZSBHZW5lcmF0ZURhdGFLZXlXaXRob3V0UGxhaW50ZXh0Q29tbWFuZElucHV0LFxuICB0eXBlIEdlbmVyYXRlRGF0YUtleVdpdGhvdXRQbGFpbnRleHRDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZU1hY0NvbW1hbmQsXG4gIHR5cGUgR2VuZXJhdGVNYWNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2VuZXJhdGVNYWNDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZVJhbmRvbUNvbW1hbmQsXG4gIHR5cGUgR2VuZXJhdGVSYW5kb21Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2VuZXJhdGVSYW5kb21Db21tYW5kT3V0cHV0LFxuICBHZXRLZXlQb2xpY3lDb21tYW5kLFxuICB0eXBlIEdldEtleVBvbGljeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRLZXlQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBHZXRLZXlSb3RhdGlvblN0YXR1c0NvbW1hbmQsXG4gIHR5cGUgR2V0S2V5Um90YXRpb25TdGF0dXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0S2V5Um90YXRpb25TdGF0dXNDb21tYW5kT3V0cHV0LFxuICBHZXRQYXJhbWV0ZXJzRm9ySW1wb3J0Q29tbWFuZCxcbiAgdHlwZSBHZXRQYXJhbWV0ZXJzRm9ySW1wb3J0Q29tbWFuZElucHV0LFxuICB0eXBlIEdldFBhcmFtZXRlcnNGb3JJbXBvcnRDb21tYW5kT3V0cHV0LFxuICBHZXRQdWJsaWNLZXlDb21tYW5kLFxuICB0eXBlIEdldFB1YmxpY0tleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRQdWJsaWNLZXlDb21tYW5kT3V0cHV0LFxuICBJbXBvcnRLZXlNYXRlcmlhbENvbW1hbmQsXG4gIHR5cGUgSW1wb3J0S2V5TWF0ZXJpYWxDb21tYW5kSW5wdXQsXG4gIHR5cGUgSW1wb3J0S2V5TWF0ZXJpYWxDb21tYW5kT3V0cHV0LFxuICBMaXN0QWxpYXNlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEFsaWFzZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEFsaWFzZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0R3JhbnRzQ29tbWFuZCxcbiAgdHlwZSBMaXN0R3JhbnRzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RHcmFudHNDb21tYW5kT3V0cHV0LFxuICBMaXN0S2V5UG9saWNpZXNDb21tYW5kLFxuICB0eXBlIExpc3RLZXlQb2xpY2llc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0S2V5UG9saWNpZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0S2V5Um90YXRpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0S2V5Um90YXRpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RLZXlSb3RhdGlvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0S2V5c0NvbW1hbmQsXG4gIHR5cGUgTGlzdEtleXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEtleXNDb21tYW5kT3V0cHV0LFxuICBMaXN0UmVzb3VyY2VUYWdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UmVzb3VyY2VUYWdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RSZXNvdXJjZVRhZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0UmV0aXJhYmxlR3JhbnRzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UmV0aXJhYmxlR3JhbnRzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RSZXRpcmFibGVHcmFudHNDb21tYW5kT3V0cHV0LFxuICBQdXRLZXlQb2xpY3lDb21tYW5kLFxuICB0eXBlIFB1dEtleVBvbGljeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRLZXlQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBSZUVuY3J5cHRDb21tYW5kLFxuICB0eXBlIFJlRW5jcnlwdENvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZUVuY3J5cHRDb21tYW5kT3V0cHV0LFxuICBSZXBsaWNhdGVLZXlDb21tYW5kLFxuICB0eXBlIFJlcGxpY2F0ZUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZXBsaWNhdGVLZXlDb21tYW5kT3V0cHV0LFxuICBSZXRpcmVHcmFudENvbW1hbmQsXG4gIHR5cGUgUmV0aXJlR3JhbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmV0aXJlR3JhbnRDb21tYW5kT3V0cHV0LFxuICBSZXZva2VHcmFudENvbW1hbmQsXG4gIHR5cGUgUmV2b2tlR3JhbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmV2b2tlR3JhbnRDb21tYW5kT3V0cHV0LFxuICBSb3RhdGVLZXlPbkRlbWFuZENvbW1hbmQsXG4gIHR5cGUgUm90YXRlS2V5T25EZW1hbmRDb21tYW5kSW5wdXQsXG4gIHR5cGUgUm90YXRlS2V5T25EZW1hbmRDb21tYW5kT3V0cHV0LFxuICBTY2hlZHVsZUtleURlbGV0aW9uQ29tbWFuZCxcbiAgdHlwZSBTY2hlZHVsZUtleURlbGV0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFNjaGVkdWxlS2V5RGVsZXRpb25Db21tYW5kT3V0cHV0LFxuICBTaWduQ29tbWFuZCxcbiAgdHlwZSBTaWduQ29tbWFuZElucHV0LFxuICB0eXBlIFNpZ25Db21tYW5kT3V0cHV0LFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgVGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgVGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgdHlwZSBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFVudGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVLZXlEZXNjcmlwdGlvbkNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlS2V5RGVzY3JpcHRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlS2V5RGVzY3JpcHRpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVQcmltYXJ5UmVnaW9uQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVQcmltYXJ5UmVnaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVByaW1hcnlSZWdpb25Db21tYW5kT3V0cHV0LFxuICBWZXJpZnlDb21tYW5kLFxuICB0eXBlIFZlcmlmeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBWZXJpZnlDb21tYW5kT3V0cHV0LFxuICBWZXJpZnlNYWNDb21tYW5kLFxuICB0eXBlIFZlcmlmeU1hY0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBWZXJpZnlNYWNDb21tYW5kT3V0cHV0LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWttc1wiO1xuaW1wb3J0IHsgRGF0YSwgRWZmZWN0LCBMYXllciwgUmVjb3JkIH0gZnJvbSBcImVmZmVjdFwiO1xuaW1wb3J0IHtcbiAgQWxsU2VydmljZUVycm9ycyxcbiAgQWxyZWFkeUV4aXN0c0Vycm9yLFxuICBDbG91ZEhzbUNsdXN0ZXJJblVzZUVycm9yLFxuICBDbG91ZEhzbUNsdXN0ZXJJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yLFxuICBDbG91ZEhzbUNsdXN0ZXJOb3RBY3RpdmVFcnJvcixcbiAgQ2xvdWRIc21DbHVzdGVyTm90Rm91bmRFcnJvcixcbiAgQ2xvdWRIc21DbHVzdGVyTm90UmVsYXRlZEVycm9yLFxuICBDb25mbGljdEVycm9yLFxuICBDdXN0b21LZXlTdG9yZUhhc0NNS3NFcnJvcixcbiAgQ3VzdG9tS2V5U3RvcmVJbnZhbGlkU3RhdGVFcnJvcixcbiAgQ3VzdG9tS2V5U3RvcmVOYW1lSW5Vc2VFcnJvcixcbiAgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yLFxuICBEZXBlbmRlbmN5VGltZW91dEVycm9yLFxuICBEaXNhYmxlZEVycm9yLFxuICBEcnlSdW5PcGVyYXRpb25FcnJvcixcbiAgRXhwaXJlZEltcG9ydFRva2VuRXJyb3IsXG4gIEluY29ycmVjdEtleUVycm9yLFxuICBJbmNvcnJlY3RLZXlNYXRlcmlhbEVycm9yLFxuICBJbmNvcnJlY3RUcnVzdEFuY2hvckVycm9yLFxuICBJbnZhbGlkQWxpYXNOYW1lRXJyb3IsXG4gIEludmFsaWRBcm5FcnJvcixcbiAgSW52YWxpZENpcGhlcnRleHRFcnJvcixcbiAgSW52YWxpZEdyYW50SWRFcnJvcixcbiAgSW52YWxpZEdyYW50VG9rZW5FcnJvcixcbiAgSW52YWxpZEltcG9ydFRva2VuRXJyb3IsXG4gIEludmFsaWRLZXlVc2FnZUVycm9yLFxuICBJbnZhbGlkTWFya2VyRXJyb3IsXG4gIEtNU0ludGVybmFsRXJyb3IsXG4gIEtNU0ludmFsaWRNYWNFcnJvcixcbiAgS01TSW52YWxpZFNpZ25hdHVyZUVycm9yLFxuICBLTVNJbnZhbGlkU3RhdGVFcnJvcixcbiAgS2V5VW5hdmFpbGFibGVFcnJvcixcbiAgTGltaXRFeGNlZWRlZEVycm9yLFxuICBNYWxmb3JtZWRQb2xpY3lEb2N1bWVudEVycm9yLFxuICBOb3RGb3VuZEVycm9yLFxuICBUYWdFcnJvcixcbiAgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvcixcbiAgWGtzS2V5QWxyZWFkeUluVXNlRXJyb3IsXG4gIFhrc0tleUludmFsaWRDb25maWd1cmF0aW9uRXJyb3IsXG4gIFhrc0tleU5vdEZvdW5kRXJyb3IsXG4gIFhrc1Byb3h5SW5jb3JyZWN0QXV0aGVudGljYXRpb25DcmVkZW50aWFsRXJyb3IsXG4gIFhrc1Byb3h5SW52YWxpZENvbmZpZ3VyYXRpb25FcnJvcixcbiAgWGtzUHJveHlJbnZhbGlkUmVzcG9uc2VFcnJvcixcbiAgWGtzUHJveHlVcmlFbmRwb2ludEluVXNlRXJyb3IsXG4gIFhrc1Byb3h5VXJpSW5Vc2VFcnJvcixcbiAgWGtzUHJveHlVcmlVbnJlYWNoYWJsZUVycm9yLFxuICBYa3NQcm94eVZwY0VuZHBvaW50U2VydmljZUluVXNlRXJyb3IsXG4gIFhrc1Byb3h5VnBjRW5kcG9pbnRTZXJ2aWNlSW52YWxpZENvbmZpZ3VyYXRpb25FcnJvcixcbiAgWGtzUHJveHlWcGNFbmRwb2ludFNlcnZpY2VOb3RGb3VuZEVycm9yLFxuICBTZGtFcnJvcixcbiAgVGFnZ2VkRXhjZXB0aW9uLFxufSBmcm9tIFwiLi9FcnJvcnNcIjtcbmltcG9ydCB7IEtNU0NsaWVudEluc3RhbmNlLCBLTVNDbGllbnRJbnN0YW5jZUxheWVyIH0gZnJvbSBcIi4vS01TQ2xpZW50SW5zdGFuY2VcIjtcbmltcG9ydCB7IERlZmF1bHRLTVNDbGllbnRDb25maWdMYXllciB9IGZyb20gXCIuL0tNU0NsaWVudEluc3RhbmNlQ29uZmlnXCI7XG5cbmludGVyZmFjZSBIdHRwSGFuZGxlck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdGhhdCB0aGUgY29ubmVjdGlvbiBwaGFzZSBvZiBhIHJlcXVlc3RcbiAgICogbWF5IHRha2UgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGF0dGVtcHQgaXMgYWJhbmRvbmVkLlxuICAgKi9cbiAgcmVxdWVzdFRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbmNvbnN0IGNvbW1hbmRzID0ge1xuICBDYW5jZWxLZXlEZWxldGlvbkNvbW1hbmQsXG4gIENvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIENyZWF0ZUFsaWFzQ29tbWFuZCxcbiAgQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kLFxuICBDcmVhdGVHcmFudENvbW1hbmQsXG4gIENyZWF0ZUtleUNvbW1hbmQsXG4gIERlY3J5cHRDb21tYW5kLFxuICBEZWxldGVBbGlhc0NvbW1hbmQsXG4gIERlbGV0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZCxcbiAgRGVsZXRlSW1wb3J0ZWRLZXlNYXRlcmlhbENvbW1hbmQsXG4gIERlcml2ZVNoYXJlZFNlY3JldENvbW1hbmQsXG4gIERlc2NyaWJlQ3VzdG9tS2V5U3RvcmVzQ29tbWFuZCxcbiAgRGVzY3JpYmVLZXlDb21tYW5kLFxuICBEaXNhYmxlS2V5Q29tbWFuZCxcbiAgRGlzYWJsZUtleVJvdGF0aW9uQ29tbWFuZCxcbiAgRGlzY29ubmVjdEN1c3RvbUtleVN0b3JlQ29tbWFuZCxcbiAgRW5hYmxlS2V5Q29tbWFuZCxcbiAgRW5hYmxlS2V5Um90YXRpb25Db21tYW5kLFxuICBFbmNyeXB0Q29tbWFuZCxcbiAgR2VuZXJhdGVEYXRhS2V5Q29tbWFuZCxcbiAgR2VuZXJhdGVEYXRhS2V5UGFpckNvbW1hbmQsXG4gIEdlbmVyYXRlRGF0YUtleVBhaXJXaXRob3V0UGxhaW50ZXh0Q29tbWFuZCxcbiAgR2VuZXJhdGVEYXRhS2V5V2l0aG91dFBsYWludGV4dENvbW1hbmQsXG4gIEdlbmVyYXRlTWFjQ29tbWFuZCxcbiAgR2VuZXJhdGVSYW5kb21Db21tYW5kLFxuICBHZXRLZXlQb2xpY3lDb21tYW5kLFxuICBHZXRLZXlSb3RhdGlvblN0YXR1c0NvbW1hbmQsXG4gIEdldFBhcmFtZXRlcnNGb3JJbXBvcnRDb21tYW5kLFxuICBHZXRQdWJsaWNLZXlDb21tYW5kLFxuICBJbXBvcnRLZXlNYXRlcmlhbENvbW1hbmQsXG4gIExpc3RBbGlhc2VzQ29tbWFuZCxcbiAgTGlzdEdyYW50c0NvbW1hbmQsXG4gIExpc3RLZXlQb2xpY2llc0NvbW1hbmQsXG4gIExpc3RLZXlSb3RhdGlvbnNDb21tYW5kLFxuICBMaXN0S2V5c0NvbW1hbmQsXG4gIExpc3RSZXNvdXJjZVRhZ3NDb21tYW5kLFxuICBMaXN0UmV0aXJhYmxlR3JhbnRzQ29tbWFuZCxcbiAgUHV0S2V5UG9saWN5Q29tbWFuZCxcbiAgUmVFbmNyeXB0Q29tbWFuZCxcbiAgUmVwbGljYXRlS2V5Q29tbWFuZCxcbiAgUmV0aXJlR3JhbnRDb21tYW5kLFxuICBSZXZva2VHcmFudENvbW1hbmQsXG4gIFJvdGF0ZUtleU9uRGVtYW5kQ29tbWFuZCxcbiAgU2NoZWR1bGVLZXlEZWxldGlvbkNvbW1hbmQsXG4gIFNpZ25Db21tYW5kLFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kLFxuICBVcGRhdGVBbGlhc0NvbW1hbmQsXG4gIFVwZGF0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZCxcbiAgVXBkYXRlS2V5RGVzY3JpcHRpb25Db21tYW5kLFxuICBVcGRhdGVQcmltYXJ5UmVnaW9uQ29tbWFuZCxcbiAgVmVyaWZ5Q29tbWFuZCxcbiAgVmVyaWZ5TWFjQ29tbWFuZCxcbn07XG5cbmludGVyZmFjZSBLTVNTZXJ2aWNlJCB7XG4gIHJlYWRvbmx5IF86IHVuaXF1ZSBzeW1ib2w7XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENhbmNlbEtleURlbGV0aW9uQ29tbWFuZH1cbiAgICovXG4gIGNhbmNlbEtleURlbGV0aW9uKFxuICAgIGFyZ3M6IENhbmNlbEtleURlbGV0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ2FuY2VsS2V5RGVsZXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ29ubmVjdEN1c3RvbUtleVN0b3JlQ29tbWFuZH1cbiAgICovXG4gIGNvbm5lY3RDdXN0b21LZXlTdG9yZShcbiAgICBhcmdzOiBDb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENsb3VkSHNtQ2x1c3RlckludmFsaWRDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IENsb3VkSHNtQ2x1c3Rlck5vdEFjdGl2ZUVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZUludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZU5vdEZvdW5kRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlQWxpYXMoXG4gICAgYXJnczogQ3JlYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWxyZWFkeUV4aXN0c0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQWxpYXNOYW1lRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlQ3VzdG9tS2V5U3RvcmUoXG4gICAgYXJnczogQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVySW5Vc2VFcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVySW52YWxpZENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVyTm90QWN0aXZlRXJyb3JcbiAgICB8IENsb3VkSHNtQ2x1c3Rlck5vdEZvdW5kRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlTmFtZUluVXNlRXJyb3JcbiAgICB8IEluY29ycmVjdFRydXN0QW5jaG9yRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgWGtzUHJveHlJbmNvcnJlY3RBdXRoZW50aWNhdGlvbkNyZWRlbnRpYWxFcnJvclxuICAgIHwgWGtzUHJveHlJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBYa3NQcm94eUludmFsaWRSZXNwb25zZUVycm9yXG4gICAgfCBYa3NQcm94eVVyaUVuZHBvaW50SW5Vc2VFcnJvclxuICAgIHwgWGtzUHJveHlVcmlJblVzZUVycm9yXG4gICAgfCBYa3NQcm94eVVyaVVucmVhY2hhYmxlRXJyb3JcbiAgICB8IFhrc1Byb3h5VnBjRW5kcG9pbnRTZXJ2aWNlSW5Vc2VFcnJvclxuICAgIHwgWGtzUHJveHlWcGNFbmRwb2ludFNlcnZpY2VJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBYa3NQcm94eVZwY0VuZHBvaW50U2VydmljZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlR3JhbnRDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlR3JhbnQoXG4gICAgYXJnczogQ3JlYXRlR3JhbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVHcmFudENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVLZXlDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlS2V5KFxuICAgIGFyZ3M6IENyZWF0ZUtleUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUtleUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVySW52YWxpZENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTWFsZm9ybWVkUG9saWN5RG9jdW1lbnRFcnJvclxuICAgIHwgVGFnRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IFhrc0tleUFscmVhZHlJblVzZUVycm9yXG4gICAgfCBYa3NLZXlJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBYa3NLZXlOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlY3J5cHRDb21tYW5kfVxuICAgKi9cbiAgZGVjcnlwdChcbiAgICBhcmdzOiBEZWNyeXB0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVjcnlwdENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEluY29ycmVjdEtleUVycm9yXG4gICAgfCBJbnZhbGlkQ2lwaGVydGV4dEVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlQWxpYXMoXG4gICAgYXJnczogRGVsZXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlQ3VzdG9tS2V5U3RvcmUoXG4gICAgYXJnczogRGVsZXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVDdXN0b21LZXlTdG9yZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVIYXNDTUtzRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlTm90Rm91bmRFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVJbXBvcnRlZEtleU1hdGVyaWFsQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUltcG9ydGVkS2V5TWF0ZXJpYWwoXG4gICAgYXJnczogRGVsZXRlSW1wb3J0ZWRLZXlNYXRlcmlhbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUltcG9ydGVkS2V5TWF0ZXJpYWxDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVyaXZlU2hhcmVkU2VjcmV0Q29tbWFuZH1cbiAgICovXG4gIGRlcml2ZVNoYXJlZFNlY3JldChcbiAgICBhcmdzOiBEZXJpdmVTaGFyZWRTZWNyZXRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXJpdmVTaGFyZWRTZWNyZXRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVDdXN0b21LZXlTdG9yZXNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVDdXN0b21LZXlTdG9yZXMoXG4gICAgYXJnczogRGVzY3JpYmVDdXN0b21LZXlTdG9yZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZUN1c3RvbUtleVN0b3Jlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yXG4gICAgfCBJbnZhbGlkTWFya2VyRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVLZXlDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVLZXkoXG4gICAgYXJnczogRGVzY3JpYmVLZXlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZUtleUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERpc2FibGVLZXlDb21tYW5kfVxuICAgKi9cbiAgZGlzYWJsZUtleShcbiAgICBhcmdzOiBEaXNhYmxlS2V5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGlzYWJsZUtleUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEaXNhYmxlS2V5Um90YXRpb25Db21tYW5kfVxuICAgKi9cbiAgZGlzYWJsZUtleVJvdGF0aW9uKFxuICAgIGFyZ3M6IERpc2FibGVLZXlSb3RhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERpc2FibGVLZXlSb3RhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEaXNjb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kfVxuICAgKi9cbiAgZGlzY29ubmVjdEN1c3RvbUtleVN0b3JlKFxuICAgIGFyZ3M6IERpc2Nvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERpc2Nvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEVuYWJsZUtleUNvbW1hbmR9XG4gICAqL1xuICBlbmFibGVLZXkoXG4gICAgYXJnczogRW5hYmxlS2V5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRW5hYmxlS2V5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRW5hYmxlS2V5Um90YXRpb25Db21tYW5kfVxuICAgKi9cbiAgZW5hYmxlS2V5Um90YXRpb24oXG4gICAgYXJnczogRW5hYmxlS2V5Um90YXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBFbmFibGVLZXlSb3RhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBFbmNyeXB0Q29tbWFuZH1cbiAgICovXG4gIGVuY3J5cHQoXG4gICAgYXJnczogRW5jcnlwdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEVuY3J5cHRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2VuZXJhdGVEYXRhS2V5Q29tbWFuZH1cbiAgICovXG4gIGdlbmVyYXRlRGF0YUtleShcbiAgICBhcmdzOiBHZW5lcmF0ZURhdGFLZXlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZW5lcmF0ZURhdGFLZXlDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2VuZXJhdGVEYXRhS2V5UGFpckNvbW1hbmR9XG4gICAqL1xuICBnZW5lcmF0ZURhdGFLZXlQYWlyKFxuICAgIGFyZ3M6IEdlbmVyYXRlRGF0YUtleVBhaXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZW5lcmF0ZURhdGFLZXlQYWlyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdlbmVyYXRlRGF0YUtleVBhaXJXaXRob3V0UGxhaW50ZXh0Q29tbWFuZH1cbiAgICovXG4gIGdlbmVyYXRlRGF0YUtleVBhaXJXaXRob3V0UGxhaW50ZXh0KFxuICAgIGFyZ3M6IEdlbmVyYXRlRGF0YUtleVBhaXJXaXRob3V0UGxhaW50ZXh0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2VuZXJhdGVEYXRhS2V5UGFpcldpdGhvdXRQbGFpbnRleHRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2VuZXJhdGVEYXRhS2V5V2l0aG91dFBsYWludGV4dENvbW1hbmR9XG4gICAqL1xuICBnZW5lcmF0ZURhdGFLZXlXaXRob3V0UGxhaW50ZXh0KFxuICAgIGFyZ3M6IEdlbmVyYXRlRGF0YUtleVdpdGhvdXRQbGFpbnRleHRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZW5lcmF0ZURhdGFLZXlXaXRob3V0UGxhaW50ZXh0Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdlbmVyYXRlTWFjQ29tbWFuZH1cbiAgICovXG4gIGdlbmVyYXRlTWFjKFxuICAgIGFyZ3M6IEdlbmVyYXRlTWFjQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2VuZXJhdGVNYWNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2VuZXJhdGVSYW5kb21Db21tYW5kfVxuICAgKi9cbiAgZ2VuZXJhdGVSYW5kb20oXG4gICAgYXJnczogR2VuZXJhdGVSYW5kb21Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZW5lcmF0ZVJhbmRvbUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEtleVBvbGljeUNvbW1hbmR9XG4gICAqL1xuICBnZXRLZXlQb2xpY3koXG4gICAgYXJnczogR2V0S2V5UG9saWN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0S2V5UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEtleVJvdGF0aW9uU3RhdHVzQ29tbWFuZH1cbiAgICovXG4gIGdldEtleVJvdGF0aW9uU3RhdHVzKFxuICAgIGFyZ3M6IEdldEtleVJvdGF0aW9uU3RhdHVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0S2V5Um90YXRpb25TdGF0dXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0UGFyYW1ldGVyc0ZvckltcG9ydENvbW1hbmR9XG4gICAqL1xuICBnZXRQYXJhbWV0ZXJzRm9ySW1wb3J0KFxuICAgIGFyZ3M6IEdldFBhcmFtZXRlcnNGb3JJbXBvcnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRQYXJhbWV0ZXJzRm9ySW1wb3J0Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFB1YmxpY0tleUNvbW1hbmR9XG4gICAqL1xuICBnZXRQdWJsaWNLZXkoXG4gICAgYXJnczogR2V0UHVibGljS2V5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0UHVibGljS2V5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEludmFsaWRHcmFudFRva2VuRXJyb3JcbiAgICB8IEludmFsaWRLZXlVc2FnZUVycm9yXG4gICAgfCBLZXlVbmF2YWlsYWJsZUVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBJbXBvcnRLZXlNYXRlcmlhbENvbW1hbmR9XG4gICAqL1xuICBpbXBvcnRLZXlNYXRlcmlhbChcbiAgICBhcmdzOiBJbXBvcnRLZXlNYXRlcmlhbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEltcG9ydEtleU1hdGVyaWFsQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBFeHBpcmVkSW1wb3J0VG9rZW5FcnJvclxuICAgIHwgSW5jb3JyZWN0S2V5TWF0ZXJpYWxFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkQ2lwaGVydGV4dEVycm9yXG4gICAgfCBJbnZhbGlkSW1wb3J0VG9rZW5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEFsaWFzZXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEFsaWFzZXMoXG4gICAgYXJnczogTGlzdEFsaWFzZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0QWxpYXNlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkTWFya2VyRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEdyYW50c0NvbW1hbmR9XG4gICAqL1xuICBsaXN0R3JhbnRzKFxuICAgIGFyZ3M6IExpc3RHcmFudHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0R3JhbnRzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEludmFsaWRHcmFudElkRXJyb3JcbiAgICB8IEludmFsaWRNYXJrZXJFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEtleVBvbGljaWVzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RLZXlQb2xpY2llcyhcbiAgICBhcmdzOiBMaXN0S2V5UG9saWNpZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0S2V5UG9saWNpZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEtleVJvdGF0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0S2V5Um90YXRpb25zKFxuICAgIGFyZ3M6IExpc3RLZXlSb3RhdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0S2V5Um90YXRpb25zQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEludmFsaWRNYXJrZXJFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEtleXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEtleXMoXG4gICAgYXJnczogTGlzdEtleXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0S2V5c0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yIHwgSW52YWxpZE1hcmtlckVycm9yIHwgS01TSW50ZXJuYWxFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0UmVzb3VyY2VUYWdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RSZXNvdXJjZVRhZ3MoXG4gICAgYXJnczogTGlzdFJlc291cmNlVGFnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RSZXNvdXJjZVRhZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgSW52YWxpZE1hcmtlckVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RSZXRpcmFibGVHcmFudHNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFJldGlyYWJsZUdyYW50cyhcbiAgICBhcmdzOiBMaXN0UmV0aXJhYmxlR3JhbnRzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFJldGlyYWJsZUdyYW50c0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkTWFya2VyRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0S2V5UG9saWN5Q29tbWFuZH1cbiAgICovXG4gIHB1dEtleVBvbGljeShcbiAgICBhcmdzOiBQdXRLZXlQb2xpY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRLZXlQb2xpY3lDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTWFsZm9ybWVkUG9saWN5RG9jdW1lbnRFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZUVuY3J5cHRDb21tYW5kfVxuICAgKi9cbiAgcmVFbmNyeXB0KFxuICAgIGFyZ3M6IFJlRW5jcnlwdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlRW5jcnlwdENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEluY29ycmVjdEtleUVycm9yXG4gICAgfCBJbnZhbGlkQ2lwaGVydGV4dEVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVwbGljYXRlS2V5Q29tbWFuZH1cbiAgICovXG4gIHJlcGxpY2F0ZUtleShcbiAgICBhcmdzOiBSZXBsaWNhdGVLZXlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZXBsaWNhdGVLZXlDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFscmVhZHlFeGlzdHNFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBNYWxmb3JtZWRQb2xpY3lEb2N1bWVudEVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBUYWdFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZXRpcmVHcmFudENvbW1hbmR9XG4gICAqL1xuICByZXRpcmVHcmFudChcbiAgICBhcmdzOiBSZXRpcmVHcmFudENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJldGlyZUdyYW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRJZEVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZXZva2VHcmFudENvbW1hbmR9XG4gICAqL1xuICByZXZva2VHcmFudChcbiAgICBhcmdzOiBSZXZva2VHcmFudENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJldm9rZUdyYW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRJZEVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSb3RhdGVLZXlPbkRlbWFuZENvbW1hbmR9XG4gICAqL1xuICByb3RhdGVLZXlPbkRlbWFuZChcbiAgICBhcmdzOiBSb3RhdGVLZXlPbkRlbWFuZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJvdGF0ZUtleU9uRGVtYW5kQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2NoZWR1bGVLZXlEZWxldGlvbkNvbW1hbmR9XG4gICAqL1xuICBzY2hlZHVsZUtleURlbGV0aW9uKFxuICAgIGFyZ3M6IFNjaGVkdWxlS2V5RGVsZXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTY2hlZHVsZUtleURlbGV0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNpZ25Db21tYW5kfVxuICAgKi9cbiAgc2lnbihcbiAgICBhcmdzOiBTaWduQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2lnbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludmFsaWRHcmFudFRva2VuRXJyb3JcbiAgICB8IEludmFsaWRLZXlVc2FnZUVycm9yXG4gICAgfCBLZXlVbmF2YWlsYWJsZUVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBUYWdSZXNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB0YWdSZXNvdXJjZShcbiAgICBhcmdzOiBUYWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFRhZ0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVudGFnUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgdW50YWdSZXNvdXJjZShcbiAgICBhcmdzOiBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVW50YWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVGFnRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQWxpYXMoXG4gICAgYXJnczogVXBkYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVDdXN0b21LZXlTdG9yZShcbiAgICBhcmdzOiBVcGRhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDbG91ZEhzbUNsdXN0ZXJJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBDbG91ZEhzbUNsdXN0ZXJOb3RBY3RpdmVFcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVyTm90Rm91bmRFcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVyTm90UmVsYXRlZEVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZUludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZU5hbWVJblVzZUVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZU5vdEZvdW5kRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IFhrc1Byb3h5SW5jb3JyZWN0QXV0aGVudGljYXRpb25DcmVkZW50aWFsRXJyb3JcbiAgICB8IFhrc1Byb3h5SW52YWxpZENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgWGtzUHJveHlJbnZhbGlkUmVzcG9uc2VFcnJvclxuICAgIHwgWGtzUHJveHlVcmlFbmRwb2ludEluVXNlRXJyb3JcbiAgICB8IFhrc1Byb3h5VXJpSW5Vc2VFcnJvclxuICAgIHwgWGtzUHJveHlVcmlVbnJlYWNoYWJsZUVycm9yXG4gICAgfCBYa3NQcm94eVZwY0VuZHBvaW50U2VydmljZUluVXNlRXJyb3JcbiAgICB8IFhrc1Byb3h5VnBjRW5kcG9pbnRTZXJ2aWNlSW52YWxpZENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgWGtzUHJveHlWcGNFbmRwb2ludFNlcnZpY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUtleURlc2NyaXB0aW9uQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUtleURlc2NyaXB0aW9uKFxuICAgIGFyZ3M6IFVwZGF0ZUtleURlc2NyaXB0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlS2V5RGVzY3JpcHRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlUHJpbWFyeVJlZ2lvbkNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVQcmltYXJ5UmVnaW9uKFxuICAgIGFyZ3M6IFVwZGF0ZVByaW1hcnlSZWdpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVQcmltYXJ5UmVnaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFZlcmlmeUNvbW1hbmR9XG4gICAqL1xuICB2ZXJpZnkoXG4gICAgYXJnczogVmVyaWZ5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVmVyaWZ5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTaWduYXR1cmVFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVmVyaWZ5TWFjQ29tbWFuZH1cbiAgICovXG4gIHZlcmlmeU1hYyhcbiAgICBhcmdzOiBWZXJpZnlNYWNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBWZXJpZnlNYWNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZE1hY0Vycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xufVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IG1vZGVsc1xuICovXG5leHBvcnQgY2xhc3MgS01TU2VydmljZSBleHRlbmRzIEVmZmVjdC5UYWcoXCJAZWZmZWN0LWF3cy9jbGllbnQta21zL0tNU1NlcnZpY2VcIik8XG4gIEtNU1NlcnZpY2UsXG4gIEtNU1NlcnZpY2UkXG4+KCkge31cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBjb25zdHJ1Y3RvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IG1ha2VLTVNTZXJ2aWNlID0gRWZmZWN0LmdlbihmdW5jdGlvbiogKF8pIHtcbiAgY29uc3QgY2xpZW50ID0geWllbGQqIF8oS01TQ2xpZW50SW5zdGFuY2UpO1xuXG4gIHJldHVybiBSZWNvcmQudG9FbnRyaWVzKGNvbW1hbmRzKS5yZWR1Y2UoKGFjYywgW2NvbW1hbmRdKSA9PiB7XG4gICAgY29uc3QgQ29tbWFuZEN0b3IgPSBjb21tYW5kc1tjb21tYW5kXSBhcyBhbnk7XG4gICAgY29uc3QgbWV0aG9kSW1wbCA9IChhcmdzOiBhbnksIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMpID0+XG4gICAgICBFZmZlY3QudHJ5UHJvbWlzZSh7XG4gICAgICAgIHRyeTogKGFib3J0U2lnbmFsKSA9PlxuICAgICAgICAgIGNsaWVudC5zZW5kKG5ldyBDb21tYW5kQ3RvcihhcmdzKSwge1xuICAgICAgICAgICAgLi4uKG9wdGlvbnMgPz8ge30pLFxuICAgICAgICAgICAgYWJvcnRTaWduYWwsXG4gICAgICAgICAgfSksXG4gICAgICAgIGNhdGNoOiAoZSkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGUgaW5zdGFuY2VvZiBLTVNTZXJ2aWNlRXhjZXB0aW9uICYmXG4gICAgICAgICAgICBBbGxTZXJ2aWNlRXJyb3JzLmluY2x1ZGVzKGUubmFtZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IFNlcnZpY2VFeGNlcHRpb24gPSBEYXRhLnRhZ2dlZDxcbiAgICAgICAgICAgICAgVGFnZ2VkRXhjZXB0aW9uPEtNU1NlcnZpY2VFeGNlcHRpb24+XG4gICAgICAgICAgICA+KGUubmFtZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlRXhjZXB0aW9uKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gU2RrRXJyb3Ioe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBuYW1lOiBcIlNka0Vycm9yXCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAoY29tbWFuZFswXS50b0xvd2VyQ2FzZSgpICsgY29tbWFuZC5zbGljZSgxKSkucmVwbGFjZShcbiAgICAgIC9Db21tYW5kJC8sXG4gICAgICBcIlwiLFxuICAgICk7XG4gICAgcmV0dXJuIHsgLi4uYWNjLCBbbWV0aG9kTmFtZV06IG1ldGhvZEltcGwgfTtcbiAgfSwge30pIGFzIEtNU1NlcnZpY2UkO1xufSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBCYXNlS01TU2VydmljZUxheWVyID0gTGF5ZXIuZWZmZWN0KEtNU1NlcnZpY2UsIG1ha2VLTVNTZXJ2aWNlKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IEtNU1NlcnZpY2VMYXllciA9IEJhc2VLTVNTZXJ2aWNlTGF5ZXIucGlwZShcbiAgTGF5ZXIucHJvdmlkZShLTVNDbGllbnRJbnN0YW5jZUxheWVyKSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0S01TU2VydmljZUxheWVyID0gS01TU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoRGVmYXVsdEtNU0NsaWVudENvbmZpZ0xheWVyKSxcbik7XG4iXX0=
140
+ exports.DefaultKMSServiceLayer = KMSService.defaultLayer;
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS01TU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9LTVNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7R0FFRztBQUNILG9EQW1LNkI7QUFDN0IsbUNBQXFEO0FBQ3JELHFDQW9Ea0I7QUFDbEIsMkRBQWdGO0FBQ2hGLHVFQUltQztBQWFuQyxNQUFNLFFBQVEsR0FBRztJQUNmLHdCQUF3QixFQUF4QixxQ0FBd0I7SUFDeEIsNEJBQTRCLEVBQTVCLHlDQUE0QjtJQUM1QixrQkFBa0IsRUFBbEIsK0JBQWtCO0lBQ2xCLDJCQUEyQixFQUEzQix3Q0FBMkI7SUFDM0Isa0JBQWtCLEVBQWxCLCtCQUFrQjtJQUNsQixnQkFBZ0IsRUFBaEIsNkJBQWdCO0lBQ2hCLGNBQWMsRUFBZCwyQkFBYztJQUNkLGtCQUFrQixFQUFsQiwrQkFBa0I7SUFDbEIsMkJBQTJCLEVBQTNCLHdDQUEyQjtJQUMzQixnQ0FBZ0MsRUFBaEMsNkNBQWdDO0lBQ2hDLHlCQUF5QixFQUF6QixzQ0FBeUI7SUFDekIsOEJBQThCLEVBQTlCLDJDQUE4QjtJQUM5QixrQkFBa0IsRUFBbEIsK0JBQWtCO0lBQ2xCLGlCQUFpQixFQUFqQiw4QkFBaUI7SUFDakIseUJBQXlCLEVBQXpCLHNDQUF5QjtJQUN6QiwrQkFBK0IsRUFBL0IsNENBQStCO0lBQy9CLGdCQUFnQixFQUFoQiw2QkFBZ0I7SUFDaEIsd0JBQXdCLEVBQXhCLHFDQUF3QjtJQUN4QixjQUFjLEVBQWQsMkJBQWM7SUFDZCxzQkFBc0IsRUFBdEIsbUNBQXNCO0lBQ3RCLDBCQUEwQixFQUExQix1Q0FBMEI7SUFDMUIsMENBQTBDLEVBQTFDLHVEQUEwQztJQUMxQyxzQ0FBc0MsRUFBdEMsbURBQXNDO0lBQ3RDLGtCQUFrQixFQUFsQiwrQkFBa0I7SUFDbEIscUJBQXFCLEVBQXJCLGtDQUFxQjtJQUNyQixtQkFBbUIsRUFBbkIsZ0NBQW1CO0lBQ25CLDJCQUEyQixFQUEzQix3Q0FB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LElBQUksQ0FDckMsY0FBSyxDQUFDLE9BQU8sQ0FDWCxjQUFLLENBQUMsTUFBTSxDQUNWLHFDQUFpQixFQUNqQixlQUFNLENBQUMsR0FBRyxDQUFDLDREQUFrQyxFQUFFLFFBQVEsQ0FBQyxDQUN6RCxDQUNGLENBQ0YsQUFWc0IsQ0FVckI7QUFHTjs7OztHQUlHO0FBQ1UsUUFBQSxHQUFHLEdBQUcsVUFBVSxDQUFDO0FBRTlCOzs7O0dBSUc7QUFDVSxRQUFBLG1CQUFtQixHQUFHLGNBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLHNCQUFjLENBQUMsQ0FBQztBQUU1RTs7OztHQUlHO0FBQ1UsUUFBQSxlQUFlLEdBQUcsMkJBQW1CLENBQUMsSUFBSSxDQUNyRCxjQUFLLENBQUMsT0FBTyxDQUFDLDBDQUFzQixDQUFDLENBQ3RDLENBQUM7QUFFRjs7OztHQUlHO0FBQ1UsUUFBQSxzQkFBc0IsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuaW1wb3J0IHtcbiAgS01TU2VydmljZUV4Y2VwdGlvbixcbiAgdHlwZSBLTVNDbGllbnQsXG4gIHR5cGUgS01TQ2xpZW50Q29uZmlnLFxuICBDYW5jZWxLZXlEZWxldGlvbkNvbW1hbmQsXG4gIHR5cGUgQ2FuY2VsS2V5RGVsZXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQ2FuY2VsS2V5RGVsZXRpb25Db21tYW5kT3V0cHV0LFxuICBDb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kLFxuICB0eXBlIENvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVHcmFudENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlR3JhbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlR3JhbnRDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVLZXlDb21tYW5kLFxuICB0eXBlIENyZWF0ZUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVLZXlDb21tYW5kT3V0cHV0LFxuICBEZWNyeXB0Q29tbWFuZCxcbiAgdHlwZSBEZWNyeXB0Q29tbWFuZElucHV0LFxuICB0eXBlIERlY3J5cHRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBEZWxldGVDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBEZWxldGVJbXBvcnRlZEtleU1hdGVyaWFsQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVJbXBvcnRlZEtleU1hdGVyaWFsQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUltcG9ydGVkS2V5TWF0ZXJpYWxDb21tYW5kT3V0cHV0LFxuICBEZXJpdmVTaGFyZWRTZWNyZXRDb21tYW5kLFxuICB0eXBlIERlcml2ZVNoYXJlZFNlY3JldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXJpdmVTaGFyZWRTZWNyZXRDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUN1c3RvbUtleVN0b3Jlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVDdXN0b21LZXlTdG9yZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVDdXN0b21LZXlTdG9yZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUtleUNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVLZXlDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVLZXlDb21tYW5kT3V0cHV0LFxuICBEaXNhYmxlS2V5Q29tbWFuZCxcbiAgdHlwZSBEaXNhYmxlS2V5Q29tbWFuZElucHV0LFxuICB0eXBlIERpc2FibGVLZXlDb21tYW5kT3V0cHV0LFxuICBEaXNhYmxlS2V5Um90YXRpb25Db21tYW5kLFxuICB0eXBlIERpc2FibGVLZXlSb3RhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEaXNhYmxlS2V5Um90YXRpb25Db21tYW5kT3V0cHV0LFxuICBEaXNjb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kLFxuICB0eXBlIERpc2Nvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEaXNjb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBFbmFibGVLZXlDb21tYW5kLFxuICB0eXBlIEVuYWJsZUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBFbmFibGVLZXlDb21tYW5kT3V0cHV0LFxuICBFbmFibGVLZXlSb3RhdGlvbkNvbW1hbmQsXG4gIHR5cGUgRW5hYmxlS2V5Um90YXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgRW5hYmxlS2V5Um90YXRpb25Db21tYW5kT3V0cHV0LFxuICBFbmNyeXB0Q29tbWFuZCxcbiAgdHlwZSBFbmNyeXB0Q29tbWFuZElucHV0LFxuICB0eXBlIEVuY3J5cHRDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZURhdGFLZXlDb21tYW5kLFxuICB0eXBlIEdlbmVyYXRlRGF0YUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZW5lcmF0ZURhdGFLZXlDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZURhdGFLZXlQYWlyQ29tbWFuZCxcbiAgdHlwZSBHZW5lcmF0ZURhdGFLZXlQYWlyQ29tbWFuZElucHV0LFxuICB0eXBlIEdlbmVyYXRlRGF0YUtleVBhaXJDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZURhdGFLZXlQYWlyV2l0aG91dFBsYWludGV4dENvbW1hbmQsXG4gIHR5cGUgR2VuZXJhdGVEYXRhS2V5UGFpcldpdGhvdXRQbGFpbnRleHRDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2VuZXJhdGVEYXRhS2V5UGFpcldpdGhvdXRQbGFpbnRleHRDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZURhdGFLZXlXaXRob3V0UGxhaW50ZXh0Q29tbWFuZCxcbiAgdHlwZSBHZW5lcmF0ZURhdGFLZXlXaXRob3V0UGxhaW50ZXh0Q29tbWFuZElucHV0LFxuICB0eXBlIEdlbmVyYXRlRGF0YUtleVdpdGhvdXRQbGFpbnRleHRDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZU1hY0NvbW1hbmQsXG4gIHR5cGUgR2VuZXJhdGVNYWNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2VuZXJhdGVNYWNDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZVJhbmRvbUNvbW1hbmQsXG4gIHR5cGUgR2VuZXJhdGVSYW5kb21Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2VuZXJhdGVSYW5kb21Db21tYW5kT3V0cHV0LFxuICBHZXRLZXlQb2xpY3lDb21tYW5kLFxuICB0eXBlIEdldEtleVBvbGljeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRLZXlQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBHZXRLZXlSb3RhdGlvblN0YXR1c0NvbW1hbmQsXG4gIHR5cGUgR2V0S2V5Um90YXRpb25TdGF0dXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0S2V5Um90YXRpb25TdGF0dXNDb21tYW5kT3V0cHV0LFxuICBHZXRQYXJhbWV0ZXJzRm9ySW1wb3J0Q29tbWFuZCxcbiAgdHlwZSBHZXRQYXJhbWV0ZXJzRm9ySW1wb3J0Q29tbWFuZElucHV0LFxuICB0eXBlIEdldFBhcmFtZXRlcnNGb3JJbXBvcnRDb21tYW5kT3V0cHV0LFxuICBHZXRQdWJsaWNLZXlDb21tYW5kLFxuICB0eXBlIEdldFB1YmxpY0tleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRQdWJsaWNLZXlDb21tYW5kT3V0cHV0LFxuICBJbXBvcnRLZXlNYXRlcmlhbENvbW1hbmQsXG4gIHR5cGUgSW1wb3J0S2V5TWF0ZXJpYWxDb21tYW5kSW5wdXQsXG4gIHR5cGUgSW1wb3J0S2V5TWF0ZXJpYWxDb21tYW5kT3V0cHV0LFxuICBMaXN0QWxpYXNlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEFsaWFzZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEFsaWFzZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0R3JhbnRzQ29tbWFuZCxcbiAgdHlwZSBMaXN0R3JhbnRzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RHcmFudHNDb21tYW5kT3V0cHV0LFxuICBMaXN0S2V5UG9saWNpZXNDb21tYW5kLFxuICB0eXBlIExpc3RLZXlQb2xpY2llc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0S2V5UG9saWNpZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0S2V5Um90YXRpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0S2V5Um90YXRpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RLZXlSb3RhdGlvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0S2V5c0NvbW1hbmQsXG4gIHR5cGUgTGlzdEtleXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEtleXNDb21tYW5kT3V0cHV0LFxuICBMaXN0UmVzb3VyY2VUYWdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UmVzb3VyY2VUYWdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RSZXNvdXJjZVRhZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0UmV0aXJhYmxlR3JhbnRzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UmV0aXJhYmxlR3JhbnRzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RSZXRpcmFibGVHcmFudHNDb21tYW5kT3V0cHV0LFxuICBQdXRLZXlQb2xpY3lDb21tYW5kLFxuICB0eXBlIFB1dEtleVBvbGljeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRLZXlQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBSZUVuY3J5cHRDb21tYW5kLFxuICB0eXBlIFJlRW5jcnlwdENvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZUVuY3J5cHRDb21tYW5kT3V0cHV0LFxuICBSZXBsaWNhdGVLZXlDb21tYW5kLFxuICB0eXBlIFJlcGxpY2F0ZUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZXBsaWNhdGVLZXlDb21tYW5kT3V0cHV0LFxuICBSZXRpcmVHcmFudENvbW1hbmQsXG4gIHR5cGUgUmV0aXJlR3JhbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmV0aXJlR3JhbnRDb21tYW5kT3V0cHV0LFxuICBSZXZva2VHcmFudENvbW1hbmQsXG4gIHR5cGUgUmV2b2tlR3JhbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmV2b2tlR3JhbnRDb21tYW5kT3V0cHV0LFxuICBSb3RhdGVLZXlPbkRlbWFuZENvbW1hbmQsXG4gIHR5cGUgUm90YXRlS2V5T25EZW1hbmRDb21tYW5kSW5wdXQsXG4gIHR5cGUgUm90YXRlS2V5T25EZW1hbmRDb21tYW5kT3V0cHV0LFxuICBTY2hlZHVsZUtleURlbGV0aW9uQ29tbWFuZCxcbiAgdHlwZSBTY2hlZHVsZUtleURlbGV0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFNjaGVkdWxlS2V5RGVsZXRpb25Db21tYW5kT3V0cHV0LFxuICBTaWduQ29tbWFuZCxcbiAgdHlwZSBTaWduQ29tbWFuZElucHV0LFxuICB0eXBlIFNpZ25Db21tYW5kT3V0cHV0LFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgVGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgVGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgdHlwZSBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFVudGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVLZXlEZXNjcmlwdGlvbkNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlS2V5RGVzY3JpcHRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlS2V5RGVzY3JpcHRpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVQcmltYXJ5UmVnaW9uQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVQcmltYXJ5UmVnaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVByaW1hcnlSZWdpb25Db21tYW5kT3V0cHV0LFxuICBWZXJpZnlDb21tYW5kLFxuICB0eXBlIFZlcmlmeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBWZXJpZnlDb21tYW5kT3V0cHV0LFxuICBWZXJpZnlNYWNDb21tYW5kLFxuICB0eXBlIFZlcmlmeU1hY0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBWZXJpZnlNYWNDb21tYW5kT3V0cHV0LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWttc1wiO1xuaW1wb3J0IHsgRGF0YSwgRWZmZWN0LCBMYXllciwgUmVjb3JkIH0gZnJvbSBcImVmZmVjdFwiO1xuaW1wb3J0IHtcbiAgQWxsU2VydmljZUVycm9ycyxcbiAgQWxyZWFkeUV4aXN0c0Vycm9yLFxuICBDbG91ZEhzbUNsdXN0ZXJJblVzZUVycm9yLFxuICBDbG91ZEhzbUNsdXN0ZXJJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yLFxuICBDbG91ZEhzbUNsdXN0ZXJOb3RBY3RpdmVFcnJvcixcbiAgQ2xvdWRIc21DbHVzdGVyTm90Rm91bmRFcnJvcixcbiAgQ2xvdWRIc21DbHVzdGVyTm90UmVsYXRlZEVycm9yLFxuICBDb25mbGljdEVycm9yLFxuICBDdXN0b21LZXlTdG9yZUhhc0NNS3NFcnJvcixcbiAgQ3VzdG9tS2V5U3RvcmVJbnZhbGlkU3RhdGVFcnJvcixcbiAgQ3VzdG9tS2V5U3RvcmVOYW1lSW5Vc2VFcnJvcixcbiAgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yLFxuICBEZXBlbmRlbmN5VGltZW91dEVycm9yLFxuICBEaXNhYmxlZEVycm9yLFxuICBEcnlSdW5PcGVyYXRpb25FcnJvcixcbiAgRXhwaXJlZEltcG9ydFRva2VuRXJyb3IsXG4gIEluY29ycmVjdEtleUVycm9yLFxuICBJbmNvcnJlY3RLZXlNYXRlcmlhbEVycm9yLFxuICBJbmNvcnJlY3RUcnVzdEFuY2hvckVycm9yLFxuICBJbnZhbGlkQWxpYXNOYW1lRXJyb3IsXG4gIEludmFsaWRBcm5FcnJvcixcbiAgSW52YWxpZENpcGhlcnRleHRFcnJvcixcbiAgSW52YWxpZEdyYW50SWRFcnJvcixcbiAgSW52YWxpZEdyYW50VG9rZW5FcnJvcixcbiAgSW52YWxpZEltcG9ydFRva2VuRXJyb3IsXG4gIEludmFsaWRLZXlVc2FnZUVycm9yLFxuICBJbnZhbGlkTWFya2VyRXJyb3IsXG4gIEtNU0ludGVybmFsRXJyb3IsXG4gIEtNU0ludmFsaWRNYWNFcnJvcixcbiAgS01TSW52YWxpZFNpZ25hdHVyZUVycm9yLFxuICBLTVNJbnZhbGlkU3RhdGVFcnJvcixcbiAgS2V5VW5hdmFpbGFibGVFcnJvcixcbiAgTGltaXRFeGNlZWRlZEVycm9yLFxuICBNYWxmb3JtZWRQb2xpY3lEb2N1bWVudEVycm9yLFxuICBOb3RGb3VuZEVycm9yLFxuICBUYWdFcnJvcixcbiAgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvcixcbiAgWGtzS2V5QWxyZWFkeUluVXNlRXJyb3IsXG4gIFhrc0tleUludmFsaWRDb25maWd1cmF0aW9uRXJyb3IsXG4gIFhrc0tleU5vdEZvdW5kRXJyb3IsXG4gIFhrc1Byb3h5SW5jb3JyZWN0QXV0aGVudGljYXRpb25DcmVkZW50aWFsRXJyb3IsXG4gIFhrc1Byb3h5SW52YWxpZENvbmZpZ3VyYXRpb25FcnJvcixcbiAgWGtzUHJveHlJbnZhbGlkUmVzcG9uc2VFcnJvcixcbiAgWGtzUHJveHlVcmlFbmRwb2ludEluVXNlRXJyb3IsXG4gIFhrc1Byb3h5VXJpSW5Vc2VFcnJvcixcbiAgWGtzUHJveHlVcmlVbnJlYWNoYWJsZUVycm9yLFxuICBYa3NQcm94eVZwY0VuZHBvaW50U2VydmljZUluVXNlRXJyb3IsXG4gIFhrc1Byb3h5VnBjRW5kcG9pbnRTZXJ2aWNlSW52YWxpZENvbmZpZ3VyYXRpb25FcnJvcixcbiAgWGtzUHJveHlWcGNFbmRwb2ludFNlcnZpY2VOb3RGb3VuZEVycm9yLFxuICBTZGtFcnJvcixcbiAgVGFnZ2VkRXhjZXB0aW9uLFxufSBmcm9tIFwiLi9FcnJvcnNcIjtcbmltcG9ydCB7IEtNU0NsaWVudEluc3RhbmNlLCBLTVNDbGllbnRJbnN0YW5jZUxheWVyIH0gZnJvbSBcIi4vS01TQ2xpZW50SW5zdGFuY2VcIjtcbmltcG9ydCB7XG4gIERlZmF1bHRLTVNDbGllbnRDb25maWdMYXllcixcbiAgbWFrZURlZmF1bHRLTVNDbGllbnRJbnN0YW5jZUNvbmZpZyxcbiAgS01TQ2xpZW50SW5zdGFuY2VDb25maWcsXG59IGZyb20gXCIuL0tNU0NsaWVudEluc3RhbmNlQ29uZmlnXCI7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEhhbmRsZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRoYXQgdGhlIGNvbm5lY3Rpb24gcGhhc2Ugb2YgYSByZXF1ZXN0XG4gICAqIG1heSB0YWtlIGJlZm9yZSB0aGUgY29ubmVjdGlvbiBhdHRlbXB0IGlzIGFiYW5kb25lZC5cbiAgICovXG4gIHJlcXVlc3RUaW1lb3V0PzogbnVtYmVyO1xufVxuXG5jb25zdCBjb21tYW5kcyA9IHtcbiAgQ2FuY2VsS2V5RGVsZXRpb25Db21tYW5kLFxuICBDb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kLFxuICBDcmVhdGVBbGlhc0NvbW1hbmQsXG4gIENyZWF0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZCxcbiAgQ3JlYXRlR3JhbnRDb21tYW5kLFxuICBDcmVhdGVLZXlDb21tYW5kLFxuICBEZWNyeXB0Q29tbWFuZCxcbiAgRGVsZXRlQWxpYXNDb21tYW5kLFxuICBEZWxldGVDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIERlbGV0ZUltcG9ydGVkS2V5TWF0ZXJpYWxDb21tYW5kLFxuICBEZXJpdmVTaGFyZWRTZWNyZXRDb21tYW5kLFxuICBEZXNjcmliZUN1c3RvbUtleVN0b3Jlc0NvbW1hbmQsXG4gIERlc2NyaWJlS2V5Q29tbWFuZCxcbiAgRGlzYWJsZUtleUNvbW1hbmQsXG4gIERpc2FibGVLZXlSb3RhdGlvbkNvbW1hbmQsXG4gIERpc2Nvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIEVuYWJsZUtleUNvbW1hbmQsXG4gIEVuYWJsZUtleVJvdGF0aW9uQ29tbWFuZCxcbiAgRW5jcnlwdENvbW1hbmQsXG4gIEdlbmVyYXRlRGF0YUtleUNvbW1hbmQsXG4gIEdlbmVyYXRlRGF0YUtleVBhaXJDb21tYW5kLFxuICBHZW5lcmF0ZURhdGFLZXlQYWlyV2l0aG91dFBsYWludGV4dENvbW1hbmQsXG4gIEdlbmVyYXRlRGF0YUtleVdpdGhvdXRQbGFpbnRleHRDb21tYW5kLFxuICBHZW5lcmF0ZU1hY0NvbW1hbmQsXG4gIEdlbmVyYXRlUmFuZG9tQ29tbWFuZCxcbiAgR2V0S2V5UG9saWN5Q29tbWFuZCxcbiAgR2V0S2V5Um90YXRpb25TdGF0dXNDb21tYW5kLFxuICBHZXRQYXJhbWV0ZXJzRm9ySW1wb3J0Q29tbWFuZCxcbiAgR2V0UHVibGljS2V5Q29tbWFuZCxcbiAgSW1wb3J0S2V5TWF0ZXJpYWxDb21tYW5kLFxuICBMaXN0QWxpYXNlc0NvbW1hbmQsXG4gIExpc3RHcmFudHNDb21tYW5kLFxuICBMaXN0S2V5UG9saWNpZXNDb21tYW5kLFxuICBMaXN0S2V5Um90YXRpb25zQ29tbWFuZCxcbiAgTGlzdEtleXNDb21tYW5kLFxuICBMaXN0UmVzb3VyY2VUYWdzQ29tbWFuZCxcbiAgTGlzdFJldGlyYWJsZUdyYW50c0NvbW1hbmQsXG4gIFB1dEtleVBvbGljeUNvbW1hbmQsXG4gIFJlRW5jcnlwdENvbW1hbmQsXG4gIFJlcGxpY2F0ZUtleUNvbW1hbmQsXG4gIFJldGlyZUdyYW50Q29tbWFuZCxcbiAgUmV2b2tlR3JhbnRDb21tYW5kLFxuICBSb3RhdGVLZXlPbkRlbWFuZENvbW1hbmQsXG4gIFNjaGVkdWxlS2V5RGVsZXRpb25Db21tYW5kLFxuICBTaWduQ29tbWFuZCxcbiAgVGFnUmVzb3VyY2VDb21tYW5kLFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgVXBkYXRlQWxpYXNDb21tYW5kLFxuICBVcGRhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIFVwZGF0ZUtleURlc2NyaXB0aW9uQ29tbWFuZCxcbiAgVXBkYXRlUHJpbWFyeVJlZ2lvbkNvbW1hbmQsXG4gIFZlcmlmeUNvbW1hbmQsXG4gIFZlcmlmeU1hY0NvbW1hbmQsXG59O1xuXG5pbnRlcmZhY2UgS01TU2VydmljZSQge1xuICByZWFkb25seSBfOiB1bmlxdWUgc3ltYm9sO1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDYW5jZWxLZXlEZWxldGlvbkNvbW1hbmR9XG4gICAqL1xuICBjYW5jZWxLZXlEZWxldGlvbihcbiAgICBhcmdzOiBDYW5jZWxLZXlEZWxldGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENhbmNlbEtleURlbGV0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmR9XG4gICAqL1xuICBjb25uZWN0Q3VzdG9tS2V5U3RvcmUoXG4gICAgYXJnczogQ29ubmVjdEN1c3RvbUtleVN0b3JlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ29ubmVjdEN1c3RvbUtleVN0b3JlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDbG91ZEhzbUNsdXN0ZXJJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBDbG91ZEhzbUNsdXN0ZXJOb3RBY3RpdmVFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUFsaWFzQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUFsaWFzKFxuICAgIGFyZ3M6IENyZWF0ZUFsaWFzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFscmVhZHlFeGlzdHNFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFsaWFzTmFtZUVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUN1c3RvbUtleVN0b3JlKFxuICAgIGFyZ3M6IENyZWF0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENsb3VkSHNtQ2x1c3RlckluVXNlRXJyb3JcbiAgICB8IENsb3VkSHNtQ2x1c3RlckludmFsaWRDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IENsb3VkSHNtQ2x1c3Rlck5vdEFjdGl2ZUVycm9yXG4gICAgfCBDbG91ZEhzbUNsdXN0ZXJOb3RGb3VuZEVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZU5hbWVJblVzZUVycm9yXG4gICAgfCBJbmNvcnJlY3RUcnVzdEFuY2hvckVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFhrc1Byb3h5SW5jb3JyZWN0QXV0aGVudGljYXRpb25DcmVkZW50aWFsRXJyb3JcbiAgICB8IFhrc1Byb3h5SW52YWxpZENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgWGtzUHJveHlJbnZhbGlkUmVzcG9uc2VFcnJvclxuICAgIHwgWGtzUHJveHlVcmlFbmRwb2ludEluVXNlRXJyb3JcbiAgICB8IFhrc1Byb3h5VXJpSW5Vc2VFcnJvclxuICAgIHwgWGtzUHJveHlVcmlVbnJlYWNoYWJsZUVycm9yXG4gICAgfCBYa3NQcm94eVZwY0VuZHBvaW50U2VydmljZUluVXNlRXJyb3JcbiAgICB8IFhrc1Byb3h5VnBjRW5kcG9pbnRTZXJ2aWNlSW52YWxpZENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgWGtzUHJveHlWcGNFbmRwb2ludFNlcnZpY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUdyYW50Q29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUdyYW50KFxuICAgIGFyZ3M6IENyZWF0ZUdyYW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlR3JhbnRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEludmFsaWRHcmFudFRva2VuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlS2V5Q29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUtleShcbiAgICBhcmdzOiBDcmVhdGVLZXlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVLZXlDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENsb3VkSHNtQ2x1c3RlckludmFsaWRDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlTm90Rm91bmRFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE1hbGZvcm1lZFBvbGljeURvY3VtZW50RXJyb3JcbiAgICB8IFRhZ0Vycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBYa3NLZXlBbHJlYWR5SW5Vc2VFcnJvclxuICAgIHwgWGtzS2V5SW52YWxpZENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgWGtzS2V5Tm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWNyeXB0Q29tbWFuZH1cbiAgICovXG4gIGRlY3J5cHQoXG4gICAgYXJnczogRGVjcnlwdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlY3J5cHRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbmNvcnJlY3RLZXlFcnJvclxuICAgIHwgSW52YWxpZENpcGhlcnRleHRFcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUFsaWFzQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUFsaWFzKFxuICAgIGFyZ3M6IERlbGV0ZUFsaWFzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUN1c3RvbUtleVN0b3JlKFxuICAgIGFyZ3M6IERlbGV0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlSGFzQ01Lc0Vycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZUludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZU5vdEZvdW5kRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlSW1wb3J0ZWRLZXlNYXRlcmlhbENvbW1hbmR9XG4gICAqL1xuICBkZWxldGVJbXBvcnRlZEtleU1hdGVyaWFsKFxuICAgIGFyZ3M6IERlbGV0ZUltcG9ydGVkS2V5TWF0ZXJpYWxDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVJbXBvcnRlZEtleU1hdGVyaWFsQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlcml2ZVNoYXJlZFNlY3JldENvbW1hbmR9XG4gICAqL1xuICBkZXJpdmVTaGFyZWRTZWNyZXQoXG4gICAgYXJnczogRGVyaXZlU2hhcmVkU2VjcmV0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVyaXZlU2hhcmVkU2VjcmV0Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlQ3VzdG9tS2V5U3RvcmVzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlQ3VzdG9tS2V5U3RvcmVzKFxuICAgIGFyZ3M6IERlc2NyaWJlQ3VzdG9tS2V5U3RvcmVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVDdXN0b21LZXlTdG9yZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlTm90Rm91bmRFcnJvclxuICAgIHwgSW52YWxpZE1hcmtlckVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlS2V5Q29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlS2V5KFxuICAgIGFyZ3M6IERlc2NyaWJlS2V5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVLZXlDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEaXNhYmxlS2V5Q29tbWFuZH1cbiAgICovXG4gIGRpc2FibGVLZXkoXG4gICAgYXJnczogRGlzYWJsZUtleUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERpc2FibGVLZXlDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGlzYWJsZUtleVJvdGF0aW9uQ29tbWFuZH1cbiAgICovXG4gIGRpc2FibGVLZXlSb3RhdGlvbihcbiAgICBhcmdzOiBEaXNhYmxlS2V5Um90YXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEaXNhYmxlS2V5Um90YXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGlzY29ubmVjdEN1c3RvbUtleVN0b3JlQ29tbWFuZH1cbiAgICovXG4gIGRpc2Nvbm5lY3RDdXN0b21LZXlTdG9yZShcbiAgICBhcmdzOiBEaXNjb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEaXNjb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlTm90Rm91bmRFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBFbmFibGVLZXlDb21tYW5kfVxuICAgKi9cbiAgZW5hYmxlS2V5KFxuICAgIGFyZ3M6IEVuYWJsZUtleUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEVuYWJsZUtleUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEVuYWJsZUtleVJvdGF0aW9uQ29tbWFuZH1cbiAgICovXG4gIGVuYWJsZUtleVJvdGF0aW9uKFxuICAgIGFyZ3M6IEVuYWJsZUtleVJvdGF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRW5hYmxlS2V5Um90YXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRW5jcnlwdENvbW1hbmR9XG4gICAqL1xuICBlbmNyeXB0KFxuICAgIGFyZ3M6IEVuY3J5cHRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBFbmNyeXB0Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdlbmVyYXRlRGF0YUtleUNvbW1hbmR9XG4gICAqL1xuICBnZW5lcmF0ZURhdGFLZXkoXG4gICAgYXJnczogR2VuZXJhdGVEYXRhS2V5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2VuZXJhdGVEYXRhS2V5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdlbmVyYXRlRGF0YUtleVBhaXJDb21tYW5kfVxuICAgKi9cbiAgZ2VuZXJhdGVEYXRhS2V5UGFpcihcbiAgICBhcmdzOiBHZW5lcmF0ZURhdGFLZXlQYWlyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2VuZXJhdGVEYXRhS2V5UGFpckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludmFsaWRHcmFudFRva2VuRXJyb3JcbiAgICB8IEludmFsaWRLZXlVc2FnZUVycm9yXG4gICAgfCBLZXlVbmF2YWlsYWJsZUVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZW5lcmF0ZURhdGFLZXlQYWlyV2l0aG91dFBsYWludGV4dENvbW1hbmR9XG4gICAqL1xuICBnZW5lcmF0ZURhdGFLZXlQYWlyV2l0aG91dFBsYWludGV4dChcbiAgICBhcmdzOiBHZW5lcmF0ZURhdGFLZXlQYWlyV2l0aG91dFBsYWludGV4dENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdlbmVyYXRlRGF0YUtleVBhaXJXaXRob3V0UGxhaW50ZXh0Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdlbmVyYXRlRGF0YUtleVdpdGhvdXRQbGFpbnRleHRDb21tYW5kfVxuICAgKi9cbiAgZ2VuZXJhdGVEYXRhS2V5V2l0aG91dFBsYWludGV4dChcbiAgICBhcmdzOiBHZW5lcmF0ZURhdGFLZXlXaXRob3V0UGxhaW50ZXh0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2VuZXJhdGVEYXRhS2V5V2l0aG91dFBsYWludGV4dENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludmFsaWRHcmFudFRva2VuRXJyb3JcbiAgICB8IEludmFsaWRLZXlVc2FnZUVycm9yXG4gICAgfCBLZXlVbmF2YWlsYWJsZUVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZW5lcmF0ZU1hY0NvbW1hbmR9XG4gICAqL1xuICBnZW5lcmF0ZU1hYyhcbiAgICBhcmdzOiBHZW5lcmF0ZU1hY0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdlbmVyYXRlTWFjQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdlbmVyYXRlUmFuZG9tQ29tbWFuZH1cbiAgICovXG4gIGdlbmVyYXRlUmFuZG9tKFxuICAgIGFyZ3M6IEdlbmVyYXRlUmFuZG9tQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2VuZXJhdGVSYW5kb21Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlTm90Rm91bmRFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRLZXlQb2xpY3lDb21tYW5kfVxuICAgKi9cbiAgZ2V0S2V5UG9saWN5KFxuICAgIGFyZ3M6IEdldEtleVBvbGljeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEtleVBvbGljeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRLZXlSb3RhdGlvblN0YXR1c0NvbW1hbmR9XG4gICAqL1xuICBnZXRLZXlSb3RhdGlvblN0YXR1cyhcbiAgICBhcmdzOiBHZXRLZXlSb3RhdGlvblN0YXR1c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEtleVJvdGF0aW9uU3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFBhcmFtZXRlcnNGb3JJbXBvcnRDb21tYW5kfVxuICAgKi9cbiAgZ2V0UGFyYW1ldGVyc0ZvckltcG9ydChcbiAgICBhcmdzOiBHZXRQYXJhbWV0ZXJzRm9ySW1wb3J0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0UGFyYW1ldGVyc0ZvckltcG9ydENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRQdWJsaWNLZXlDb21tYW5kfVxuICAgKi9cbiAgZ2V0UHVibGljS2V5KFxuICAgIGFyZ3M6IEdldFB1YmxpY0tleUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFB1YmxpY0tleUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgSW1wb3J0S2V5TWF0ZXJpYWxDb21tYW5kfVxuICAgKi9cbiAgaW1wb3J0S2V5TWF0ZXJpYWwoXG4gICAgYXJnczogSW1wb3J0S2V5TWF0ZXJpYWxDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBJbXBvcnRLZXlNYXRlcmlhbENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRXhwaXJlZEltcG9ydFRva2VuRXJyb3JcbiAgICB8IEluY29ycmVjdEtleU1hdGVyaWFsRXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgSW52YWxpZENpcGhlcnRleHRFcnJvclxuICAgIHwgSW52YWxpZEltcG9ydFRva2VuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RBbGlhc2VzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RBbGlhc2VzKFxuICAgIGFyZ3M6IExpc3RBbGlhc2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEFsaWFzZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgSW52YWxpZE1hcmtlckVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RHcmFudHNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEdyYW50cyhcbiAgICBhcmdzOiBMaXN0R3JhbnRzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEdyYW50c0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRJZEVycm9yXG4gICAgfCBJbnZhbGlkTWFya2VyRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RLZXlQb2xpY2llc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0S2V5UG9saWNpZXMoXG4gICAgYXJnczogTGlzdEtleVBvbGljaWVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEtleVBvbGljaWVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RLZXlSb3RhdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEtleVJvdGF0aW9ucyhcbiAgICBhcmdzOiBMaXN0S2V5Um90YXRpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEtleVJvdGF0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkTWFya2VyRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RLZXlzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RLZXlzKFxuICAgIGFyZ3M6IExpc3RLZXlzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEtleXNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvciB8IEludmFsaWRNYXJrZXJFcnJvciB8IEtNU0ludGVybmFsRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFJlc291cmNlVGFnc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0UmVzb3VyY2VUYWdzKFxuICAgIGFyZ3M6IExpc3RSZXNvdXJjZVRhZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0UmVzb3VyY2VUYWdzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEludmFsaWRNYXJrZXJFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0UmV0aXJhYmxlR3JhbnRzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RSZXRpcmFibGVHcmFudHMoXG4gICAgYXJnczogTGlzdFJldGlyYWJsZUdyYW50c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RSZXRpcmFibGVHcmFudHNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgSW52YWxpZE1hcmtlckVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEtleVBvbGljeUNvbW1hbmR9XG4gICAqL1xuICBwdXRLZXlQb2xpY3koXG4gICAgYXJnczogUHV0S2V5UG9saWN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0S2V5UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE1hbGZvcm1lZFBvbGljeURvY3VtZW50RXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVFbmNyeXB0Q29tbWFuZH1cbiAgICovXG4gIHJlRW5jcnlwdChcbiAgICBhcmdzOiBSZUVuY3J5cHRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZUVuY3J5cHRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbmNvcnJlY3RLZXlFcnJvclxuICAgIHwgSW52YWxpZENpcGhlcnRleHRFcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlcGxpY2F0ZUtleUNvbW1hbmR9XG4gICAqL1xuICByZXBsaWNhdGVLZXkoXG4gICAgYXJnczogUmVwbGljYXRlS2V5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVwbGljYXRlS2V5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBbHJlYWR5RXhpc3RzRXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTWFsZm9ybWVkUG9saWN5RG9jdW1lbnRFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVGFnRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmV0aXJlR3JhbnRDb21tYW5kfVxuICAgKi9cbiAgcmV0aXJlR3JhbnQoXG4gICAgYXJnczogUmV0aXJlR3JhbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZXRpcmVHcmFudENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgSW52YWxpZEdyYW50SWRFcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmV2b2tlR3JhbnRDb21tYW5kfVxuICAgKi9cbiAgcmV2b2tlR3JhbnQoXG4gICAgYXJnczogUmV2b2tlR3JhbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZXZva2VHcmFudENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgSW52YWxpZEdyYW50SWRFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUm90YXRlS2V5T25EZW1hbmRDb21tYW5kfVxuICAgKi9cbiAgcm90YXRlS2V5T25EZW1hbmQoXG4gICAgYXJnczogUm90YXRlS2V5T25EZW1hbmRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSb3RhdGVLZXlPbkRlbWFuZENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29uZmxpY3RFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNjaGVkdWxlS2V5RGVsZXRpb25Db21tYW5kfVxuICAgKi9cbiAgc2NoZWR1bGVLZXlEZWxldGlvbihcbiAgICBhcmdzOiBTY2hlZHVsZUtleURlbGV0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2NoZWR1bGVLZXlEZWxldGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTaWduQ29tbWFuZH1cbiAgICovXG4gIHNpZ24oXG4gICAgYXJnczogU2lnbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNpZ25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVGFnUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgdGFnUmVzb3VyY2UoXG4gICAgYXJnczogVGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBUYWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBUYWdFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVbnRhZ1Jlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIHVudGFnUmVzb3VyY2UoXG4gICAgYXJnczogVW50YWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVudGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFRhZ0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUFsaWFzQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUFsaWFzKFxuICAgIGFyZ3M6IFVwZGF0ZUFsaWFzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQ3VzdG9tS2V5U3RvcmUoXG4gICAgYXJnczogVXBkYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVySW52YWxpZENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVyTm90QWN0aXZlRXJyb3JcbiAgICB8IENsb3VkSHNtQ2x1c3Rlck5vdEZvdW5kRXJyb3JcbiAgICB8IENsb3VkSHNtQ2x1c3Rlck5vdFJlbGF0ZWRFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVOYW1lSW5Vc2VFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBYa3NQcm94eUluY29ycmVjdEF1dGhlbnRpY2F0aW9uQ3JlZGVudGlhbEVycm9yXG4gICAgfCBYa3NQcm94eUludmFsaWRDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IFhrc1Byb3h5SW52YWxpZFJlc3BvbnNlRXJyb3JcbiAgICB8IFhrc1Byb3h5VXJpRW5kcG9pbnRJblVzZUVycm9yXG4gICAgfCBYa3NQcm94eVVyaUluVXNlRXJyb3JcbiAgICB8IFhrc1Byb3h5VXJpVW5yZWFjaGFibGVFcnJvclxuICAgIHwgWGtzUHJveHlWcGNFbmRwb2ludFNlcnZpY2VJblVzZUVycm9yXG4gICAgfCBYa3NQcm94eVZwY0VuZHBvaW50U2VydmljZUludmFsaWRDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IFhrc1Byb3h5VnBjRW5kcG9pbnRTZXJ2aWNlTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVLZXlEZXNjcmlwdGlvbkNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVLZXlEZXNjcmlwdGlvbihcbiAgICBhcmdzOiBVcGRhdGVLZXlEZXNjcmlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUtleURlc2NyaXB0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZVByaW1hcnlSZWdpb25Db21tYW5kfVxuICAgKi9cbiAgdXBkYXRlUHJpbWFyeVJlZ2lvbihcbiAgICBhcmdzOiBVcGRhdGVQcmltYXJ5UmVnaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlUHJpbWFyeVJlZ2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBWZXJpZnlDb21tYW5kfVxuICAgKi9cbiAgdmVyaWZ5KFxuICAgIGFyZ3M6IFZlcmlmeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFZlcmlmeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludmFsaWRHcmFudFRva2VuRXJyb3JcbiAgICB8IEludmFsaWRLZXlVc2FnZUVycm9yXG4gICAgfCBLZXlVbmF2YWlsYWJsZUVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU2lnbmF0dXJlRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFZlcmlmeU1hY0NvbW1hbmR9XG4gICAqL1xuICB2ZXJpZnlNYWMoXG4gICAgYXJnczogVmVyaWZ5TWFjQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVmVyaWZ5TWFjQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRNYWNFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcbn1cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBjb25zdHJ1Y3RvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IG1ha2VLTVNTZXJ2aWNlID0gRWZmZWN0LmdlbihmdW5jdGlvbiogKF8pIHtcbiAgY29uc3QgY2xpZW50ID0geWllbGQqIF8oS01TQ2xpZW50SW5zdGFuY2UpO1xuXG4gIHJldHVybiBSZWNvcmQudG9FbnRyaWVzKGNvbW1hbmRzKS5yZWR1Y2UoKGFjYywgW2NvbW1hbmRdKSA9PiB7XG4gICAgY29uc3QgQ29tbWFuZEN0b3IgPSBjb21tYW5kc1tjb21tYW5kXSBhcyBhbnk7XG4gICAgY29uc3QgbWV0aG9kSW1wbCA9IChhcmdzOiBhbnksIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMpID0+XG4gICAgICBFZmZlY3QudHJ5UHJvbWlzZSh7XG4gICAgICAgIHRyeTogKGFib3J0U2lnbmFsKSA9PlxuICAgICAgICAgIGNsaWVudC5zZW5kKG5ldyBDb21tYW5kQ3RvcihhcmdzKSwge1xuICAgICAgICAgICAgLi4uKG9wdGlvbnMgPz8ge30pLFxuICAgICAgICAgICAgYWJvcnRTaWduYWwsXG4gICAgICAgICAgfSksXG4gICAgICAgIGNhdGNoOiAoZSkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGUgaW5zdGFuY2VvZiBLTVNTZXJ2aWNlRXhjZXB0aW9uICYmXG4gICAgICAgICAgICBBbGxTZXJ2aWNlRXJyb3JzLmluY2x1ZGVzKGUubmFtZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IFNlcnZpY2VFeGNlcHRpb24gPSBEYXRhLnRhZ2dlZDxcbiAgICAgICAgICAgICAgVGFnZ2VkRXhjZXB0aW9uPEtNU1NlcnZpY2VFeGNlcHRpb24+XG4gICAgICAgICAgICA+KGUubmFtZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlRXhjZXB0aW9uKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gU2RrRXJyb3Ioe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBuYW1lOiBcIlNka0Vycm9yXCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAoY29tbWFuZFswXS50b0xvd2VyQ2FzZSgpICsgY29tbWFuZC5zbGljZSgxKSkucmVwbGFjZShcbiAgICAgIC9Db21tYW5kJC8sXG4gICAgICBcIlwiLFxuICAgICk7XG4gICAgcmV0dXJuIHsgLi4uYWNjLCBbbWV0aG9kTmFtZV06IG1ldGhvZEltcGwgfTtcbiAgfSwge30pIGFzIEtNU1NlcnZpY2UkO1xufSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbW9kZWxzXG4gKi9cbmV4cG9ydCBjbGFzcyBLTVNTZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlRhZyhcIkBlZmZlY3QtYXdzL2NsaWVudC1rbXMvS01TU2VydmljZVwiKTxcbiAgS01TU2VydmljZSxcbiAgS01TU2VydmljZSRcbj4oKSB7XG4gIHN0YXRpYyByZWFkb25seSBkZWZhdWx0TGF5ZXIgPSBMYXllci5lZmZlY3QodGhpcywgbWFrZUtNU1NlcnZpY2UpLnBpcGUoXG4gICAgTGF5ZXIucHJvdmlkZShLTVNDbGllbnRJbnN0YW5jZUxheWVyKSxcbiAgICBMYXllci5wcm92aWRlKERlZmF1bHRLTVNDbGllbnRDb25maWdMYXllciksXG4gICk7XG4gIHN0YXRpYyByZWFkb25seSBsYXllciA9IChjb25maWc6IEtNU0NsaWVudENvbmZpZykgPT5cbiAgICBMYXllci5lZmZlY3QodGhpcywgbWFrZUtNU1NlcnZpY2UpLnBpcGUoXG4gICAgICBMYXllci5wcm92aWRlKEtNU0NsaWVudEluc3RhbmNlTGF5ZXIpLFxuICAgICAgTGF5ZXIucHJvdmlkZShcbiAgICAgICAgTGF5ZXIuZWZmZWN0KFxuICAgICAgICAgIEtNU0NsaWVudEluc3RhbmNlQ29uZmlnLFxuICAgICAgICAgIG1ha2VEZWZhdWx0S01TQ2xpZW50SW5zdGFuY2VDb25maWcucGlwZShcbiAgICAgICAgICAgIEVmZmVjdC5tYXAoKGRlZmF1bHRDb25maWcpID0+ICh7IC4uLmRlZmF1bHRDb25maWcsIC4uLmNvbmZpZyB9KSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKTtcbiAgc3RhdGljIHJlYWRvbmx5IGJhc2VMYXllciA9IChcbiAgICBldmFsdWF0ZTogKGRlZmF1bHRDb25maWc6IEtNU0NsaWVudENvbmZpZykgPT4gS01TQ2xpZW50LFxuICApID0+XG4gICAgTGF5ZXIuZWZmZWN0KHRoaXMsIG1ha2VLTVNTZXJ2aWNlKS5waXBlKFxuICAgICAgTGF5ZXIucHJvdmlkZShcbiAgICAgICAgTGF5ZXIuZWZmZWN0KFxuICAgICAgICAgIEtNU0NsaWVudEluc3RhbmNlLFxuICAgICAgICAgIEVmZmVjdC5tYXAobWFrZURlZmF1bHRLTVNDbGllbnRJbnN0YW5jZUNvbmZpZywgZXZhbHVhdGUpLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApO1xufVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IG1vZGVsc1xuICogQGFsaWFzIEtNU1NlcnZpY2VcbiAqL1xuZXhwb3J0IGNvbnN0IEtNUyA9IEtNU1NlcnZpY2U7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKiBAZGVwcmVjYXRlZCB1c2UgS01TLmJhc2VMYXllciBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBCYXNlS01TU2VydmljZUxheWVyID0gTGF5ZXIuZWZmZWN0KEtNU1NlcnZpY2UsIG1ha2VLTVNTZXJ2aWNlKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqIEBkZXByZWNhdGVkIHVzZSBLTVMubGF5ZXIgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgS01TU2VydmljZUxheWVyID0gQmFzZUtNU1NlcnZpY2VMYXllci5waXBlKFxuICBMYXllci5wcm92aWRlKEtNU0NsaWVudEluc3RhbmNlTGF5ZXIpLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqIEBkZXByZWNhdGVkIHVzZSBLTVMuZGVmYXVsdExheWVyIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRLTVNTZXJ2aWNlTGF5ZXIgPSBLTVNTZXJ2aWNlLmRlZmF1bHRMYXllcjtcbiJdfQ==
@@ -1,3 +1,4 @@
1
+ var _a;
1
2
  /**
2
3
  * @since 1.0.0
3
4
  */
@@ -5,7 +6,7 @@ import { KMSServiceException, CancelKeyDeletionCommand, ConnectCustomKeyStoreCom
5
6
  import { Data, Effect, Layer, Record } from "effect";
6
7
  import { AllServiceErrors, SdkError, } from "./Errors";
7
8
  import { KMSClientInstance, KMSClientInstanceLayer } from "./KMSClientInstance";
8
- import { DefaultKMSClientConfigLayer } from "./KMSClientInstanceConfig";
9
+ import { DefaultKMSClientConfigLayer, makeDefaultKMSClientInstanceConfig, KMSClientInstanceConfig, } from "./KMSClientInstanceConfig";
9
10
  const commands = {
10
11
  CancelKeyDeletionCommand,
11
12
  ConnectCustomKeyStoreCommand,
@@ -61,12 +62,6 @@ const commands = {
61
62
  VerifyCommand,
62
63
  VerifyMacCommand,
63
64
  };
64
- /**
65
- * @since 1.0.0
66
- * @category models
67
- */
68
- export class KMSService extends Effect.Tag("@effect-aws/client-kms/KMSService")() {
69
- }
70
65
  /**
71
66
  * @since 1.0.0
72
67
  * @category constructors
@@ -105,19 +100,38 @@ export const makeKMSService = Effect.gen(function* (_) {
105
100
  return { ...acc, [methodName]: methodImpl };
106
101
  }, {});
107
102
  });
103
+ /**
104
+ * @since 1.0.0
105
+ * @category models
106
+ */
107
+ export class KMSService extends Effect.Tag("@effect-aws/client-kms/KMSService")() {
108
+ }
109
+ _a = KMSService;
110
+ KMSService.defaultLayer = Layer.effect(_a, makeKMSService).pipe(Layer.provide(KMSClientInstanceLayer), Layer.provide(DefaultKMSClientConfigLayer));
111
+ KMSService.layer = (config) => Layer.effect(_a, makeKMSService).pipe(Layer.provide(KMSClientInstanceLayer), Layer.provide(Layer.effect(KMSClientInstanceConfig, makeDefaultKMSClientInstanceConfig.pipe(Effect.map((defaultConfig) => ({ ...defaultConfig, ...config }))))));
112
+ KMSService.baseLayer = (evaluate) => Layer.effect(_a, makeKMSService).pipe(Layer.provide(Layer.effect(KMSClientInstance, Effect.map(makeDefaultKMSClientInstanceConfig, evaluate))));
113
+ /**
114
+ * @since 1.0.0
115
+ * @category models
116
+ * @alias KMSService
117
+ */
118
+ export const KMS = KMSService;
108
119
  /**
109
120
  * @since 1.0.0
110
121
  * @category layers
122
+ * @deprecated use KMS.baseLayer instead
111
123
  */
112
124
  export const BaseKMSServiceLayer = Layer.effect(KMSService, makeKMSService);
113
125
  /**
114
126
  * @since 1.0.0
115
127
  * @category layers
128
+ * @deprecated use KMS.layer instead
116
129
  */
117
130
  export const KMSServiceLayer = BaseKMSServiceLayer.pipe(Layer.provide(KMSClientInstanceLayer));
118
131
  /**
119
132
  * @since 1.0.0
120
133
  * @category layers
134
+ * @deprecated use KMS.defaultLayer instead
121
135
  */
122
- export const DefaultKMSServiceLayer = KMSServiceLayer.pipe(Layer.provide(DefaultKMSClientConfigLayer));
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS01TU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9LTVNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUNMLG1CQUFtQixFQUNuQix3QkFBd0IsRUFHeEIsNEJBQTRCLEVBRzVCLGtCQUFrQixFQUdsQiwyQkFBMkIsRUFHM0Isa0JBQWtCLEVBR2xCLGdCQUFnQixFQUdoQixjQUFjLEVBR2Qsa0JBQWtCLEVBR2xCLDJCQUEyQixFQUczQixnQ0FBZ0MsRUFHaEMseUJBQXlCLEVBR3pCLDhCQUE4QixFQUc5QixrQkFBa0IsRUFHbEIsaUJBQWlCLEVBR2pCLHlCQUF5QixFQUd6QiwrQkFBK0IsRUFHL0IsZ0JBQWdCLEVBR2hCLHdCQUF3QixFQUd4QixjQUFjLEVBR2Qsc0JBQXNCLEVBR3RCLDBCQUEwQixFQUcxQiwwQ0FBMEMsRUFHMUMsc0NBQXNDLEVBR3RDLGtCQUFrQixFQUdsQixxQkFBcUIsRUFHckIsbUJBQW1CLEVBR25CLDJCQUEyQixFQUczQiw2QkFBNkIsRUFHN0IsbUJBQW1CLEVBR25CLHdCQUF3QixFQUd4QixrQkFBa0IsRUFHbEIsaUJBQWlCLEVBR2pCLHNCQUFzQixFQUd0Qix1QkFBdUIsRUFHdkIsZUFBZSxFQUdmLHVCQUF1QixFQUd2QiwwQkFBMEIsRUFHMUIsbUJBQW1CLEVBR25CLGdCQUFnQixFQUdoQixtQkFBbUIsRUFHbkIsa0JBQWtCLEVBR2xCLGtCQUFrQixFQUdsQix3QkFBd0IsRUFHeEIsMEJBQTBCLEVBRzFCLFdBQVcsRUFHWCxrQkFBa0IsRUFHbEIsb0JBQW9CLEVBR3BCLGtCQUFrQixFQUdsQiwyQkFBMkIsRUFHM0IsMkJBQTJCLEVBRzNCLDBCQUEwQixFQUcxQixhQUFhLEVBR2IsZ0JBQWdCLEdBR2pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxN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Q0FBQztnQkFDTCxDQUFDO2dCQUNELElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDO29CQUN2QixPQUFPLFFBQVEsQ0FBQzt3QkFDZCxHQUFHLENBQUM7d0JBQ0osSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTzt3QkFDbEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO3FCQUNmLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELE1BQU0sQ0FBQyxDQUFDO1lBQ1YsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUNMLE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3RFLFVBQVUsRUFDVixFQUFFLENBQ0gsQ0FBQztRQUNGLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQzlDLENBQUMsRUFBRSxFQUFFLENBQWdCLENBQUM7QUFDeEIsQ0FBQyxDQUFDLENBQUM7QUFFSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUU1RTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUNyRCxLQUFLLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQ3RDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUN4RCxLQUFLLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQge1xuICBLTVNTZXJ2aWNlRXhjZXB0aW9uLFxuICBDYW5jZWxLZXlEZWxldGlvbkNvbW1hbmQsXG4gIHR5cGUgQ2FuY2VsS2V5RGVsZXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQ2FuY2VsS2V5RGVsZXRpb25Db21tYW5kT3V0cHV0LFxuICBDb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kLFxuICB0eXBlIENvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVHcmFudENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlR3JhbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlR3JhbnRDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVLZXlDb21tYW5kLFxuICB0eXBlIENyZWF0ZUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVLZXlDb21tYW5kT3V0cHV0LFxuICBEZWNyeXB0Q29tbWFuZCxcbiAgdHlwZSBEZWNyeXB0Q29tbWFuZElucHV0LFxuICB0eXBlIERlY3J5cHRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBEZWxldGVDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBEZWxldGVJbXBvcnRlZEtleU1hdGVyaWFsQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVJbXBvcnRlZEtleU1hdGVyaWFsQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUltcG9ydGVkS2V5TWF0ZXJpYWxDb21tYW5kT3V0cHV0LFxuICBEZXJpdmVTaGFyZWRTZWNyZXRDb21tYW5kLFxuICB0eXBlIERlcml2ZVNoYXJlZFNlY3JldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXJpdmVTaGFyZWRTZWNyZXRDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUN1c3RvbUtleVN0b3Jlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVDdXN0b21LZXlTdG9yZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVDdXN0b21LZXlTdG9yZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUtleUNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVLZXlDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVLZXlDb21tYW5kT3V0cHV0LFxuICBEaXNhYmxlS2V5Q29tbWFuZCxcbiAgdHlwZSBEaXNhYmxlS2V5Q29tbWFuZElucHV0LFxuICB0eXBlIERpc2FibGVLZXlDb21tYW5kT3V0cHV0LFxuICBEaXNhYmxlS2V5Um90YXRpb25Db21tYW5kLFxuICB0eXBlIERpc2FibGVLZXlSb3RhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEaXNhYmxlS2V5Um90YXRpb25Db21tYW5kT3V0cHV0LFxuICBEaXNjb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kLFxuICB0eXBlIERpc2Nvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEaXNjb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBFbmFibGVLZXlDb21tYW5kLFxuICB0eXBlIEVuYWJsZUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBFbmFibGVLZXlDb21tYW5kT3V0cHV0LFxuICBFbmFibGVLZXlSb3RhdGlvbkNvbW1hbmQsXG4gIHR5cGUgRW5hYmxlS2V5Um90YXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgRW5hYmxlS2V5Um90YXRpb25Db21tYW5kT3V0cHV0LFxuICBFbmNyeXB0Q29tbWFuZCxcbiAgdHlwZSBFbmNyeXB0Q29tbWFuZElucHV0LFxuICB0eXBlIEVuY3J5cHRDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZURhdGFLZXlDb21tYW5kLFxuICB0eXBlIEdlbmVyYXRlRGF0YUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZW5lcmF0ZURhdGFLZXlDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZURhdGFLZXlQYWlyQ29tbWFuZCxcbiAgdHlwZSBHZW5lcmF0ZURhdGFLZXlQYWlyQ29tbWFuZElucHV0LFxuICB0eXBlIEdlbmVyYXRlRGF0YUtleVBhaXJDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZURhdGFLZXlQYWlyV2l0aG91dFBsYWludGV4dENvbW1hbmQsXG4gIHR5cGUgR2VuZXJhdGVEYXRhS2V5UGFpcldpdGhvdXRQbGFpbnRleHRDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2VuZXJhdGVEYXRhS2V5UGFpcldpdGhvdXRQbGFpbnRleHRDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZURhdGFLZXlXaXRob3V0UGxhaW50ZXh0Q29tbWFuZCxcbiAgdHlwZSBHZW5lcmF0ZURhdGFLZXlXaXRob3V0UGxhaW50ZXh0Q29tbWFuZElucHV0LFxuICB0eXBlIEdlbmVyYXRlRGF0YUtleVdpdGhvdXRQbGFpbnRleHRDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZU1hY0NvbW1hbmQsXG4gIHR5cGUgR2VuZXJhdGVNYWNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2VuZXJhdGVNYWNDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZVJhbmRvbUNvbW1hbmQsXG4gIHR5cGUgR2VuZXJhdGVSYW5kb21Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2VuZXJhdGVSYW5kb21Db21tYW5kT3V0cHV0LFxuICBHZXRLZXlQb2xpY3lDb21tYW5kLFxuICB0eXBlIEdldEtleVBvbGljeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRLZXlQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBHZXRLZXlSb3RhdGlvblN0YXR1c0NvbW1hbmQsXG4gIHR5cGUgR2V0S2V5Um90YXRpb25TdGF0dXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0S2V5Um90YXRpb25TdGF0dXNDb21tYW5kT3V0cHV0LFxuICBHZXRQYXJhbWV0ZXJzRm9ySW1wb3J0Q29tbWFuZCxcbiAgdHlwZSBHZXRQYXJhbWV0ZXJzRm9ySW1wb3J0Q29tbWFuZElucHV0LFxuICB0eXBlIEdldFBhcmFtZXRlcnNGb3JJbXBvcnRDb21tYW5kT3V0cHV0LFxuICBHZXRQdWJsaWNLZXlDb21tYW5kLFxuICB0eXBlIEdldFB1YmxpY0tleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRQdWJsaWNLZXlDb21tYW5kT3V0cHV0LFxuICBJbXBvcnRLZXlNYXRlcmlhbENvbW1hbmQsXG4gIHR5cGUgSW1wb3J0S2V5TWF0ZXJpYWxDb21tYW5kSW5wdXQsXG4gIHR5cGUgSW1wb3J0S2V5TWF0ZXJpYWxDb21tYW5kT3V0cHV0LFxuICBMaXN0QWxpYXNlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEFsaWFzZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEFsaWFzZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0R3JhbnRzQ29tbWFuZCxcbiAgdHlwZSBMaXN0R3JhbnRzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RHcmFudHNDb21tYW5kT3V0cHV0LFxuICBMaXN0S2V5UG9saWNpZXNDb21tYW5kLFxuICB0eXBlIExpc3RLZXlQb2xpY2llc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0S2V5UG9saWNpZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0S2V5Um90YXRpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0S2V5Um90YXRpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RLZXlSb3RhdGlvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0S2V5c0NvbW1hbmQsXG4gIHR5cGUgTGlzdEtleXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEtleXNDb21tYW5kT3V0cHV0LFxuICBMaXN0UmVzb3VyY2VUYWdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UmVzb3VyY2VUYWdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RSZXNvdXJjZVRhZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0UmV0aXJhYmxlR3JhbnRzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UmV0aXJhYmxlR3JhbnRzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RSZXRpcmFibGVHcmFudHNDb21tYW5kT3V0cHV0LFxuICBQdXRLZXlQb2xpY3lDb21tYW5kLFxuICB0eXBlIFB1dEtleVBvbGljeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRLZXlQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBSZUVuY3J5cHRDb21tYW5kLFxuICB0eXBlIFJlRW5jcnlwdENvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZUVuY3J5cHRDb21tYW5kT3V0cHV0LFxuICBSZXBsaWNhdGVLZXlDb21tYW5kLFxuICB0eXBlIFJlcGxpY2F0ZUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZXBsaWNhdGVLZXlDb21tYW5kT3V0cHV0LFxuICBSZXRpcmVHcmFudENvbW1hbmQsXG4gIHR5cGUgUmV0aXJlR3JhbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmV0aXJlR3JhbnRDb21tYW5kT3V0cHV0LFxuICBSZXZva2VHcmFudENvbW1hbmQsXG4gIHR5cGUgUmV2b2tlR3JhbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmV2b2tlR3JhbnRDb21tYW5kT3V0cHV0LFxuICBSb3RhdGVLZXlPbkRlbWFuZENvbW1hbmQsXG4gIHR5cGUgUm90YXRlS2V5T25EZW1hbmRDb21tYW5kSW5wdXQsXG4gIHR5cGUgUm90YXRlS2V5T25EZW1hbmRDb21tYW5kT3V0cHV0LFxuICBTY2hlZHVsZUtleURlbGV0aW9uQ29tbWFuZCxcbiAgdHlwZSBTY2hlZHVsZUtleURlbGV0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFNjaGVkdWxlS2V5RGVsZXRpb25Db21tYW5kT3V0cHV0LFxuICBTaWduQ29tbWFuZCxcbiAgdHlwZSBTaWduQ29tbWFuZElucHV0LFxuICB0eXBlIFNpZ25Db21tYW5kT3V0cHV0LFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgVGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgVGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgdHlwZSBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFVudGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVLZXlEZXNjcmlwdGlvbkNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlS2V5RGVzY3JpcHRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlS2V5RGVzY3JpcHRpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVQcmltYXJ5UmVnaW9uQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVQcmltYXJ5UmVnaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVByaW1hcnlSZWdpb25Db21tYW5kT3V0cHV0LFxuICBWZXJpZnlDb21tYW5kLFxuICB0eXBlIFZlcmlmeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBWZXJpZnlDb21tYW5kT3V0cHV0LFxuICBWZXJpZnlNYWNDb21tYW5kLFxuICB0eXBlIFZlcmlmeU1hY0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBWZXJpZnlNYWNDb21tYW5kT3V0cHV0LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWttc1wiO1xuaW1wb3J0IHsgRGF0YSwgRWZmZWN0LCBMYXllciwgUmVjb3JkIH0gZnJvbSBcImVmZmVjdFwiO1xuaW1wb3J0IHtcbiAgQWxsU2VydmljZUVycm9ycyxcbiAgQWxyZWFkeUV4aXN0c0Vycm9yLFxuICBDbG91ZEhzbUNsdXN0ZXJJblVzZUVycm9yLFxuICBDbG91ZEhzbUNsdXN0ZXJJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yLFxuICBDbG91ZEhzbUNsdXN0ZXJOb3RBY3RpdmVFcnJvcixcbiAgQ2xvdWRIc21DbHVzdGVyTm90Rm91bmRFcnJvcixcbiAgQ2xvdWRIc21DbHVzdGVyTm90UmVsYXRlZEVycm9yLFxuICBDb25mbGljdEVycm9yLFxuICBDdXN0b21LZXlTdG9yZUhhc0NNS3NFcnJvcixcbiAgQ3VzdG9tS2V5U3RvcmVJbnZhbGlkU3RhdGVFcnJvcixcbiAgQ3VzdG9tS2V5U3RvcmVOYW1lSW5Vc2VFcnJvcixcbiAgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yLFxuICBEZXBlbmRlbmN5VGltZW91dEVycm9yLFxuICBEaXNhYmxlZEVycm9yLFxuICBEcnlSdW5PcGVyYXRpb25FcnJvcixcbiAgRXhwaXJlZEltcG9ydFRva2VuRXJyb3IsXG4gIEluY29ycmVjdEtleUVycm9yLFxuICBJbmNvcnJlY3RLZXlNYXRlcmlhbEVycm9yLFxuICBJbmNvcnJlY3RUcnVzdEFuY2hvckVycm9yLFxuICBJbnZhbGlkQWxpYXNOYW1lRXJyb3IsXG4gIEludmFsaWRBcm5FcnJvcixcbiAgSW52YWxpZENpcGhlcnRleHRFcnJvcixcbiAgSW52YWxpZEdyYW50SWRFcnJvcixcbiAgSW52YWxpZEdyYW50VG9rZW5FcnJvcixcbiAgSW52YWxpZEltcG9ydFRva2VuRXJyb3IsXG4gIEludmFsaWRLZXlVc2FnZUVycm9yLFxuICBJbnZhbGlkTWFya2VyRXJyb3IsXG4gIEtNU0ludGVybmFsRXJyb3IsXG4gIEtNU0ludmFsaWRNYWNFcnJvcixcbiAgS01TSW52YWxpZFNpZ25hdHVyZUVycm9yLFxuICBLTVNJbnZhbGlkU3RhdGVFcnJvcixcbiAgS2V5VW5hdmFpbGFibGVFcnJvcixcbiAgTGltaXRFeGNlZWRlZEVycm9yLFxuICBNYWxmb3JtZWRQb2xpY3lEb2N1bWVudEVycm9yLFxuICBOb3RGb3VuZEVycm9yLFxuICBUYWdFcnJvcixcbiAgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvcixcbiAgWGtzS2V5QWxyZWFkeUluVXNlRXJyb3IsXG4gIFhrc0tleUludmFsaWRDb25maWd1cmF0aW9uRXJyb3IsXG4gIFhrc0tleU5vdEZvdW5kRXJyb3IsXG4gIFhrc1Byb3h5SW5jb3JyZWN0QXV0aGVudGljYXRpb25DcmVkZW50aWFsRXJyb3IsXG4gIFhrc1Byb3h5SW52YWxpZENvbmZpZ3VyYXRpb25FcnJvcixcbiAgWGtzUHJveHlJbnZhbGlkUmVzcG9uc2VFcnJvcixcbiAgWGtzUHJveHlVcmlFbmRwb2ludEluVXNlRXJyb3IsXG4gIFhrc1Byb3h5VXJpSW5Vc2VFcnJvcixcbiAgWGtzUHJveHlVcmlVbnJlYWNoYWJsZUVycm9yLFxuICBYa3NQcm94eVZwY0VuZHBvaW50U2VydmljZUluVXNlRXJyb3IsXG4gIFhrc1Byb3h5VnBjRW5kcG9pbnRTZXJ2aWNlSW52YWxpZENvbmZpZ3VyYXRpb25FcnJvcixcbiAgWGtzUHJveHlWcGNFbmRwb2ludFNlcnZpY2VOb3RGb3VuZEVycm9yLFxuICBTZGtFcnJvcixcbiAgVGFnZ2VkRXhjZXB0aW9uLFxufSBmcm9tIFwiLi9FcnJvcnNcIjtcbmltcG9ydCB7IEtNU0NsaWVudEluc3RhbmNlLCBLTVNDbGllbnRJbnN0YW5jZUxheWVyIH0gZnJvbSBcIi4vS01TQ2xpZW50SW5zdGFuY2VcIjtcbmltcG9ydCB7IERlZmF1bHRLTVNDbGllbnRDb25maWdMYXllciB9IGZyb20gXCIuL0tNU0NsaWVudEluc3RhbmNlQ29uZmlnXCI7XG5cbmludGVyZmFjZSBIdHRwSGFuZGxlck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdGhhdCB0aGUgY29ubmVjdGlvbiBwaGFzZSBvZiBhIHJlcXVlc3RcbiAgICogbWF5IHRha2UgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGF0dGVtcHQgaXMgYWJhbmRvbmVkLlxuICAgKi9cbiAgcmVxdWVzdFRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbmNvbnN0IGNvbW1hbmRzID0ge1xuICBDYW5jZWxLZXlEZWxldGlvbkNvbW1hbmQsXG4gIENvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIENyZWF0ZUFsaWFzQ29tbWFuZCxcbiAgQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kLFxuICBDcmVhdGVHcmFudENvbW1hbmQsXG4gIENyZWF0ZUtleUNvbW1hbmQsXG4gIERlY3J5cHRDb21tYW5kLFxuICBEZWxldGVBbGlhc0NvbW1hbmQsXG4gIERlbGV0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZCxcbiAgRGVsZXRlSW1wb3J0ZWRLZXlNYXRlcmlhbENvbW1hbmQsXG4gIERlcml2ZVNoYXJlZFNlY3JldENvbW1hbmQsXG4gIERlc2NyaWJlQ3VzdG9tS2V5U3RvcmVzQ29tbWFuZCxcbiAgRGVzY3JpYmVLZXlDb21tYW5kLFxuICBEaXNhYmxlS2V5Q29tbWFuZCxcbiAgRGlzYWJsZUtleVJvdGF0aW9uQ29tbWFuZCxcbiAgRGlzY29ubmVjdEN1c3RvbUtleVN0b3JlQ29tbWFuZCxcbiAgRW5hYmxlS2V5Q29tbWFuZCxcbiAgRW5hYmxlS2V5Um90YXRpb25Db21tYW5kLFxuICBFbmNyeXB0Q29tbWFuZCxcbiAgR2VuZXJhdGVEYXRhS2V5Q29tbWFuZCxcbiAgR2VuZXJhdGVEYXRhS2V5UGFpckNvbW1hbmQsXG4gIEdlbmVyYXRlRGF0YUtleVBhaXJXaXRob3V0UGxhaW50ZXh0Q29tbWFuZCxcbiAgR2VuZXJhdGVEYXRhS2V5V2l0aG91dFBsYWludGV4dENvbW1hbmQsXG4gIEdlbmVyYXRlTWFjQ29tbWFuZCxcbiAgR2VuZXJhdGVSYW5kb21Db21tYW5kLFxuICBHZXRLZXlQb2xpY3lDb21tYW5kLFxuICBHZXRLZXlSb3RhdGlvblN0YXR1c0NvbW1hbmQsXG4gIEdldFBhcmFtZXRlcnNGb3JJbXBvcnRDb21tYW5kLFxuICBHZXRQdWJsaWNLZXlDb21tYW5kLFxuICBJbXBvcnRLZXlNYXRlcmlhbENvbW1hbmQsXG4gIExpc3RBbGlhc2VzQ29tbWFuZCxcbiAgTGlzdEdyYW50c0NvbW1hbmQsXG4gIExpc3RLZXlQb2xpY2llc0NvbW1hbmQsXG4gIExpc3RLZXlSb3RhdGlvbnNDb21tYW5kLFxuICBMaXN0S2V5c0NvbW1hbmQsXG4gIExpc3RSZXNvdXJjZVRhZ3NDb21tYW5kLFxuICBMaXN0UmV0aXJhYmxlR3JhbnRzQ29tbWFuZCxcbiAgUHV0S2V5UG9saWN5Q29tbWFuZCxcbiAgUmVFbmNyeXB0Q29tbWFuZCxcbiAgUmVwbGljYXRlS2V5Q29tbWFuZCxcbiAgUmV0aXJlR3JhbnRDb21tYW5kLFxuICBSZXZva2VHcmFudENvbW1hbmQsXG4gIFJvdGF0ZUtleU9uRGVtYW5kQ29tbWFuZCxcbiAgU2NoZWR1bGVLZXlEZWxldGlvbkNvbW1hbmQsXG4gIFNpZ25Db21tYW5kLFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kLFxuICBVcGRhdGVBbGlhc0NvbW1hbmQsXG4gIFVwZGF0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZCxcbiAgVXBkYXRlS2V5RGVzY3JpcHRpb25Db21tYW5kLFxuICBVcGRhdGVQcmltYXJ5UmVnaW9uQ29tbWFuZCxcbiAgVmVyaWZ5Q29tbWFuZCxcbiAgVmVyaWZ5TWFjQ29tbWFuZCxcbn07XG5cbmludGVyZmFjZSBLTVNTZXJ2aWNlJCB7XG4gIHJlYWRvbmx5IF86IHVuaXF1ZSBzeW1ib2w7XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENhbmNlbEtleURlbGV0aW9uQ29tbWFuZH1cbiAgICovXG4gIGNhbmNlbEtleURlbGV0aW9uKFxuICAgIGFyZ3M6IENhbmNlbEtleURlbGV0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ2FuY2VsS2V5RGVsZXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ29ubmVjdEN1c3RvbUtleVN0b3JlQ29tbWFuZH1cbiAgICovXG4gIGNvbm5lY3RDdXN0b21LZXlTdG9yZShcbiAgICBhcmdzOiBDb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENsb3VkSHNtQ2x1c3RlckludmFsaWRDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IENsb3VkSHNtQ2x1c3Rlck5vdEFjdGl2ZUVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZUludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZU5vdEZvdW5kRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlQWxpYXMoXG4gICAgYXJnczogQ3JlYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWxyZWFkeUV4aXN0c0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQWxpYXNOYW1lRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlQ3VzdG9tS2V5U3RvcmUoXG4gICAgYXJnczogQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVySW5Vc2VFcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVySW52YWxpZENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVyTm90QWN0aXZlRXJyb3JcbiAgICB8IENsb3VkSHNtQ2x1c3Rlck5vdEZvdW5kRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlTmFtZUluVXNlRXJyb3JcbiAgICB8IEluY29ycmVjdFRydXN0QW5jaG9yRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgWGtzUHJveHlJbmNvcnJlY3RBdXRoZW50aWNhdGlvbkNyZWRlbnRpYWxFcnJvclxuICAgIHwgWGtzUHJveHlJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBYa3NQcm94eUludmFsaWRSZXNwb25zZUVycm9yXG4gICAgfCBYa3NQcm94eVVyaUVuZHBvaW50SW5Vc2VFcnJvclxuICAgIHwgWGtzUHJveHlVcmlJblVzZUVycm9yXG4gICAgfCBYa3NQcm94eVVyaVVucmVhY2hhYmxlRXJyb3JcbiAgICB8IFhrc1Byb3h5VnBjRW5kcG9pbnRTZXJ2aWNlSW5Vc2VFcnJvclxuICAgIHwgWGtzUHJveHlWcGNFbmRwb2ludFNlcnZpY2VJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBYa3NQcm94eVZwY0VuZHBvaW50U2VydmljZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlR3JhbnRDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlR3JhbnQoXG4gICAgYXJnczogQ3JlYXRlR3JhbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVHcmFudENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVLZXlDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlS2V5KFxuICAgIGFyZ3M6IENyZWF0ZUtleUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUtleUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVySW52YWxpZENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTWFsZm9ybWVkUG9saWN5RG9jdW1lbnRFcnJvclxuICAgIHwgVGFnRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IFhrc0tleUFscmVhZHlJblVzZUVycm9yXG4gICAgfCBYa3NLZXlJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBYa3NLZXlOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlY3J5cHRDb21tYW5kfVxuICAgKi9cbiAgZGVjcnlwdChcbiAgICBhcmdzOiBEZWNyeXB0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVjcnlwdENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEluY29ycmVjdEtleUVycm9yXG4gICAgfCBJbnZhbGlkQ2lwaGVydGV4dEVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlQWxpYXMoXG4gICAgYXJnczogRGVsZXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlQ3VzdG9tS2V5U3RvcmUoXG4gICAgYXJnczogRGVsZXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVDdXN0b21LZXlTdG9yZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVIYXNDTUtzRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlTm90Rm91bmRFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVJbXBvcnRlZEtleU1hdGVyaWFsQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUltcG9ydGVkS2V5TWF0ZXJpYWwoXG4gICAgYXJnczogRGVsZXRlSW1wb3J0ZWRLZXlNYXRlcmlhbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUltcG9ydGVkS2V5TWF0ZXJpYWxDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVyaXZlU2hhcmVkU2VjcmV0Q29tbWFuZH1cbiAgICovXG4gIGRlcml2ZVNoYXJlZFNlY3JldChcbiAgICBhcmdzOiBEZXJpdmVTaGFyZWRTZWNyZXRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXJpdmVTaGFyZWRTZWNyZXRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVDdXN0b21LZXlTdG9yZXNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVDdXN0b21LZXlTdG9yZXMoXG4gICAgYXJnczogRGVzY3JpYmVDdXN0b21LZXlTdG9yZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZUN1c3RvbUtleVN0b3Jlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yXG4gICAgfCBJbnZhbGlkTWFya2VyRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVLZXlDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVLZXkoXG4gICAgYXJnczogRGVzY3JpYmVLZXlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZUtleUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERpc2FibGVLZXlDb21tYW5kfVxuICAgKi9cbiAgZGlzYWJsZUtleShcbiAgICBhcmdzOiBEaXNhYmxlS2V5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGlzYWJsZUtleUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEaXNhYmxlS2V5Um90YXRpb25Db21tYW5kfVxuICAgKi9cbiAgZGlzYWJsZUtleVJvdGF0aW9uKFxuICAgIGFyZ3M6IERpc2FibGVLZXlSb3RhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERpc2FibGVLZXlSb3RhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEaXNjb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kfVxuICAgKi9cbiAgZGlzY29ubmVjdEN1c3RvbUtleVN0b3JlKFxuICAgIGFyZ3M6IERpc2Nvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERpc2Nvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEVuYWJsZUtleUNvbW1hbmR9XG4gICAqL1xuICBlbmFibGVLZXkoXG4gICAgYXJnczogRW5hYmxlS2V5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRW5hYmxlS2V5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRW5hYmxlS2V5Um90YXRpb25Db21tYW5kfVxuICAgKi9cbiAgZW5hYmxlS2V5Um90YXRpb24oXG4gICAgYXJnczogRW5hYmxlS2V5Um90YXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBFbmFibGVLZXlSb3RhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBFbmNyeXB0Q29tbWFuZH1cbiAgICovXG4gIGVuY3J5cHQoXG4gICAgYXJnczogRW5jcnlwdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEVuY3J5cHRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2VuZXJhdGVEYXRhS2V5Q29tbWFuZH1cbiAgICovXG4gIGdlbmVyYXRlRGF0YUtleShcbiAgICBhcmdzOiBHZW5lcmF0ZURhdGFLZXlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZW5lcmF0ZURhdGFLZXlDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2VuZXJhdGVEYXRhS2V5UGFpckNvbW1hbmR9XG4gICAqL1xuICBnZW5lcmF0ZURhdGFLZXlQYWlyKFxuICAgIGFyZ3M6IEdlbmVyYXRlRGF0YUtleVBhaXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZW5lcmF0ZURhdGFLZXlQYWlyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdlbmVyYXRlRGF0YUtleVBhaXJXaXRob3V0UGxhaW50ZXh0Q29tbWFuZH1cbiAgICovXG4gIGdlbmVyYXRlRGF0YUtleVBhaXJXaXRob3V0UGxhaW50ZXh0KFxuICAgIGFyZ3M6IEdlbmVyYXRlRGF0YUtleVBhaXJXaXRob3V0UGxhaW50ZXh0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2VuZXJhdGVEYXRhS2V5UGFpcldpdGhvdXRQbGFpbnRleHRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2VuZXJhdGVEYXRhS2V5V2l0aG91dFBsYWludGV4dENvbW1hbmR9XG4gICAqL1xuICBnZW5lcmF0ZURhdGFLZXlXaXRob3V0UGxhaW50ZXh0KFxuICAgIGFyZ3M6IEdlbmVyYXRlRGF0YUtleVdpdGhvdXRQbGFpbnRleHRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZW5lcmF0ZURhdGFLZXlXaXRob3V0UGxhaW50ZXh0Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdlbmVyYXRlTWFjQ29tbWFuZH1cbiAgICovXG4gIGdlbmVyYXRlTWFjKFxuICAgIGFyZ3M6IEdlbmVyYXRlTWFjQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2VuZXJhdGVNYWNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2VuZXJhdGVSYW5kb21Db21tYW5kfVxuICAgKi9cbiAgZ2VuZXJhdGVSYW5kb20oXG4gICAgYXJnczogR2VuZXJhdGVSYW5kb21Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZW5lcmF0ZVJhbmRvbUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEtleVBvbGljeUNvbW1hbmR9XG4gICAqL1xuICBnZXRLZXlQb2xpY3koXG4gICAgYXJnczogR2V0S2V5UG9saWN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0S2V5UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEtleVJvdGF0aW9uU3RhdHVzQ29tbWFuZH1cbiAgICovXG4gIGdldEtleVJvdGF0aW9uU3RhdHVzKFxuICAgIGFyZ3M6IEdldEtleVJvdGF0aW9uU3RhdHVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0S2V5Um90YXRpb25TdGF0dXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0UGFyYW1ldGVyc0ZvckltcG9ydENvbW1hbmR9XG4gICAqL1xuICBnZXRQYXJhbWV0ZXJzRm9ySW1wb3J0KFxuICAgIGFyZ3M6IEdldFBhcmFtZXRlcnNGb3JJbXBvcnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRQYXJhbWV0ZXJzRm9ySW1wb3J0Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFB1YmxpY0tleUNvbW1hbmR9XG4gICAqL1xuICBnZXRQdWJsaWNLZXkoXG4gICAgYXJnczogR2V0UHVibGljS2V5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0UHVibGljS2V5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEludmFsaWRHcmFudFRva2VuRXJyb3JcbiAgICB8IEludmFsaWRLZXlVc2FnZUVycm9yXG4gICAgfCBLZXlVbmF2YWlsYWJsZUVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBJbXBvcnRLZXlNYXRlcmlhbENvbW1hbmR9XG4gICAqL1xuICBpbXBvcnRLZXlNYXRlcmlhbChcbiAgICBhcmdzOiBJbXBvcnRLZXlNYXRlcmlhbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEltcG9ydEtleU1hdGVyaWFsQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBFeHBpcmVkSW1wb3J0VG9rZW5FcnJvclxuICAgIHwgSW5jb3JyZWN0S2V5TWF0ZXJpYWxFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkQ2lwaGVydGV4dEVycm9yXG4gICAgfCBJbnZhbGlkSW1wb3J0VG9rZW5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEFsaWFzZXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEFsaWFzZXMoXG4gICAgYXJnczogTGlzdEFsaWFzZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0QWxpYXNlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkTWFya2VyRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEdyYW50c0NvbW1hbmR9XG4gICAqL1xuICBsaXN0R3JhbnRzKFxuICAgIGFyZ3M6IExpc3RHcmFudHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0R3JhbnRzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEludmFsaWRHcmFudElkRXJyb3JcbiAgICB8IEludmFsaWRNYXJrZXJFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEtleVBvbGljaWVzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RLZXlQb2xpY2llcyhcbiAgICBhcmdzOiBMaXN0S2V5UG9saWNpZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0S2V5UG9saWNpZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEtleVJvdGF0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0S2V5Um90YXRpb25zKFxuICAgIGFyZ3M6IExpc3RLZXlSb3RhdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0S2V5Um90YXRpb25zQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEludmFsaWRNYXJrZXJFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEtleXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEtleXMoXG4gICAgYXJnczogTGlzdEtleXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0S2V5c0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yIHwgSW52YWxpZE1hcmtlckVycm9yIHwgS01TSW50ZXJuYWxFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0UmVzb3VyY2VUYWdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RSZXNvdXJjZVRhZ3MoXG4gICAgYXJnczogTGlzdFJlc291cmNlVGFnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RSZXNvdXJjZVRhZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgSW52YWxpZE1hcmtlckVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RSZXRpcmFibGVHcmFudHNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFJldGlyYWJsZUdyYW50cyhcbiAgICBhcmdzOiBMaXN0UmV0aXJhYmxlR3JhbnRzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFJldGlyYWJsZUdyYW50c0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkTWFya2VyRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0S2V5UG9saWN5Q29tbWFuZH1cbiAgICovXG4gIHB1dEtleVBvbGljeShcbiAgICBhcmdzOiBQdXRLZXlQb2xpY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRLZXlQb2xpY3lDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTWFsZm9ybWVkUG9saWN5RG9jdW1lbnRFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZUVuY3J5cHRDb21tYW5kfVxuICAgKi9cbiAgcmVFbmNyeXB0KFxuICAgIGFyZ3M6IFJlRW5jcnlwdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlRW5jcnlwdENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEluY29ycmVjdEtleUVycm9yXG4gICAgfCBJbnZhbGlkQ2lwaGVydGV4dEVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVwbGljYXRlS2V5Q29tbWFuZH1cbiAgICovXG4gIHJlcGxpY2F0ZUtleShcbiAgICBhcmdzOiBSZXBsaWNhdGVLZXlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZXBsaWNhdGVLZXlDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFscmVhZHlFeGlzdHNFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBNYWxmb3JtZWRQb2xpY3lEb2N1bWVudEVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBUYWdFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZXRpcmVHcmFudENvbW1hbmR9XG4gICAqL1xuICByZXRpcmVHcmFudChcbiAgICBhcmdzOiBSZXRpcmVHcmFudENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJldGlyZUdyYW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRJZEVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZXZva2VHcmFudENvbW1hbmR9XG4gICAqL1xuICByZXZva2VHcmFudChcbiAgICBhcmdzOiBSZXZva2VHcmFudENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJldm9rZUdyYW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRJZEVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSb3RhdGVLZXlPbkRlbWFuZENvbW1hbmR9XG4gICAqL1xuICByb3RhdGVLZXlPbkRlbWFuZChcbiAgICBhcmdzOiBSb3RhdGVLZXlPbkRlbWFuZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJvdGF0ZUtleU9uRGVtYW5kQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2NoZWR1bGVLZXlEZWxldGlvbkNvbW1hbmR9XG4gICAqL1xuICBzY2hlZHVsZUtleURlbGV0aW9uKFxuICAgIGFyZ3M6IFNjaGVkdWxlS2V5RGVsZXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTY2hlZHVsZUtleURlbGV0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNpZ25Db21tYW5kfVxuICAgKi9cbiAgc2lnbihcbiAgICBhcmdzOiBTaWduQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2lnbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludmFsaWRHcmFudFRva2VuRXJyb3JcbiAgICB8IEludmFsaWRLZXlVc2FnZUVycm9yXG4gICAgfCBLZXlVbmF2YWlsYWJsZUVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBUYWdSZXNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB0YWdSZXNvdXJjZShcbiAgICBhcmdzOiBUYWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFRhZ0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVudGFnUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgdW50YWdSZXNvdXJjZShcbiAgICBhcmdzOiBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVW50YWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVGFnRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQWxpYXMoXG4gICAgYXJnczogVXBkYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVDdXN0b21LZXlTdG9yZShcbiAgICBhcmdzOiBVcGRhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDbG91ZEhzbUNsdXN0ZXJJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBDbG91ZEhzbUNsdXN0ZXJOb3RBY3RpdmVFcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVyTm90Rm91bmRFcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVyTm90UmVsYXRlZEVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZUludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZU5hbWVJblVzZUVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZU5vdEZvdW5kRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IFhrc1Byb3h5SW5jb3JyZWN0QXV0aGVudGljYXRpb25DcmVkZW50aWFsRXJyb3JcbiAgICB8IFhrc1Byb3h5SW52YWxpZENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgWGtzUHJveHlJbnZhbGlkUmVzcG9uc2VFcnJvclxuICAgIHwgWGtzUHJveHlVcmlFbmRwb2ludEluVXNlRXJyb3JcbiAgICB8IFhrc1Byb3h5VXJpSW5Vc2VFcnJvclxuICAgIHwgWGtzUHJveHlVcmlVbnJlYWNoYWJsZUVycm9yXG4gICAgfCBYa3NQcm94eVZwY0VuZHBvaW50U2VydmljZUluVXNlRXJyb3JcbiAgICB8IFhrc1Byb3h5VnBjRW5kcG9pbnRTZXJ2aWNlSW52YWxpZENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgWGtzUHJveHlWcGNFbmRwb2ludFNlcnZpY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUtleURlc2NyaXB0aW9uQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUtleURlc2NyaXB0aW9uKFxuICAgIGFyZ3M6IFVwZGF0ZUtleURlc2NyaXB0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlS2V5RGVzY3JpcHRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlUHJpbWFyeVJlZ2lvbkNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVQcmltYXJ5UmVnaW9uKFxuICAgIGFyZ3M6IFVwZGF0ZVByaW1hcnlSZWdpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVQcmltYXJ5UmVnaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFZlcmlmeUNvbW1hbmR9XG4gICAqL1xuICB2ZXJpZnkoXG4gICAgYXJnczogVmVyaWZ5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVmVyaWZ5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTaWduYXR1cmVFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVmVyaWZ5TWFjQ29tbWFuZH1cbiAgICovXG4gIHZlcmlmeU1hYyhcbiAgICBhcmdzOiBWZXJpZnlNYWNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBWZXJpZnlNYWNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZE1hY0Vycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xufVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IG1vZGVsc1xuICovXG5leHBvcnQgY2xhc3MgS01TU2VydmljZSBleHRlbmRzIEVmZmVjdC5UYWcoXCJAZWZmZWN0LWF3cy9jbGllbnQta21zL0tNU1NlcnZpY2VcIik8XG4gIEtNU1NlcnZpY2UsXG4gIEtNU1NlcnZpY2UkXG4+KCkge31cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBjb25zdHJ1Y3RvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IG1ha2VLTVNTZXJ2aWNlID0gRWZmZWN0LmdlbihmdW5jdGlvbiogKF8pIHtcbiAgY29uc3QgY2xpZW50ID0geWllbGQqIF8oS01TQ2xpZW50SW5zdGFuY2UpO1xuXG4gIHJldHVybiBSZWNvcmQudG9FbnRyaWVzKGNvbW1hbmRzKS5yZWR1Y2UoKGFjYywgW2NvbW1hbmRdKSA9PiB7XG4gICAgY29uc3QgQ29tbWFuZEN0b3IgPSBjb21tYW5kc1tjb21tYW5kXSBhcyBhbnk7XG4gICAgY29uc3QgbWV0aG9kSW1wbCA9IChhcmdzOiBhbnksIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMpID0+XG4gICAgICBFZmZlY3QudHJ5UHJvbWlzZSh7XG4gICAgICAgIHRyeTogKGFib3J0U2lnbmFsKSA9PlxuICAgICAgICAgIGNsaWVudC5zZW5kKG5ldyBDb21tYW5kQ3RvcihhcmdzKSwge1xuICAgICAgICAgICAgLi4uKG9wdGlvbnMgPz8ge30pLFxuICAgICAgICAgICAgYWJvcnRTaWduYWwsXG4gICAgICAgICAgfSksXG4gICAgICAgIGNhdGNoOiAoZSkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGUgaW5zdGFuY2VvZiBLTVNTZXJ2aWNlRXhjZXB0aW9uICYmXG4gICAgICAgICAgICBBbGxTZXJ2aWNlRXJyb3JzLmluY2x1ZGVzKGUubmFtZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IFNlcnZpY2VFeGNlcHRpb24gPSBEYXRhLnRhZ2dlZDxcbiAgICAgICAgICAgICAgVGFnZ2VkRXhjZXB0aW9uPEtNU1NlcnZpY2VFeGNlcHRpb24+XG4gICAgICAgICAgICA+KGUubmFtZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlRXhjZXB0aW9uKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gU2RrRXJyb3Ioe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBuYW1lOiBcIlNka0Vycm9yXCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAoY29tbWFuZFswXS50b0xvd2VyQ2FzZSgpICsgY29tbWFuZC5zbGljZSgxKSkucmVwbGFjZShcbiAgICAgIC9Db21tYW5kJC8sXG4gICAgICBcIlwiLFxuICAgICk7XG4gICAgcmV0dXJuIHsgLi4uYWNjLCBbbWV0aG9kTmFtZV06IG1ldGhvZEltcGwgfTtcbiAgfSwge30pIGFzIEtNU1NlcnZpY2UkO1xufSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBCYXNlS01TU2VydmljZUxheWVyID0gTGF5ZXIuZWZmZWN0KEtNU1NlcnZpY2UsIG1ha2VLTVNTZXJ2aWNlKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IEtNU1NlcnZpY2VMYXllciA9IEJhc2VLTVNTZXJ2aWNlTGF5ZXIucGlwZShcbiAgTGF5ZXIucHJvdmlkZShLTVNDbGllbnRJbnN0YW5jZUxheWVyKSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0S01TU2VydmljZUxheWVyID0gS01TU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoRGVmYXVsdEtNU0NsaWVudENvbmZpZ0xheWVyKSxcbik7XG4iXX0=
136
+ export const DefaultKMSServiceLayer = KMSService.defaultLayer;
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS01TU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9LTVNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRztBQUNILE9BQU8sRUFDTCxtQkFBbUIsRUFHbkIsd0JBQXdCLEVBR3hCLDRCQUE0QixFQUc1QixrQkFBa0IsRUFHbEIsMkJBQTJCLEVBRzNCLGtCQUFrQixFQUdsQixnQkFBZ0IsRUFHaEIsY0FBYyxFQUdkLGtCQUFrQixFQUdsQiwyQkFBMkIsRUFHM0IsZ0NBQWdDLEVBR2hDLHlCQUF5QixFQUd6Qiw4QkFBOEIsRUFHOUIsa0JBQWtCLEVBR2xCLGlCQUFpQixFQUdqQix5QkFBeUIsRUFHekIsK0JBQStCLEVBRy9CLGdCQUFnQixFQUdoQix3QkFBd0IsRUFHeEIsY0FBYyxFQUdkLHNCQUFzQixFQUd0QiwwQkFBMEIsRUFHMUIsMENBQTBDLEVBRzFDLHNDQUFzQyxFQUd0QyxrQkFBa0IsRUFHbEIscUJBQXFCLEVBR3JCLG1CQUFtQixFQUduQiwyQkFBMkIsRUFHM0IsNkJBQTZCLEVBRzdCLG1CQUFtQixFQUduQix3QkFBd0IsRUFHeEIsa0JBQWtCLEVBR2xCLGlCQUFpQixFQUdqQixzQkFBc0IsRUFHdEIsdUJBQXVCLEVBR3ZCLGVBQWUsRUFHZix1QkFBdUIsRUFHdkIsMEJBQTBCLEVBRzFCLG1CQUFtQixFQUduQixnQkFBZ0IsRUFHaEIsbUJBQW1CLEVBR25CLGtCQUFrQixFQUdsQixrQkFBa0IsRUFHbEIsd0JBQXdCLEVBR3hCLDBCQUEwQixFQUcxQixXQUFXLEVBR1gsa0JBQWtCLEVBR2xCLG9CQUFvQixFQUdwQixrQkFBa0IsRUFHbEIsMkJBQTJCLEVBRzNCLDJCQUEyQixFQUczQiwwQkFBMEIsRUFHMUIsYUFBYSxFQUdiLGdCQUFnQixHQUdqQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUs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QUNyQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQ2pFLENBQ0YsQ0FDRixDQUNGLEFBWGtCLENBV2pCO0FBQ1ksb0JBQVMsR0FBRyxDQUMxQixRQUF1RCxFQUN2RCxFQUFFLENBQ0YsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUNyQyxLQUFLLENBQUMsT0FBTyxDQUNYLEtBQUssQ0FBQyxNQUFNLENBQ1YsaUJBQWlCLEVBQ2pCLE1BQU0sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLEVBQUUsUUFBUSxDQUFDLENBQ3pELENBQ0YsQ0FDRixBQVZzQixDQVVyQjtBQUdOOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDO0FBRTlCOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUU1RTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FDckQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUN0QyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQge1xuICBLTVNTZXJ2aWNlRXhjZXB0aW9uLFxuICB0eXBlIEtNU0NsaWVudCxcbiAgdHlwZSBLTVNDbGllbnRDb25maWcsXG4gIENhbmNlbEtleURlbGV0aW9uQ29tbWFuZCxcbiAgdHlwZSBDYW5jZWxLZXlEZWxldGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDYW5jZWxLZXlEZWxldGlvbkNvbW1hbmRPdXRwdXQsXG4gIENvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIHR5cGUgQ29ubmVjdEN1c3RvbUtleVN0b3JlQ29tbWFuZElucHV0LFxuICB0eXBlIENvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZUFsaWFzQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZUdyYW50Q29tbWFuZCxcbiAgdHlwZSBDcmVhdGVHcmFudENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVHcmFudENvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZUtleUNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlS2V5Q29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUtleUNvbW1hbmRPdXRwdXQsXG4gIERlY3J5cHRDb21tYW5kLFxuICB0eXBlIERlY3J5cHRDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVjcnlwdENvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUFsaWFzQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVDdXN0b21LZXlTdG9yZUNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUltcG9ydGVkS2V5TWF0ZXJpYWxDb21tYW5kLFxuICB0eXBlIERlbGV0ZUltcG9ydGVkS2V5TWF0ZXJpYWxDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlSW1wb3J0ZWRLZXlNYXRlcmlhbENvbW1hbmRPdXRwdXQsXG4gIERlcml2ZVNoYXJlZFNlY3JldENvbW1hbmQsXG4gIHR5cGUgRGVyaXZlU2hhcmVkU2VjcmV0Q29tbWFuZElucHV0LFxuICB0eXBlIERlcml2ZVNoYXJlZFNlY3JldENvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlQ3VzdG9tS2V5U3RvcmVzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUN1c3RvbUtleVN0b3Jlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUN1c3RvbUtleVN0b3Jlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlS2V5Q29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUtleUNvbW1hbmRPdXRwdXQsXG4gIERpc2FibGVLZXlDb21tYW5kLFxuICB0eXBlIERpc2FibGVLZXlDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGlzYWJsZUtleUNvbW1hbmRPdXRwdXQsXG4gIERpc2FibGVLZXlSb3RhdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGlzYWJsZUtleVJvdGF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIERpc2FibGVLZXlSb3RhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIERpc2Nvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIHR5cGUgRGlzY29ubmVjdEN1c3RvbUtleVN0b3JlQ29tbWFuZElucHV0LFxuICB0eXBlIERpc2Nvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmRPdXRwdXQsXG4gIEVuYWJsZUtleUNvbW1hbmQsXG4gIHR5cGUgRW5hYmxlS2V5Q29tbWFuZElucHV0LFxuICB0eXBlIEVuYWJsZUtleUNvbW1hbmRPdXRwdXQsXG4gIEVuYWJsZUtleVJvdGF0aW9uQ29tbWFuZCxcbiAgdHlwZSBFbmFibGVLZXlSb3RhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBFbmFibGVLZXlSb3RhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIEVuY3J5cHRDb21tYW5kLFxuICB0eXBlIEVuY3J5cHRDb21tYW5kSW5wdXQsXG4gIHR5cGUgRW5jcnlwdENvbW1hbmRPdXRwdXQsXG4gIEdlbmVyYXRlRGF0YUtleUNvbW1hbmQsXG4gIHR5cGUgR2VuZXJhdGVEYXRhS2V5Q29tbWFuZElucHV0LFxuICB0eXBlIEdlbmVyYXRlRGF0YUtleUNvbW1hbmRPdXRwdXQsXG4gIEdlbmVyYXRlRGF0YUtleVBhaXJDb21tYW5kLFxuICB0eXBlIEdlbmVyYXRlRGF0YUtleVBhaXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2VuZXJhdGVEYXRhS2V5UGFpckNvbW1hbmRPdXRwdXQsXG4gIEdlbmVyYXRlRGF0YUtleVBhaXJXaXRob3V0UGxhaW50ZXh0Q29tbWFuZCxcbiAgdHlwZSBHZW5lcmF0ZURhdGFLZXlQYWlyV2l0aG91dFBsYWludGV4dENvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZW5lcmF0ZURhdGFLZXlQYWlyV2l0aG91dFBsYWludGV4dENvbW1hbmRPdXRwdXQsXG4gIEdlbmVyYXRlRGF0YUtleVdpdGhvdXRQbGFpbnRleHRDb21tYW5kLFxuICB0eXBlIEdlbmVyYXRlRGF0YUtleVdpdGhvdXRQbGFpbnRleHRDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2VuZXJhdGVEYXRhS2V5V2l0aG91dFBsYWludGV4dENvbW1hbmRPdXRwdXQsXG4gIEdlbmVyYXRlTWFjQ29tbWFuZCxcbiAgdHlwZSBHZW5lcmF0ZU1hY0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZW5lcmF0ZU1hY0NvbW1hbmRPdXRwdXQsXG4gIEdlbmVyYXRlUmFuZG9tQ29tbWFuZCxcbiAgdHlwZSBHZW5lcmF0ZVJhbmRvbUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZW5lcmF0ZVJhbmRvbUNvbW1hbmRPdXRwdXQsXG4gIEdldEtleVBvbGljeUNvbW1hbmQsXG4gIHR5cGUgR2V0S2V5UG9saWN5Q29tbWFuZElucHV0LFxuICB0eXBlIEdldEtleVBvbGljeUNvbW1hbmRPdXRwdXQsXG4gIEdldEtleVJvdGF0aW9uU3RhdHVzQ29tbWFuZCxcbiAgdHlwZSBHZXRLZXlSb3RhdGlvblN0YXR1c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRLZXlSb3RhdGlvblN0YXR1c0NvbW1hbmRPdXRwdXQsXG4gIEdldFBhcmFtZXRlcnNGb3JJbXBvcnRDb21tYW5kLFxuICB0eXBlIEdldFBhcmFtZXRlcnNGb3JJbXBvcnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0UGFyYW1ldGVyc0ZvckltcG9ydENvbW1hbmRPdXRwdXQsXG4gIEdldFB1YmxpY0tleUNvbW1hbmQsXG4gIHR5cGUgR2V0UHVibGljS2V5Q29tbWFuZElucHV0LFxuICB0eXBlIEdldFB1YmxpY0tleUNvbW1hbmRPdXRwdXQsXG4gIEltcG9ydEtleU1hdGVyaWFsQ29tbWFuZCxcbiAgdHlwZSBJbXBvcnRLZXlNYXRlcmlhbENvbW1hbmRJbnB1dCxcbiAgdHlwZSBJbXBvcnRLZXlNYXRlcmlhbENvbW1hbmRPdXRwdXQsXG4gIExpc3RBbGlhc2VzQ29tbWFuZCxcbiAgdHlwZSBMaXN0QWxpYXNlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0QWxpYXNlc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RHcmFudHNDb21tYW5kLFxuICB0eXBlIExpc3RHcmFudHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEdyYW50c0NvbW1hbmRPdXRwdXQsXG4gIExpc3RLZXlQb2xpY2llc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEtleVBvbGljaWVzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RLZXlQb2xpY2llc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RLZXlSb3RhdGlvbnNDb21tYW5kLFxuICB0eXBlIExpc3RLZXlSb3RhdGlvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEtleVJvdGF0aW9uc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RLZXlzQ29tbWFuZCxcbiAgdHlwZSBMaXN0S2V5c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0S2V5c0NvbW1hbmRPdXRwdXQsXG4gIExpc3RSZXNvdXJjZVRhZ3NDb21tYW5kLFxuICB0eXBlIExpc3RSZXNvdXJjZVRhZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFJlc291cmNlVGFnc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RSZXRpcmFibGVHcmFudHNDb21tYW5kLFxuICB0eXBlIExpc3RSZXRpcmFibGVHcmFudHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFJldGlyYWJsZUdyYW50c0NvbW1hbmRPdXRwdXQsXG4gIFB1dEtleVBvbGljeUNvbW1hbmQsXG4gIHR5cGUgUHV0S2V5UG9saWN5Q29tbWFuZElucHV0LFxuICB0eXBlIFB1dEtleVBvbGljeUNvbW1hbmRPdXRwdXQsXG4gIFJlRW5jcnlwdENvbW1hbmQsXG4gIHR5cGUgUmVFbmNyeXB0Q29tbWFuZElucHV0LFxuICB0eXBlIFJlRW5jcnlwdENvbW1hbmRPdXRwdXQsXG4gIFJlcGxpY2F0ZUtleUNvbW1hbmQsXG4gIHR5cGUgUmVwbGljYXRlS2V5Q29tbWFuZElucHV0LFxuICB0eXBlIFJlcGxpY2F0ZUtleUNvbW1hbmRPdXRwdXQsXG4gIFJldGlyZUdyYW50Q29tbWFuZCxcbiAgdHlwZSBSZXRpcmVHcmFudENvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZXRpcmVHcmFudENvbW1hbmRPdXRwdXQsXG4gIFJldm9rZUdyYW50Q29tbWFuZCxcbiAgdHlwZSBSZXZva2VHcmFudENvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZXZva2VHcmFudENvbW1hbmRPdXRwdXQsXG4gIFJvdGF0ZUtleU9uRGVtYW5kQ29tbWFuZCxcbiAgdHlwZSBSb3RhdGVLZXlPbkRlbWFuZENvbW1hbmRJbnB1dCxcbiAgdHlwZSBSb3RhdGVLZXlPbkRlbWFuZENvbW1hbmRPdXRwdXQsXG4gIFNjaGVkdWxlS2V5RGVsZXRpb25Db21tYW5kLFxuICB0eXBlIFNjaGVkdWxlS2V5RGVsZXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgU2NoZWR1bGVLZXlEZWxldGlvbkNvbW1hbmRPdXRwdXQsXG4gIFNpZ25Db21tYW5kLFxuICB0eXBlIFNpZ25Db21tYW5kSW5wdXQsXG4gIHR5cGUgU2lnbkNvbW1hbmRPdXRwdXQsXG4gIFRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgdHlwZSBUYWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBUYWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kLFxuICB0eXBlIFVudGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgVW50YWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUFsaWFzQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUtleURlc2NyaXB0aW9uQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVLZXlEZXNjcmlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVLZXlEZXNjcmlwdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZVByaW1hcnlSZWdpb25Db21tYW5kLFxuICB0eXBlIFVwZGF0ZVByaW1hcnlSZWdpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlUHJpbWFyeVJlZ2lvbkNvbW1hbmRPdXRwdXQsXG4gIFZlcmlmeUNvbW1hbmQsXG4gIHR5cGUgVmVyaWZ5Q29tbWFuZElucHV0LFxuICB0eXBlIFZlcmlmeUNvbW1hbmRPdXRwdXQsXG4gIFZlcmlmeU1hY0NvbW1hbmQsXG4gIHR5cGUgVmVyaWZ5TWFjQ29tbWFuZElucHV0LFxuICB0eXBlIFZlcmlmeU1hY0NvbW1hbmRPdXRwdXQsXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQta21zXCI7XG5pbXBvcnQgeyBEYXRhLCBFZmZlY3QsIExheWVyLCBSZWNvcmQgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQge1xuICBBbGxTZXJ2aWNlRXJyb3JzLFxuICBBbHJlYWR5RXhpc3RzRXJyb3IsXG4gIENsb3VkSHNtQ2x1c3RlckluVXNlRXJyb3IsXG4gIENsb3VkSHNtQ2x1c3RlckludmFsaWRDb25maWd1cmF0aW9uRXJyb3IsXG4gIENsb3VkSHNtQ2x1c3Rlck5vdEFjdGl2ZUVycm9yLFxuICBDbG91ZEhzbUNsdXN0ZXJOb3RGb3VuZEVycm9yLFxuICBDbG91ZEhzbUNsdXN0ZXJOb3RSZWxhdGVkRXJyb3IsXG4gIENvbmZsaWN0RXJyb3IsXG4gIEN1c3RvbUtleVN0b3JlSGFzQ01Lc0Vycm9yLFxuICBDdXN0b21LZXlTdG9yZUludmFsaWRTdGF0ZUVycm9yLFxuICBDdXN0b21LZXlTdG9yZU5hbWVJblVzZUVycm9yLFxuICBDdXN0b21LZXlTdG9yZU5vdEZvdW5kRXJyb3IsXG4gIERlcGVuZGVuY3lUaW1lb3V0RXJyb3IsXG4gIERpc2FibGVkRXJyb3IsXG4gIERyeVJ1bk9wZXJhdGlvbkVycm9yLFxuICBFeHBpcmVkSW1wb3J0VG9rZW5FcnJvcixcbiAgSW5jb3JyZWN0S2V5RXJyb3IsXG4gIEluY29ycmVjdEtleU1hdGVyaWFsRXJyb3IsXG4gIEluY29ycmVjdFRydXN0QW5jaG9yRXJyb3IsXG4gIEludmFsaWRBbGlhc05hbWVFcnJvcixcbiAgSW52YWxpZEFybkVycm9yLFxuICBJbnZhbGlkQ2lwaGVydGV4dEVycm9yLFxuICBJbnZhbGlkR3JhbnRJZEVycm9yLFxuICBJbnZhbGlkR3JhbnRUb2tlbkVycm9yLFxuICBJbnZhbGlkSW1wb3J0VG9rZW5FcnJvcixcbiAgSW52YWxpZEtleVVzYWdlRXJyb3IsXG4gIEludmFsaWRNYXJrZXJFcnJvcixcbiAgS01TSW50ZXJuYWxFcnJvcixcbiAgS01TSW52YWxpZE1hY0Vycm9yLFxuICBLTVNJbnZhbGlkU2lnbmF0dXJlRXJyb3IsXG4gIEtNU0ludmFsaWRTdGF0ZUVycm9yLFxuICBLZXlVbmF2YWlsYWJsZUVycm9yLFxuICBMaW1pdEV4Y2VlZGVkRXJyb3IsXG4gIE1hbGZvcm1lZFBvbGljeURvY3VtZW50RXJyb3IsXG4gIE5vdEZvdW5kRXJyb3IsXG4gIFRhZ0Vycm9yLFxuICBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yLFxuICBYa3NLZXlBbHJlYWR5SW5Vc2VFcnJvcixcbiAgWGtzS2V5SW52YWxpZENvbmZpZ3VyYXRpb25FcnJvcixcbiAgWGtzS2V5Tm90Rm91bmRFcnJvcixcbiAgWGtzUHJveHlJbmNvcnJlY3RBdXRoZW50aWNhdGlvbkNyZWRlbnRpYWxFcnJvcixcbiAgWGtzUHJveHlJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yLFxuICBYa3NQcm94eUludmFsaWRSZXNwb25zZUVycm9yLFxuICBYa3NQcm94eVVyaUVuZHBvaW50SW5Vc2VFcnJvcixcbiAgWGtzUHJveHlVcmlJblVzZUVycm9yLFxuICBYa3NQcm94eVVyaVVucmVhY2hhYmxlRXJyb3IsXG4gIFhrc1Byb3h5VnBjRW5kcG9pbnRTZXJ2aWNlSW5Vc2VFcnJvcixcbiAgWGtzUHJveHlWcGNFbmRwb2ludFNlcnZpY2VJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yLFxuICBYa3NQcm94eVZwY0VuZHBvaW50U2VydmljZU5vdEZvdW5kRXJyb3IsXG4gIFNka0Vycm9yLFxuICBUYWdnZWRFeGNlcHRpb24sXG59IGZyb20gXCIuL0Vycm9yc1wiO1xuaW1wb3J0IHsgS01TQ2xpZW50SW5zdGFuY2UsIEtNU0NsaWVudEluc3RhbmNlTGF5ZXIgfSBmcm9tIFwiLi9LTVNDbGllbnRJbnN0YW5jZVwiO1xuaW1wb3J0IHtcbiAgRGVmYXVsdEtNU0NsaWVudENvbmZpZ0xheWVyLFxuICBtYWtlRGVmYXVsdEtNU0NsaWVudEluc3RhbmNlQ29uZmlnLFxuICBLTVNDbGllbnRJbnN0YW5jZUNvbmZpZyxcbn0gZnJvbSBcIi4vS01TQ2xpZW50SW5zdGFuY2VDb25maWdcIjtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwSGFuZGxlck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdGhhdCB0aGUgY29ubmVjdGlvbiBwaGFzZSBvZiBhIHJlcXVlc3RcbiAgICogbWF5IHRha2UgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGF0dGVtcHQgaXMgYWJhbmRvbmVkLlxuICAgKi9cbiAgcmVxdWVzdFRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbmNvbnN0IGNvbW1hbmRzID0ge1xuICBDYW5jZWxLZXlEZWxldGlvbkNvbW1hbmQsXG4gIENvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIENyZWF0ZUFsaWFzQ29tbWFuZCxcbiAgQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kLFxuICBDcmVhdGVHcmFudENvbW1hbmQsXG4gIENyZWF0ZUtleUNvbW1hbmQsXG4gIERlY3J5cHRDb21tYW5kLFxuICBEZWxldGVBbGlhc0NvbW1hbmQsXG4gIERlbGV0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZCxcbiAgRGVsZXRlSW1wb3J0ZWRLZXlNYXRlcmlhbENvbW1hbmQsXG4gIERlcml2ZVNoYXJlZFNlY3JldENvbW1hbmQsXG4gIERlc2NyaWJlQ3VzdG9tS2V5U3RvcmVzQ29tbWFuZCxcbiAgRGVzY3JpYmVLZXlDb21tYW5kLFxuICBEaXNhYmxlS2V5Q29tbWFuZCxcbiAgRGlzYWJsZUtleVJvdGF0aW9uQ29tbWFuZCxcbiAgRGlzY29ubmVjdEN1c3RvbUtleVN0b3JlQ29tbWFuZCxcbiAgRW5hYmxlS2V5Q29tbWFuZCxcbiAgRW5hYmxlS2V5Um90YXRpb25Db21tYW5kLFxuICBFbmNyeXB0Q29tbWFuZCxcbiAgR2VuZXJhdGVEYXRhS2V5Q29tbWFuZCxcbiAgR2VuZXJhdGVEYXRhS2V5UGFpckNvbW1hbmQsXG4gIEdlbmVyYXRlRGF0YUtleVBhaXJXaXRob3V0UGxhaW50ZXh0Q29tbWFuZCxcbiAgR2VuZXJhdGVEYXRhS2V5V2l0aG91dFBsYWludGV4dENvbW1hbmQsXG4gIEdlbmVyYXRlTWFjQ29tbWFuZCxcbiAgR2VuZXJhdGVSYW5kb21Db21tYW5kLFxuICBHZXRLZXlQb2xpY3lDb21tYW5kLFxuICBHZXRLZXlSb3RhdGlvblN0YXR1c0NvbW1hbmQsXG4gIEdldFBhcmFtZXRlcnNGb3JJbXBvcnRDb21tYW5kLFxuICBHZXRQdWJsaWNLZXlDb21tYW5kLFxuICBJbXBvcnRLZXlNYXRlcmlhbENvbW1hbmQsXG4gIExpc3RBbGlhc2VzQ29tbWFuZCxcbiAgTGlzdEdyYW50c0NvbW1hbmQsXG4gIExpc3RLZXlQb2xpY2llc0NvbW1hbmQsXG4gIExpc3RLZXlSb3RhdGlvbnNDb21tYW5kLFxuICBMaXN0S2V5c0NvbW1hbmQsXG4gIExpc3RSZXNvdXJjZVRhZ3NDb21tYW5kLFxuICBMaXN0UmV0aXJhYmxlR3JhbnRzQ29tbWFuZCxcbiAgUHV0S2V5UG9saWN5Q29tbWFuZCxcbiAgUmVFbmNyeXB0Q29tbWFuZCxcbiAgUmVwbGljYXRlS2V5Q29tbWFuZCxcbiAgUmV0aXJlR3JhbnRDb21tYW5kLFxuICBSZXZva2VHcmFudENvbW1hbmQsXG4gIFJvdGF0ZUtleU9uRGVtYW5kQ29tbWFuZCxcbiAgU2NoZWR1bGVLZXlEZWxldGlvbkNvbW1hbmQsXG4gIFNpZ25Db21tYW5kLFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kLFxuICBVcGRhdGVBbGlhc0NvbW1hbmQsXG4gIFVwZGF0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZCxcbiAgVXBkYXRlS2V5RGVzY3JpcHRpb25Db21tYW5kLFxuICBVcGRhdGVQcmltYXJ5UmVnaW9uQ29tbWFuZCxcbiAgVmVyaWZ5Q29tbWFuZCxcbiAgVmVyaWZ5TWFjQ29tbWFuZCxcbn07XG5cbmludGVyZmFjZSBLTVNTZXJ2aWNlJCB7XG4gIHJlYWRvbmx5IF86IHVuaXF1ZSBzeW1ib2w7XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENhbmNlbEtleURlbGV0aW9uQ29tbWFuZH1cbiAgICovXG4gIGNhbmNlbEtleURlbGV0aW9uKFxuICAgIGFyZ3M6IENhbmNlbEtleURlbGV0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ2FuY2VsS2V5RGVsZXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ29ubmVjdEN1c3RvbUtleVN0b3JlQ29tbWFuZH1cbiAgICovXG4gIGNvbm5lY3RDdXN0b21LZXlTdG9yZShcbiAgICBhcmdzOiBDb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENsb3VkSHNtQ2x1c3RlckludmFsaWRDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IENsb3VkSHNtQ2x1c3Rlck5vdEFjdGl2ZUVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZUludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZU5vdEZvdW5kRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlQWxpYXMoXG4gICAgYXJnczogQ3JlYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWxyZWFkeUV4aXN0c0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQWxpYXNOYW1lRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlQ3VzdG9tS2V5U3RvcmUoXG4gICAgYXJnczogQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVySW5Vc2VFcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVySW52YWxpZENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVyTm90QWN0aXZlRXJyb3JcbiAgICB8IENsb3VkSHNtQ2x1c3Rlck5vdEZvdW5kRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlTmFtZUluVXNlRXJyb3JcbiAgICB8IEluY29ycmVjdFRydXN0QW5jaG9yRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgWGtzUHJveHlJbmNvcnJlY3RBdXRoZW50aWNhdGlvbkNyZWRlbnRpYWxFcnJvclxuICAgIHwgWGtzUHJveHlJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBYa3NQcm94eUludmFsaWRSZXNwb25zZUVycm9yXG4gICAgfCBYa3NQcm94eVVyaUVuZHBvaW50SW5Vc2VFcnJvclxuICAgIHwgWGtzUHJveHlVcmlJblVzZUVycm9yXG4gICAgfCBYa3NQcm94eVVyaVVucmVhY2hhYmxlRXJyb3JcbiAgICB8IFhrc1Byb3h5VnBjRW5kcG9pbnRTZXJ2aWNlSW5Vc2VFcnJvclxuICAgIHwgWGtzUHJveHlWcGNFbmRwb2ludFNlcnZpY2VJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBYa3NQcm94eVZwY0VuZHBvaW50U2VydmljZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlR3JhbnRDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlR3JhbnQoXG4gICAgYXJnczogQ3JlYXRlR3JhbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVHcmFudENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVLZXlDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlS2V5KFxuICAgIGFyZ3M6IENyZWF0ZUtleUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUtleUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVySW52YWxpZENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTWFsZm9ybWVkUG9saWN5RG9jdW1lbnRFcnJvclxuICAgIHwgVGFnRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IFhrc0tleUFscmVhZHlJblVzZUVycm9yXG4gICAgfCBYa3NLZXlJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBYa3NLZXlOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlY3J5cHRDb21tYW5kfVxuICAgKi9cbiAgZGVjcnlwdChcbiAgICBhcmdzOiBEZWNyeXB0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVjcnlwdENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEluY29ycmVjdEtleUVycm9yXG4gICAgfCBJbnZhbGlkQ2lwaGVydGV4dEVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlQWxpYXMoXG4gICAgYXJnczogRGVsZXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlQ3VzdG9tS2V5U3RvcmUoXG4gICAgYXJnczogRGVsZXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVDdXN0b21LZXlTdG9yZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVIYXNDTUtzRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IEN1c3RvbUtleVN0b3JlTm90Rm91bmRFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVJbXBvcnRlZEtleU1hdGVyaWFsQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUltcG9ydGVkS2V5TWF0ZXJpYWwoXG4gICAgYXJnczogRGVsZXRlSW1wb3J0ZWRLZXlNYXRlcmlhbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUltcG9ydGVkS2V5TWF0ZXJpYWxDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVyaXZlU2hhcmVkU2VjcmV0Q29tbWFuZH1cbiAgICovXG4gIGRlcml2ZVNoYXJlZFNlY3JldChcbiAgICBhcmdzOiBEZXJpdmVTaGFyZWRTZWNyZXRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXJpdmVTaGFyZWRTZWNyZXRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVDdXN0b21LZXlTdG9yZXNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVDdXN0b21LZXlTdG9yZXMoXG4gICAgYXJnczogRGVzY3JpYmVDdXN0b21LZXlTdG9yZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZUN1c3RvbUtleVN0b3Jlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yXG4gICAgfCBJbnZhbGlkTWFya2VyRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVLZXlDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVLZXkoXG4gICAgYXJnczogRGVzY3JpYmVLZXlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZUtleUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERpc2FibGVLZXlDb21tYW5kfVxuICAgKi9cbiAgZGlzYWJsZUtleShcbiAgICBhcmdzOiBEaXNhYmxlS2V5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGlzYWJsZUtleUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEaXNhYmxlS2V5Um90YXRpb25Db21tYW5kfVxuICAgKi9cbiAgZGlzYWJsZUtleVJvdGF0aW9uKFxuICAgIGFyZ3M6IERpc2FibGVLZXlSb3RhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERpc2FibGVLZXlSb3RhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEaXNjb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kfVxuICAgKi9cbiAgZGlzY29ubmVjdEN1c3RvbUtleVN0b3JlKFxuICAgIGFyZ3M6IERpc2Nvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERpc2Nvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEVuYWJsZUtleUNvbW1hbmR9XG4gICAqL1xuICBlbmFibGVLZXkoXG4gICAgYXJnczogRW5hYmxlS2V5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRW5hYmxlS2V5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRW5hYmxlS2V5Um90YXRpb25Db21tYW5kfVxuICAgKi9cbiAgZW5hYmxlS2V5Um90YXRpb24oXG4gICAgYXJnczogRW5hYmxlS2V5Um90YXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBFbmFibGVLZXlSb3RhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBFbmNyeXB0Q29tbWFuZH1cbiAgICovXG4gIGVuY3J5cHQoXG4gICAgYXJnczogRW5jcnlwdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEVuY3J5cHRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2VuZXJhdGVEYXRhS2V5Q29tbWFuZH1cbiAgICovXG4gIGdlbmVyYXRlRGF0YUtleShcbiAgICBhcmdzOiBHZW5lcmF0ZURhdGFLZXlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZW5lcmF0ZURhdGFLZXlDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2VuZXJhdGVEYXRhS2V5UGFpckNvbW1hbmR9XG4gICAqL1xuICBnZW5lcmF0ZURhdGFLZXlQYWlyKFxuICAgIGFyZ3M6IEdlbmVyYXRlRGF0YUtleVBhaXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZW5lcmF0ZURhdGFLZXlQYWlyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdlbmVyYXRlRGF0YUtleVBhaXJXaXRob3V0UGxhaW50ZXh0Q29tbWFuZH1cbiAgICovXG4gIGdlbmVyYXRlRGF0YUtleVBhaXJXaXRob3V0UGxhaW50ZXh0KFxuICAgIGFyZ3M6IEdlbmVyYXRlRGF0YUtleVBhaXJXaXRob3V0UGxhaW50ZXh0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2VuZXJhdGVEYXRhS2V5UGFpcldpdGhvdXRQbGFpbnRleHRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2VuZXJhdGVEYXRhS2V5V2l0aG91dFBsYWludGV4dENvbW1hbmR9XG4gICAqL1xuICBnZW5lcmF0ZURhdGFLZXlXaXRob3V0UGxhaW50ZXh0KFxuICAgIGFyZ3M6IEdlbmVyYXRlRGF0YUtleVdpdGhvdXRQbGFpbnRleHRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZW5lcmF0ZURhdGFLZXlXaXRob3V0UGxhaW50ZXh0Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdlbmVyYXRlTWFjQ29tbWFuZH1cbiAgICovXG4gIGdlbmVyYXRlTWFjKFxuICAgIGFyZ3M6IEdlbmVyYXRlTWFjQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2VuZXJhdGVNYWNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2VuZXJhdGVSYW5kb21Db21tYW5kfVxuICAgKi9cbiAgZ2VuZXJhdGVSYW5kb20oXG4gICAgYXJnczogR2VuZXJhdGVSYW5kb21Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZW5lcmF0ZVJhbmRvbUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEtleVBvbGljeUNvbW1hbmR9XG4gICAqL1xuICBnZXRLZXlQb2xpY3koXG4gICAgYXJnczogR2V0S2V5UG9saWN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0S2V5UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEtleVJvdGF0aW9uU3RhdHVzQ29tbWFuZH1cbiAgICovXG4gIGdldEtleVJvdGF0aW9uU3RhdHVzKFxuICAgIGFyZ3M6IEdldEtleVJvdGF0aW9uU3RhdHVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0S2V5Um90YXRpb25TdGF0dXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0UGFyYW1ldGVyc0ZvckltcG9ydENvbW1hbmR9XG4gICAqL1xuICBnZXRQYXJhbWV0ZXJzRm9ySW1wb3J0KFxuICAgIGFyZ3M6IEdldFBhcmFtZXRlcnNGb3JJbXBvcnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRQYXJhbWV0ZXJzRm9ySW1wb3J0Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFB1YmxpY0tleUNvbW1hbmR9XG4gICAqL1xuICBnZXRQdWJsaWNLZXkoXG4gICAgYXJnczogR2V0UHVibGljS2V5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0UHVibGljS2V5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEludmFsaWRHcmFudFRva2VuRXJyb3JcbiAgICB8IEludmFsaWRLZXlVc2FnZUVycm9yXG4gICAgfCBLZXlVbmF2YWlsYWJsZUVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBJbXBvcnRLZXlNYXRlcmlhbENvbW1hbmR9XG4gICAqL1xuICBpbXBvcnRLZXlNYXRlcmlhbChcbiAgICBhcmdzOiBJbXBvcnRLZXlNYXRlcmlhbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEltcG9ydEtleU1hdGVyaWFsQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBFeHBpcmVkSW1wb3J0VG9rZW5FcnJvclxuICAgIHwgSW5jb3JyZWN0S2V5TWF0ZXJpYWxFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkQ2lwaGVydGV4dEVycm9yXG4gICAgfCBJbnZhbGlkSW1wb3J0VG9rZW5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEFsaWFzZXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEFsaWFzZXMoXG4gICAgYXJnczogTGlzdEFsaWFzZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0QWxpYXNlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkTWFya2VyRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEdyYW50c0NvbW1hbmR9XG4gICAqL1xuICBsaXN0R3JhbnRzKFxuICAgIGFyZ3M6IExpc3RHcmFudHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0R3JhbnRzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEludmFsaWRHcmFudElkRXJyb3JcbiAgICB8IEludmFsaWRNYXJrZXJFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEtleVBvbGljaWVzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RLZXlQb2xpY2llcyhcbiAgICBhcmdzOiBMaXN0S2V5UG9saWNpZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0S2V5UG9saWNpZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEtleVJvdGF0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0S2V5Um90YXRpb25zKFxuICAgIGFyZ3M6IExpc3RLZXlSb3RhdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0S2V5Um90YXRpb25zQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEludmFsaWRNYXJrZXJFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEtleXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEtleXMoXG4gICAgYXJnczogTGlzdEtleXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0S2V5c0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yIHwgSW52YWxpZE1hcmtlckVycm9yIHwgS01TSW50ZXJuYWxFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0UmVzb3VyY2VUYWdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RSZXNvdXJjZVRhZ3MoXG4gICAgYXJnczogTGlzdFJlc291cmNlVGFnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RSZXNvdXJjZVRhZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgSW52YWxpZE1hcmtlckVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RSZXRpcmFibGVHcmFudHNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFJldGlyYWJsZUdyYW50cyhcbiAgICBhcmdzOiBMaXN0UmV0aXJhYmxlR3JhbnRzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFJldGlyYWJsZUdyYW50c0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkTWFya2VyRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0S2V5UG9saWN5Q29tbWFuZH1cbiAgICovXG4gIHB1dEtleVBvbGljeShcbiAgICBhcmdzOiBQdXRLZXlQb2xpY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRLZXlQb2xpY3lDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTWFsZm9ybWVkUG9saWN5RG9jdW1lbnRFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZUVuY3J5cHRDb21tYW5kfVxuICAgKi9cbiAgcmVFbmNyeXB0KFxuICAgIGFyZ3M6IFJlRW5jcnlwdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlRW5jcnlwdENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEluY29ycmVjdEtleUVycm9yXG4gICAgfCBJbnZhbGlkQ2lwaGVydGV4dEVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVwbGljYXRlS2V5Q29tbWFuZH1cbiAgICovXG4gIHJlcGxpY2F0ZUtleShcbiAgICBhcmdzOiBSZXBsaWNhdGVLZXlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZXBsaWNhdGVLZXlDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFscmVhZHlFeGlzdHNFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBNYWxmb3JtZWRQb2xpY3lEb2N1bWVudEVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBUYWdFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZXRpcmVHcmFudENvbW1hbmR9XG4gICAqL1xuICByZXRpcmVHcmFudChcbiAgICBhcmdzOiBSZXRpcmVHcmFudENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJldGlyZUdyYW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRJZEVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZXZva2VHcmFudENvbW1hbmR9XG4gICAqL1xuICByZXZva2VHcmFudChcbiAgICBhcmdzOiBSZXZva2VHcmFudENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJldm9rZUdyYW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRJZEVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSb3RhdGVLZXlPbkRlbWFuZENvbW1hbmR9XG4gICAqL1xuICByb3RhdGVLZXlPbkRlbWFuZChcbiAgICBhcmdzOiBSb3RhdGVLZXlPbkRlbWFuZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJvdGF0ZUtleU9uRGVtYW5kQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2NoZWR1bGVLZXlEZWxldGlvbkNvbW1hbmR9XG4gICAqL1xuICBzY2hlZHVsZUtleURlbGV0aW9uKFxuICAgIGFyZ3M6IFNjaGVkdWxlS2V5RGVsZXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTY2hlZHVsZUtleURlbGV0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNpZ25Db21tYW5kfVxuICAgKi9cbiAgc2lnbihcbiAgICBhcmdzOiBTaWduQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2lnbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgRGlzYWJsZWRFcnJvclxuICAgIHwgRHJ5UnVuT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludmFsaWRHcmFudFRva2VuRXJyb3JcbiAgICB8IEludmFsaWRLZXlVc2FnZUVycm9yXG4gICAgfCBLZXlVbmF2YWlsYWJsZUVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBUYWdSZXNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB0YWdSZXNvdXJjZShcbiAgICBhcmdzOiBUYWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFRhZ0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVudGFnUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgdW50YWdSZXNvdXJjZShcbiAgICBhcmdzOiBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVW50YWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZEFybkVycm9yXG4gICAgfCBLTVNJbnRlcm5hbEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgVGFnRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQWxpYXMoXG4gICAgYXJnczogVXBkYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGVwZW5kZW5jeVRpbWVvdXRFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVDdXN0b21LZXlTdG9yZShcbiAgICBhcmdzOiBVcGRhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUN1c3RvbUtleVN0b3JlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDbG91ZEhzbUNsdXN0ZXJJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBDbG91ZEhzbUNsdXN0ZXJOb3RBY3RpdmVFcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVyTm90Rm91bmRFcnJvclxuICAgIHwgQ2xvdWRIc21DbHVzdGVyTm90UmVsYXRlZEVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZUludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZU5hbWVJblVzZUVycm9yXG4gICAgfCBDdXN0b21LZXlTdG9yZU5vdEZvdW5kRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IFhrc1Byb3h5SW5jb3JyZWN0QXV0aGVudGljYXRpb25DcmVkZW50aWFsRXJyb3JcbiAgICB8IFhrc1Byb3h5SW52YWxpZENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgWGtzUHJveHlJbnZhbGlkUmVzcG9uc2VFcnJvclxuICAgIHwgWGtzUHJveHlVcmlFbmRwb2ludEluVXNlRXJyb3JcbiAgICB8IFhrc1Byb3h5VXJpSW5Vc2VFcnJvclxuICAgIHwgWGtzUHJveHlVcmlVbnJlYWNoYWJsZUVycm9yXG4gICAgfCBYa3NQcm94eVZwY0VuZHBvaW50U2VydmljZUluVXNlRXJyb3JcbiAgICB8IFhrc1Byb3h5VnBjRW5kcG9pbnRTZXJ2aWNlSW52YWxpZENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgWGtzUHJveHlWcGNFbmRwb2ludFNlcnZpY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUtleURlc2NyaXB0aW9uQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUtleURlc2NyaXB0aW9uKFxuICAgIGFyZ3M6IFVwZGF0ZUtleURlc2NyaXB0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlS2V5RGVzY3JpcHRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERlcGVuZGVuY3lUaW1lb3V0RXJyb3JcbiAgICB8IEludmFsaWRBcm5FcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlUHJpbWFyeVJlZ2lvbkNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVQcmltYXJ5UmVnaW9uKFxuICAgIGFyZ3M6IFVwZGF0ZVByaW1hcnlSZWdpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVQcmltYXJ5UmVnaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBJbnZhbGlkQXJuRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFZlcmlmeUNvbW1hbmR9XG4gICAqL1xuICB2ZXJpZnkoXG4gICAgYXJnczogVmVyaWZ5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVmVyaWZ5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEZXBlbmRlbmN5VGltZW91dEVycm9yXG4gICAgfCBEaXNhYmxlZEVycm9yXG4gICAgfCBEcnlSdW5PcGVyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEdyYW50VG9rZW5FcnJvclxuICAgIHwgSW52YWxpZEtleVVzYWdlRXJyb3JcbiAgICB8IEtleVVuYXZhaWxhYmxlRXJyb3JcbiAgICB8IEtNU0ludGVybmFsRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTaWduYXR1cmVFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVmVyaWZ5TWFjQ29tbWFuZH1cbiAgICovXG4gIHZlcmlmeU1hYyhcbiAgICBhcmdzOiBWZXJpZnlNYWNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBWZXJpZnlNYWNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERpc2FibGVkRXJyb3JcbiAgICB8IERyeVJ1bk9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkR3JhbnRUb2tlbkVycm9yXG4gICAgfCBJbnZhbGlkS2V5VXNhZ2VFcnJvclxuICAgIHwgS2V5VW5hdmFpbGFibGVFcnJvclxuICAgIHwgS01TSW50ZXJuYWxFcnJvclxuICAgIHwgS01TSW52YWxpZE1hY0Vycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xufVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZUtNU1NlcnZpY2UgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICBjb25zdCBjbGllbnQgPSB5aWVsZCogXyhLTVNDbGllbnRJbnN0YW5jZSk7XG5cbiAgcmV0dXJuIFJlY29yZC50b0VudHJpZXMoY29tbWFuZHMpLnJlZHVjZSgoYWNjLCBbY29tbWFuZF0pID0+IHtcbiAgICBjb25zdCBDb21tYW5kQ3RvciA9IGNvbW1hbmRzW2NvbW1hbmRdIGFzIGFueTtcbiAgICBjb25zdCBtZXRob2RJbXBsID0gKGFyZ3M6IGFueSwgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucykgPT5cbiAgICAgIEVmZmVjdC50cnlQcm9taXNlKHtcbiAgICAgICAgdHJ5OiAoYWJvcnRTaWduYWwpID0+XG4gICAgICAgICAgY2xpZW50LnNlbmQobmV3IENvbW1hbmRDdG9yKGFyZ3MpLCB7XG4gICAgICAgICAgICAuLi4ob3B0aW9ucyA/PyB7fSksXG4gICAgICAgICAgICBhYm9ydFNpZ25hbCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2g6IChlKSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZSBpbnN0YW5jZW9mIEtNU1NlcnZpY2VFeGNlcHRpb24gJiZcbiAgICAgICAgICAgIEFsbFNlcnZpY2VFcnJvcnMuaW5jbHVkZXMoZS5uYW1lKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgU2VydmljZUV4Y2VwdGlvbiA9IERhdGEudGFnZ2VkPFxuICAgICAgICAgICAgICBUYWdnZWRFeGNlcHRpb248S01TU2VydmljZUV4Y2VwdGlvbj5cbiAgICAgICAgICAgID4oZS5uYW1lKTtcblxuICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2VFeGNlcHRpb24oe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBTZGtFcnJvcih7XG4gICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgIG5hbWU6IFwiU2RrRXJyb3JcIixcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IChjb21tYW5kWzBdLnRvTG93ZXJDYXNlKCkgKyBjb21tYW5kLnNsaWNlKDEpKS5yZXBsYWNlKFxuICAgICAgL0NvbW1hbmQkLyxcbiAgICAgIFwiXCIsXG4gICAgKTtcbiAgICByZXR1cm4geyAuLi5hY2MsIFttZXRob2ROYW1lXTogbWV0aG9kSW1wbCB9O1xuICB9LCB7fSkgYXMgS01TU2VydmljZSQ7XG59KTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBtb2RlbHNcbiAqL1xuZXhwb3J0IGNsYXNzIEtNU1NlcnZpY2UgZXh0ZW5kcyBFZmZlY3QuVGFnKFwiQGVmZmVjdC1hd3MvY2xpZW50LWttcy9LTVNTZXJ2aWNlXCIpPFxuICBLTVNTZXJ2aWNlLFxuICBLTVNTZXJ2aWNlJFxuPigpIHtcbiAgc3RhdGljIHJlYWRvbmx5IGRlZmF1bHRMYXllciA9IExheWVyLmVmZmVjdCh0aGlzLCBtYWtlS01TU2VydmljZSkucGlwZShcbiAgICBMYXllci5wcm92aWRlKEtNU0NsaWVudEluc3RhbmNlTGF5ZXIpLFxuICAgIExheWVyLnByb3ZpZGUoRGVmYXVsdEtNU0NsaWVudENvbmZpZ0xheWVyKSxcbiAgKTtcbiAgc3RhdGljIHJlYWRvbmx5IGxheWVyID0gKGNvbmZpZzogS01TQ2xpZW50Q29uZmlnKSA9PlxuICAgIExheWVyLmVmZmVjdCh0aGlzLCBtYWtlS01TU2VydmljZSkucGlwZShcbiAgICAgIExheWVyLnByb3ZpZGUoS01TQ2xpZW50SW5zdGFuY2VMYXllciksXG4gICAgICBMYXllci5wcm92aWRlKFxuICAgICAgICBMYXllci5lZmZlY3QoXG4gICAgICAgICAgS01TQ2xpZW50SW5zdGFuY2VDb25maWcsXG4gICAgICAgICAgbWFrZURlZmF1bHRLTVNDbGllbnRJbnN0YW5jZUNvbmZpZy5waXBlKFxuICAgICAgICAgICAgRWZmZWN0Lm1hcCgoZGVmYXVsdENvbmZpZykgPT4gKHsgLi4uZGVmYXVsdENvbmZpZywgLi4uY29uZmlnIH0pKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApO1xuICBzdGF0aWMgcmVhZG9ubHkgYmFzZUxheWVyID0gKFxuICAgIGV2YWx1YXRlOiAoZGVmYXVsdENvbmZpZzogS01TQ2xpZW50Q29uZmlnKSA9PiBLTVNDbGllbnQsXG4gICkgPT5cbiAgICBMYXllci5lZmZlY3QodGhpcywgbWFrZUtNU1NlcnZpY2UpLnBpcGUoXG4gICAgICBMYXllci5wcm92aWRlKFxuICAgICAgICBMYXllci5lZmZlY3QoXG4gICAgICAgICAgS01TQ2xpZW50SW5zdGFuY2UsXG4gICAgICAgICAgRWZmZWN0Lm1hcChtYWtlRGVmYXVsdEtNU0NsaWVudEluc3RhbmNlQ29uZmlnLCBldmFsdWF0ZSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICk7XG59XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbW9kZWxzXG4gKiBAYWxpYXMgS01TU2VydmljZVxuICovXG5leHBvcnQgY29uc3QgS01TID0gS01TU2VydmljZTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqIEBkZXByZWNhdGVkIHVzZSBLTVMuYmFzZUxheWVyIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IEJhc2VLTVNTZXJ2aWNlTGF5ZXIgPSBMYXllci5lZmZlY3QoS01TU2VydmljZSwgbWFrZUtNU1NlcnZpY2UpO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICogQGRlcHJlY2F0ZWQgdXNlIEtNUy5sYXllciBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBLTVNTZXJ2aWNlTGF5ZXIgPSBCYXNlS01TU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoS01TQ2xpZW50SW5zdGFuY2VMYXllciksXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICogQGRlcHJlY2F0ZWQgdXNlIEtNUy5kZWZhdWx0TGF5ZXIgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdEtNU1NlcnZpY2VMYXllciA9IEtNU1NlcnZpY2UuZGVmYXVsdExheWVyO1xuIl19
package/package.json CHANGED
@@ -33,7 +33,7 @@
33
33
  "publishConfig": {
34
34
  "access": "public"
35
35
  },
36
- "version": "1.0.0",
36
+ "version": "1.1.0",
37
37
  "types": "lib/index.d.ts",
38
38
  "module": "lib/esm/index.js",
39
39
  "sideEffects": [],