@aws-cdk/aws-bedrock-agentcore-alpha 2.253.0-alpha.0 → 2.254.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +17116 -11830
- package/.jsii.tabl.json.gz +0 -0
- package/README.md +140 -10
- package/lib/evaluation/custom-evaluator.d.ts +9 -0
- package/lib/evaluation/custom-evaluator.js +8 -2
- package/lib/evaluation/data-source.js +1 -1
- package/lib/evaluation/evaluator-base.js +1 -1
- package/lib/evaluation/evaluator-config.js +2 -2
- package/lib/evaluation/evaluator.js +1 -1
- package/lib/evaluation/online-evaluation-base.js +1 -1
- package/lib/evaluation/online-evaluation.d.ts +9 -0
- package/lib/evaluation/online-evaluation.js +8 -2
- package/lib/evaluation/types.js +5 -5
- package/lib/evaluation/validation-helpers.d.ts +8 -0
- package/lib/evaluation/validation-helpers.js +62 -1
- package/lib/gateway/gateway-base.js +1 -1
- package/lib/gateway/gateway.d.ts +3 -2
- package/lib/gateway/gateway.js +3 -3
- package/lib/gateway/inbound-auth/authorizer.js +4 -4
- package/lib/gateway/inbound-auth/custom-claim.js +1 -1
- package/lib/gateway/interceptor.js +1 -1
- package/lib/gateway/outbound-auth/api-key.d.ts +13 -4
- package/lib/gateway/outbound-auth/api-key.js +63 -21
- package/lib/gateway/outbound-auth/credential-provider.d.ts +48 -4
- package/lib/gateway/outbound-auth/credential-provider.js +49 -2
- package/lib/gateway/outbound-auth/iam-role.d.ts +4 -3
- package/lib/gateway/outbound-auth/iam-role.js +3 -5
- package/lib/gateway/outbound-auth/oauth.d.ts +11 -3
- package/lib/gateway/outbound-auth/oauth.js +70 -20
- package/lib/gateway/perms.d.ts +15 -3
- package/lib/gateway/perms.js +24 -9
- package/lib/gateway/protocol.js +2 -2
- package/lib/gateway/targets/schema/api-schema.js +4 -4
- package/lib/gateway/targets/schema/tool-schema.js +4 -4
- package/lib/gateway/targets/target-base.js +1 -1
- package/lib/gateway/targets/target-configuration.js +6 -6
- package/lib/gateway/targets/target.js +3 -3
- package/lib/identity/api-key-credential-provider.d.ts +217 -0
- package/lib/identity/api-key-credential-provider.js +249 -0
- package/lib/identity/grant-helpers.d.ts +74 -0
- package/lib/identity/grant-helpers.js +132 -0
- package/lib/identity/oauth2-credential-provider.d.ts +679 -0
- package/lib/identity/oauth2-credential-provider.js +863 -0
- package/lib/identity/perms.d.ts +119 -0
- package/lib/identity/perms.js +178 -0
- package/lib/identity/validation-helpers.d.ts +61 -0
- package/lib/identity/validation-helpers.js +156 -0
- package/lib/identity/workload-identity.d.ts +186 -0
- package/lib/identity/workload-identity.js +212 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.js +8 -1
- package/lib/memory/memory-strategy.js +1 -1
- package/lib/memory/memory.js +2 -2
- package/lib/memory/strategies/managed-strategy.js +1 -1
- package/lib/memory/strategies/self-managed-strategy.js +1 -1
- package/lib/memory/validation-helpers.js +2 -2
- package/lib/network/network-configuration.js +4 -4
- package/lib/policy/policy-base.js +1 -1
- package/lib/policy/policy-engine-base.js +1 -1
- package/lib/policy/policy-engine.js +1 -1
- package/lib/policy/policy-statement.d.ts +2 -1
- package/lib/policy/policy-statement.js +14 -12
- package/lib/policy/policy-types.js +1 -1
- package/lib/policy/policy.js +1 -1
- package/lib/runtime/inbound-auth/custom-claim.js +1 -1
- package/lib/runtime/inbound-auth/runtime-authorizer-configuration.js +1 -1
- package/lib/runtime/observability.js +2 -2
- package/lib/runtime/runtime-artifact.d.ts +11 -3
- package/lib/runtime/runtime-artifact.js +12 -4
- package/lib/runtime/runtime-base.js +1 -1
- package/lib/runtime/runtime-endpoint-base.js +1 -1
- package/lib/runtime/runtime-endpoint.js +1 -1
- package/lib/runtime/runtime.js +1 -1
- package/lib/runtime/types.d.ts +7 -1
- package/lib/runtime/types.js +7 -1
- package/lib/tools/browser.js +2 -2
- package/lib/tools/code-interpreter.js +2 -2
- package/package.json +18 -10
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
5
|
+
* with the License. A copy of the License is located at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
10
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
11
|
+
* and limitations under the License.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Secrets Manager actions to read credential material stored for Token Vault providers.
|
|
15
|
+
*
|
|
16
|
+
* Outbound gateway targets apply the same actions on the secret ARN; principals that call
|
|
17
|
+
* `GetResourceApiKey` / `GetResourceOauth2Token` (or that mirror gateway behavior) typically need both
|
|
18
|
+
* `bedrock-agentcore` data-plane actions and read access to the backing secret.
|
|
19
|
+
*
|
|
20
|
+
* @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/security-iam-awsmanpol.html
|
|
21
|
+
*/
|
|
22
|
+
export declare const TOKEN_VAULT_CREDENTIAL_SECRET_READ_PERMS: readonly ["secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret"];
|
|
23
|
+
/**
|
|
24
|
+
* Secrets Manager actions to write credential material for Token Vault providers.
|
|
25
|
+
*
|
|
26
|
+
* Create and Update control plane operations (e.g. CreateApiKeyCredentialProvider,
|
|
27
|
+
* UpdateApiKeyCredentialProvider) store/update the credential in Secrets Manager,
|
|
28
|
+
* requiring PutSecretValue on the backing secret.
|
|
29
|
+
*/
|
|
30
|
+
export declare const TOKEN_VAULT_CREDENTIAL_SECRET_WRITE_PERMS: readonly ["secretsmanager:PutSecretValue"];
|
|
31
|
+
/**
|
|
32
|
+
* IAM actions for AgentCore API key credential providers (Token Vault).
|
|
33
|
+
*
|
|
34
|
+
* @see https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrockagentcore.html
|
|
35
|
+
*/
|
|
36
|
+
export declare class ApiKeyCredentialProviderIdentityPerms {
|
|
37
|
+
/**
|
|
38
|
+
* Read a single API key credential provider definition.
|
|
39
|
+
*/
|
|
40
|
+
static readonly READ_PERMS: string[];
|
|
41
|
+
/**
|
|
42
|
+
* List API key credential providers (resource-scoped per IAM service authorization reference).
|
|
43
|
+
*/
|
|
44
|
+
static readonly LIST_PERMS: string[];
|
|
45
|
+
/**
|
|
46
|
+
* Control plane permissions to create, read, update, and delete this provider.
|
|
47
|
+
*/
|
|
48
|
+
static readonly ADMIN_PERMS: string[];
|
|
49
|
+
/**
|
|
50
|
+
* Data plane permissions to retrieve the API key material for outbound calls.
|
|
51
|
+
*/
|
|
52
|
+
static readonly USE_PERMS: string[];
|
|
53
|
+
/**
|
|
54
|
+
* All API key credential provider actions used by the L2 grant helpers.
|
|
55
|
+
*/
|
|
56
|
+
static readonly FULL_ACCESS_PERMS: string[];
|
|
57
|
+
private constructor();
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* IAM actions for AgentCore OAuth2 credential providers (Token Vault).
|
|
61
|
+
*
|
|
62
|
+
* @see https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrockagentcore.html
|
|
63
|
+
*/
|
|
64
|
+
export declare class OAuth2CredentialProviderIdentityPerms {
|
|
65
|
+
/**
|
|
66
|
+
* Read a single OAuth2 credential provider definition.
|
|
67
|
+
*/
|
|
68
|
+
static readonly READ_PERMS: string[];
|
|
69
|
+
/**
|
|
70
|
+
* List OAuth2 credential providers (resource-scoped per IAM service authorization reference).
|
|
71
|
+
*/
|
|
72
|
+
static readonly LIST_PERMS: string[];
|
|
73
|
+
/**
|
|
74
|
+
* Control plane permissions to create, read, update, and delete this provider.
|
|
75
|
+
*/
|
|
76
|
+
static readonly ADMIN_PERMS: string[];
|
|
77
|
+
/**
|
|
78
|
+
* Data plane permissions to complete OAuth flows and retrieve tokens for outbound calls.
|
|
79
|
+
*/
|
|
80
|
+
static readonly USE_PERMS: string[];
|
|
81
|
+
/**
|
|
82
|
+
* All OAuth2 credential provider actions used by the L2 grant helpers.
|
|
83
|
+
*/
|
|
84
|
+
static readonly FULL_ACCESS_PERMS: string[];
|
|
85
|
+
private constructor();
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* IAM actions for AgentCore workload identities.
|
|
89
|
+
*
|
|
90
|
+
* @see https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrockagentcore.html
|
|
91
|
+
*/
|
|
92
|
+
export declare class WorkloadIdentityPerms {
|
|
93
|
+
/**
|
|
94
|
+
* Read a single workload identity.
|
|
95
|
+
*/
|
|
96
|
+
static readonly READ_PERMS: string[];
|
|
97
|
+
/**
|
|
98
|
+
* List workload identities (resource-scoped per IAM service authorization reference).
|
|
99
|
+
*/
|
|
100
|
+
static readonly LIST_PERMS: string[];
|
|
101
|
+
/**
|
|
102
|
+
* Control plane permissions to create, read, update, and delete this workload identity.
|
|
103
|
+
*/
|
|
104
|
+
static readonly ADMIN_PERMS: string[];
|
|
105
|
+
/**
|
|
106
|
+
* Data plane permissions to mint workload access tokens.
|
|
107
|
+
*
|
|
108
|
+
* These actions require both the workload identity ARN and the
|
|
109
|
+
* workload-identity-directory ARN as resource scope.
|
|
110
|
+
*
|
|
111
|
+
* @see https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrockagentcore.html
|
|
112
|
+
*/
|
|
113
|
+
static readonly USE_PERMS: string[];
|
|
114
|
+
/**
|
|
115
|
+
* All workload identity actions used by the L2 grant helpers.
|
|
116
|
+
*/
|
|
117
|
+
static readonly FULL_ACCESS_PERMS: string[];
|
|
118
|
+
private constructor();
|
|
119
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkloadIdentityPerms = exports.OAuth2CredentialProviderIdentityPerms = exports.ApiKeyCredentialProviderIdentityPerms = exports.TOKEN_VAULT_CREDENTIAL_SECRET_WRITE_PERMS = exports.TOKEN_VAULT_CREDENTIAL_SECRET_READ_PERMS = void 0;
|
|
4
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
|
+
/**
|
|
6
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
|
+
*
|
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
9
|
+
* with the License. A copy of the License is located at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
14
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
15
|
+
* and limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Secrets Manager actions to read credential material stored for Token Vault providers.
|
|
19
|
+
*
|
|
20
|
+
* Outbound gateway targets apply the same actions on the secret ARN; principals that call
|
|
21
|
+
* `GetResourceApiKey` / `GetResourceOauth2Token` (or that mirror gateway behavior) typically need both
|
|
22
|
+
* `bedrock-agentcore` data-plane actions and read access to the backing secret.
|
|
23
|
+
*
|
|
24
|
+
* @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/security-iam-awsmanpol.html
|
|
25
|
+
*/
|
|
26
|
+
exports.TOKEN_VAULT_CREDENTIAL_SECRET_READ_PERMS = [
|
|
27
|
+
'secretsmanager:GetSecretValue',
|
|
28
|
+
'secretsmanager:DescribeSecret',
|
|
29
|
+
];
|
|
30
|
+
/**
|
|
31
|
+
* Secrets Manager actions to write credential material for Token Vault providers.
|
|
32
|
+
*
|
|
33
|
+
* Create and Update control plane operations (e.g. CreateApiKeyCredentialProvider,
|
|
34
|
+
* UpdateApiKeyCredentialProvider) store/update the credential in Secrets Manager,
|
|
35
|
+
* requiring PutSecretValue on the backing secret.
|
|
36
|
+
*/
|
|
37
|
+
exports.TOKEN_VAULT_CREDENTIAL_SECRET_WRITE_PERMS = [
|
|
38
|
+
'secretsmanager:PutSecretValue',
|
|
39
|
+
];
|
|
40
|
+
/**
|
|
41
|
+
* IAM actions for AgentCore API key credential providers (Token Vault).
|
|
42
|
+
*
|
|
43
|
+
* @see https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrockagentcore.html
|
|
44
|
+
*/
|
|
45
|
+
class ApiKeyCredentialProviderIdentityPerms {
|
|
46
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ApiKeyCredentialProviderIdentityPerms", version: "2.254.0-alpha.0" };
|
|
47
|
+
/**
|
|
48
|
+
* Read a single API key credential provider definition.
|
|
49
|
+
*/
|
|
50
|
+
static READ_PERMS = ['bedrock-agentcore:GetApiKeyCredentialProvider'];
|
|
51
|
+
/**
|
|
52
|
+
* List API key credential providers (resource-scoped per IAM service authorization reference).
|
|
53
|
+
*/
|
|
54
|
+
static LIST_PERMS = ['bedrock-agentcore:ListApiKeyCredentialProviders'];
|
|
55
|
+
/**
|
|
56
|
+
* Control plane permissions to create, read, update, and delete this provider.
|
|
57
|
+
*/
|
|
58
|
+
static ADMIN_PERMS = [
|
|
59
|
+
'bedrock-agentcore:CreateApiKeyCredentialProvider',
|
|
60
|
+
'bedrock-agentcore:GetApiKeyCredentialProvider',
|
|
61
|
+
'bedrock-agentcore:UpdateApiKeyCredentialProvider',
|
|
62
|
+
'bedrock-agentcore:DeleteApiKeyCredentialProvider',
|
|
63
|
+
];
|
|
64
|
+
/**
|
|
65
|
+
* Data plane permissions to retrieve the API key material for outbound calls.
|
|
66
|
+
*/
|
|
67
|
+
static USE_PERMS = ['bedrock-agentcore:GetResourceApiKey'];
|
|
68
|
+
/**
|
|
69
|
+
* All API key credential provider actions used by the L2 grant helpers.
|
|
70
|
+
*/
|
|
71
|
+
static FULL_ACCESS_PERMS = [
|
|
72
|
+
...new Set([
|
|
73
|
+
...ApiKeyCredentialProviderIdentityPerms.READ_PERMS,
|
|
74
|
+
...ApiKeyCredentialProviderIdentityPerms.LIST_PERMS,
|
|
75
|
+
...ApiKeyCredentialProviderIdentityPerms.ADMIN_PERMS,
|
|
76
|
+
...ApiKeyCredentialProviderIdentityPerms.USE_PERMS,
|
|
77
|
+
]),
|
|
78
|
+
];
|
|
79
|
+
constructor() { }
|
|
80
|
+
}
|
|
81
|
+
exports.ApiKeyCredentialProviderIdentityPerms = ApiKeyCredentialProviderIdentityPerms;
|
|
82
|
+
/**
|
|
83
|
+
* IAM actions for AgentCore OAuth2 credential providers (Token Vault).
|
|
84
|
+
*
|
|
85
|
+
* @see https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrockagentcore.html
|
|
86
|
+
*/
|
|
87
|
+
class OAuth2CredentialProviderIdentityPerms {
|
|
88
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.OAuth2CredentialProviderIdentityPerms", version: "2.254.0-alpha.0" };
|
|
89
|
+
/**
|
|
90
|
+
* Read a single OAuth2 credential provider definition.
|
|
91
|
+
*/
|
|
92
|
+
static READ_PERMS = ['bedrock-agentcore:GetOauth2CredentialProvider'];
|
|
93
|
+
/**
|
|
94
|
+
* List OAuth2 credential providers (resource-scoped per IAM service authorization reference).
|
|
95
|
+
*/
|
|
96
|
+
static LIST_PERMS = ['bedrock-agentcore:ListOauth2CredentialProviders'];
|
|
97
|
+
/**
|
|
98
|
+
* Control plane permissions to create, read, update, and delete this provider.
|
|
99
|
+
*/
|
|
100
|
+
static ADMIN_PERMS = [
|
|
101
|
+
'bedrock-agentcore:CreateOauth2CredentialProvider',
|
|
102
|
+
'bedrock-agentcore:GetOauth2CredentialProvider',
|
|
103
|
+
'bedrock-agentcore:UpdateOauth2CredentialProvider',
|
|
104
|
+
'bedrock-agentcore:DeleteOauth2CredentialProvider',
|
|
105
|
+
];
|
|
106
|
+
/**
|
|
107
|
+
* Data plane permissions to complete OAuth flows and retrieve tokens for outbound calls.
|
|
108
|
+
*/
|
|
109
|
+
static USE_PERMS = [
|
|
110
|
+
'bedrock-agentcore:GetResourceOauth2Token',
|
|
111
|
+
'bedrock-agentcore:CompleteResourceTokenAuth',
|
|
112
|
+
];
|
|
113
|
+
/**
|
|
114
|
+
* All OAuth2 credential provider actions used by the L2 grant helpers.
|
|
115
|
+
*/
|
|
116
|
+
static FULL_ACCESS_PERMS = [
|
|
117
|
+
...new Set([
|
|
118
|
+
...OAuth2CredentialProviderIdentityPerms.READ_PERMS,
|
|
119
|
+
...OAuth2CredentialProviderIdentityPerms.LIST_PERMS,
|
|
120
|
+
...OAuth2CredentialProviderIdentityPerms.ADMIN_PERMS,
|
|
121
|
+
...OAuth2CredentialProviderIdentityPerms.USE_PERMS,
|
|
122
|
+
]),
|
|
123
|
+
];
|
|
124
|
+
constructor() { }
|
|
125
|
+
}
|
|
126
|
+
exports.OAuth2CredentialProviderIdentityPerms = OAuth2CredentialProviderIdentityPerms;
|
|
127
|
+
/**
|
|
128
|
+
* IAM actions for AgentCore workload identities.
|
|
129
|
+
*
|
|
130
|
+
* @see https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrockagentcore.html
|
|
131
|
+
*/
|
|
132
|
+
class WorkloadIdentityPerms {
|
|
133
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.WorkloadIdentityPerms", version: "2.254.0-alpha.0" };
|
|
134
|
+
/**
|
|
135
|
+
* Read a single workload identity.
|
|
136
|
+
*/
|
|
137
|
+
static READ_PERMS = ['bedrock-agentcore:GetWorkloadIdentity'];
|
|
138
|
+
/**
|
|
139
|
+
* List workload identities (resource-scoped per IAM service authorization reference).
|
|
140
|
+
*/
|
|
141
|
+
static LIST_PERMS = ['bedrock-agentcore:ListWorkloadIdentities'];
|
|
142
|
+
/**
|
|
143
|
+
* Control plane permissions to create, read, update, and delete this workload identity.
|
|
144
|
+
*/
|
|
145
|
+
static ADMIN_PERMS = [
|
|
146
|
+
'bedrock-agentcore:CreateWorkloadIdentity',
|
|
147
|
+
'bedrock-agentcore:GetWorkloadIdentity',
|
|
148
|
+
'bedrock-agentcore:UpdateWorkloadIdentity',
|
|
149
|
+
'bedrock-agentcore:DeleteWorkloadIdentity',
|
|
150
|
+
];
|
|
151
|
+
/**
|
|
152
|
+
* Data plane permissions to mint workload access tokens.
|
|
153
|
+
*
|
|
154
|
+
* These actions require both the workload identity ARN and the
|
|
155
|
+
* workload-identity-directory ARN as resource scope.
|
|
156
|
+
*
|
|
157
|
+
* @see https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrockagentcore.html
|
|
158
|
+
*/
|
|
159
|
+
static USE_PERMS = [
|
|
160
|
+
'bedrock-agentcore:GetWorkloadAccessToken',
|
|
161
|
+
'bedrock-agentcore:GetWorkloadAccessTokenForJWT',
|
|
162
|
+
'bedrock-agentcore:GetWorkloadAccessTokenForUserId',
|
|
163
|
+
];
|
|
164
|
+
/**
|
|
165
|
+
* All workload identity actions used by the L2 grant helpers.
|
|
166
|
+
*/
|
|
167
|
+
static FULL_ACCESS_PERMS = [
|
|
168
|
+
...new Set([
|
|
169
|
+
...WorkloadIdentityPerms.READ_PERMS,
|
|
170
|
+
...WorkloadIdentityPerms.LIST_PERMS,
|
|
171
|
+
...WorkloadIdentityPerms.ADMIN_PERMS,
|
|
172
|
+
...WorkloadIdentityPerms.USE_PERMS,
|
|
173
|
+
]),
|
|
174
|
+
];
|
|
175
|
+
constructor() { }
|
|
176
|
+
}
|
|
177
|
+
exports.WorkloadIdentityPerms = WorkloadIdentityPerms;
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwZXJtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFFSDs7Ozs7Ozs7R0FRRztBQUNVLFFBQUEsd0NBQXdDLEdBQUc7SUFDdEQsK0JBQStCO0lBQy9CLCtCQUErQjtDQUN2QixDQUFDO0FBRVg7Ozs7OztHQU1HO0FBQ1UsUUFBQSx5Q0FBeUMsR0FBRztJQUN2RCwrQkFBK0I7Q0FDdkIsQ0FBQztBQUVYOzs7O0dBSUc7QUFDSCxNQUFhLHFDQUFxQzs7SUFDaEQ7O09BRUc7SUFDSSxNQUFNLENBQVUsVUFBVSxHQUFhLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUVoRzs7T0FFRztJQUNJLE1BQU0sQ0FBVSxVQUFVLEdBQWEsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO0lBRWxHOztPQUVHO0lBQ0ksTUFBTSxDQUFVLFdBQVcsR0FBYTtRQUM3QyxrREFBa0Q7UUFDbEQsK0NBQStDO1FBQy9DLGtEQUFrRDtRQUNsRCxrREFBa0Q7S0FDbkQsQ0FBQztJQUVGOztPQUVHO0lBQ0ksTUFBTSxDQUFVLFNBQVMsR0FBYSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7SUFFckY7O09BRUc7SUFDSSxNQUFNLENBQVUsaUJBQWlCLEdBQWE7UUFDbkQsR0FBRyxJQUFJLEdBQUcsQ0FBQztZQUNULEdBQUcscUNBQXFDLENBQUMsVUFBVTtZQUNuRCxHQUFHLHFDQUFxQyxDQUFDLFVBQVU7WUFDbkQsR0FBRyxxQ0FBcUMsQ0FBQyxXQUFXO1lBQ3BELEdBQUcscUNBQXFDLENBQUMsU0FBUztTQUNuRCxDQUFDO0tBQ0gsQ0FBQztJQUVGLGlCQUF3Qjs7QUF0QzFCLHNGQXVDQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLHFDQUFxQzs7SUFDaEQ7O09BRUc7SUFDSSxNQUFNLENBQVUsVUFBVSxHQUFhLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUVoRzs7T0FFRztJQUNJLE1BQU0sQ0FBVSxVQUFVLEdBQWEsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO0lBRWxHOztPQUVHO0lBQ0ksTUFBTSxDQUFVLFdBQVcsR0FBYTtRQUM3QyxrREFBa0Q7UUFDbEQsK0NBQStDO1FBQy9DLGtEQUFrRDtRQUNsRCxrREFBa0Q7S0FDbkQsQ0FBQztJQUVGOztPQUVHO0lBQ0ksTUFBTSxDQUFVLFNBQVMsR0FBYTtRQUMzQywwQ0FBMEM7UUFDMUMsNkNBQTZDO0tBQzlDLENBQUM7SUFFRjs7T0FFRztJQUNJLE1BQU0sQ0FBVSxpQkFBaUIsR0FBYTtRQUNuRCxHQUFHLElBQUksR0FBRyxDQUFDO1lBQ1QsR0FBRyxxQ0FBcUMsQ0FBQyxVQUFVO1lBQ25ELEdBQUcscUNBQXFDLENBQUMsVUFBVTtZQUNuRCxHQUFHLHFDQUFxQyxDQUFDLFdBQVc7WUFDcEQsR0FBRyxxQ0FBcUMsQ0FBQyxTQUFTO1NBQ25ELENBQUM7S0FDSCxDQUFDO0lBRUYsaUJBQXdCOztBQXpDMUIsc0ZBMENDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQWEscUJBQXFCOztJQUNoQzs7T0FFRztJQUNJLE1BQU0sQ0FBVSxVQUFVLEdBQWEsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBRXhGOztPQUVHO0lBQ0ksTUFBTSxDQUFVLFVBQVUsR0FBYSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7SUFFM0Y7O09BRUc7SUFDSSxNQUFNLENBQVUsV0FBVyxHQUFhO1FBQzdDLDBDQUEwQztRQUMxQyx1Q0FBdUM7UUFDdkMsMENBQTBDO1FBQzFDLDBDQUEwQztLQUMzQyxDQUFDO0lBRUY7Ozs7Ozs7T0FPRztJQUNJLE1BQU0sQ0FBVSxTQUFTLEdBQWE7UUFDM0MsMENBQTBDO1FBQzFDLGdEQUFnRDtRQUNoRCxtREFBbUQ7S0FDcEQsQ0FBQztJQUVGOztPQUVHO0lBQ0ksTUFBTSxDQUFVLGlCQUFpQixHQUFhO1FBQ25ELEdBQUcsSUFBSSxHQUFHLENBQUM7WUFDVCxHQUFHLHFCQUFxQixDQUFDLFVBQVU7WUFDbkMsR0FBRyxxQkFBcUIsQ0FBQyxVQUFVO1lBQ25DLEdBQUcscUJBQXFCLENBQUMsV0FBVztZQUNwQyxHQUFHLHFCQUFxQixDQUFDLFNBQVM7U0FDbkMsQ0FBQztLQUNILENBQUM7SUFFRixpQkFBd0I7O0FBL0MxQixzREFnREMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIFNlY3JldHMgTWFuYWdlciBhY3Rpb25zIHRvIHJlYWQgY3JlZGVudGlhbCBtYXRlcmlhbCBzdG9yZWQgZm9yIFRva2VuIFZhdWx0IHByb3ZpZGVycy5cbiAqXG4gKiBPdXRib3VuZCBnYXRld2F5IHRhcmdldHMgYXBwbHkgdGhlIHNhbWUgYWN0aW9ucyBvbiB0aGUgc2VjcmV0IEFSTjsgcHJpbmNpcGFscyB0aGF0IGNhbGxcbiAqIGBHZXRSZXNvdXJjZUFwaUtleWAgLyBgR2V0UmVzb3VyY2VPYXV0aDJUb2tlbmAgKG9yIHRoYXQgbWlycm9yIGdhdGV3YXkgYmVoYXZpb3IpIHR5cGljYWxseSBuZWVkIGJvdGhcbiAqIGBiZWRyb2NrLWFnZW50Y29yZWAgZGF0YS1wbGFuZSBhY3Rpb25zIGFuZCByZWFkIGFjY2VzcyB0byB0aGUgYmFja2luZyBzZWNyZXQuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL3NlY3VyaXR5LWlhbS1hd3NtYW5wb2wuaHRtbFxuICovXG5leHBvcnQgY29uc3QgVE9LRU5fVkFVTFRfQ1JFREVOVElBTF9TRUNSRVRfUkVBRF9QRVJNUyA9IFtcbiAgJ3NlY3JldHNtYW5hZ2VyOkdldFNlY3JldFZhbHVlJyxcbiAgJ3NlY3JldHNtYW5hZ2VyOkRlc2NyaWJlU2VjcmV0Jyxcbl0gYXMgY29uc3Q7XG5cbi8qKlxuICogU2VjcmV0cyBNYW5hZ2VyIGFjdGlvbnMgdG8gd3JpdGUgY3JlZGVudGlhbCBtYXRlcmlhbCBmb3IgVG9rZW4gVmF1bHQgcHJvdmlkZXJzLlxuICpcbiAqIENyZWF0ZSBhbmQgVXBkYXRlIGNvbnRyb2wgcGxhbmUgb3BlcmF0aW9ucyAoZS5nLiBDcmVhdGVBcGlLZXlDcmVkZW50aWFsUHJvdmlkZXIsXG4gKiBVcGRhdGVBcGlLZXlDcmVkZW50aWFsUHJvdmlkZXIpIHN0b3JlL3VwZGF0ZSB0aGUgY3JlZGVudGlhbCBpbiBTZWNyZXRzIE1hbmFnZXIsXG4gKiByZXF1aXJpbmcgUHV0U2VjcmV0VmFsdWUgb24gdGhlIGJhY2tpbmcgc2VjcmV0LlxuICovXG5leHBvcnQgY29uc3QgVE9LRU5fVkFVTFRfQ1JFREVOVElBTF9TRUNSRVRfV1JJVEVfUEVSTVMgPSBbXG4gICdzZWNyZXRzbWFuYWdlcjpQdXRTZWNyZXRWYWx1ZScsXG5dIGFzIGNvbnN0O1xuXG4vKipcbiAqIElBTSBhY3Rpb25zIGZvciBBZ2VudENvcmUgQVBJIGtleSBjcmVkZW50aWFsIHByb3ZpZGVycyAoVG9rZW4gVmF1bHQpLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYW1hem9uYmVkcm9ja2FnZW50Y29yZS5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBBcGlLZXlDcmVkZW50aWFsUHJvdmlkZXJJZGVudGl0eVBlcm1zIHtcbiAgLyoqXG4gICAqIFJlYWQgYSBzaW5nbGUgQVBJIGtleSBjcmVkZW50aWFsIHByb3ZpZGVyIGRlZmluaXRpb24uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJFQURfUEVSTVM6IHN0cmluZ1tdID0gWydiZWRyb2NrLWFnZW50Y29yZTpHZXRBcGlLZXlDcmVkZW50aWFsUHJvdmlkZXInXTtcblxuICAvKipcbiAgICogTGlzdCBBUEkga2V5IGNyZWRlbnRpYWwgcHJvdmlkZXJzIChyZXNvdXJjZS1zY29wZWQgcGVyIElBTSBzZXJ2aWNlIGF1dGhvcml6YXRpb24gcmVmZXJlbmNlKS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTElTVF9QRVJNUzogc3RyaW5nW10gPSBbJ2JlZHJvY2stYWdlbnRjb3JlOkxpc3RBcGlLZXlDcmVkZW50aWFsUHJvdmlkZXJzJ107XG5cbiAgLyoqXG4gICAqIENvbnRyb2wgcGxhbmUgcGVybWlzc2lvbnMgdG8gY3JlYXRlLCByZWFkLCB1cGRhdGUsIGFuZCBkZWxldGUgdGhpcyBwcm92aWRlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQURNSU5fUEVSTVM6IHN0cmluZ1tdID0gW1xuICAgICdiZWRyb2NrLWFnZW50Y29yZTpDcmVhdGVBcGlLZXlDcmVkZW50aWFsUHJvdmlkZXInLFxuICAgICdiZWRyb2NrLWFnZW50Y29yZTpHZXRBcGlLZXlDcmVkZW50aWFsUHJvdmlkZXInLFxuICAgICdiZWRyb2NrLWFnZW50Y29yZTpVcGRhdGVBcGlLZXlDcmVkZW50aWFsUHJvdmlkZXInLFxuICAgICdiZWRyb2NrLWFnZW50Y29yZTpEZWxldGVBcGlLZXlDcmVkZW50aWFsUHJvdmlkZXInLFxuICBdO1xuXG4gIC8qKlxuICAgKiBEYXRhIHBsYW5lIHBlcm1pc3Npb25zIHRvIHJldHJpZXZlIHRoZSBBUEkga2V5IG1hdGVyaWFsIGZvciBvdXRib3VuZCBjYWxscy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVVNFX1BFUk1TOiBzdHJpbmdbXSA9IFsnYmVkcm9jay1hZ2VudGNvcmU6R2V0UmVzb3VyY2VBcGlLZXknXTtcblxuICAvKipcbiAgICogQWxsIEFQSSBrZXkgY3JlZGVudGlhbCBwcm92aWRlciBhY3Rpb25zIHVzZWQgYnkgdGhlIEwyIGdyYW50IGhlbHBlcnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZVTExfQUNDRVNTX1BFUk1TOiBzdHJpbmdbXSA9IFtcbiAgICAuLi5uZXcgU2V0KFtcbiAgICAgIC4uLkFwaUtleUNyZWRlbnRpYWxQcm92aWRlcklkZW50aXR5UGVybXMuUkVBRF9QRVJNUyxcbiAgICAgIC4uLkFwaUtleUNyZWRlbnRpYWxQcm92aWRlcklkZW50aXR5UGVybXMuTElTVF9QRVJNUyxcbiAgICAgIC4uLkFwaUtleUNyZWRlbnRpYWxQcm92aWRlcklkZW50aXR5UGVybXMuQURNSU5fUEVSTVMsXG4gICAgICAuLi5BcGlLZXlDcmVkZW50aWFsUHJvdmlkZXJJZGVudGl0eVBlcm1zLlVTRV9QRVJNUyxcbiAgICBdKSxcbiAgXTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cbn1cblxuLyoqXG4gKiBJQU0gYWN0aW9ucyBmb3IgQWdlbnRDb3JlIE9BdXRoMiBjcmVkZW50aWFsIHByb3ZpZGVycyAoVG9rZW4gVmF1bHQpLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYW1hem9uYmVkcm9ja2FnZW50Y29yZS5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBPQXV0aDJDcmVkZW50aWFsUHJvdmlkZXJJZGVudGl0eVBlcm1zIHtcbiAgLyoqXG4gICAqIFJlYWQgYSBzaW5nbGUgT0F1dGgyIGNyZWRlbnRpYWwgcHJvdmlkZXIgZGVmaW5pdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkVBRF9QRVJNUzogc3RyaW5nW10gPSBbJ2JlZHJvY2stYWdlbnRjb3JlOkdldE9hdXRoMkNyZWRlbnRpYWxQcm92aWRlciddO1xuXG4gIC8qKlxuICAgKiBMaXN0IE9BdXRoMiBjcmVkZW50aWFsIHByb3ZpZGVycyAocmVzb3VyY2Utc2NvcGVkIHBlciBJQU0gc2VydmljZSBhdXRob3JpemF0aW9uIHJlZmVyZW5jZSkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExJU1RfUEVSTVM6IHN0cmluZ1tdID0gWydiZWRyb2NrLWFnZW50Y29yZTpMaXN0T2F1dGgyQ3JlZGVudGlhbFByb3ZpZGVycyddO1xuXG4gIC8qKlxuICAgKiBDb250cm9sIHBsYW5lIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQgZGVsZXRlIHRoaXMgcHJvdmlkZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFETUlOX1BFUk1TOiBzdHJpbmdbXSA9IFtcbiAgICAnYmVkcm9jay1hZ2VudGNvcmU6Q3JlYXRlT2F1dGgyQ3JlZGVudGlhbFByb3ZpZGVyJyxcbiAgICAnYmVkcm9jay1hZ2VudGNvcmU6R2V0T2F1dGgyQ3JlZGVudGlhbFByb3ZpZGVyJyxcbiAgICAnYmVkcm9jay1hZ2VudGNvcmU6VXBkYXRlT2F1dGgyQ3JlZGVudGlhbFByb3ZpZGVyJyxcbiAgICAnYmVkcm9jay1hZ2VudGNvcmU6RGVsZXRlT2F1dGgyQ3JlZGVudGlhbFByb3ZpZGVyJyxcbiAgXTtcblxuICAvKipcbiAgICogRGF0YSBwbGFuZSBwZXJtaXNzaW9ucyB0byBjb21wbGV0ZSBPQXV0aCBmbG93cyBhbmQgcmV0cmlldmUgdG9rZW5zIGZvciBvdXRib3VuZCBjYWxscy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVVNFX1BFUk1TOiBzdHJpbmdbXSA9IFtcbiAgICAnYmVkcm9jay1hZ2VudGNvcmU6R2V0UmVzb3VyY2VPYXV0aDJUb2tlbicsXG4gICAgJ2JlZHJvY2stYWdlbnRjb3JlOkNvbXBsZXRlUmVzb3VyY2VUb2tlbkF1dGgnLFxuICBdO1xuXG4gIC8qKlxuICAgKiBBbGwgT0F1dGgyIGNyZWRlbnRpYWwgcHJvdmlkZXIgYWN0aW9ucyB1c2VkIGJ5IHRoZSBMMiBncmFudCBoZWxwZXJzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGVUxMX0FDQ0VTU19QRVJNUzogc3RyaW5nW10gPSBbXG4gICAgLi4ubmV3IFNldChbXG4gICAgICAuLi5PQXV0aDJDcmVkZW50aWFsUHJvdmlkZXJJZGVudGl0eVBlcm1zLlJFQURfUEVSTVMsXG4gICAgICAuLi5PQXV0aDJDcmVkZW50aWFsUHJvdmlkZXJJZGVudGl0eVBlcm1zLkxJU1RfUEVSTVMsXG4gICAgICAuLi5PQXV0aDJDcmVkZW50aWFsUHJvdmlkZXJJZGVudGl0eVBlcm1zLkFETUlOX1BFUk1TLFxuICAgICAgLi4uT0F1dGgyQ3JlZGVudGlhbFByb3ZpZGVySWRlbnRpdHlQZXJtcy5VU0VfUEVSTVMsXG4gICAgXSksXG4gIF07XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbi8qKlxuICogSUFNIGFjdGlvbnMgZm9yIEFnZW50Q29yZSB3b3JrbG9hZCBpZGVudGl0aWVzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYW1hem9uYmVkcm9ja2FnZW50Y29yZS5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBXb3JrbG9hZElkZW50aXR5UGVybXMge1xuICAvKipcbiAgICogUmVhZCBhIHNpbmdsZSB3b3JrbG9hZCBpZGVudGl0eS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkVBRF9QRVJNUzogc3RyaW5nW10gPSBbJ2JlZHJvY2stYWdlbnRjb3JlOkdldFdvcmtsb2FkSWRlbnRpdHknXTtcblxuICAvKipcbiAgICogTGlzdCB3b3JrbG9hZCBpZGVudGl0aWVzIChyZXNvdXJjZS1zY29wZWQgcGVyIElBTSBzZXJ2aWNlIGF1dGhvcml6YXRpb24gcmVmZXJlbmNlKS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTElTVF9QRVJNUzogc3RyaW5nW10gPSBbJ2JlZHJvY2stYWdlbnRjb3JlOkxpc3RXb3JrbG9hZElkZW50aXRpZXMnXTtcblxuICAvKipcbiAgICogQ29udHJvbCBwbGFuZSBwZXJtaXNzaW9ucyB0byBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSB0aGlzIHdvcmtsb2FkIGlkZW50aXR5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBRE1JTl9QRVJNUzogc3RyaW5nW10gPSBbXG4gICAgJ2JlZHJvY2stYWdlbnRjb3JlOkNyZWF0ZVdvcmtsb2FkSWRlbnRpdHknLFxuICAgICdiZWRyb2NrLWFnZW50Y29yZTpHZXRXb3JrbG9hZElkZW50aXR5JyxcbiAgICAnYmVkcm9jay1hZ2VudGNvcmU6VXBkYXRlV29ya2xvYWRJZGVudGl0eScsXG4gICAgJ2JlZHJvY2stYWdlbnRjb3JlOkRlbGV0ZVdvcmtsb2FkSWRlbnRpdHknLFxuICBdO1xuXG4gIC8qKlxuICAgKiBEYXRhIHBsYW5lIHBlcm1pc3Npb25zIHRvIG1pbnQgd29ya2xvYWQgYWNjZXNzIHRva2Vucy5cbiAgICpcbiAgICogVGhlc2UgYWN0aW9ucyByZXF1aXJlIGJvdGggdGhlIHdvcmtsb2FkIGlkZW50aXR5IEFSTiBhbmQgdGhlXG4gICAqIHdvcmtsb2FkLWlkZW50aXR5LWRpcmVjdG9yeSBBUk4gYXMgcmVzb3VyY2Ugc2NvcGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYW1hem9uYmVkcm9ja2FnZW50Y29yZS5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFVTRV9QRVJNUzogc3RyaW5nW10gPSBbXG4gICAgJ2JlZHJvY2stYWdlbnRjb3JlOkdldFdvcmtsb2FkQWNjZXNzVG9rZW4nLFxuICAgICdiZWRyb2NrLWFnZW50Y29yZTpHZXRXb3JrbG9hZEFjY2Vzc1Rva2VuRm9ySldUJyxcbiAgICAnYmVkcm9jay1hZ2VudGNvcmU6R2V0V29ya2xvYWRBY2Nlc3NUb2tlbkZvclVzZXJJZCcsXG4gIF07XG5cbiAgLyoqXG4gICAqIEFsbCB3b3JrbG9hZCBpZGVudGl0eSBhY3Rpb25zIHVzZWQgYnkgdGhlIEwyIGdyYW50IGhlbHBlcnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZVTExfQUNDRVNTX1BFUk1TOiBzdHJpbmdbXSA9IFtcbiAgICAuLi5uZXcgU2V0KFtcbiAgICAgIC4uLldvcmtsb2FkSWRlbnRpdHlQZXJtcy5SRUFEX1BFUk1TLFxuICAgICAgLi4uV29ya2xvYWRJZGVudGl0eVBlcm1zLkxJU1RfUEVSTVMsXG4gICAgICAuLi5Xb3JrbG9hZElkZW50aXR5UGVybXMuQURNSU5fUEVSTVMsXG4gICAgICAuLi5Xb3JrbG9hZElkZW50aXR5UGVybXMuVVNFX1BFUk1TLFxuICAgIF0pLFxuICBdO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxufVxuIl19
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
5
|
+
* with the License. A copy of the License is located at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
10
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
11
|
+
* and limitations under the License.
|
|
12
|
+
*/
|
|
13
|
+
import type { IConstruct } from 'constructs';
|
|
14
|
+
import { throwIfInvalid } from '../memory/validation-helpers';
|
|
15
|
+
/** @internal */
|
|
16
|
+
export declare const CREDENTIAL_PROVIDER_NAME_MIN = 1;
|
|
17
|
+
/** @internal */
|
|
18
|
+
export declare const CREDENTIAL_PROVIDER_NAME_MAX = 128;
|
|
19
|
+
/** @internal */
|
|
20
|
+
export declare const CREDENTIAL_PROVIDER_NAME_PATTERN: RegExp;
|
|
21
|
+
/** @internal */
|
|
22
|
+
export declare const API_KEY_VALUE_MIN = 1;
|
|
23
|
+
/** @internal */
|
|
24
|
+
export declare const API_KEY_VALUE_MAX = 65536;
|
|
25
|
+
/** @internal */
|
|
26
|
+
export declare const CREDENTIAL_PROVIDER_TAG_MIN = 1;
|
|
27
|
+
/** @internal */
|
|
28
|
+
export declare const CREDENTIAL_PROVIDER_TAG_MAX = 256;
|
|
29
|
+
/** @internal */
|
|
30
|
+
export declare const WORKLOAD_IDENTITY_NAME_MIN = 3;
|
|
31
|
+
/** @internal */
|
|
32
|
+
export declare const WORKLOAD_IDENTITY_NAME_MAX = 255;
|
|
33
|
+
/** @internal */
|
|
34
|
+
export declare const WORKLOAD_IDENTITY_NAME_PATTERN: RegExp;
|
|
35
|
+
/** @internal */
|
|
36
|
+
export declare const ALLOWED_OAUTH2_RETURN_URL_MIN = 1;
|
|
37
|
+
/** @internal */
|
|
38
|
+
export declare const ALLOWED_OAUTH2_RETURN_URL_MAX = 2048;
|
|
39
|
+
/**
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
export declare function validateWorkloadIdentityName(name: string, scope?: IConstruct): string[];
|
|
43
|
+
/**
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
export declare function validateAllowedResourceOauth2ReturnUrls(urls: string[] | undefined, scope?: IConstruct): string[];
|
|
47
|
+
/**
|
|
48
|
+
* @internal
|
|
49
|
+
*/
|
|
50
|
+
export declare function validateCredentialProviderName(name: string, scope?: IConstruct): string[];
|
|
51
|
+
/**
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
export declare function validateApiKeyValue(apiKey: string | undefined, scope?: IConstruct): string[];
|
|
55
|
+
/**
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
58
|
+
export declare function validateCredentialProviderTags(tags?: {
|
|
59
|
+
[key: string]: string;
|
|
60
|
+
}, scope?: IConstruct): string[];
|
|
61
|
+
export { throwIfInvalid };
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
6
|
+
* with the License. A copy of the License is located at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
11
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
12
|
+
* and limitations under the License.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.throwIfInvalid = exports.ALLOWED_OAUTH2_RETURN_URL_MAX = exports.ALLOWED_OAUTH2_RETURN_URL_MIN = exports.WORKLOAD_IDENTITY_NAME_PATTERN = exports.WORKLOAD_IDENTITY_NAME_MAX = exports.WORKLOAD_IDENTITY_NAME_MIN = exports.CREDENTIAL_PROVIDER_TAG_MAX = exports.CREDENTIAL_PROVIDER_TAG_MIN = exports.API_KEY_VALUE_MAX = exports.API_KEY_VALUE_MIN = exports.CREDENTIAL_PROVIDER_NAME_PATTERN = exports.CREDENTIAL_PROVIDER_NAME_MAX = exports.CREDENTIAL_PROVIDER_NAME_MIN = void 0;
|
|
16
|
+
exports.validateWorkloadIdentityName = validateWorkloadIdentityName;
|
|
17
|
+
exports.validateAllowedResourceOauth2ReturnUrls = validateAllowedResourceOauth2ReturnUrls;
|
|
18
|
+
exports.validateCredentialProviderName = validateCredentialProviderName;
|
|
19
|
+
exports.validateApiKeyValue = validateApiKeyValue;
|
|
20
|
+
exports.validateCredentialProviderTags = validateCredentialProviderTags;
|
|
21
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
22
|
+
const validation_helpers_1 = require("../memory/validation-helpers");
|
|
23
|
+
Object.defineProperty(exports, "throwIfInvalid", { enumerable: true, get: function () { return validation_helpers_1.throwIfInvalid; } });
|
|
24
|
+
/** @internal */
|
|
25
|
+
exports.CREDENTIAL_PROVIDER_NAME_MIN = 1;
|
|
26
|
+
/** @internal */
|
|
27
|
+
exports.CREDENTIAL_PROVIDER_NAME_MAX = 128;
|
|
28
|
+
/** @internal */
|
|
29
|
+
exports.CREDENTIAL_PROVIDER_NAME_PATTERN = /^[a-zA-Z0-9\-_]+$/;
|
|
30
|
+
/** @internal */
|
|
31
|
+
exports.API_KEY_VALUE_MIN = 1;
|
|
32
|
+
/** @internal */
|
|
33
|
+
exports.API_KEY_VALUE_MAX = 65536;
|
|
34
|
+
/** @internal */
|
|
35
|
+
exports.CREDENTIAL_PROVIDER_TAG_MIN = 1;
|
|
36
|
+
/** @internal */
|
|
37
|
+
exports.CREDENTIAL_PROVIDER_TAG_MAX = 256;
|
|
38
|
+
/** @internal */
|
|
39
|
+
exports.WORKLOAD_IDENTITY_NAME_MIN = 3;
|
|
40
|
+
/** @internal */
|
|
41
|
+
exports.WORKLOAD_IDENTITY_NAME_MAX = 255;
|
|
42
|
+
/** @internal */
|
|
43
|
+
exports.WORKLOAD_IDENTITY_NAME_PATTERN = /^[A-Za-z0-9_.-]+$/;
|
|
44
|
+
/** @internal */
|
|
45
|
+
exports.ALLOWED_OAUTH2_RETURN_URL_MIN = 1;
|
|
46
|
+
/** @internal */
|
|
47
|
+
exports.ALLOWED_OAUTH2_RETURN_URL_MAX = 2048;
|
|
48
|
+
/**
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
function validateWorkloadIdentityName(name, scope) {
|
|
52
|
+
const errors = [];
|
|
53
|
+
errors.push(...(0, validation_helpers_1.validateStringFieldLength)({
|
|
54
|
+
value: name,
|
|
55
|
+
fieldName: 'Workload identity name',
|
|
56
|
+
minLength: exports.WORKLOAD_IDENTITY_NAME_MIN,
|
|
57
|
+
maxLength: exports.WORKLOAD_IDENTITY_NAME_MAX,
|
|
58
|
+
}, scope));
|
|
59
|
+
errors.push(...(0, validation_helpers_1.validateFieldPattern)(name, 'Workload identity name', exports.WORKLOAD_IDENTITY_NAME_PATTERN, 'Workload identity name may only contain letters, numbers, dots, underscores, and hyphens.', scope));
|
|
60
|
+
return errors;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* @internal
|
|
64
|
+
*/
|
|
65
|
+
function validateAllowedResourceOauth2ReturnUrls(urls, scope) {
|
|
66
|
+
if (urls == null) {
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
if (aws_cdk_lib_1.Token.isUnresolved(urls)) {
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
const errors = [];
|
|
73
|
+
if (urls.length === 0) {
|
|
74
|
+
errors.push('Allowed OAuth2 return URLs must contain at least one URL when specified.');
|
|
75
|
+
return errors;
|
|
76
|
+
}
|
|
77
|
+
for (const url of urls) {
|
|
78
|
+
if (aws_cdk_lib_1.Token.isUnresolved(url)) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
errors.push(...(0, validation_helpers_1.validateStringFieldLength)({
|
|
82
|
+
value: url,
|
|
83
|
+
fieldName: 'Allowed OAuth2 return URL',
|
|
84
|
+
minLength: exports.ALLOWED_OAUTH2_RETURN_URL_MIN,
|
|
85
|
+
maxLength: exports.ALLOWED_OAUTH2_RETURN_URL_MAX,
|
|
86
|
+
}, scope));
|
|
87
|
+
}
|
|
88
|
+
return errors;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @internal
|
|
92
|
+
*/
|
|
93
|
+
function validateCredentialProviderName(name, scope) {
|
|
94
|
+
const errors = [];
|
|
95
|
+
errors.push(...(0, validation_helpers_1.validateStringFieldLength)({
|
|
96
|
+
value: name,
|
|
97
|
+
fieldName: 'Credential provider name',
|
|
98
|
+
minLength: exports.CREDENTIAL_PROVIDER_NAME_MIN,
|
|
99
|
+
maxLength: exports.CREDENTIAL_PROVIDER_NAME_MAX,
|
|
100
|
+
}, scope));
|
|
101
|
+
errors.push(...(0, validation_helpers_1.validateFieldPattern)(name, 'Credential provider name', exports.CREDENTIAL_PROVIDER_NAME_PATTERN, 'Credential provider name may only contain letters, numbers, hyphens, and underscores.', scope));
|
|
102
|
+
return errors;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* @internal
|
|
106
|
+
*/
|
|
107
|
+
function validateApiKeyValue(apiKey, scope) {
|
|
108
|
+
if (apiKey == null || apiKey === '') {
|
|
109
|
+
return [];
|
|
110
|
+
}
|
|
111
|
+
if (aws_cdk_lib_1.Token.isUnresolved(apiKey)) {
|
|
112
|
+
return [];
|
|
113
|
+
}
|
|
114
|
+
return (0, validation_helpers_1.validateStringFieldLength)({
|
|
115
|
+
value: apiKey,
|
|
116
|
+
fieldName: 'API key',
|
|
117
|
+
minLength: exports.API_KEY_VALUE_MIN,
|
|
118
|
+
maxLength: exports.API_KEY_VALUE_MAX,
|
|
119
|
+
}, scope);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* @internal
|
|
123
|
+
*/
|
|
124
|
+
function validateCredentialProviderTags(tags, scope) {
|
|
125
|
+
let errors = [];
|
|
126
|
+
if (tags === undefined) {
|
|
127
|
+
return errors;
|
|
128
|
+
}
|
|
129
|
+
if (aws_cdk_lib_1.Token.isUnresolved(tags)) {
|
|
130
|
+
return errors;
|
|
131
|
+
}
|
|
132
|
+
const validKeyPattern = /^[a-zA-Z0-9\s._:/=+@-]*$/;
|
|
133
|
+
const validValuePattern = /^[a-zA-Z0-9\s._:/=+@-]*$/;
|
|
134
|
+
for (const [key, value] of Object.entries(tags)) {
|
|
135
|
+
if (!aws_cdk_lib_1.Token.isUnresolved(key)) {
|
|
136
|
+
errors.push(...(0, validation_helpers_1.validateStringFieldLength)({
|
|
137
|
+
value: key,
|
|
138
|
+
fieldName: 'Tag key',
|
|
139
|
+
minLength: exports.CREDENTIAL_PROVIDER_TAG_MIN,
|
|
140
|
+
maxLength: exports.CREDENTIAL_PROVIDER_TAG_MAX,
|
|
141
|
+
}, scope));
|
|
142
|
+
errors.push(...(0, validation_helpers_1.validateFieldPattern)(key, 'Tag key', validKeyPattern, undefined, scope));
|
|
143
|
+
}
|
|
144
|
+
if (!aws_cdk_lib_1.Token.isUnresolved(value)) {
|
|
145
|
+
errors.push(...(0, validation_helpers_1.validateStringFieldLength)({
|
|
146
|
+
value,
|
|
147
|
+
fieldName: 'Tag value',
|
|
148
|
+
minLength: exports.CREDENTIAL_PROVIDER_TAG_MIN,
|
|
149
|
+
maxLength: exports.CREDENTIAL_PROVIDER_TAG_MAX,
|
|
150
|
+
}, scope));
|
|
151
|
+
errors.push(...(0, validation_helpers_1.validateFieldPattern)(value, 'Tag value', validValuePattern, undefined, scope));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return errors;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidmFsaWRhdGlvbi1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBNkNILG9FQWdCQztBQUtELDBGQXdCQztBQUtELHdFQWdCQztBQUtELGtEQWFDO0FBS0Qsd0VBbUNDO0FBdktELDZDQUFvQztBQUVwQyxxRUFBK0c7QUF1S3RHLCtGQXZLaUQsbUNBQWMsT0F1S2pEO0FBckt2QixnQkFBZ0I7QUFDSCxRQUFBLDRCQUE0QixHQUFHLENBQUMsQ0FBQztBQUU5QyxnQkFBZ0I7QUFDSCxRQUFBLDRCQUE0QixHQUFHLEdBQUcsQ0FBQztBQUVoRCxnQkFBZ0I7QUFDSCxRQUFBLGdDQUFnQyxHQUFHLG1CQUFtQixDQUFDO0FBRXBFLGdCQUFnQjtBQUNILFFBQUEsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0FBRW5DLGdCQUFnQjtBQUNILFFBQUEsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBRXZDLGdCQUFnQjtBQUNILFFBQUEsMkJBQTJCLEdBQUcsQ0FBQyxDQUFDO0FBRTdDLGdCQUFnQjtBQUNILFFBQUEsMkJBQTJCLEdBQUcsR0FBRyxDQUFDO0FBRS9DLGdCQUFnQjtBQUNILFFBQUEsMEJBQTBCLEdBQUcsQ0FBQyxDQUFDO0FBRTVDLGdCQUFnQjtBQUNILFFBQUEsMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0FBRTlDLGdCQUFnQjtBQUNILFFBQUEsOEJBQThCLEdBQUcsbUJBQW1CLENBQUM7QUFFbEUsZ0JBQWdCO0FBQ0gsUUFBQSw2QkFBNkIsR0FBRyxDQUFDLENBQUM7QUFFL0MsZ0JBQWdCO0FBQ0gsUUFBQSw2QkFBNkIsR0FBRyxJQUFJLENBQUM7QUFFbEQ7O0dBRUc7QUFDSCxTQUFnQiw0QkFBNEIsQ0FBQyxJQUFZLEVBQUUsS0FBa0I7SUFDM0UsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFBLDhDQUF5QixFQUFDO1FBQ3ZDLEtBQUssRUFBRSxJQUFJO1FBQ1gsU0FBUyxFQUFFLHdCQUF3QjtRQUNuQyxTQUFTLEVBQUUsa0NBQTBCO1FBQ3JDLFNBQVMsRUFBRSxrQ0FBMEI7S0FDdEMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUEseUNBQW9CLEVBQ2pDLElBQUksRUFDSix3QkFBd0IsRUFDeEIsc0NBQThCLEVBQzlCLDJGQUEyRixFQUMzRixLQUFLLENBQ04sQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsdUNBQXVDLENBQUMsSUFBMEIsRUFBRSxLQUFrQjtJQUNwRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNqQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxJQUFJLG1CQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLENBQUMsSUFBSSxDQUFDLDBFQUEwRSxDQUFDLENBQUM7UUFDeEYsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUNELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxtQkFBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLFNBQVM7UUFDWCxDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUEsOENBQXlCLEVBQUM7WUFDdkMsS0FBSyxFQUFFLEdBQUc7WUFDVixTQUFTLEVBQUUsMkJBQTJCO1lBQ3RDLFNBQVMsRUFBRSxxQ0FBNkI7WUFDeEMsU0FBUyxFQUFFLHFDQUE2QjtTQUN6QyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDYixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsOEJBQThCLENBQUMsSUFBWSxFQUFFLEtBQWtCO0lBQzdFLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBQSw4Q0FBeUIsRUFBQztRQUN2QyxLQUFLLEVBQUUsSUFBSTtRQUNYLFNBQVMsRUFBRSwwQkFBMEI7UUFDckMsU0FBUyxFQUFFLG9DQUE0QjtRQUN2QyxTQUFTLEVBQUUsb0NBQTRCO0tBQ3hDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFBLHlDQUFvQixFQUNqQyxJQUFJLEVBQ0osMEJBQTBCLEVBQzFCLHdDQUFnQyxFQUNoQyx1RkFBdUYsRUFDdkYsS0FBSyxDQUNOLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLE1BQTBCLEVBQUUsS0FBa0I7SUFDaEYsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNwQyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxJQUFJLG1CQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDL0IsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsT0FBTyxJQUFBLDhDQUF5QixFQUFDO1FBQy9CLEtBQUssRUFBRSxNQUFNO1FBQ2IsU0FBUyxFQUFFLFNBQVM7UUFDcEIsU0FBUyxFQUFFLHlCQUFpQjtRQUM1QixTQUFTLEVBQUUseUJBQWlCO0tBQzdCLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDWixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQiw4QkFBOEIsQ0FBQyxJQUFnQyxFQUFFLEtBQWtCO0lBQ2pHLElBQUksTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUMxQixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN2QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0QsSUFBSSxtQkFBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLGVBQWUsR0FBRywwQkFBMEIsQ0FBQztJQUNuRCxNQUFNLGlCQUFpQixHQUFHLDBCQUEwQixDQUFDO0lBRXJELEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLG1CQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUEsOENBQXlCLEVBQUM7Z0JBQ3ZDLEtBQUssRUFBRSxHQUFHO2dCQUNWLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixTQUFTLEVBQUUsbUNBQTJCO2dCQUN0QyxTQUFTLEVBQUUsbUNBQTJCO2FBQ3ZDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFBLHlDQUFvQixFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFGLENBQUM7UUFFRCxJQUFJLENBQUMsbUJBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBQSw4Q0FBeUIsRUFBQztnQkFDdkMsS0FBSztnQkFDTCxTQUFTLEVBQUUsV0FBVztnQkFDdEIsU0FBUyxFQUFFLG1DQUEyQjtnQkFDdEMsU0FBUyxFQUFFLG1DQUEyQjthQUN2QyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDWCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBQSx5Q0FBb0IsRUFBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyB2YWxpZGF0ZUZpZWxkUGF0dGVybiwgdmFsaWRhdGVTdHJpbmdGaWVsZExlbmd0aCwgdGhyb3dJZkludmFsaWQgfSBmcm9tICcuLi9tZW1vcnkvdmFsaWRhdGlvbi1oZWxwZXJzJztcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IENSRURFTlRJQUxfUFJPVklERVJfTkFNRV9NSU4gPSAxO1xuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgY29uc3QgQ1JFREVOVElBTF9QUk9WSURFUl9OQU1FX01BWCA9IDEyODtcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IENSRURFTlRJQUxfUFJPVklERVJfTkFNRV9QQVRURVJOID0gL15bYS16QS1aMC05XFwtX10rJC87XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCBBUElfS0VZX1ZBTFVFX01JTiA9IDE7XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCBBUElfS0VZX1ZBTFVFX01BWCA9IDY1NTM2O1xuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgY29uc3QgQ1JFREVOVElBTF9QUk9WSURFUl9UQUdfTUlOID0gMTtcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IENSRURFTlRJQUxfUFJPVklERVJfVEFHX01BWCA9IDI1NjtcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IFdPUktMT0FEX0lERU5USVRZX05BTUVfTUlOID0gMztcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IFdPUktMT0FEX0lERU5USVRZX05BTUVfTUFYID0gMjU1O1xuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgY29uc3QgV09SS0xPQURfSURFTlRJVFlfTkFNRV9QQVRURVJOID0gL15bQS1aYS16MC05Xy4tXSskLztcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IEFMTE9XRURfT0FVVEgyX1JFVFVSTl9VUkxfTUlOID0gMTtcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IEFMTE9XRURfT0FVVEgyX1JFVFVSTl9VUkxfTUFYID0gMjA0ODtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlV29ya2xvYWRJZGVudGl0eU5hbWUobmFtZTogc3RyaW5nLCBzY29wZT86IElDb25zdHJ1Y3QpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVTdHJpbmdGaWVsZExlbmd0aCh7XG4gICAgdmFsdWU6IG5hbWUsXG4gICAgZmllbGROYW1lOiAnV29ya2xvYWQgaWRlbnRpdHkgbmFtZScsXG4gICAgbWluTGVuZ3RoOiBXT1JLTE9BRF9JREVOVElUWV9OQU1FX01JTixcbiAgICBtYXhMZW5ndGg6IFdPUktMT0FEX0lERU5USVRZX05BTUVfTUFYLFxuICB9LCBzY29wZSkpO1xuICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICBuYW1lLFxuICAgICdXb3JrbG9hZCBpZGVudGl0eSBuYW1lJyxcbiAgICBXT1JLTE9BRF9JREVOVElUWV9OQU1FX1BBVFRFUk4sXG4gICAgJ1dvcmtsb2FkIGlkZW50aXR5IG5hbWUgbWF5IG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCBkb3RzLCB1bmRlcnNjb3JlcywgYW5kIGh5cGhlbnMuJyxcbiAgICBzY29wZSxcbiAgKSk7XG4gIHJldHVybiBlcnJvcnM7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUFsbG93ZWRSZXNvdXJjZU9hdXRoMlJldHVyblVybHModXJsczogc3RyaW5nW10gfCB1bmRlZmluZWQsIHNjb3BlPzogSUNvbnN0cnVjdCk6IHN0cmluZ1tdIHtcbiAgaWYgKHVybHMgPT0gbnVsbCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKHVybHMpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgaWYgKHVybHMubGVuZ3RoID09PSAwKSB7XG4gICAgZXJyb3JzLnB1c2goJ0FsbG93ZWQgT0F1dGgyIHJldHVybiBVUkxzIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgVVJMIHdoZW4gc3BlY2lmaWVkLicpO1xuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cbiAgZm9yIChjb25zdCB1cmwgb2YgdXJscykge1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQodXJsKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlU3RyaW5nRmllbGRMZW5ndGgoe1xuICAgICAgdmFsdWU6IHVybCxcbiAgICAgIGZpZWxkTmFtZTogJ0FsbG93ZWQgT0F1dGgyIHJldHVybiBVUkwnLFxuICAgICAgbWluTGVuZ3RoOiBBTExPV0VEX09BVVRIMl9SRVRVUk5fVVJMX01JTixcbiAgICAgIG1heExlbmd0aDogQUxMT1dFRF9PQVVUSDJfUkVUVVJOX1VSTF9NQVgsXG4gICAgfSwgc2NvcGUpKTtcbiAgfVxuICByZXR1cm4gZXJyb3JzO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVDcmVkZW50aWFsUHJvdmlkZXJOYW1lKG5hbWU6IHN0cmluZywgc2NvcGU/OiBJQ29uc3RydWN0KTogc3RyaW5nW10ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlU3RyaW5nRmllbGRMZW5ndGgoe1xuICAgIHZhbHVlOiBuYW1lLFxuICAgIGZpZWxkTmFtZTogJ0NyZWRlbnRpYWwgcHJvdmlkZXIgbmFtZScsXG4gICAgbWluTGVuZ3RoOiBDUkVERU5USUFMX1BST1ZJREVSX05BTUVfTUlOLFxuICAgIG1heExlbmd0aDogQ1JFREVOVElBTF9QUk9WSURFUl9OQU1FX01BWCxcbiAgfSwgc2NvcGUpKTtcbiAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gICAgbmFtZSxcbiAgICAnQ3JlZGVudGlhbCBwcm92aWRlciBuYW1lJyxcbiAgICBDUkVERU5USUFMX1BST1ZJREVSX05BTUVfUEFUVEVSTixcbiAgICAnQ3JlZGVudGlhbCBwcm92aWRlciBuYW1lIG1heSBvbmx5IGNvbnRhaW4gbGV0dGVycywgbnVtYmVycywgaHlwaGVucywgYW5kIHVuZGVyc2NvcmVzLicsXG4gICAgc2NvcGUsXG4gICkpO1xuICByZXR1cm4gZXJyb3JzO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVBcGlLZXlWYWx1ZShhcGlLZXk6IHN0cmluZyB8IHVuZGVmaW5lZCwgc2NvcGU/OiBJQ29uc3RydWN0KTogc3RyaW5nW10ge1xuICBpZiAoYXBpS2V5ID09IG51bGwgfHwgYXBpS2V5ID09PSAnJykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKGFwaUtleSkpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIHZhbGlkYXRlU3RyaW5nRmllbGRMZW5ndGgoe1xuICAgIHZhbHVlOiBhcGlLZXksXG4gICAgZmllbGROYW1lOiAnQVBJIGtleScsXG4gICAgbWluTGVuZ3RoOiBBUElfS0VZX1ZBTFVFX01JTixcbiAgICBtYXhMZW5ndGg6IEFQSV9LRVlfVkFMVUVfTUFYLFxuICB9LCBzY29wZSk7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNyZWRlbnRpYWxQcm92aWRlclRhZ3ModGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sIHNjb3BlPzogSUNvbnN0cnVjdCk6IHN0cmluZ1tdIHtcbiAgbGV0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgaWYgKHRhZ3MgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cbiAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh0YWdzKSkge1xuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cblxuICBjb25zdCB2YWxpZEtleVBhdHRlcm4gPSAvXlthLXpBLVowLTlcXHMuXzovPStALV0qJC87XG4gIGNvbnN0IHZhbGlkVmFsdWVQYXR0ZXJuID0gL15bYS16QS1aMC05XFxzLl86Lz0rQC1dKiQvO1xuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRhZ3MpKSB7XG4gICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQoa2V5KSkge1xuICAgICAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVTdHJpbmdGaWVsZExlbmd0aCh7XG4gICAgICAgIHZhbHVlOiBrZXksXG4gICAgICAgIGZpZWxkTmFtZTogJ1RhZyBrZXknLFxuICAgICAgICBtaW5MZW5ndGg6IENSRURFTlRJQUxfUFJPVklERVJfVEFHX01JTixcbiAgICAgICAgbWF4TGVuZ3RoOiBDUkVERU5USUFMX1BST1ZJREVSX1RBR19NQVgsXG4gICAgICB9LCBzY29wZSkpO1xuICAgICAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVGaWVsZFBhdHRlcm4oa2V5LCAnVGFnIGtleScsIHZhbGlkS2V5UGF0dGVybiwgdW5kZWZpbmVkLCBzY29wZSkpO1xuICAgIH1cblxuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKHZhbHVlKSkge1xuICAgICAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVTdHJpbmdGaWVsZExlbmd0aCh7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBmaWVsZE5hbWU6ICdUYWcgdmFsdWUnLFxuICAgICAgICBtaW5MZW5ndGg6IENSRURFTlRJQUxfUFJPVklERVJfVEFHX01JTixcbiAgICAgICAgbWF4TGVuZ3RoOiBDUkVERU5USUFMX1BST1ZJREVSX1RBR19NQVgsXG4gICAgICB9LCBzY29wZSkpO1xuICAgICAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVGaWVsZFBhdHRlcm4odmFsdWUsICdUYWcgdmFsdWUnLCB2YWxpZFZhbHVlUGF0dGVybiwgdW5kZWZpbmVkLCBzY29wZSkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcnJvcnM7XG59XG5cbmV4cG9ydCB7IHRocm93SWZJbnZhbGlkIH07XG4iXX0=
|