@effect-aws/client-kms 1.0.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.
@@ -0,0 +1,314 @@
1
+ /**
2
+ * @since 1.0.0
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";
5
+ import { Effect, Layer } from "effect";
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
+ import { KMSClientInstance } from "./KMSClientInstance";
8
+ interface HttpHandlerOptions {
9
+ /**
10
+ * The maximum time in milliseconds that the connection phase of a request
11
+ * may take before the connection attempt is abandoned.
12
+ */
13
+ requestTimeout?: number;
14
+ }
15
+ interface KMSService$ {
16
+ readonly _: unique symbol;
17
+ /**
18
+ * @see {@link CancelKeyDeletionCommand}
19
+ */
20
+ cancelKeyDeletion(args: CancelKeyDeletionCommandInput, options?: HttpHandlerOptions): Effect.Effect<CancelKeyDeletionCommandOutput, SdkError | DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
21
+ /**
22
+ * @see {@link ConnectCustomKeyStoreCommand}
23
+ */
24
+ connectCustomKeyStore(args: ConnectCustomKeyStoreCommandInput, options?: HttpHandlerOptions): Effect.Effect<ConnectCustomKeyStoreCommandOutput, SdkError | CloudHsmClusterInvalidConfigurationError | CloudHsmClusterNotActiveError | CustomKeyStoreInvalidStateError | CustomKeyStoreNotFoundError | KMSInternalError>;
25
+ /**
26
+ * @see {@link CreateAliasCommand}
27
+ */
28
+ createAlias(args: CreateAliasCommandInput, options?: HttpHandlerOptions): Effect.Effect<CreateAliasCommandOutput, SdkError | AlreadyExistsError | DependencyTimeoutError | InvalidAliasNameError | KMSInternalError | KMSInvalidStateError | LimitExceededError | NotFoundError>;
29
+ /**
30
+ * @see {@link CreateCustomKeyStoreCommand}
31
+ */
32
+ createCustomKeyStore(args: CreateCustomKeyStoreCommandInput, options?: HttpHandlerOptions): Effect.Effect<CreateCustomKeyStoreCommandOutput, SdkError | CloudHsmClusterInUseError | CloudHsmClusterInvalidConfigurationError | CloudHsmClusterNotActiveError | CloudHsmClusterNotFoundError | CustomKeyStoreNameInUseError | IncorrectTrustAnchorError | KMSInternalError | LimitExceededError | XksProxyIncorrectAuthenticationCredentialError | XksProxyInvalidConfigurationError | XksProxyInvalidResponseError | XksProxyUriEndpointInUseError | XksProxyUriInUseError | XksProxyUriUnreachableError | XksProxyVpcEndpointServiceInUseError | XksProxyVpcEndpointServiceInvalidConfigurationError | XksProxyVpcEndpointServiceNotFoundError>;
33
+ /**
34
+ * @see {@link CreateGrantCommand}
35
+ */
36
+ createGrant(args: CreateGrantCommandInput, options?: HttpHandlerOptions): Effect.Effect<CreateGrantCommandOutput, SdkError | DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidArnError | InvalidGrantTokenError | KMSInternalError | KMSInvalidStateError | LimitExceededError | NotFoundError>;
37
+ /**
38
+ * @see {@link CreateKeyCommand}
39
+ */
40
+ createKey(args: CreateKeyCommandInput, options?: HttpHandlerOptions): Effect.Effect<CreateKeyCommandOutput, SdkError | CloudHsmClusterInvalidConfigurationError | CustomKeyStoreInvalidStateError | CustomKeyStoreNotFoundError | DependencyTimeoutError | InvalidArnError | KMSInternalError | LimitExceededError | MalformedPolicyDocumentError | TagError | UnsupportedOperationError | XksKeyAlreadyInUseError | XksKeyInvalidConfigurationError | XksKeyNotFoundError>;
41
+ /**
42
+ * @see {@link DecryptCommand}
43
+ */
44
+ decrypt(args: DecryptCommandInput, options?: HttpHandlerOptions): Effect.Effect<DecryptCommandOutput, SdkError | DependencyTimeoutError | DisabledError | DryRunOperationError | IncorrectKeyError | InvalidCiphertextError | InvalidGrantTokenError | InvalidKeyUsageError | KeyUnavailableError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
45
+ /**
46
+ * @see {@link DeleteAliasCommand}
47
+ */
48
+ deleteAlias(args: DeleteAliasCommandInput, options?: HttpHandlerOptions): Effect.Effect<DeleteAliasCommandOutput, SdkError | DependencyTimeoutError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
49
+ /**
50
+ * @see {@link DeleteCustomKeyStoreCommand}
51
+ */
52
+ deleteCustomKeyStore(args: DeleteCustomKeyStoreCommandInput, options?: HttpHandlerOptions): Effect.Effect<DeleteCustomKeyStoreCommandOutput, SdkError | CustomKeyStoreHasCMKsError | CustomKeyStoreInvalidStateError | CustomKeyStoreNotFoundError | KMSInternalError>;
53
+ /**
54
+ * @see {@link DeleteImportedKeyMaterialCommand}
55
+ */
56
+ deleteImportedKeyMaterial(args: DeleteImportedKeyMaterialCommandInput, options?: HttpHandlerOptions): Effect.Effect<DeleteImportedKeyMaterialCommandOutput, SdkError | DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError>;
57
+ /**
58
+ * @see {@link DeriveSharedSecretCommand}
59
+ */
60
+ deriveSharedSecret(args: DeriveSharedSecretCommandInput, options?: HttpHandlerOptions): Effect.Effect<DeriveSharedSecretCommandOutput, SdkError | DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KeyUnavailableError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
61
+ /**
62
+ * @see {@link DescribeCustomKeyStoresCommand}
63
+ */
64
+ describeCustomKeyStores(args: DescribeCustomKeyStoresCommandInput, options?: HttpHandlerOptions): Effect.Effect<DescribeCustomKeyStoresCommandOutput, SdkError | CustomKeyStoreNotFoundError | InvalidMarkerError | KMSInternalError>;
65
+ /**
66
+ * @see {@link DescribeKeyCommand}
67
+ */
68
+ describeKey(args: DescribeKeyCommandInput, options?: HttpHandlerOptions): Effect.Effect<DescribeKeyCommandOutput, SdkError | DependencyTimeoutError | InvalidArnError | KMSInternalError | NotFoundError>;
69
+ /**
70
+ * @see {@link DisableKeyCommand}
71
+ */
72
+ disableKey(args: DisableKeyCommandInput, options?: HttpHandlerOptions): Effect.Effect<DisableKeyCommandOutput, SdkError | DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
73
+ /**
74
+ * @see {@link DisableKeyRotationCommand}
75
+ */
76
+ disableKeyRotation(args: DisableKeyRotationCommandInput, options?: HttpHandlerOptions): Effect.Effect<DisableKeyRotationCommandOutput, SdkError | DependencyTimeoutError | DisabledError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError>;
77
+ /**
78
+ * @see {@link DisconnectCustomKeyStoreCommand}
79
+ */
80
+ disconnectCustomKeyStore(args: DisconnectCustomKeyStoreCommandInput, options?: HttpHandlerOptions): Effect.Effect<DisconnectCustomKeyStoreCommandOutput, SdkError | CustomKeyStoreInvalidStateError | CustomKeyStoreNotFoundError | KMSInternalError>;
81
+ /**
82
+ * @see {@link EnableKeyCommand}
83
+ */
84
+ enableKey(args: EnableKeyCommandInput, options?: HttpHandlerOptions): Effect.Effect<EnableKeyCommandOutput, SdkError | DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | LimitExceededError | NotFoundError>;
85
+ /**
86
+ * @see {@link EnableKeyRotationCommand}
87
+ */
88
+ enableKeyRotation(args: EnableKeyRotationCommandInput, options?: HttpHandlerOptions): Effect.Effect<EnableKeyRotationCommandOutput, SdkError | DependencyTimeoutError | DisabledError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError>;
89
+ /**
90
+ * @see {@link EncryptCommand}
91
+ */
92
+ encrypt(args: EncryptCommandInput, options?: HttpHandlerOptions): Effect.Effect<EncryptCommandOutput, SdkError | DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KeyUnavailableError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
93
+ /**
94
+ * @see {@link GenerateDataKeyCommand}
95
+ */
96
+ generateDataKey(args: GenerateDataKeyCommandInput, options?: HttpHandlerOptions): Effect.Effect<GenerateDataKeyCommandOutput, SdkError | DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KeyUnavailableError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
97
+ /**
98
+ * @see {@link GenerateDataKeyPairCommand}
99
+ */
100
+ generateDataKeyPair(args: GenerateDataKeyPairCommandInput, options?: HttpHandlerOptions): Effect.Effect<GenerateDataKeyPairCommandOutput, SdkError | DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KeyUnavailableError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError>;
101
+ /**
102
+ * @see {@link GenerateDataKeyPairWithoutPlaintextCommand}
103
+ */
104
+ generateDataKeyPairWithoutPlaintext(args: GenerateDataKeyPairWithoutPlaintextCommandInput, options?: HttpHandlerOptions): Effect.Effect<GenerateDataKeyPairWithoutPlaintextCommandOutput, SdkError | DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KeyUnavailableError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError>;
105
+ /**
106
+ * @see {@link GenerateDataKeyWithoutPlaintextCommand}
107
+ */
108
+ generateDataKeyWithoutPlaintext(args: GenerateDataKeyWithoutPlaintextCommandInput, options?: HttpHandlerOptions): Effect.Effect<GenerateDataKeyWithoutPlaintextCommandOutput, SdkError | DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KeyUnavailableError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
109
+ /**
110
+ * @see {@link GenerateMacCommand}
111
+ */
112
+ generateMac(args: GenerateMacCommandInput, options?: HttpHandlerOptions): Effect.Effect<GenerateMacCommandOutput, SdkError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KeyUnavailableError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
113
+ /**
114
+ * @see {@link GenerateRandomCommand}
115
+ */
116
+ generateRandom(args: GenerateRandomCommandInput, options?: HttpHandlerOptions): Effect.Effect<GenerateRandomCommandOutput, SdkError | CustomKeyStoreInvalidStateError | CustomKeyStoreNotFoundError | DependencyTimeoutError | KMSInternalError | UnsupportedOperationError>;
117
+ /**
118
+ * @see {@link GetKeyPolicyCommand}
119
+ */
120
+ getKeyPolicy(args: GetKeyPolicyCommandInput, options?: HttpHandlerOptions): Effect.Effect<GetKeyPolicyCommandOutput, SdkError | DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
121
+ /**
122
+ * @see {@link GetKeyRotationStatusCommand}
123
+ */
124
+ getKeyRotationStatus(args: GetKeyRotationStatusCommandInput, options?: HttpHandlerOptions): Effect.Effect<GetKeyRotationStatusCommandOutput, SdkError | DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError>;
125
+ /**
126
+ * @see {@link GetParametersForImportCommand}
127
+ */
128
+ getParametersForImport(args: GetParametersForImportCommandInput, options?: HttpHandlerOptions): Effect.Effect<GetParametersForImportCommandOutput, SdkError | DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError>;
129
+ /**
130
+ * @see {@link GetPublicKeyCommand}
131
+ */
132
+ getPublicKey(args: GetPublicKeyCommandInput, options?: HttpHandlerOptions): Effect.Effect<GetPublicKeyCommandOutput, SdkError | DependencyTimeoutError | DisabledError | InvalidArnError | InvalidGrantTokenError | InvalidKeyUsageError | KeyUnavailableError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError>;
133
+ /**
134
+ * @see {@link ImportKeyMaterialCommand}
135
+ */
136
+ importKeyMaterial(args: ImportKeyMaterialCommandInput, options?: HttpHandlerOptions): Effect.Effect<ImportKeyMaterialCommandOutput, SdkError | DependencyTimeoutError | ExpiredImportTokenError | IncorrectKeyMaterialError | InvalidArnError | InvalidCiphertextError | InvalidImportTokenError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError>;
137
+ /**
138
+ * @see {@link ListAliasesCommand}
139
+ */
140
+ listAliases(args: ListAliasesCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListAliasesCommandOutput, SdkError | DependencyTimeoutError | InvalidArnError | InvalidMarkerError | KMSInternalError | NotFoundError>;
141
+ /**
142
+ * @see {@link ListGrantsCommand}
143
+ */
144
+ listGrants(args: ListGrantsCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListGrantsCommandOutput, SdkError | DependencyTimeoutError | InvalidArnError | InvalidGrantIdError | InvalidMarkerError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
145
+ /**
146
+ * @see {@link ListKeyPoliciesCommand}
147
+ */
148
+ listKeyPolicies(args: ListKeyPoliciesCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListKeyPoliciesCommandOutput, SdkError | DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
149
+ /**
150
+ * @see {@link ListKeyRotationsCommand}
151
+ */
152
+ listKeyRotations(args: ListKeyRotationsCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListKeyRotationsCommandOutput, SdkError | InvalidArnError | InvalidMarkerError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError>;
153
+ /**
154
+ * @see {@link ListKeysCommand}
155
+ */
156
+ listKeys(args: ListKeysCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListKeysCommandOutput, SdkError | DependencyTimeoutError | InvalidMarkerError | KMSInternalError>;
157
+ /**
158
+ * @see {@link ListResourceTagsCommand}
159
+ */
160
+ listResourceTags(args: ListResourceTagsCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListResourceTagsCommandOutput, SdkError | InvalidArnError | InvalidMarkerError | KMSInternalError | NotFoundError>;
161
+ /**
162
+ * @see {@link ListRetirableGrantsCommand}
163
+ */
164
+ listRetirableGrants(args: ListRetirableGrantsCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListRetirableGrantsCommandOutput, SdkError | DependencyTimeoutError | InvalidArnError | InvalidMarkerError | KMSInternalError | NotFoundError>;
165
+ /**
166
+ * @see {@link PutKeyPolicyCommand}
167
+ */
168
+ putKeyPolicy(args: PutKeyPolicyCommandInput, options?: HttpHandlerOptions): Effect.Effect<PutKeyPolicyCommandOutput, SdkError | DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | LimitExceededError | MalformedPolicyDocumentError | NotFoundError | UnsupportedOperationError>;
169
+ /**
170
+ * @see {@link ReEncryptCommand}
171
+ */
172
+ reEncrypt(args: ReEncryptCommandInput, options?: HttpHandlerOptions): Effect.Effect<ReEncryptCommandOutput, SdkError | DependencyTimeoutError | DisabledError | DryRunOperationError | IncorrectKeyError | InvalidCiphertextError | InvalidGrantTokenError | InvalidKeyUsageError | KeyUnavailableError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
173
+ /**
174
+ * @see {@link ReplicateKeyCommand}
175
+ */
176
+ replicateKey(args: ReplicateKeyCommandInput, options?: HttpHandlerOptions): Effect.Effect<ReplicateKeyCommandOutput, SdkError | AlreadyExistsError | DisabledError | InvalidArnError | KMSInternalError | KMSInvalidStateError | LimitExceededError | MalformedPolicyDocumentError | NotFoundError | TagError | UnsupportedOperationError>;
177
+ /**
178
+ * @see {@link RetireGrantCommand}
179
+ */
180
+ retireGrant(args: RetireGrantCommandInput, options?: HttpHandlerOptions): Effect.Effect<RetireGrantCommandOutput, SdkError | DependencyTimeoutError | DryRunOperationError | InvalidArnError | InvalidGrantIdError | InvalidGrantTokenError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
181
+ /**
182
+ * @see {@link RevokeGrantCommand}
183
+ */
184
+ revokeGrant(args: RevokeGrantCommandInput, options?: HttpHandlerOptions): Effect.Effect<RevokeGrantCommandOutput, SdkError | DependencyTimeoutError | DryRunOperationError | InvalidArnError | InvalidGrantIdError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
185
+ /**
186
+ * @see {@link RotateKeyOnDemandCommand}
187
+ */
188
+ rotateKeyOnDemand(args: RotateKeyOnDemandCommandInput, options?: HttpHandlerOptions): Effect.Effect<RotateKeyOnDemandCommandOutput, SdkError | ConflictError | DependencyTimeoutError | DisabledError | InvalidArnError | KMSInternalError | KMSInvalidStateError | LimitExceededError | NotFoundError | UnsupportedOperationError>;
189
+ /**
190
+ * @see {@link ScheduleKeyDeletionCommand}
191
+ */
192
+ scheduleKeyDeletion(args: ScheduleKeyDeletionCommandInput, options?: HttpHandlerOptions): Effect.Effect<ScheduleKeyDeletionCommandOutput, SdkError | DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
193
+ /**
194
+ * @see {@link SignCommand}
195
+ */
196
+ sign(args: SignCommandInput, options?: HttpHandlerOptions): Effect.Effect<SignCommandOutput, SdkError | DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KeyUnavailableError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
197
+ /**
198
+ * @see {@link TagResourceCommand}
199
+ */
200
+ tagResource(args: TagResourceCommandInput, options?: HttpHandlerOptions): Effect.Effect<TagResourceCommandOutput, SdkError | InvalidArnError | KMSInternalError | KMSInvalidStateError | LimitExceededError | NotFoundError | TagError>;
201
+ /**
202
+ * @see {@link UntagResourceCommand}
203
+ */
204
+ untagResource(args: UntagResourceCommandInput, options?: HttpHandlerOptions): Effect.Effect<UntagResourceCommandOutput, SdkError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | TagError>;
205
+ /**
206
+ * @see {@link UpdateAliasCommand}
207
+ */
208
+ updateAlias(args: UpdateAliasCommandInput, options?: HttpHandlerOptions): Effect.Effect<UpdateAliasCommandOutput, SdkError | DependencyTimeoutError | KMSInternalError | KMSInvalidStateError | LimitExceededError | NotFoundError>;
209
+ /**
210
+ * @see {@link UpdateCustomKeyStoreCommand}
211
+ */
212
+ updateCustomKeyStore(args: UpdateCustomKeyStoreCommandInput, options?: HttpHandlerOptions): Effect.Effect<UpdateCustomKeyStoreCommandOutput, SdkError | CloudHsmClusterInvalidConfigurationError | CloudHsmClusterNotActiveError | CloudHsmClusterNotFoundError | CloudHsmClusterNotRelatedError | CustomKeyStoreInvalidStateError | CustomKeyStoreNameInUseError | CustomKeyStoreNotFoundError | KMSInternalError | XksProxyIncorrectAuthenticationCredentialError | XksProxyInvalidConfigurationError | XksProxyInvalidResponseError | XksProxyUriEndpointInUseError | XksProxyUriInUseError | XksProxyUriUnreachableError | XksProxyVpcEndpointServiceInUseError | XksProxyVpcEndpointServiceInvalidConfigurationError | XksProxyVpcEndpointServiceNotFoundError>;
213
+ /**
214
+ * @see {@link UpdateKeyDescriptionCommand}
215
+ */
216
+ updateKeyDescription(args: UpdateKeyDescriptionCommandInput, options?: HttpHandlerOptions): Effect.Effect<UpdateKeyDescriptionCommandOutput, SdkError | DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError>;
217
+ /**
218
+ * @see {@link UpdatePrimaryRegionCommand}
219
+ */
220
+ updatePrimaryRegion(args: UpdatePrimaryRegionCommandInput, options?: HttpHandlerOptions): Effect.Effect<UpdatePrimaryRegionCommandOutput, SdkError | DisabledError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError>;
221
+ /**
222
+ * @see {@link VerifyCommand}
223
+ */
224
+ verify(args: VerifyCommandInput, options?: HttpHandlerOptions): Effect.Effect<VerifyCommandOutput, SdkError | DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KeyUnavailableError | KMSInternalError | KMSInvalidSignatureError | KMSInvalidStateError | NotFoundError>;
225
+ /**
226
+ * @see {@link VerifyMacCommand}
227
+ */
228
+ verifyMac(args: VerifyMacCommandInput, options?: HttpHandlerOptions): Effect.Effect<VerifyMacCommandOutput, SdkError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KeyUnavailableError | KMSInternalError | KMSInvalidMacError | KMSInvalidStateError | NotFoundError>;
229
+ }
230
+ declare const KMSService_base: import("effect/Context").TagClass<KMSService, "@effect-aws/client-kms/KMSService", KMSService$> & {
231
+ readonly _: Effect.Effect<KMSService$["_"], never, KMSService>;
232
+ cancelKeyDeletion: (args: CancelKeyDeletionCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<CancelKeyDeletionCommandOutput, DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | SdkError, KMSService>;
233
+ connectCustomKeyStore: (args: ConnectCustomKeyStoreCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ConnectCustomKeyStoreCommandOutput, CloudHsmClusterInvalidConfigurationError | CloudHsmClusterNotActiveError | CustomKeyStoreInvalidStateError | CustomKeyStoreNotFoundError | KMSInternalError | SdkError, KMSService>;
234
+ createAlias: (args: CreateAliasCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<CreateAliasCommandOutput, AlreadyExistsError | DependencyTimeoutError | InvalidAliasNameError | KMSInternalError | KMSInvalidStateError | LimitExceededError | NotFoundError | SdkError, KMSService>;
235
+ createCustomKeyStore: (args: CreateCustomKeyStoreCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<CreateCustomKeyStoreCommandOutput, CloudHsmClusterInUseError | CloudHsmClusterInvalidConfigurationError | CloudHsmClusterNotActiveError | CloudHsmClusterNotFoundError | CustomKeyStoreNameInUseError | IncorrectTrustAnchorError | KMSInternalError | LimitExceededError | XksProxyIncorrectAuthenticationCredentialError | XksProxyInvalidConfigurationError | XksProxyInvalidResponseError | XksProxyUriEndpointInUseError | XksProxyUriInUseError | XksProxyUriUnreachableError | XksProxyVpcEndpointServiceInUseError | XksProxyVpcEndpointServiceInvalidConfigurationError | XksProxyVpcEndpointServiceNotFoundError | SdkError, KMSService>;
236
+ createGrant: (args: CreateGrantCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<CreateGrantCommandOutput, DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidArnError | InvalidGrantTokenError | KMSInternalError | KMSInvalidStateError | LimitExceededError | NotFoundError | SdkError, KMSService>;
237
+ createKey: (args: CreateKeyCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<CreateKeyCommandOutput, CloudHsmClusterInvalidConfigurationError | CustomKeyStoreInvalidStateError | CustomKeyStoreNotFoundError | DependencyTimeoutError | InvalidArnError | KMSInternalError | LimitExceededError | MalformedPolicyDocumentError | TagError | UnsupportedOperationError | XksKeyAlreadyInUseError | XksKeyInvalidConfigurationError | XksKeyNotFoundError | SdkError, KMSService>;
238
+ decrypt: (args: DecryptCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DecryptCommandOutput, DependencyTimeoutError | DisabledError | DryRunOperationError | IncorrectKeyError | InvalidCiphertextError | InvalidGrantTokenError | InvalidKeyUsageError | KMSInternalError | KMSInvalidStateError | KeyUnavailableError | NotFoundError | SdkError, KMSService>;
239
+ deleteAlias: (args: DeleteAliasCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DeleteAliasCommandOutput, DependencyTimeoutError | KMSInternalError | KMSInvalidStateError | NotFoundError | SdkError, KMSService>;
240
+ deleteCustomKeyStore: (args: DeleteCustomKeyStoreCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DeleteCustomKeyStoreCommandOutput, CustomKeyStoreHasCMKsError | CustomKeyStoreInvalidStateError | CustomKeyStoreNotFoundError | KMSInternalError | SdkError, KMSService>;
241
+ deleteImportedKeyMaterial: (args: DeleteImportedKeyMaterialCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DeleteImportedKeyMaterialCommandOutput, DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError | SdkError, KMSService>;
242
+ deriveSharedSecret: (args: DeriveSharedSecretCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DeriveSharedSecretCommandOutput, DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KMSInternalError | KMSInvalidStateError | KeyUnavailableError | NotFoundError | SdkError, KMSService>;
243
+ describeCustomKeyStores: (args: DescribeCustomKeyStoresCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DescribeCustomKeyStoresCommandOutput, CustomKeyStoreNotFoundError | InvalidMarkerError | KMSInternalError | SdkError, KMSService>;
244
+ describeKey: (args: DescribeKeyCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DescribeKeyCommandOutput, DependencyTimeoutError | InvalidArnError | KMSInternalError | NotFoundError | SdkError, KMSService>;
245
+ disableKey: (args: DisableKeyCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DisableKeyCommandOutput, DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | SdkError, KMSService>;
246
+ disableKeyRotation: (args: DisableKeyRotationCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DisableKeyRotationCommandOutput, DependencyTimeoutError | DisabledError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError | SdkError, KMSService>;
247
+ disconnectCustomKeyStore: (args: DisconnectCustomKeyStoreCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DisconnectCustomKeyStoreCommandOutput, CustomKeyStoreInvalidStateError | CustomKeyStoreNotFoundError | KMSInternalError | SdkError, KMSService>;
248
+ enableKey: (args: EnableKeyCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<EnableKeyCommandOutput, DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | LimitExceededError | NotFoundError | SdkError, KMSService>;
249
+ enableKeyRotation: (args: EnableKeyRotationCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<EnableKeyRotationCommandOutput, DependencyTimeoutError | DisabledError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError | SdkError, KMSService>;
250
+ encrypt: (args: EncryptCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<EncryptCommandOutput, DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KMSInternalError | KMSInvalidStateError | KeyUnavailableError | NotFoundError | SdkError, KMSService>;
251
+ generateDataKey: (args: GenerateDataKeyCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GenerateDataKeyCommandOutput, DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KMSInternalError | KMSInvalidStateError | KeyUnavailableError | NotFoundError | SdkError, KMSService>;
252
+ generateDataKeyPair: (args: GenerateDataKeyPairCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GenerateDataKeyPairCommandOutput, DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KMSInternalError | KMSInvalidStateError | KeyUnavailableError | NotFoundError | UnsupportedOperationError | SdkError, KMSService>;
253
+ generateDataKeyPairWithoutPlaintext: (args: GenerateDataKeyPairWithoutPlaintextCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GenerateDataKeyPairWithoutPlaintextCommandOutput, DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KMSInternalError | KMSInvalidStateError | KeyUnavailableError | NotFoundError | UnsupportedOperationError | SdkError, KMSService>;
254
+ generateDataKeyWithoutPlaintext: (args: GenerateDataKeyWithoutPlaintextCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GenerateDataKeyWithoutPlaintextCommandOutput, DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KMSInternalError | KMSInvalidStateError | KeyUnavailableError | NotFoundError | SdkError, KMSService>;
255
+ generateMac: (args: GenerateMacCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GenerateMacCommandOutput, DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KMSInternalError | KMSInvalidStateError | KeyUnavailableError | NotFoundError | SdkError, KMSService>;
256
+ generateRandom: (args: GenerateRandomCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GenerateRandomCommandOutput, CustomKeyStoreInvalidStateError | CustomKeyStoreNotFoundError | DependencyTimeoutError | KMSInternalError | UnsupportedOperationError | SdkError, KMSService>;
257
+ getKeyPolicy: (args: GetKeyPolicyCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetKeyPolicyCommandOutput, DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | SdkError, KMSService>;
258
+ getKeyRotationStatus: (args: GetKeyRotationStatusCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetKeyRotationStatusCommandOutput, DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError | SdkError, KMSService>;
259
+ getParametersForImport: (args: GetParametersForImportCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetParametersForImportCommandOutput, DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError | SdkError, KMSService>;
260
+ getPublicKey: (args: GetPublicKeyCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetPublicKeyCommandOutput, DependencyTimeoutError | DisabledError | InvalidArnError | InvalidGrantTokenError | InvalidKeyUsageError | KMSInternalError | KMSInvalidStateError | KeyUnavailableError | NotFoundError | UnsupportedOperationError | SdkError, KMSService>;
261
+ importKeyMaterial: (args: ImportKeyMaterialCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ImportKeyMaterialCommandOutput, DependencyTimeoutError | ExpiredImportTokenError | IncorrectKeyMaterialError | InvalidArnError | InvalidCiphertextError | InvalidImportTokenError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError | SdkError, KMSService>;
262
+ listAliases: (args: ListAliasesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListAliasesCommandOutput, DependencyTimeoutError | InvalidArnError | InvalidMarkerError | KMSInternalError | NotFoundError | SdkError, KMSService>;
263
+ listGrants: (args: ListGrantsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListGrantsCommandOutput, DependencyTimeoutError | InvalidArnError | InvalidGrantIdError | InvalidMarkerError | KMSInternalError | KMSInvalidStateError | NotFoundError | SdkError, KMSService>;
264
+ listKeyPolicies: (args: ListKeyPoliciesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListKeyPoliciesCommandOutput, DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | SdkError, KMSService>;
265
+ listKeyRotations: (args: ListKeyRotationsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListKeyRotationsCommandOutput, InvalidArnError | InvalidMarkerError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError | SdkError, KMSService>;
266
+ listKeys: (args: ListKeysCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListKeysCommandOutput, DependencyTimeoutError | InvalidMarkerError | KMSInternalError | SdkError, KMSService>;
267
+ listResourceTags: (args: ListResourceTagsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListResourceTagsCommandOutput, InvalidArnError | InvalidMarkerError | KMSInternalError | NotFoundError | SdkError, KMSService>;
268
+ listRetirableGrants: (args: ListRetirableGrantsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListRetirableGrantsCommandOutput, DependencyTimeoutError | InvalidArnError | InvalidMarkerError | KMSInternalError | NotFoundError | SdkError, KMSService>;
269
+ putKeyPolicy: (args: PutKeyPolicyCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<PutKeyPolicyCommandOutput, DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | LimitExceededError | MalformedPolicyDocumentError | NotFoundError | UnsupportedOperationError | SdkError, KMSService>;
270
+ reEncrypt: (args: ReEncryptCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ReEncryptCommandOutput, DependencyTimeoutError | DisabledError | DryRunOperationError | IncorrectKeyError | InvalidCiphertextError | InvalidGrantTokenError | InvalidKeyUsageError | KMSInternalError | KMSInvalidStateError | KeyUnavailableError | NotFoundError | SdkError, KMSService>;
271
+ replicateKey: (args: ReplicateKeyCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ReplicateKeyCommandOutput, AlreadyExistsError | DisabledError | InvalidArnError | KMSInternalError | KMSInvalidStateError | LimitExceededError | MalformedPolicyDocumentError | NotFoundError | TagError | UnsupportedOperationError | SdkError, KMSService>;
272
+ retireGrant: (args: RetireGrantCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<RetireGrantCommandOutput, DependencyTimeoutError | DryRunOperationError | InvalidArnError | InvalidGrantIdError | InvalidGrantTokenError | KMSInternalError | KMSInvalidStateError | NotFoundError | SdkError, KMSService>;
273
+ revokeGrant: (args: RevokeGrantCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<RevokeGrantCommandOutput, DependencyTimeoutError | DryRunOperationError | InvalidArnError | InvalidGrantIdError | KMSInternalError | KMSInvalidStateError | NotFoundError | SdkError, KMSService>;
274
+ rotateKeyOnDemand: (args: RotateKeyOnDemandCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<RotateKeyOnDemandCommandOutput, ConflictError | DependencyTimeoutError | DisabledError | InvalidArnError | KMSInternalError | KMSInvalidStateError | LimitExceededError | NotFoundError | UnsupportedOperationError | SdkError, KMSService>;
275
+ scheduleKeyDeletion: (args: ScheduleKeyDeletionCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ScheduleKeyDeletionCommandOutput, DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | SdkError, KMSService>;
276
+ sign: (args: SignCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<SignCommandOutput, DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KMSInternalError | KMSInvalidStateError | KeyUnavailableError | NotFoundError | SdkError, KMSService>;
277
+ tagResource: (args: TagResourceCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<TagResourceCommandOutput, InvalidArnError | KMSInternalError | KMSInvalidStateError | LimitExceededError | NotFoundError | TagError | SdkError, KMSService>;
278
+ untagResource: (args: UntagResourceCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<UntagResourceCommandOutput, InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | TagError | SdkError, KMSService>;
279
+ updateAlias: (args: UpdateAliasCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<UpdateAliasCommandOutput, DependencyTimeoutError | KMSInternalError | KMSInvalidStateError | LimitExceededError | NotFoundError | SdkError, KMSService>;
280
+ updateCustomKeyStore: (args: UpdateCustomKeyStoreCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<UpdateCustomKeyStoreCommandOutput, CloudHsmClusterInvalidConfigurationError | CloudHsmClusterNotActiveError | CloudHsmClusterNotFoundError | CloudHsmClusterNotRelatedError | CustomKeyStoreInvalidStateError | CustomKeyStoreNameInUseError | CustomKeyStoreNotFoundError | KMSInternalError | XksProxyIncorrectAuthenticationCredentialError | XksProxyInvalidConfigurationError | XksProxyInvalidResponseError | XksProxyUriEndpointInUseError | XksProxyUriInUseError | XksProxyUriUnreachableError | XksProxyVpcEndpointServiceInUseError | XksProxyVpcEndpointServiceInvalidConfigurationError | XksProxyVpcEndpointServiceNotFoundError | SdkError, KMSService>;
281
+ updateKeyDescription: (args: UpdateKeyDescriptionCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<UpdateKeyDescriptionCommandOutput, DependencyTimeoutError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | SdkError, KMSService>;
282
+ updatePrimaryRegion: (args: UpdatePrimaryRegionCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<UpdatePrimaryRegionCommandOutput, DisabledError | InvalidArnError | KMSInternalError | KMSInvalidStateError | NotFoundError | UnsupportedOperationError | SdkError, KMSService>;
283
+ verify: (args: VerifyCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<VerifyCommandOutput, DependencyTimeoutError | DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KMSInternalError | KMSInvalidSignatureError | KMSInvalidStateError | KeyUnavailableError | NotFoundError | SdkError, KMSService>;
284
+ verifyMac: (args: VerifyMacCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<VerifyMacCommandOutput, DisabledError | DryRunOperationError | InvalidGrantTokenError | InvalidKeyUsageError | KMSInternalError | KMSInvalidMacError | KMSInvalidStateError | KeyUnavailableError | NotFoundError | SdkError, KMSService>;
285
+ } & {
286
+ use: <X>(body: (_: KMSService$) => X) => X extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, R | KMSService> : Effect.Effect<X, never, KMSService>;
287
+ };
288
+ /**
289
+ * @since 1.0.0
290
+ * @category models
291
+ */
292
+ export declare class KMSService extends KMSService_base {
293
+ }
294
+ /**
295
+ * @since 1.0.0
296
+ * @category constructors
297
+ */
298
+ export declare const makeKMSService: Effect.Effect<KMSService$, never, KMSClientInstance>;
299
+ /**
300
+ * @since 1.0.0
301
+ * @category layers
302
+ */
303
+ export declare const BaseKMSServiceLayer: Layer.Layer<KMSService, never, KMSClientInstance>;
304
+ /**
305
+ * @since 1.0.0
306
+ * @category layers
307
+ */
308
+ export declare const KMSServiceLayer: Layer.Layer<KMSService, never, import("./KMSClientInstanceConfig").KMSClientInstanceConfig>;
309
+ /**
310
+ * @since 1.0.0
311
+ * @category layers
312
+ */
313
+ export declare const DefaultKMSServiceLayer: Layer.Layer<KMSService, never, never>;
314
+ export {};
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultKMSServiceLayer = exports.KMSServiceLayer = exports.BaseKMSServiceLayer = exports.makeKMSService = exports.KMSService = void 0;
4
+ /**
5
+ * @since 1.0.0
6
+ */
7
+ const client_kms_1 = require("@aws-sdk/client-kms");
8
+ const effect_1 = require("effect");
9
+ const Errors_1 = require("./Errors");
10
+ const KMSClientInstance_1 = require("./KMSClientInstance");
11
+ const KMSClientInstanceConfig_1 = require("./KMSClientInstanceConfig");
12
+ const commands = {
13
+ CancelKeyDeletionCommand: client_kms_1.CancelKeyDeletionCommand,
14
+ ConnectCustomKeyStoreCommand: client_kms_1.ConnectCustomKeyStoreCommand,
15
+ CreateAliasCommand: client_kms_1.CreateAliasCommand,
16
+ CreateCustomKeyStoreCommand: client_kms_1.CreateCustomKeyStoreCommand,
17
+ CreateGrantCommand: client_kms_1.CreateGrantCommand,
18
+ CreateKeyCommand: client_kms_1.CreateKeyCommand,
19
+ DecryptCommand: client_kms_1.DecryptCommand,
20
+ DeleteAliasCommand: client_kms_1.DeleteAliasCommand,
21
+ DeleteCustomKeyStoreCommand: client_kms_1.DeleteCustomKeyStoreCommand,
22
+ DeleteImportedKeyMaterialCommand: client_kms_1.DeleteImportedKeyMaterialCommand,
23
+ DeriveSharedSecretCommand: client_kms_1.DeriveSharedSecretCommand,
24
+ DescribeCustomKeyStoresCommand: client_kms_1.DescribeCustomKeyStoresCommand,
25
+ DescribeKeyCommand: client_kms_1.DescribeKeyCommand,
26
+ DisableKeyCommand: client_kms_1.DisableKeyCommand,
27
+ DisableKeyRotationCommand: client_kms_1.DisableKeyRotationCommand,
28
+ DisconnectCustomKeyStoreCommand: client_kms_1.DisconnectCustomKeyStoreCommand,
29
+ EnableKeyCommand: client_kms_1.EnableKeyCommand,
30
+ EnableKeyRotationCommand: client_kms_1.EnableKeyRotationCommand,
31
+ EncryptCommand: client_kms_1.EncryptCommand,
32
+ GenerateDataKeyCommand: client_kms_1.GenerateDataKeyCommand,
33
+ GenerateDataKeyPairCommand: client_kms_1.GenerateDataKeyPairCommand,
34
+ GenerateDataKeyPairWithoutPlaintextCommand: client_kms_1.GenerateDataKeyPairWithoutPlaintextCommand,
35
+ GenerateDataKeyWithoutPlaintextCommand: client_kms_1.GenerateDataKeyWithoutPlaintextCommand,
36
+ GenerateMacCommand: client_kms_1.GenerateMacCommand,
37
+ GenerateRandomCommand: client_kms_1.GenerateRandomCommand,
38
+ GetKeyPolicyCommand: client_kms_1.GetKeyPolicyCommand,
39
+ GetKeyRotationStatusCommand: client_kms_1.GetKeyRotationStatusCommand,
40
+ GetParametersForImportCommand: client_kms_1.GetParametersForImportCommand,
41
+ GetPublicKeyCommand: client_kms_1.GetPublicKeyCommand,
42
+ ImportKeyMaterialCommand: client_kms_1.ImportKeyMaterialCommand,
43
+ ListAliasesCommand: client_kms_1.ListAliasesCommand,
44
+ ListGrantsCommand: client_kms_1.ListGrantsCommand,
45
+ ListKeyPoliciesCommand: client_kms_1.ListKeyPoliciesCommand,
46
+ ListKeyRotationsCommand: client_kms_1.ListKeyRotationsCommand,
47
+ ListKeysCommand: client_kms_1.ListKeysCommand,
48
+ ListResourceTagsCommand: client_kms_1.ListResourceTagsCommand,
49
+ ListRetirableGrantsCommand: client_kms_1.ListRetirableGrantsCommand,
50
+ PutKeyPolicyCommand: client_kms_1.PutKeyPolicyCommand,
51
+ ReEncryptCommand: client_kms_1.ReEncryptCommand,
52
+ ReplicateKeyCommand: client_kms_1.ReplicateKeyCommand,
53
+ RetireGrantCommand: client_kms_1.RetireGrantCommand,
54
+ RevokeGrantCommand: client_kms_1.RevokeGrantCommand,
55
+ RotateKeyOnDemandCommand: client_kms_1.RotateKeyOnDemandCommand,
56
+ ScheduleKeyDeletionCommand: client_kms_1.ScheduleKeyDeletionCommand,
57
+ SignCommand: client_kms_1.SignCommand,
58
+ TagResourceCommand: client_kms_1.TagResourceCommand,
59
+ UntagResourceCommand: client_kms_1.UntagResourceCommand,
60
+ UpdateAliasCommand: client_kms_1.UpdateAliasCommand,
61
+ UpdateCustomKeyStoreCommand: client_kms_1.UpdateCustomKeyStoreCommand,
62
+ UpdateKeyDescriptionCommand: client_kms_1.UpdateKeyDescriptionCommand,
63
+ UpdatePrimaryRegionCommand: client_kms_1.UpdatePrimaryRegionCommand,
64
+ VerifyCommand: client_kms_1.VerifyCommand,
65
+ VerifyMacCommand: client_kms_1.VerifyMacCommand,
66
+ };
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
+ /**
75
+ * @since 1.0.0
76
+ * @category constructors
77
+ */
78
+ exports.makeKMSService = effect_1.Effect.gen(function* (_) {
79
+ const client = yield* _(KMSClientInstance_1.KMSClientInstance);
80
+ return effect_1.Record.toEntries(commands).reduce((acc, [command]) => {
81
+ const CommandCtor = commands[command];
82
+ const methodImpl = (args, options) => effect_1.Effect.tryPromise({
83
+ try: (abortSignal) => client.send(new CommandCtor(args), {
84
+ ...(options !== null && options !== void 0 ? options : {}),
85
+ abortSignal,
86
+ }),
87
+ catch: (e) => {
88
+ if (e instanceof client_kms_1.KMSServiceException &&
89
+ Errors_1.AllServiceErrors.includes(e.name)) {
90
+ const ServiceException = effect_1.Data.tagged(e.name);
91
+ return ServiceException({
92
+ ...e,
93
+ message: e.message,
94
+ stack: e.stack,
95
+ });
96
+ }
97
+ if (e instanceof Error) {
98
+ return (0, Errors_1.SdkError)({
99
+ ...e,
100
+ name: "SdkError",
101
+ message: e.message,
102
+ stack: e.stack,
103
+ });
104
+ }
105
+ throw e;
106
+ },
107
+ });
108
+ const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, "");
109
+ return { ...acc, [methodName]: methodImpl };
110
+ }, {});
111
+ });
112
+ /**
113
+ * @since 1.0.0
114
+ * @category layers
115
+ */
116
+ exports.BaseKMSServiceLayer = effect_1.Layer.effect(KMSService, exports.makeKMSService);
117
+ /**
118
+ * @since 1.0.0
119
+ * @category layers
120
+ */
121
+ exports.KMSServiceLayer = exports.BaseKMSServiceLayer.pipe(effect_1.Layer.provide(KMSClientInstance_1.KMSClientInstanceLayer));
122
+ /**
123
+ * @since 1.0.0
124
+ * @category layers
125
+ */
126
+ exports.DefaultKMSServiceLayer = exports.KMSServiceLayer.pipe(effect_1.Layer.provide(KMSClientInstanceConfig_1.DefaultKMSClientConfigLayer));
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS01TU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9LTVNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsb0RBaUs2QjtBQUM3QixtQ0FBcUQ7QUFDckQscUNBb0RrQjtBQUNsQiwyREFBZ0Y7QUFDaEYsdUVBQXdFO0FBVXhFLE1BQU0sUUFBUSxHQUFHO0lBQ2Ysd0JBQXdCLEVBQXhCLHFDQUF3QjtJQUN4Qiw0QkFBNEIsRUFBNUIseUNBQTRCO0lBQzVCLGtCQUFrQixFQUFsQiwrQkFBa0I7SUFDbEIsMkJBQTJCLEVBQTNCLHdDQUEyQjtJQUMzQixrQkFBa0IsRUFBbEIsK0JBQWtCO0lBQ2xCLGdCQUFnQixFQUFoQiw2QkFBZ0I7SUFDaEIsY0FBYyxFQUFkLDJCQUFjO0lBQ2Qsa0JBQWtCLEVBQWxCLCtCQUFrQjtJQUNsQiwyQkFBMkIsRUFBM0Isd0NBQTJCO0lBQzNCLGdDQUFnQyxFQUFoQyw2Q0FBZ0M7SUFDaEMseUJBQXlCLEVBQXpCLHNDQUF5QjtJQUN6Qiw4QkFBOEIsRUFBOUIsMkNBQThCO0lBQzlCLGtCQUFrQixFQUFsQiwrQkFBa0I7SUFDbEIsaUJBQWlCLEVBQWpCLDhCQUFpQjtJQUNqQix5QkFBeUIsRUFBekIsc0NBQXlCO0lBQ3pCLCtCQUErQixFQUEvQiw0Q0FBK0I7SUFDL0IsZ0JBQWdCLEVBQWhCLDZCQUFnQjtJQUNoQix3QkFBd0IsRUFBeEIscUNBQXdCO0lBQ3hCLGNBQWMsRUFBZCwyQkFBYztJQUNkLHNCQUFzQixFQUF0QixtQ0FBc0I7SUFDdEIsMEJBQTBCLEVBQTFCLHVDQUEwQjtJQUMxQiwwQ0FBMEMsRUFBMUMsdURBQTBDO0lBQzFDLHNDQUFzQyxFQUF0QyxtREFBc0M7SUFDdEMsa0JBQWtCLEVBQWxCLCtCQUFrQjtJQUNsQixxQkFBcUIsRUFBckIsa0NBQXFCO0lBQ3JCLG1CQUFtQixFQUFuQixnQ0FBbUI7SUFDbkIsMkJBQTJCLEVBQTNCLHdDQUEyQjtJQUMzQiw2QkFBNkIsRUFBN0IsMENBQTZCO0lBQzdCLG1CQUFtQixFQUFuQixnQ0FBbUI7SUFDbkIsd0JBQXdCLEVBQXhCLHFDQUF3QjtJQUN4QixrQkFBa0IsRUFBbEIsK0JBQWtCO0lBQ2xCLGlCQUFpQixFQUFqQiw4QkFBaUI7SUFDakIsc0JBQXNCLEVBQXRCLG1DQUFzQjtJQUN0Qix1QkFBdUIsRUFBdkIsb0NBQXVCO0lBQ3ZCLGVBQWUsRUFBZiw0QkFBZTtJQUNmLHVCQUF1QixFQUF2QixvQ0FBdUI7SUFDdkIsMEJBQTBCLEVBQTFCLHVDQUEwQjtJQUMxQixtQkFBbUIsRUFBbkIsZ0NBQW1CO0lBQ25CLGdCQUFnQixFQUFoQiw2QkFBZ0I7SUFDaEIsbUJBQW1CLEVBQW5CLGdDQUFtQjtJQUNuQixrQkFBa0IsRUFBbEIsK0JBQWtCO0lBQ2xCLGtCQUFrQixFQUFsQiwrQkFBa0I7SUFDbEIsd0JBQXdCLEVBQXhCLHFDQUF3QjtJQUN4QiwwQkFBMEIsRUFBMUIsdUNBQTBCO0lBQzFCLFdBQVcsRUFBWCx3QkFBVztJQUNYLGtCQUFrQixFQUFsQiwrQkFBa0I7SUFDbEIsb0JBQW9CLEVBQXBCLGlDQUFvQjtJQUNwQixrQkFBa0IsRUFBbEIsK0JBQWtCO0lBQ2xCLDJCQUEyQixFQUEzQix3Q0FBMkI7SUFDM0IsMkJBQTJCLEVBQTNCLHdDQUEyQjtJQUMzQiwwQkFBMEIsRUFBMUIsdUNBQTBCO0lBQzFCLGFBQWEsRUFBYiwwQkFBYTtJQUNiLGdCQUFnQixFQUFoQiw2QkFBZ0I7Q0FDakIsQ0FBQztBQTY4QkY7OztHQUdHO0FBQ0gsTUFBYSxVQUFXLFNBQVEsZUFBTSxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxFQUc1RTtDQUFHO0FBSE4sZ0NBR007QUFFTjs7O0dBR0c7QUFDVSxRQUFBLGNBQWMsR0FBRyxlQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDbkQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFDQUFpQixDQUFDLENBQUM7SUFFM0MsT0FBTyxlQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUU7UUFDMUQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBUSxDQUFDO1FBQzdDLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBUyxFQUFFLE9BQTRCLEVBQUUsRUFBRSxDQUM3RCxlQUFNLENBQUMsVUFBVSxDQUFDO1lBQ2hCLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2pDLEdBQUcsQ0FBQyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxFQUFFLENBQUM7Z0JBQ2xCLFdBQVc7YUFDWixDQUFDO1lBQ0osS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1gsSUFDRSxDQUFDLFlBQVksZ0NBQW1CO29CQUNoQyx5QkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUNqQyxDQUFDO29CQUNELE1BQU0sZ0JBQWdCLEdBQUcsYUFBSSxDQUFDLE1BQU0sQ0FFbEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUVWLE9BQU8sZ0JBQWdCLENBQUM7d0JBQ3RCLEdBQUcsQ0FBQzt3QkFDSixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87d0JBQ2xCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztxQkFDZixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQztvQkFDdkIsT0FBTyxJQUFBLGlCQUFRLEVBQUM7d0JBQ2QsR0FBRyxDQUFDO3dCQUNKLElBQUksRUFBRSxVQUFVO3dCQUNoQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87d0JBQ2xCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztxQkFDZixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxNQUFNLENBQUMsQ0FBQztZQUNWLENBQUM7U0FDRixDQUFDLENBQUM7UUFDTCxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUN0RSxVQUFVLEVBQ1YsRUFBRSxDQUNILENBQUM7UUFDRixPQUFPLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUM5QyxDQUFDLEVBQUUsRUFBRSxDQUFnQixDQUFDO0FBQ3hCLENBQUMsQ0FBQyxDQUFDO0FBRUg7OztHQUdHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRyxjQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxzQkFBYyxDQUFDLENBQUM7QUFFNUU7OztHQUdHO0FBQ1UsUUFBQSxlQUFlLEdBQUcsMkJBQW1CLENBQUMsSUFBSSxDQUNyRCxjQUFLLENBQUMsT0FBTyxDQUFDLDBDQUFzQixDQUFDLENBQ3RDLENBQUM7QUFFRjs7O0dBR0c7QUFDVSxRQUFBLHNCQUFzQixHQUFHLHVCQUFlLENBQUMsSUFBSSxDQUN4RCxjQUFLLENBQUMsT0FBTyxDQUFDLHFEQUEyQixDQUFDLENBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQge1xuICBLTVNTZXJ2aWNlRXhjZXB0aW9uLFxuICBDYW5jZWxLZXlEZWxldGlvbkNvbW1hbmQsXG4gIHR5cGUgQ2FuY2VsS2V5RGVsZXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQ2FuY2VsS2V5RGVsZXRpb25Db21tYW5kT3V0cHV0LFxuICBDb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kLFxuICB0eXBlIENvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVHcmFudENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlR3JhbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlR3JhbnRDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVLZXlDb21tYW5kLFxuICB0eXBlIENyZWF0ZUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVLZXlDb21tYW5kT3V0cHV0LFxuICBEZWNyeXB0Q29tbWFuZCxcbiAgdHlwZSBEZWNyeXB0Q29tbWFuZElucHV0LFxuICB0eXBlIERlY3J5cHRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBEZWxldGVDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBEZWxldGVJbXBvcnRlZEtleU1hdGVyaWFsQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVJbXBvcnRlZEtleU1hdGVyaWFsQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUltcG9ydGVkS2V5TWF0ZXJpYWxDb21tYW5kT3V0cHV0LFxuICBEZXJpdmVTaGFyZWRTZWNyZXRDb21tYW5kLFxuICB0eXBlIERlcml2ZVNoYXJlZFNlY3JldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXJpdmVTaGFyZWRTZWNyZXRDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUN1c3RvbUtleVN0b3Jlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVDdXN0b21LZXlTdG9yZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVDdXN0b21LZXlTdG9yZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUtleUNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVLZXlDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVLZXlDb21tYW5kT3V0cHV0LFxuICBEaXNhYmxlS2V5Q29tbWFuZCxcbiAgdHlwZSBEaXNhYmxlS2V5Q29tbWFuZElucHV0LFxuICB0eXBlIERpc2FibGVLZXlDb21tYW5kT3V0cHV0LFxuICBEaXNhYmxlS2V5Um90YXRpb25Db21tYW5kLFxuICB0eXBlIERpc2FibGVLZXlSb3RhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEaXNhYmxlS2V5Um90YXRpb25Db21tYW5kT3V0cHV0LFxuICBEaXNjb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kLFxuICB0eXBlIERpc2Nvbm5lY3RDdXN0b21LZXlTdG9yZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEaXNjb25uZWN0Q3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBFbmFibGVLZXlDb21tYW5kLFxuICB0eXBlIEVuYWJsZUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBFbmFibGVLZXlDb21tYW5kT3V0cHV0LFxuICBFbmFibGVLZXlSb3RhdGlvbkNvbW1hbmQsXG4gIHR5cGUgRW5hYmxlS2V5Um90YXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgRW5hYmxlS2V5Um90YXRpb25Db21tYW5kT3V0cHV0LFxuICBFbmNyeXB0Q29tbWFuZCxcbiAgdHlwZSBFbmNyeXB0Q29tbWFuZElucHV0LFxuICB0eXBlIEVuY3J5cHRDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZURhdGFLZXlDb21tYW5kLFxuICB0eXBlIEdlbmVyYXRlRGF0YUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZW5lcmF0ZURhdGFLZXlDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZURhdGFLZXlQYWlyQ29tbWFuZCxcbiAgdHlwZSBHZW5lcmF0ZURhdGFLZXlQYWlyQ29tbWFuZElucHV0LFxuICB0eXBlIEdlbmVyYXRlRGF0YUtleVBhaXJDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZURhdGFLZXlQYWlyV2l0aG91dFBsYWludGV4dENvbW1hbmQsXG4gIHR5cGUgR2VuZXJhdGVEYXRhS2V5UGFpcldpdGhvdXRQbGFpbnRleHRDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2VuZXJhdGVEYXRhS2V5UGFpcldpdGhvdXRQbGFpbnRleHRDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZURhdGFLZXlXaXRob3V0UGxhaW50ZXh0Q29tbWFuZCxcbiAgdHlwZSBHZW5lcmF0ZURhdGFLZXlXaXRob3V0UGxhaW50ZXh0Q29tbWFuZElucHV0LFxuICB0eXBlIEdlbmVyYXRlRGF0YUtleVdpdGhvdXRQbGFpbnRleHRDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZU1hY0NvbW1hbmQsXG4gIHR5cGUgR2VuZXJhdGVNYWNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2VuZXJhdGVNYWNDb21tYW5kT3V0cHV0LFxuICBHZW5lcmF0ZVJhbmRvbUNvbW1hbmQsXG4gIHR5cGUgR2VuZXJhdGVSYW5kb21Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2VuZXJhdGVSYW5kb21Db21tYW5kT3V0cHV0LFxuICBHZXRLZXlQb2xpY3lDb21tYW5kLFxuICB0eXBlIEdldEtleVBvbGljeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRLZXlQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBHZXRLZXlSb3RhdGlvblN0YXR1c0NvbW1hbmQsXG4gIHR5cGUgR2V0S2V5Um90YXRpb25TdGF0dXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0S2V5Um90YXRpb25TdGF0dXNDb21tYW5kT3V0cHV0LFxuICBHZXRQYXJhbWV0ZXJzRm9ySW1wb3J0Q29tbWFuZCxcbiAgdHlwZSBHZXRQYXJhbWV0ZXJzRm9ySW1wb3J0Q29tbWFuZElucHV0LFxuICB0eXBlIEdldFBhcmFtZXRlcnNGb3JJbXBvcnRDb21tYW5kT3V0cHV0LFxuICBHZXRQdWJsaWNLZXlDb21tYW5kLFxuICB0eXBlIEdldFB1YmxpY0tleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRQdWJsaWNLZXlDb21tYW5kT3V0cHV0LFxuICBJbXBvcnRLZXlNYXRlcmlhbENvbW1hbmQsXG4gIHR5cGUgSW1wb3J0S2V5TWF0ZXJpYWxDb21tYW5kSW5wdXQsXG4gIHR5cGUgSW1wb3J0S2V5TWF0ZXJpYWxDb21tYW5kT3V0cHV0LFxuICBMaXN0QWxpYXNlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEFsaWFzZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEFsaWFzZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0R3JhbnRzQ29tbWFuZCxcbiAgdHlwZSBMaXN0R3JhbnRzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RHcmFudHNDb21tYW5kT3V0cHV0LFxuICBMaXN0S2V5UG9saWNpZXNDb21tYW5kLFxuICB0eXBlIExpc3RLZXlQb2xpY2llc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0S2V5UG9saWNpZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0S2V5Um90YXRpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0S2V5Um90YXRpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RLZXlSb3RhdGlvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0S2V5c0NvbW1hbmQsXG4gIHR5cGUgTGlzdEtleXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEtleXNDb21tYW5kT3V0cHV0LFxuICBMaXN0UmVzb3VyY2VUYWdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UmVzb3VyY2VUYWdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RSZXNvdXJjZVRhZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0UmV0aXJhYmxlR3JhbnRzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UmV0aXJhYmxlR3JhbnRzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RSZXRpcmFibGVHcmFudHNDb21tYW5kT3V0cHV0LFxuICBQdXRLZXlQb2xpY3lDb21tYW5kLFxuICB0eXBlIFB1dEtleVBvbGljeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRLZXlQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBSZUVuY3J5cHRDb21tYW5kLFxuICB0eXBlIFJlRW5jcnlwdENvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZUVuY3J5cHRDb21tYW5kT3V0cHV0LFxuICBSZXBsaWNhdGVLZXlDb21tYW5kLFxuICB0eXBlIFJlcGxpY2F0ZUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZXBsaWNhdGVLZXlDb21tYW5kT3V0cHV0LFxuICBSZXRpcmVHcmFudENvbW1hbmQsXG4gIHR5cGUgUmV0aXJlR3JhbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmV0aXJlR3JhbnRDb21tYW5kT3V0cHV0LFxuICBSZXZva2VHcmFudENvbW1hbmQsXG4gIHR5cGUgUmV2b2tlR3JhbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmV2b2tlR3JhbnRDb21tYW5kT3V0cHV0LFxuICBSb3RhdGVLZXlPbkRlbWFuZENvbW1hbmQsXG4gIHR5cGUgUm90YXRlS2V5T25EZW1hbmRDb21tYW5kSW5wdXQsXG4gIHR5cGUgUm90YXRlS2V5T25EZW1hbmRDb21tYW5kT3V0cHV0LFxuICBTY2hlZHVsZUtleURlbGV0aW9uQ29tbWFuZCxcbiAgdHlwZSBTY2hlZHVsZUtleURlbGV0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFNjaGVkdWxlS2V5RGVsZXRpb25Db21tYW5kT3V0cHV0LFxuICBTaWduQ29tbWFuZCxcbiAgdHlwZSBTaWduQ29tbWFuZElucHV0LFxuICB0eXBlIFNpZ25Db21tYW5kT3V0cHV0LFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgVGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgVGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgdHlwZSBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFVudGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVDdXN0b21LZXlTdG9yZUNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQ3VzdG9tS2V5U3RvcmVDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVLZXlEZXNjcmlwdGlvbkNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlS2V5RGVzY3JpcHRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlS2V5RGVzY3JpcHRpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVQcmltYXJ5UmVnaW9uQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVQcmltYXJ5UmVnaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVByaW1hcnlSZWdpb25Db21tYW5kT3V0cHV0LFxuICBWZXJpZnlDb21tYW5kLFxuICB0eXBlIFZlcmlmeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBWZXJpZnlDb21tYW5kT3V0cHV0LFxuICBWZXJpZnlNYWNDb21tYW5kLFxuICB0eXBlIFZlcmlmeU1hY0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBWZXJpZnlNYWNDb21tYW5kT3V0cHV0LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWttc1wiO1xuaW1wb3J0IHsgRGF0YSwgRWZmZWN0LCBMYXllciwgUmVjb3JkIH0gZnJvbSBcImVmZmVjdFwiO1xuaW1wb3J0IHtcbiAgQWxsU2VydmljZUVycm9ycyxcbiAgQWxyZWFkeUV4aXN0c0Vycm9yLFxuICBDbG91ZEhzbUNsdXN0ZXJJblVzZUVycm9yLFxuICBDbG91ZEhzbUNsdXN0ZXJJbnZhbGlkQ29uZmlndXJhdGlvbkVycm9yLFxuICBDbG91ZEhzbUNsdXN0ZXJOb3RBY3RpdmVFcnJvcixcbiAgQ2xvdWRIc21DbHVzdGVyTm90Rm91bmRFcnJvcixcbiAgQ2xvdWRIc21DbHVzdGVyTm90UmVsYXRlZEVycm9yLFxuICBDb25mbGljdEVycm9yLFxuICBDdXN0b21LZXlTdG9yZUhhc0NNS3NFcnJvcixcbiAgQ3VzdG9tS2V5U3RvcmVJbnZhbGlkU3RhdGVFcnJvcixcbiAgQ3VzdG9tS2V5U3RvcmVOYW1lSW5Vc2VFcnJvcixcbiAgQ3VzdG9tS2V5U3RvcmVOb3RGb3VuZEVycm9yLFxuICBEZXBlbmRlbmN5VGltZW91dEVycm9yLFxuICBEaXNhYmxlZEVycm9yLFxuICBEcnlSdW5PcGVyYXRpb25FcnJvcixcbiAgRXhwaXJlZEltcG9ydFRva2VuRXJyb3IsXG4gIEluY29ycmVjdEtleUVycm9yLFxuICBJbmNvcnJlY3RLZXlNYXRlcmlhbEVycm9yLFxuICBJbmNvcnJlY3RUcnVzdEFuY2hvckVycm9yLFxuICBJbnZhbGlkQWxpYXNOYW1lRXJyb3IsXG4gIEludmFsaWRBcm5FcnJvcixcbiAgSW52YWxpZENpcGhlcnRleHRFcnJvcixcbiAgSW52YWxpZEdyYW50SWRFcnJvcixcbiAgSW52YWxpZEdyYW50VG9rZW5FcnJvcixcbiAgSW52YWxpZEltcG9ydFRva2VuRXJyb3IsXG4gIEludmFsaWRLZXlVc2FnZUVycm9yLFxuICBJbnZhbGlkTWFya2VyRXJyb3IsXG4gIEtNU0ludGVybmFsRXJyb3IsXG4gIEtNU0ludmFsaWRNYWNFcnJvcixcbiAgS01TSW52YWxpZFNpZ25hdHVyZUVycm9yLFxuICBLTVNJbnZhbGlkU3RhdGVFcnJvcixcbiAgS2V5VW5hdmFpbGFibGVFcnJvcixcbiAgTGltaXRFeGNlZWRlZEVycm9yLFxuICBNYWxmb3JtZWRQb2xpY3lEb2N1bWVudEVycm9yLFxuICBOb3RGb3VuZEVycm9yLFxuICBUYWdFcnJvcixcbiAgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvcixcbiAgWGtzS2V5QWxyZWFkeUluVXNlRXJyb3IsXG4gIFhrc0tleUludmFsaWRDb25maWd1cmF0aW9uRXJyb3IsXG4gIFhrc0tleU5vdEZvdW5kRXJyb3IsXG4gIFhrc1Byb3h5SW5jb3JyZWN0QXV0aGVudGljYXRpb25DcmVkZW50aWFsRXJyb3IsXG4gIFhrc1Byb3h5SW52YWxpZENvbmZpZ3VyYXRpb25FcnJvcixcbiAgWGtzUHJveHlJbnZhbGlkUmVzcG9uc2VFcnJvcixcbiAgWGtzUHJveHlVcmlFbmRwb2ludEluVXNlRXJyb3IsXG4gIFhrc1Byb3h5VXJpSW5Vc2VFcnJvcixcbiAgWGtzUHJveHlVcmlVbnJlYWNoYWJsZUVycm9yLFxuICBYa3NQcm94eVZwY0VuZHBvaW50U2VydmljZUluVXNlRXJyb3IsXG4gIFhrc1Byb3h5VnBjRW5kcG9pbnRTZXJ2aWNlSW52YWxpZENvbmZpZ3VyYXRpb25FcnJvcixcbiAgWGtzUHJveHlWcGNFbmRwb2ludFNlcnZpY2VOb3RGb3VuZEVycm9yLFxuICBTZGtFcnJvcixcbiAgVGFnZ2VkRXhjZXB0aW9uLFxufSBmcm9tIFwiLi9FcnJvcnNcIjtcbmltcG9ydCB7IEtNU0NsaWVudEluc3RhbmNlLCBLTVNDbGllbnRJbnN0YW5jZUxheWVyIH0gZnJvbSBcIi4vS01TQ2xpZW50SW5zdGFuY2VcIjtcbmltcG9ydCB7IERlZmF1bHRLTVNDbGllbnRDb25maWdMYXllciB9IGZyb20gXCIuL0tNU0NsaWVudEluc3RhbmNlQ29uZmlnXCI7XG5cbmludGVyZmFjZSBIdHRwSGFuZGxlck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdGhhdCB0aGUgY29ubmVjdGlvbiBwaGFzZSBvZiBhIHJlcXVlc3RcbiAgICogbWF5IHRha2UgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGF0dGVtcHQgaXMgYWJhbmRvbmVkLlxuICAgKi9cbiAgcmVxdWVzdFRpbWVvdXQ/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=