cdk8s-aws-cdk 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/.gitattributes +21 -0
  2. package/.jsii +4392 -0
  3. package/API.md +2204 -0
  4. package/LICENSE +202 -0
  5. package/README.md +201 -0
  6. package/changelog.md +2 -0
  7. package/examples/rds-db-instance/README.md +0 -0
  8. package/examples/rds-db-instance/cdk.out/RdsDBInstanceStack.assets.json +19 -0
  9. package/examples/rds-db-instance/cdk.out/RdsDBInstanceStack.template.json +86 -0
  10. package/examples/rds-db-instance/cdk.out/cdk.out +1 -0
  11. package/examples/rds-db-instance/cdk.out/manifest.json +230 -0
  12. package/examples/rds-db-instance/cdk.out/tree.json +171 -0
  13. package/examples/rds-db-instance/main.ts +136 -0
  14. package/lib/adapter.d.ts +37 -0
  15. package/lib/adapter.d.ts.map +1 -0
  16. package/lib/adapter.js +196 -0
  17. package/lib/chart.d.ts +19 -0
  18. package/lib/chart.d.ts.map +1 -0
  19. package/lib/chart.js +63 -0
  20. package/lib/imports/cloudcontrol.services.k8s.aws.d.ts +106 -0
  21. package/lib/imports/cloudcontrol.services.k8s.aws.d.ts.map +1 -0
  22. package/lib/imports/cloudcontrol.services.k8s.aws.js +92 -0
  23. package/lib/imports/dynamotables-dynamodb.services.k8s.aws.d.ts +430 -0
  24. package/lib/imports/dynamotables-dynamodb.services.k8s.aws.d.ts.map +1 -0
  25. package/lib/imports/dynamotables-dynamodb.services.k8s.aws.js +314 -0
  26. package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.d.ts +173 -0
  27. package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.d.ts.map +1 -0
  28. package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.js +156 -0
  29. package/lib/imports/fieldexports-services.k8s.aws.d.ts +159 -0
  30. package/lib/imports/fieldexports-services.k8s.aws.d.ts.map +1 -0
  31. package/lib/imports/fieldexports-services.k8s.aws.js +151 -0
  32. package/lib/imports/iampolicies-iam.services.k8s.aws.d.ts +135 -0
  33. package/lib/imports/iampolicies-iam.services.k8s.aws.d.ts.map +1 -0
  34. package/lib/imports/iampolicies-iam.services.k8s.aws.js +109 -0
  35. package/lib/imports/iamroles-iam.services.k8s.aws.d.ts +143 -0
  36. package/lib/imports/iamroles-iam.services.k8s.aws.d.ts.map +1 -0
  37. package/lib/imports/iamroles-iam.services.k8s.aws.js +112 -0
  38. package/lib/imports/k8s.d.ts +18619 -0
  39. package/lib/imports/k8s.d.ts.map +1 -0
  40. package/lib/imports/k8s.js +14701 -0
  41. package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.d.ts +280 -0
  42. package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.d.ts.map +1 -0
  43. package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.js +183 -0
  44. package/lib/imports/lambdafunctions-lambda.services.k8s.aws.d.ts +343 -0
  45. package/lib/imports/lambdafunctions-lambda.services.k8s.aws.d.ts.map +1 -0
  46. package/lib/imports/lambdafunctions-lambda.services.k8s.aws.js +225 -0
  47. package/lib/imports/rdsdbinstances-rds.services.k8s.aws.d.ts +790 -0
  48. package/lib/imports/rdsdbinstances-rds.services.k8s.aws.d.ts.map +1 -0
  49. package/lib/imports/rdsdbinstances-rds.services.k8s.aws.js +217 -0
  50. package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.d.ts +114 -0
  51. package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.d.ts.map +1 -0
  52. package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.js +108 -0
  53. package/lib/imports/s3buckets-s3.services.k8s.aws.d.ts +2253 -0
  54. package/lib/imports/s3buckets-s3.services.k8s.aws.d.ts.map +1 -0
  55. package/lib/imports/s3buckets-s3.services.k8s.aws.js +1672 -0
  56. package/lib/imports/sfnmachines-sfn.services.k8s.aws.d.ts +203 -0
  57. package/lib/imports/sfnmachines-sfn.services.k8s.aws.d.ts.map +1 -0
  58. package/lib/imports/sfnmachines-sfn.services.k8s.aws.js +174 -0
  59. package/lib/imports/snstopics-sns.services.k8s.aws.d.ts +106 -0
  60. package/lib/imports/snstopics-sns.services.k8s.aws.d.ts.map +1 -0
  61. package/lib/imports/snstopics-sns.services.k8s.aws.js +110 -0
  62. package/lib/index.d.ts +4 -0
  63. package/lib/index.d.ts.map +1 -0
  64. package/lib/index.js +16 -0
  65. package/lib/mappers/base.d.ts +23 -0
  66. package/lib/mappers/base.d.ts.map +1 -0
  67. package/lib/mappers/base.js +20 -0
  68. package/lib/mappers/ec2-security-group.d.ts +9 -0
  69. package/lib/mappers/ec2-security-group.d.ts.map +1 -0
  70. package/lib/mappers/ec2-security-group.js +33 -0
  71. package/lib/mappers/iam-policy.d.ts +9 -0
  72. package/lib/mappers/iam-policy.d.ts.map +1 -0
  73. package/lib/mappers/iam-policy.js +32 -0
  74. package/lib/mappers/iam-role.d.ts +9 -0
  75. package/lib/mappers/iam-role.d.ts.map +1 -0
  76. package/lib/mappers/iam-role.js +34 -0
  77. package/lib/mappers/index.d.ts +9 -0
  78. package/lib/mappers/index.d.ts.map +1 -0
  79. package/lib/mappers/index.js +21 -0
  80. package/lib/mappers/lambda-function.d.ts +9 -0
  81. package/lib/mappers/lambda-function.d.ts.map +1 -0
  82. package/lib/mappers/lambda-function.js +37 -0
  83. package/lib/mappers/rds-db-instance.d.ts +10 -0
  84. package/lib/mappers/rds-db-instance.d.ts.map +1 -0
  85. package/lib/mappers/rds-db-instance.js +65 -0
  86. package/lib/mappers/rds-db-subnet-group.d.ts +9 -0
  87. package/lib/mappers/rds-db-subnet-group.d.ts.map +1 -0
  88. package/lib/mappers/rds-db-subnet-group.js +34 -0
  89. package/lib/mappers/s3-bucket.d.ts +9 -0
  90. package/lib/mappers/s3-bucket.d.ts.map +1 -0
  91. package/lib/mappers/s3-bucket.js +53 -0
  92. package/package.json +129 -0
  93. package/releasetag.txt +1 -0
  94. package/version.txt +1 -0
@@ -0,0 +1,343 @@
1
+ import { ApiObject, ApiObjectMetadata, GroupVersionKind } from 'cdk8s';
2
+ import { Construct } from 'constructs';
3
+ /**
4
+ * Function is the Schema for the Functions API
5
+ *
6
+ * @schema Function
7
+ */
8
+ export declare class Function extends ApiObject {
9
+ /**
10
+ * Returns the apiVersion and kind for "Function"
11
+ */
12
+ static readonly GVK: GroupVersionKind;
13
+ /**
14
+ * Renders a Kubernetes manifest for "Function".
15
+ *
16
+ * This can be used to inline resource manifests inside other objects (e.g. as templates).
17
+ *
18
+ * @param props initialization props
19
+ */
20
+ static manifest(props?: FunctionProps): any;
21
+ /**
22
+ * Defines a "Function" API object
23
+ * @param scope the scope in which to define this object
24
+ * @param id a scope-local name for the object
25
+ * @param props initialization props
26
+ */
27
+ constructor(scope: Construct, id: string, props?: FunctionProps);
28
+ /**
29
+ * Renders the object to Kubernetes JSON.
30
+ */
31
+ toJson(): any;
32
+ }
33
+ /**
34
+ * Function is the Schema for the Functions API
35
+ *
36
+ * @schema Function
37
+ */
38
+ export interface FunctionProps {
39
+ /**
40
+ * @schema Function#metadata
41
+ */
42
+ readonly metadata?: ApiObjectMetadata;
43
+ /**
44
+ * FunctionSpec defines the desired state of Function.
45
+ *
46
+ * @schema Function#spec
47
+ */
48
+ readonly spec?: FunctionSpec;
49
+ }
50
+ /**
51
+ * Converts an object of type 'FunctionProps' to JSON representation.
52
+ */
53
+ export declare function toJson_FunctionProps(obj: FunctionProps | undefined): Record<string, any> | undefined;
54
+ /**
55
+ * FunctionSpec defines the desired state of Function.
56
+ *
57
+ * @schema FunctionSpec
58
+ */
59
+ export interface FunctionSpec {
60
+ /**
61
+ * The instruction set architecture that the function supports. Enter a string array with one of the valid values. The default value is x86_64.
62
+ *
63
+ * @schema FunctionSpec#architectures
64
+ */
65
+ readonly architectures?: string[];
66
+ /**
67
+ * The code for the function.
68
+ *
69
+ * @schema FunctionSpec#code
70
+ */
71
+ readonly code: FunctionSpecCode;
72
+ /**
73
+ * To enable code signing for this function, specify the ARN of a code-signing configuration. A code-signing configuration includes a set of signing profiles, which define the trusted publishers for this function.
74
+ *
75
+ * @schema FunctionSpec#codeSigningConfigARN
76
+ */
77
+ readonly codeSigningConfigArn?: string;
78
+ /**
79
+ * A dead letter queue configuration that specifies the queue or topic where Lambda sends asynchronous events when they fail processing. For more information, see Dead Letter Queues (https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#dlq).
80
+ *
81
+ * @schema FunctionSpec#deadLetterConfig
82
+ */
83
+ readonly deadLetterConfig?: FunctionSpecDeadLetterConfig;
84
+ /**
85
+ * A description of the function.
86
+ *
87
+ * @schema FunctionSpec#description
88
+ */
89
+ readonly description?: string;
90
+ /**
91
+ * Environment variables that are accessible from function code during execution.
92
+ *
93
+ * @schema FunctionSpec#environment
94
+ */
95
+ readonly environment?: FunctionSpecEnvironment;
96
+ /**
97
+ * Connection settings for an Amazon EFS file system.
98
+ *
99
+ * @schema FunctionSpec#fileSystemConfigs
100
+ */
101
+ readonly fileSystemConfigs?: FunctionSpecFileSystemConfigs[];
102
+ /**
103
+ * The name of the method within your code that Lambda calls to execute your function. The format includes the file name. It can also include namespaces and other qualifiers, depending on the runtime. For more information, see Programming Model (https://docs.aws.amazon.com/lambda/latest/dg/programming-model-v2.html).
104
+ *
105
+ * @schema FunctionSpec#handler
106
+ */
107
+ readonly handler?: string;
108
+ /**
109
+ * Container image configuration values (https://docs.aws.amazon.com/lambda/latest/dg/configuration-images.html#configuration-images-settings) that override the values in the container image Dockerfile.
110
+ *
111
+ * @schema FunctionSpec#imageConfig
112
+ */
113
+ readonly imageConfig?: FunctionSpecImageConfig;
114
+ /**
115
+ * The ARN of the Amazon Web Services Key Management Service (KMS) key that's used to encrypt your function's environment variables. If it's not provided, Lambda uses a default service key.
116
+ *
117
+ * @schema FunctionSpec#kmsKeyARN
118
+ */
119
+ readonly kmsKeyArn?: string;
120
+ /**
121
+ * A list of function layers (https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) to add to the function's execution environment. Specify each layer by its ARN, including the version.
122
+ *
123
+ * @schema FunctionSpec#layers
124
+ */
125
+ readonly layers?: string[];
126
+ /**
127
+ * The amount of memory available to the function (https://docs.aws.amazon.com/lambda/latest/dg/configuration-memory.html) at runtime. Increasing the function memory also increases its CPU allocation. The default value is 128 MB. The value can be any multiple of 1 MB.
128
+ *
129
+ * @schema FunctionSpec#memorySize
130
+ */
131
+ readonly memorySize?: number;
132
+ /**
133
+ * The name of the Lambda function.
134
+ * Name formats
135
+ * * Function name - my-function.
136
+ * * Function ARN - arn:aws:lambda:us-west-2:123456789012:function:my-function.
137
+ * * Partial ARN - 123456789012:function:my-function.
138
+ * The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.
139
+ *
140
+ * @schema FunctionSpec#name
141
+ */
142
+ readonly name: string;
143
+ /**
144
+ * The type of deployment package. Set to Image for container image and set Zip for ZIP archive.
145
+ *
146
+ * @schema FunctionSpec#packageType
147
+ */
148
+ readonly packageType?: string;
149
+ /**
150
+ * Set to true to publish the first version of the function during creation.
151
+ *
152
+ * @schema FunctionSpec#publish
153
+ */
154
+ readonly publish?: boolean;
155
+ /**
156
+ * The number of simultaneous executions to reserve for the function.
157
+ *
158
+ * @schema FunctionSpec#reservedConcurrentExecutions
159
+ */
160
+ readonly reservedConcurrentExecutions?: number;
161
+ /**
162
+ * The Amazon Resource Name (ARN) of the function's execution role.
163
+ *
164
+ * @schema FunctionSpec#role
165
+ */
166
+ readonly role: string;
167
+ /**
168
+ * The identifier of the function's runtime (https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html).
169
+ *
170
+ * @schema FunctionSpec#runtime
171
+ */
172
+ readonly runtime?: string;
173
+ /**
174
+ * A list of tags (https://docs.aws.amazon.com/lambda/latest/dg/tagging.html) to apply to the function.
175
+ *
176
+ * @schema FunctionSpec#tags
177
+ */
178
+ readonly tags?: {
179
+ [key: string]: string;
180
+ };
181
+ /**
182
+ * The amount of time that Lambda allows a function to run before stopping it. The default is 3 seconds. The maximum allowed value is 900 seconds. For additional information, see Lambda execution environment (https://docs.aws.amazon.com/lambda/latest/dg/runtimes-context.html).
183
+ *
184
+ * @schema FunctionSpec#timeout
185
+ */
186
+ readonly timeout?: number;
187
+ /**
188
+ * Set Mode to Active to sample and trace a subset of incoming requests with X-Ray (https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html).
189
+ *
190
+ * @schema FunctionSpec#tracingConfig
191
+ */
192
+ readonly tracingConfig?: FunctionSpecTracingConfig;
193
+ /**
194
+ * For network connectivity to Amazon Web Services resources in a VPC, specify a list of security groups and subnets in the VPC. When you connect a function to a VPC, it can only access resources and the internet through that VPC. For more information, see VPC Settings (https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html).
195
+ *
196
+ * @schema FunctionSpec#vpcConfig
197
+ */
198
+ readonly vpcConfig?: FunctionSpecVpcConfig;
199
+ }
200
+ /**
201
+ * Converts an object of type 'FunctionSpec' to JSON representation.
202
+ */
203
+ export declare function toJson_FunctionSpec(obj: FunctionSpec | undefined): Record<string, any> | undefined;
204
+ /**
205
+ * The code for the function.
206
+ *
207
+ * @schema FunctionSpecCode
208
+ */
209
+ export interface FunctionSpecCode {
210
+ /**
211
+ * @schema FunctionSpecCode#imageURI
212
+ */
213
+ readonly imageUri?: string;
214
+ /**
215
+ * @schema FunctionSpecCode#s3Bucket
216
+ */
217
+ readonly s3Bucket?: string;
218
+ /**
219
+ * @schema FunctionSpecCode#s3Key
220
+ */
221
+ readonly s3Key?: string;
222
+ /**
223
+ * @schema FunctionSpecCode#s3ObjectVersion
224
+ */
225
+ readonly s3ObjectVersion?: string;
226
+ /**
227
+ * @schema FunctionSpecCode#zipFile
228
+ */
229
+ readonly zipFile?: string;
230
+ }
231
+ /**
232
+ * Converts an object of type 'FunctionSpecCode' to JSON representation.
233
+ */
234
+ export declare function toJson_FunctionSpecCode(obj: FunctionSpecCode | undefined): Record<string, any> | undefined;
235
+ /**
236
+ * A dead letter queue configuration that specifies the queue or topic where Lambda sends asynchronous events when they fail processing. For more information, see Dead Letter Queues (https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#dlq).
237
+ *
238
+ * @schema FunctionSpecDeadLetterConfig
239
+ */
240
+ export interface FunctionSpecDeadLetterConfig {
241
+ /**
242
+ * @schema FunctionSpecDeadLetterConfig#targetARN
243
+ */
244
+ readonly targetArn?: string;
245
+ }
246
+ /**
247
+ * Converts an object of type 'FunctionSpecDeadLetterConfig' to JSON representation.
248
+ */
249
+ export declare function toJson_FunctionSpecDeadLetterConfig(obj: FunctionSpecDeadLetterConfig | undefined): Record<string, any> | undefined;
250
+ /**
251
+ * Environment variables that are accessible from function code during execution.
252
+ *
253
+ * @schema FunctionSpecEnvironment
254
+ */
255
+ export interface FunctionSpecEnvironment {
256
+ /**
257
+ * @schema FunctionSpecEnvironment#variables
258
+ */
259
+ readonly variables?: {
260
+ [key: string]: string;
261
+ };
262
+ }
263
+ /**
264
+ * Converts an object of type 'FunctionSpecEnvironment' to JSON representation.
265
+ */
266
+ export declare function toJson_FunctionSpecEnvironment(obj: FunctionSpecEnvironment | undefined): Record<string, any> | undefined;
267
+ /**
268
+ * Details about the connection between a Lambda function and an Amazon EFS file system (https://docs.aws.amazon.com/lambda/latest/dg/configuration-filesystem.html).
269
+ *
270
+ * @schema FunctionSpecFileSystemConfigs
271
+ */
272
+ export interface FunctionSpecFileSystemConfigs {
273
+ /**
274
+ * @schema FunctionSpecFileSystemConfigs#arn
275
+ */
276
+ readonly arn?: string;
277
+ /**
278
+ * @schema FunctionSpecFileSystemConfigs#localMountPath
279
+ */
280
+ readonly localMountPath?: string;
281
+ }
282
+ /**
283
+ * Converts an object of type 'FunctionSpecFileSystemConfigs' to JSON representation.
284
+ */
285
+ export declare function toJson_FunctionSpecFileSystemConfigs(obj: FunctionSpecFileSystemConfigs | undefined): Record<string, any> | undefined;
286
+ /**
287
+ * Container image configuration values (https://docs.aws.amazon.com/lambda/latest/dg/configuration-images.html#configuration-images-settings) that override the values in the container image Dockerfile.
288
+ *
289
+ * @schema FunctionSpecImageConfig
290
+ */
291
+ export interface FunctionSpecImageConfig {
292
+ /**
293
+ * @schema FunctionSpecImageConfig#command
294
+ */
295
+ readonly command?: string[];
296
+ /**
297
+ * @schema FunctionSpecImageConfig#entryPoint
298
+ */
299
+ readonly entryPoint?: string[];
300
+ /**
301
+ * @schema FunctionSpecImageConfig#workingDirectory
302
+ */
303
+ readonly workingDirectory?: string;
304
+ }
305
+ /**
306
+ * Converts an object of type 'FunctionSpecImageConfig' to JSON representation.
307
+ */
308
+ export declare function toJson_FunctionSpecImageConfig(obj: FunctionSpecImageConfig | undefined): Record<string, any> | undefined;
309
+ /**
310
+ * Set Mode to Active to sample and trace a subset of incoming requests with X-Ray (https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html).
311
+ *
312
+ * @schema FunctionSpecTracingConfig
313
+ */
314
+ export interface FunctionSpecTracingConfig {
315
+ /**
316
+ * @schema FunctionSpecTracingConfig#mode
317
+ */
318
+ readonly mode?: string;
319
+ }
320
+ /**
321
+ * Converts an object of type 'FunctionSpecTracingConfig' to JSON representation.
322
+ */
323
+ export declare function toJson_FunctionSpecTracingConfig(obj: FunctionSpecTracingConfig | undefined): Record<string, any> | undefined;
324
+ /**
325
+ * For network connectivity to Amazon Web Services resources in a VPC, specify a list of security groups and subnets in the VPC. When you connect a function to a VPC, it can only access resources and the internet through that VPC. For more information, see VPC Settings (https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html).
326
+ *
327
+ * @schema FunctionSpecVpcConfig
328
+ */
329
+ export interface FunctionSpecVpcConfig {
330
+ /**
331
+ * @schema FunctionSpecVpcConfig#securityGroupIDs
332
+ */
333
+ readonly securityGroupIDs?: string[];
334
+ /**
335
+ * @schema FunctionSpecVpcConfig#subnetIDs
336
+ */
337
+ readonly subnetIDs?: string[];
338
+ }
339
+ /**
340
+ * Converts an object of type 'FunctionSpecVpcConfig' to JSON representation.
341
+ */
342
+ export declare function toJson_FunctionSpecVpcConfig(obj: FunctionSpecVpcConfig | undefined): Record<string, any> | undefined;
343
+ //# sourceMappingURL=lambdafunctions-lambda.services.k8s.aws.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambdafunctions-lambda.services.k8s.aws.d.ts","sourceRoot":"","sources":["../../src/imports/lambdafunctions-lambda.services.k8s.aws.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toJson_FunctionSpecVpcConfig = exports.toJson_FunctionSpecTracingConfig = exports.toJson_FunctionSpecImageConfig = exports.toJson_FunctionSpecFileSystemConfigs = exports.toJson_FunctionSpecEnvironment = exports.toJson_FunctionSpecDeadLetterConfig = exports.toJson_FunctionSpecCode = exports.toJson_FunctionSpec = exports.toJson_FunctionProps = exports.Function = void 0;
4
+ // generated by cdk8s
5
+ const cdk8s_1 = require("cdk8s");
6
+ /**
7
+ * Function is the Schema for the Functions API
8
+ *
9
+ * @schema Function
10
+ */
11
+ class Function extends cdk8s_1.ApiObject {
12
+ /**
13
+ * Defines a "Function" API object
14
+ * @param scope the scope in which to define this object
15
+ * @param id a scope-local name for the object
16
+ * @param props initialization props
17
+ */
18
+ constructor(scope, id, props = {}) {
19
+ super(scope, id, {
20
+ ...Function.GVK,
21
+ ...props,
22
+ });
23
+ }
24
+ /**
25
+ * Renders a Kubernetes manifest for "Function".
26
+ *
27
+ * This can be used to inline resource manifests inside other objects (e.g. as templates).
28
+ *
29
+ * @param props initialization props
30
+ */
31
+ static manifest(props = {}) {
32
+ return {
33
+ ...Function.GVK,
34
+ ...toJson_FunctionProps(props),
35
+ };
36
+ }
37
+ /**
38
+ * Renders the object to Kubernetes JSON.
39
+ */
40
+ toJson() {
41
+ const resolved = super.toJson();
42
+ return {
43
+ ...Function.GVK,
44
+ ...toJson_FunctionProps(resolved),
45
+ };
46
+ }
47
+ }
48
+ exports.Function = Function;
49
+ /**
50
+ * Returns the apiVersion and kind for "Function"
51
+ */
52
+ Function.GVK = {
53
+ apiVersion: 'lambda.services.k8s.aws/v1alpha1',
54
+ kind: 'Function',
55
+ };
56
+ /**
57
+ * Converts an object of type 'FunctionProps' to JSON representation.
58
+ */
59
+ /* eslint-disable max-len, quote-props */
60
+ function toJson_FunctionProps(obj) {
61
+ if (obj === undefined) {
62
+ return undefined;
63
+ }
64
+ const result = {
65
+ 'metadata': obj.metadata,
66
+ 'spec': toJson_FunctionSpec(obj.spec),
67
+ };
68
+ // filter undefined values
69
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
70
+ }
71
+ exports.toJson_FunctionProps = toJson_FunctionProps;
72
+ /**
73
+ * Converts an object of type 'FunctionSpec' to JSON representation.
74
+ */
75
+ /* eslint-disable max-len, quote-props */
76
+ function toJson_FunctionSpec(obj) {
77
+ var _a, _b, _c;
78
+ if (obj === undefined) {
79
+ return undefined;
80
+ }
81
+ const result = {
82
+ 'architectures': (_a = obj.architectures) === null || _a === void 0 ? void 0 : _a.map(y => y),
83
+ 'code': toJson_FunctionSpecCode(obj.code),
84
+ 'codeSigningConfigARN': obj.codeSigningConfigArn,
85
+ 'deadLetterConfig': toJson_FunctionSpecDeadLetterConfig(obj.deadLetterConfig),
86
+ 'description': obj.description,
87
+ 'environment': toJson_FunctionSpecEnvironment(obj.environment),
88
+ 'fileSystemConfigs': (_b = obj.fileSystemConfigs) === null || _b === void 0 ? void 0 : _b.map(y => toJson_FunctionSpecFileSystemConfigs(y)),
89
+ 'handler': obj.handler,
90
+ 'imageConfig': toJson_FunctionSpecImageConfig(obj.imageConfig),
91
+ 'kmsKeyARN': obj.kmsKeyArn,
92
+ 'layers': (_c = obj.layers) === null || _c === void 0 ? void 0 : _c.map(y => y),
93
+ 'memorySize': obj.memorySize,
94
+ 'name': obj.name,
95
+ 'packageType': obj.packageType,
96
+ 'publish': obj.publish,
97
+ 'reservedConcurrentExecutions': obj.reservedConcurrentExecutions,
98
+ 'role': obj.role,
99
+ 'runtime': obj.runtime,
100
+ 'tags': ((obj.tags) === undefined) ? undefined : (Object.entries(obj.tags).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
101
+ 'timeout': obj.timeout,
102
+ 'tracingConfig': toJson_FunctionSpecTracingConfig(obj.tracingConfig),
103
+ 'vpcConfig': toJson_FunctionSpecVpcConfig(obj.vpcConfig),
104
+ };
105
+ // filter undefined values
106
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
107
+ }
108
+ exports.toJson_FunctionSpec = toJson_FunctionSpec;
109
+ /**
110
+ * Converts an object of type 'FunctionSpecCode' to JSON representation.
111
+ */
112
+ /* eslint-disable max-len, quote-props */
113
+ function toJson_FunctionSpecCode(obj) {
114
+ if (obj === undefined) {
115
+ return undefined;
116
+ }
117
+ const result = {
118
+ 'imageURI': obj.imageUri,
119
+ 's3Bucket': obj.s3Bucket,
120
+ 's3Key': obj.s3Key,
121
+ 's3ObjectVersion': obj.s3ObjectVersion,
122
+ 'zipFile': obj.zipFile,
123
+ };
124
+ // filter undefined values
125
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
126
+ }
127
+ exports.toJson_FunctionSpecCode = toJson_FunctionSpecCode;
128
+ /**
129
+ * Converts an object of type 'FunctionSpecDeadLetterConfig' to JSON representation.
130
+ */
131
+ /* eslint-disable max-len, quote-props */
132
+ function toJson_FunctionSpecDeadLetterConfig(obj) {
133
+ if (obj === undefined) {
134
+ return undefined;
135
+ }
136
+ const result = {
137
+ 'targetARN': obj.targetArn,
138
+ };
139
+ // filter undefined values
140
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
141
+ }
142
+ exports.toJson_FunctionSpecDeadLetterConfig = toJson_FunctionSpecDeadLetterConfig;
143
+ /**
144
+ * Converts an object of type 'FunctionSpecEnvironment' to JSON representation.
145
+ */
146
+ /* eslint-disable max-len, quote-props */
147
+ function toJson_FunctionSpecEnvironment(obj) {
148
+ if (obj === undefined) {
149
+ return undefined;
150
+ }
151
+ const result = {
152
+ 'variables': ((obj.variables) === undefined) ? undefined : (Object.entries(obj.variables).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
153
+ };
154
+ // filter undefined values
155
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
156
+ }
157
+ exports.toJson_FunctionSpecEnvironment = toJson_FunctionSpecEnvironment;
158
+ /**
159
+ * Converts an object of type 'FunctionSpecFileSystemConfigs' to JSON representation.
160
+ */
161
+ /* eslint-disable max-len, quote-props */
162
+ function toJson_FunctionSpecFileSystemConfigs(obj) {
163
+ if (obj === undefined) {
164
+ return undefined;
165
+ }
166
+ const result = {
167
+ 'arn': obj.arn,
168
+ 'localMountPath': obj.localMountPath,
169
+ };
170
+ // filter undefined values
171
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
172
+ }
173
+ exports.toJson_FunctionSpecFileSystemConfigs = toJson_FunctionSpecFileSystemConfigs;
174
+ /**
175
+ * Converts an object of type 'FunctionSpecImageConfig' to JSON representation.
176
+ */
177
+ /* eslint-disable max-len, quote-props */
178
+ function toJson_FunctionSpecImageConfig(obj) {
179
+ var _a, _b;
180
+ if (obj === undefined) {
181
+ return undefined;
182
+ }
183
+ const result = {
184
+ 'command': (_a = obj.command) === null || _a === void 0 ? void 0 : _a.map(y => y),
185
+ 'entryPoint': (_b = obj.entryPoint) === null || _b === void 0 ? void 0 : _b.map(y => y),
186
+ 'workingDirectory': obj.workingDirectory,
187
+ };
188
+ // filter undefined values
189
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
190
+ }
191
+ exports.toJson_FunctionSpecImageConfig = toJson_FunctionSpecImageConfig;
192
+ /**
193
+ * Converts an object of type 'FunctionSpecTracingConfig' to JSON representation.
194
+ */
195
+ /* eslint-disable max-len, quote-props */
196
+ function toJson_FunctionSpecTracingConfig(obj) {
197
+ if (obj === undefined) {
198
+ return undefined;
199
+ }
200
+ const result = {
201
+ 'mode': obj.mode,
202
+ };
203
+ // filter undefined values
204
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
205
+ }
206
+ exports.toJson_FunctionSpecTracingConfig = toJson_FunctionSpecTracingConfig;
207
+ /**
208
+ * Converts an object of type 'FunctionSpecVpcConfig' to JSON representation.
209
+ */
210
+ /* eslint-disable max-len, quote-props */
211
+ function toJson_FunctionSpecVpcConfig(obj) {
212
+ var _a, _b;
213
+ if (obj === undefined) {
214
+ return undefined;
215
+ }
216
+ const result = {
217
+ 'securityGroupIDs': (_a = obj.securityGroupIDs) === null || _a === void 0 ? void 0 : _a.map(y => y),
218
+ 'subnetIDs': (_b = obj.subnetIDs) === null || _b === void 0 ? void 0 : _b.map(y => y),
219
+ };
220
+ // filter undefined values
221
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
222
+ }
223
+ exports.toJson_FunctionSpecVpcConfig = toJson_FunctionSpecVpcConfig;
224
+ /* eslint-enable max-len, quote-props */
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhZnVuY3Rpb25zLWxhbWJkYS5zZXJ2aWNlcy5rOHMuYXdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltcG9ydHMvbGFtYmRhZnVuY3Rpb25zLWxhbWJkYS5zZXJ2aWNlcy5rOHMuYXdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFCQUFxQjtBQUNyQixpQ0FBdUU7QUFJdkU7Ozs7R0FJRztBQUNILE1BQWEsUUFBUyxTQUFRLGlCQUFTO0lBdUJyQzs7Ozs7T0FLRztJQUNILFlBQW1CLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQXVCLEVBQUU7UUFDeEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLFFBQVEsQ0FBQyxHQUFHO1lBQ2YsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQXpCRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQXVCLEVBQUU7UUFDOUMsT0FBTztZQUNMLEdBQUcsUUFBUSxDQUFDLEdBQUc7WUFDZixHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQztTQUMvQixDQUFDO0lBQ0osQ0FBQztJQWVEOztPQUVHO0lBQ0ksTUFBTTtRQUNYLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVoQyxPQUFPO1lBQ0wsR0FBRyxRQUFRLENBQUMsR0FBRztZQUNmLEdBQUcsb0JBQW9CLENBQUMsUUFBUSxDQUFDO1NBQ2xDLENBQUM7SUFDSixDQUFDOztBQTlDSCw0QkErQ0M7QUE5Q0M7O0dBRUc7QUFDb0IsWUFBRyxHQUFxQjtJQUM3QyxVQUFVLEVBQUUsa0NBQWtDO0lBQzlDLElBQUksRUFBRSxVQUFVO0NBQ2pCLENBQUM7QUE4REo7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0Isb0JBQW9CLENBQUMsR0FBOEI7SUFDakUsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFT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RSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQVJELG9FQVFDO0FBQ0Qsd0NBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2VuZXJhdGVkIGJ5IGNkazhzXG5pbXBvcnQgeyBBcGlPYmplY3QsIEFwaU9iamVjdE1ldGFkYXRhLCBHcm91cFZlcnNpb25LaW5kIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cblxuLyoqXG4gKiBGdW5jdGlvbiBpcyB0aGUgU2NoZW1hIGZvciB0aGUgRnVuY3Rpb25zIEFQSVxuICpcbiAqIEBzY2hlbWEgRnVuY3Rpb25cbiAqL1xuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uIGV4dGVuZHMgQXBpT2JqZWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiRnVuY3Rpb25cIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2xhbWJkYS5zZXJ2aWNlcy5rOHMuYXdzL3YxYWxwaGExJyxcbiAgICBraW5kOiAnRnVuY3Rpb24nLFxuICB9O1xuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJGdW5jdGlvblwiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBGdW5jdGlvblByb3BzID0ge30pOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5GdW5jdGlvbi5HVkssXG4gICAgICAuLi50b0pzb25fRnVuY3Rpb25Qcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJGdW5jdGlvblwiIEFQSSBvYmplY3RcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRnVuY3Rpb25Qcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5GdW5jdGlvbi5HVkssXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uRnVuY3Rpb24uR1ZLLFxuICAgICAgLi4udG9Kc29uX0Z1bmN0aW9uUHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBpcyB0aGUgU2NoZW1hIGZvciB0aGUgRnVuY3Rpb25zIEFQSVxuICpcbiAqIEBzY2hlbWEgRnVuY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRnVuY3Rpb24jbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogQXBpT2JqZWN0TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uU3BlYyBkZWZpbmVzIHRoZSBkZXNpcmVkIHN0YXRlIG9mIEZ1bmN0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIEZ1bmN0aW9uI3NwZWNcbiAgICovXG4gIHJlYWRvbmx5IHNwZWM/OiBGdW5jdGlvblNwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRnVuY3Rpb25Qcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRnVuY3Rpb25Qcm9wcyhvYmo6IEZ1bmN0aW9uUHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9GdW5jdGlvblNwZWMob2JqLnNwZWMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEZ1bmN0aW9uU3BlYyBkZWZpbmVzIHRoZSBkZXNpcmVkIHN0YXRlIG9mIEZ1bmN0aW9uLlxuICpcbiAqIEBzY2hlbWEgRnVuY3Rpb25TcGVjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25TcGVjIHtcbiAgLyoqXG4gICAqIFRoZSBpbnN0cnVjdGlvbiBzZXQgYXJjaGl0ZWN0dXJlIHRoYXQgdGhlIGZ1bmN0aW9uIHN1cHBvcnRzLiBFbnRlciBhIHN0cmluZyBhcnJheSB3aXRoIG9uZSBvZiB0aGUgdmFsaWQgdmFsdWVzLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB4ODZfNjQuXG4gICAqXG4gICAqIEBzY2hlbWEgRnVuY3Rpb25TcGVjI2FyY2hpdGVjdHVyZXNcbiAgICovXG4gIHJlYWRvbmx5IGFyY2hpdGVjdHVyZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBGdW5jdGlvblNwZWMjY29kZVxuICAgKi9cbiAgcmVhZG9ubHkgY29kZTogRnVuY3Rpb25TcGVjQ29kZTtcblxuICAvKipcbiAgICogVG8gZW5hYmxlIGNvZGUgc2lnbmluZyBmb3IgdGhpcyBmdW5jdGlvbiwgc3BlY2lmeSB0aGUgQVJOIG9mIGEgY29kZS1zaWduaW5nIGNvbmZpZ3VyYXRpb24uIEEgY29kZS1zaWduaW5nIGNvbmZpZ3VyYXRpb24gaW5jbHVkZXMgYSBzZXQgb2Ygc2lnbmluZyBwcm9maWxlcywgd2hpY2ggZGVmaW5lIHRoZSB0cnVzdGVkIHB1Ymxpc2hlcnMgZm9yIHRoaXMgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgRnVuY3Rpb25TcGVjI2NvZGVTaWduaW5nQ29uZmlnQVJOXG4gICAqL1xuICByZWFkb25seSBjb2RlU2lnbmluZ0NvbmZpZ0Fybj86IHN0cmluZztcblxuICAvKipcbiAgICogQSBkZWFkIGxldHRlciBxdWV1ZSBjb25maWd1cmF0aW9uIHRoYXQgc3BlY2lmaWVzIHRoZSBxdWV1ZSBvciB0b3BpYyB3aGVyZSBMYW1iZGEgc2VuZHMgYXN5bmNocm9ub3VzIGV2ZW50cyB3aGVuIHRoZXkgZmFpbCBwcm9jZXNzaW5nLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIERlYWQgTGV0dGVyIFF1ZXVlcyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvaW52b2NhdGlvbi1hc3luYy5odG1sI2RscSkuXG4gICAqXG4gICAqIEBzY2hlbWEgRnVuY3Rpb25TcGVjI2RlYWRMZXR0ZXJDb25maWdcbiAgICovXG4gIHJlYWRvbmx5IGRlYWRMZXR0ZXJDb25maWc/OiBGdW5jdGlvblNwZWNEZWFkTGV0dGVyQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBGdW5jdGlvblNwZWMjZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBhcmUgYWNjZXNzaWJsZSBmcm9tIGZ1bmN0aW9uIGNvZGUgZHVyaW5nIGV4ZWN1dGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBGdW5jdGlvblNwZWMjZW52aXJvbm1lbnRcbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogRnVuY3Rpb25TcGVjRW52aXJvbm1lbnQ7XG5cbiAgLyoqXG4gICAqIENvbm5lY3Rpb24gc2V0dGluZ3MgZm9yIGFuIEFtYXpvbiBFRlMgZmlsZSBzeXN0ZW0uXG4gICAqXG4gICAqIEBzY2hlbWEgRnVuY3Rpb25TcGVjI2ZpbGVTeXN0ZW1Db25maWdzXG4gICAqL1xuICByZWFkb25seSBmaWxlU3lzdGVtQ29uZmlncz86IEZ1bmN0aW9uU3BlY0ZpbGVTeXN0ZW1Db25maWdzW107XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBtZXRob2Qgd2l0aGluIHlvdXIgY29kZSB0aGF0IExhbWJkYSBjYWxscyB0byBleGVjdXRlIHlvdXIgZnVuY3Rpb24uIFRoZSBmb3JtYXQgaW5jbHVkZXMgdGhlIGZpbGUgbmFtZS4gSXQgY2FuIGFsc28gaW5jbHVkZSBuYW1lc3BhY2VzIGFuZCBvdGhlciBxdWFsaWZpZXJzLCBkZXBlbmRpbmcgb24gdGhlIHJ1bnRpbWUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgUHJvZ3JhbW1pbmcgTW9kZWwgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL3Byb2dyYW1taW5nLW1vZGVsLXYyLmh0bWwpLlxuICAgKlxuICAgKiBAc2NoZW1hIEZ1bmN0aW9uU3BlYyNoYW5kbGVyXG4gICAqL1xuICByZWFkb25seSBoYW5kbGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb250YWluZXIgaW1hZ2UgY29uZmlndXJhdGlvbiB2YWx1ZXMgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL2NvbmZpZ3VyYXRpb24taW1hZ2VzLmh0bWwjY29uZmlndXJhdGlvbi1pbWFnZXMtc2V0dGluZ3MpIHRoYXQgb3ZlcnJpZGUgdGhlIHZhbHVlcyBpbiB0aGUgY29udGFpbmVyIGltYWdlIERvY2tlcmZpbGUuXG4gICAqXG4gICAqIEBzY2hlbWEgRnVuY3Rpb25TcGVjI2ltYWdlQ29uZmlnXG4gICAqL1xuICByZWFkb25seSBpbWFnZUNvbmZpZz86IEZ1bmN0aW9uU3BlY0ltYWdlQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBBbWF6b24gV2ViIFNlcnZpY2VzIEtleSBNYW5hZ2VtZW50IFNlcnZpY2UgKEtNUykga2V5IHRoYXQncyB1c2VkIHRvIGVuY3J5cHQgeW91ciBmdW5jdGlvbidzIGVudmlyb25tZW50IHZhcmlhYmxlcy4gSWYgaXQncyBub3QgcHJvdmlkZWQsIExhbWJkYSB1c2VzIGEgZGVmYXVsdCBzZXJ2aWNlIGtleS5cbiAgICpcbiAgICogQHNjaGVtYSBGdW5jdGlvblNwZWMja21zS2V5QVJOXG4gICAqL1xuICByZWFkb25seSBrbXNLZXlBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBmdW5jdGlvbiBsYXllcnMgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL2NvbmZpZ3VyYXRpb24tbGF5ZXJzLmh0bWwpIHRvIGFkZCB0byB0aGUgZnVuY3Rpb24ncyBleGVjdXRpb24gZW52aXJvbm1lbnQuIFNwZWNpZnkgZWFjaCBsYXllciBieSBpdHMgQVJOLCBpbmNsdWRpbmcgdGhlIHZlcnNpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgRnVuY3Rpb25TcGVjI2xheWVyc1xuICAgKi9cbiAgcmVhZG9ubHkgbGF5ZXJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgbWVtb3J5IGF2YWlsYWJsZSB0byB0aGUgZnVuY3Rpb24gKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL2NvbmZpZ3VyYXRpb24tbWVtb3J5Lmh0bWwpIGF0IHJ1bnRpbWUuIEluY3JlYXNpbmcgdGhlIGZ1bmN0aW9uIG1lbW9yeSBhbHNvIGluY3JlYXNlcyBpdHMgQ1BVIGFsbG9jYXRpb24uIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDEyOCBNQi4gVGhlIHZhbHVlIGNhbiBiZSBhbnkgbXVsdGlwbGUgb2YgMSBNQi5cbiAgICpcbiAgICogQHNjaGVtYSBGdW5jdGlvblNwZWMjbWVtb3J5U2l6ZVxuICAgKi9cbiAgcmVhZG9ubHkgbWVtb3J5U2l6ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIExhbWJkYSBmdW5jdGlvbi5cbiAgICogTmFtZSBmb3JtYXRzXG4gICAqICogRnVuY3Rpb24gbmFtZSAtIG15LWZ1bmN0aW9uLlxuICAgKiAqIEZ1bmN0aW9uIEFSTiAtIGFybjphd3M6bGFtYmRhOnVzLXdlc3QtMjoxMjM0NTY3ODkwMTI6ZnVuY3Rpb246bXktZnVuY3Rpb24uXG4gICAqICogUGFydGlhbCBBUk4gLSAxMjM0NTY3ODkwMTI6ZnVuY3Rpb246bXktZnVuY3Rpb24uXG4gICAqIFRoZSBsZW5ndGggY29uc3RyYWludCBhcHBsaWVzIG9ubHkgdG8gdGhlIGZ1bGwgQVJOLiBJZiB5b3Ugc3BlY2lmeSBvbmx5IHRoZSBmdW5jdGlvbiBuYW1lLCBpdCBpcyBsaW1pdGVkIHRvIDY0IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLlxuICAgKlxuICAgKiBAc2NoZW1hIEZ1bmN0aW9uU3BlYyNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGRlcGxveW1lbnQgcGFja2FnZS4gU2V0IHRvIEltYWdlIGZvciBjb250YWluZXIgaW1hZ2UgYW5kIHNldCBaaXAgZm9yIFpJUCBhcmNoaXZlLlxuICAgKlxuICAgKiBAc2NoZW1hIEZ1bmN0aW9uU3BlYyNwYWNrYWdlVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZVR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldCB0byB0cnVlIHRvIHB1Ymxpc2ggdGhlIGZpcnN0IHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uIGR1cmluZyBjcmVhdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBGdW5jdGlvblNwZWMjcHVibGlzaFxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIGV4ZWN1dGlvbnMgdG8gcmVzZXJ2ZSBmb3IgdGhlIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIEZ1bmN0aW9uU3BlYyNyZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zXG4gICAqL1xuICByZWFkb25seSByZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIGZ1bmN0aW9uJ3MgZXhlY3V0aW9uIHJvbGUuXG4gICAqXG4gICAqIEBzY2hlbWEgRnVuY3Rpb25TcGVjI3JvbGVcbiAgICovXG4gIHJlYWRvbmx5IHJvbGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGZ1bmN0aW9uJ3MgcnVudGltZSAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvbGFtYmRhLXJ1bnRpbWVzLmh0bWwpLlxuICAgKlxuICAgKiBAc2NoZW1hIEZ1bmN0aW9uU3BlYyNydW50aW1lXG4gICAqL1xuICByZWFkb25seSBydW50aW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgdGFncyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvdGFnZ2luZy5odG1sKSB0byBhcHBseSB0byB0aGUgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgRnVuY3Rpb25TcGVjI3RhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHRpbWUgdGhhdCBMYW1iZGEgYWxsb3dzIGEgZnVuY3Rpb24gdG8gcnVuIGJlZm9yZSBzdG9wcGluZyBpdC4gVGhlIGRlZmF1bHQgaXMgMyBzZWNvbmRzLiBUaGUgbWF4aW11bSBhbGxvd2VkIHZhbHVlIGlzIDkwMCBzZWNvbmRzLiBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgc2VlIExhbWJkYSBleGVjdXRpb24gZW52aXJvbm1lbnQgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL3J1bnRpbWVzLWNvbnRleHQuaHRtbCkuXG4gICAqXG4gICAqIEBzY2hlbWEgRnVuY3Rpb25TcGVjI3RpbWVvdXRcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNldCBNb2RlIHRvIEFjdGl2ZSB0byBzYW1wbGUgYW5kIHRyYWNlIGEgc3Vic2V0IG9mIGluY29taW5nIHJlcXVlc3RzIHdpdGggWC1SYXkgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL3NlcnZpY2VzLXhyYXkuaHRtbCkuXG4gICAqXG4gICAqIEBzY2hlbWEgRnVuY3Rpb25TcGVjI3RyYWNpbmdDb25maWdcbiAgICovXG4gIHJlYWRvbmx5IHRyYWNpbmdDb25maWc/OiBGdW5jdGlvblNwZWNUcmFjaW5nQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBGb3IgbmV0d29yayBjb25uZWN0aXZpdHkgdG8gQW1hem9uIFdlYiBTZXJ2aWNlcyByZXNvdXJjZXMgaW4gYSBWUEMsIHNwZWNpZnkgYSBsaXN0IG9mIHNlY3VyaXR5IGdyb3VwcyBhbmQgc3VibmV0cyBpbiB0aGUgVlBDLiBXaGVuIHlvdSBjb25uZWN0IGEgZnVuY3Rpb24gdG8gYSBWUEMsIGl0IGNhbiBvbmx5IGFjY2VzcyByZXNvdXJjZXMgYW5kIHRoZSBpbnRlcm5ldCB0aHJvdWdoIHRoYXQgVlBDLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFZQQyBTZXR0aW5ncyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvY29uZmlndXJhdGlvbi12cGMuaHRtbCkuXG4gICAqXG4gICAqIEBzY2hlbWEgRnVuY3Rpb25TcGVjI3ZwY0NvbmZpZ1xuICAgKi9cbiAgcmVhZG9ubHkgdnBjQ29uZmlnPzogRnVuY3Rpb25TcGVjVnBjQ29uZmlnO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0Z1bmN0aW9uU3BlYycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRnVuY3Rpb25TcGVjKG9iajogRnVuY3Rpb25TcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYXJjaGl0ZWN0dXJlcyc6IG9iai5hcmNoaXRlY3R1cmVzPy5tYXAoeSA9PiB5KSxcbiAgICAnY29kZSc6IHRvSnNvbl9GdW5jdGlvblNwZWNDb2RlKG9iai5jb2RlKSxcbiAgICAnY29kZVNpZ25pbmdDb25maWdBUk4nOiBvYmouY29kZVNpZ25pbmdDb25maWdBcm4sXG4gICAgJ2RlYWRMZXR0ZXJDb25maWcnOiB0b0pzb25fRnVuY3Rpb25TcGVjRGVhZExldHRlckNvbmZpZyhvYmouZGVhZExldHRlckNvbmZpZyksXG4gICAgJ2Rlc2NyaXB0aW9uJzogb2JqLmRlc2NyaXB0aW9uLFxuICAgICdlbnZpcm9ubWVudCc6IHRvSnNvbl9GdW5jdGlvblNwZWNFbnZpcm9ubWVudChvYmouZW52aXJvbm1lbnQpLFxuICAgICdmaWxlU3lzdGVtQ29uZmlncyc6IG9iai5maWxlU3lzdGVtQ29uZmlncz8ubWFwKHkgPT4gdG9Kc29uX0Z1bmN0aW9uU3BlY0ZpbGVTeXN0ZW1Db25maWdzKHkpKSxcbiAgICAnaGFuZGxlcic6IG9iai5oYW5kbGVyLFxuICAgICdpbWFnZUNvbmZpZyc6IHRvSnNvbl9GdW5jdGlvblNwZWNJbWFnZUNvbmZpZyhvYmouaW1hZ2VDb25maWcpLFxuICAgICdrbXNLZXlBUk4nOiBvYmoua21zS2V5QXJuLFxuICAgICdsYXllcnMnOiBvYmoubGF5ZXJzPy5tYXAoeSA9PiB5KSxcbiAgICAnbWVtb3J5U2l6ZSc6IG9iai5tZW1vcnlTaXplLFxuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ3BhY2thZ2VUeXBlJzogb2JqLnBhY2thZ2VUeXBlLFxuICAgICdwdWJsaXNoJzogb2JqLnB1Ymxpc2gsXG4gICAgJ3Jlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnMnOiBvYmoucmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9ucyxcbiAgICAncm9sZSc6IG9iai5yb2xlLFxuICAgICdydW50aW1lJzogb2JqLnJ1bnRpbWUsXG4gICAgJ3RhZ3MnOiAoKG9iai50YWdzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmoudGFncykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ3RpbWVvdXQnOiBvYmoudGltZW91dCxcbiAgICAndHJhY2luZ0NvbmZpZyc6IHRvSnNvbl9GdW5jdGlvblNwZWNUcmFjaW5nQ29uZmlnKG9iai50cmFjaW5nQ29uZmlnKSxcbiAgICAndnBjQ29uZmlnJzogdG9Kc29uX0Z1bmN0aW9uU3BlY1ZwY0NvbmZpZyhvYmoudnBjQ29uZmlnKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBUaGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uLlxuICpcbiAqIEBzY2hlbWEgRnVuY3Rpb25TcGVjQ29kZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uU3BlY0NvZGUge1xuICAvKipcbiAgICogQHNjaGVtYSBGdW5jdGlvblNwZWNDb2RlI2ltYWdlVVJJXG4gICAqL1xuICByZWFkb25seSBpbWFnZVVyaT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGdW5jdGlvblNwZWNDb2RlI3MzQnVja2V0XG4gICAqL1xuICByZWFkb25seSBzM0J1Y2tldD86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGdW5jdGlvblNwZWNDb2RlI3MzS2V5XG4gICAqL1xuICByZWFkb25seSBzM0tleT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGdW5jdGlvblNwZWNDb2RlI3MzT2JqZWN0VmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgczNPYmplY3RWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZ1bmN0aW9uU3BlY0NvZGUjemlwRmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgemlwRmlsZT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGdW5jdGlvblNwZWNDb2RlJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GdW5jdGlvblNwZWNDb2RlKG9iajogRnVuY3Rpb25TcGVjQ29kZSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2ltYWdlVVJJJzogb2JqLmltYWdlVXJpLFxuICAgICdzM0J1Y2tldCc6IG9iai5zM0J1Y2tldCxcbiAgICAnczNLZXknOiBvYmouczNLZXksXG4gICAgJ3MzT2JqZWN0VmVyc2lvbic6IG9iai5zM09iamVjdFZlcnNpb24sXG4gICAgJ3ppcEZpbGUnOiBvYmouemlwRmlsZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBBIGRlYWQgbGV0dGVyIHF1ZXVlIGNvbmZpZ3VyYXRpb24gdGhhdCBzcGVjaWZpZXMgdGhlIHF1ZXVlIG9yIHRvcGljIHdoZXJlIExhbWJkYSBzZW5kcyBhc3luY2hyb25vdXMgZXZlbnRzIHdoZW4gdGhleSBmYWlsIHByb2Nlc3NpbmcuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgRGVhZCBMZXR0ZXIgUXVldWVzIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9kZy9pbnZvY2F0aW9uLWFzeW5jLmh0bWwjZGxxKS5cbiAqXG4gKiBAc2NoZW1hIEZ1bmN0aW9uU3BlY0RlYWRMZXR0ZXJDb25maWdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvblNwZWNEZWFkTGV0dGVyQ29uZmlnIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRnVuY3Rpb25TcGVjRGVhZExldHRlckNvbmZpZyN0YXJnZXRBUk5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldEFybj86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGdW5jdGlvblNwZWNEZWFkTGV0dGVyQ29uZmlnJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GdW5jdGlvblNwZWNEZWFkTGV0dGVyQ29uZmlnKG9iajogRnVuY3Rpb25TcGVjRGVhZExldHRlckNvbmZpZyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3RhcmdldEFSTic6IG9iai50YXJnZXRBcm4sXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgYXJlIGFjY2Vzc2libGUgZnJvbSBmdW5jdGlvbiBjb2RlIGR1cmluZyBleGVjdXRpb24uXG4gKlxuICogQHNjaGVtYSBGdW5jdGlvblNwZWNFbnZpcm9ubWVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uU3BlY0Vudmlyb25tZW50IHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRnVuY3Rpb25TcGVjRW52aXJvbm1lbnQjdmFyaWFibGVzXG4gICAqL1xuICByZWFkb25seSB2YXJpYWJsZXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0Z1bmN0aW9uU3BlY0Vudmlyb25tZW50JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GdW5jdGlvblNwZWNFbnZpcm9ubWVudChvYmo6IEZ1bmN0aW9uU3BlY0Vudmlyb25tZW50IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAndmFyaWFibGVzJzogKChvYmoudmFyaWFibGVzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmoudmFyaWFibGVzKS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBEZXRhaWxzIGFib3V0IHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYSBMYW1iZGEgZnVuY3Rpb24gYW5kIGFuIEFtYXpvbiBFRlMgZmlsZSBzeXN0ZW0gKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL2NvbmZpZ3VyYXRpb24tZmlsZXN5c3RlbS5odG1sKS5cbiAqXG4gKiBAc2NoZW1hIEZ1bmN0aW9uU3BlY0ZpbGVTeXN0ZW1Db25maWdzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25TcGVjRmlsZVN5c3RlbUNvbmZpZ3Mge1xuICAvKipcbiAgICogQHNjaGVtYSBGdW5jdGlvblNwZWNGaWxlU3lzdGVtQ29uZmlncyNhcm5cbiAgICovXG4gIHJlYWRvbmx5IGFybj86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBGdW5jdGlvblNwZWNGaWxlU3lzdGVtQ29uZmlncyNsb2NhbE1vdW50UGF0aFxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYWxNb3VudFBhdGg/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRnVuY3Rpb25TcGVjRmlsZVN5c3RlbUNvbmZpZ3MnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0Z1bmN0aW9uU3BlY0ZpbGVTeXN0ZW1Db25maWdzKG9iajogRnVuY3Rpb25TcGVjRmlsZVN5c3RlbUNvbmZpZ3MgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhcm4nOiBvYmouYXJuLFxuICAgICdsb2NhbE1vdW50UGF0aCc6IG9iai5sb2NhbE1vdW50UGF0aCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBDb250YWluZXIgaW1hZ2UgY29uZmlndXJhdGlvbiB2YWx1ZXMgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL2NvbmZpZ3VyYXRpb24taW1hZ2VzLmh0bWwjY29uZmlndXJhdGlvbi1pbWFnZXMtc2V0dGluZ3MpIHRoYXQgb3ZlcnJpZGUgdGhlIHZhbHVlcyBpbiB0aGUgY29udGFpbmVyIGltYWdlIERvY2tlcmZpbGUuXG4gKlxuICogQHNjaGVtYSBGdW5jdGlvblNwZWNJbWFnZUNvbmZpZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uU3BlY0ltYWdlQ29uZmlnIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRnVuY3Rpb25TcGVjSW1hZ2VDb25maWcjY29tbWFuZFxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZ1bmN0aW9uU3BlY0ltYWdlQ29uZmlnI2VudHJ5UG9pbnRcbiAgICovXG4gIHJlYWRvbmx5IGVudHJ5UG9pbnQ/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBGdW5jdGlvblNwZWNJbWFnZUNvbmZpZyN3b3JraW5nRGlyZWN0b3J5XG4gICAqL1xuICByZWFkb25seSB3b3JraW5nRGlyZWN0b3J5Pzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0Z1bmN0aW9uU3BlY0ltYWdlQ29uZmlnJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GdW5jdGlvblNwZWNJbWFnZUNvbmZpZyhvYmo6IEZ1bmN0aW9uU3BlY0ltYWdlQ29uZmlnIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnY29tbWFuZCc6IG9iai5jb21tYW5kPy5tYXAoeSA9PiB5KSxcbiAgICAnZW50cnlQb2ludCc6IG9iai5lbnRyeVBvaW50Py5tYXAoeSA9PiB5KSxcbiAgICAnd29ya2luZ0RpcmVjdG9yeSc6IG9iai53b3JraW5nRGlyZWN0b3J5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFNldCBNb2RlIHRvIEFjdGl2ZSB0byBzYW1wbGUgYW5kIHRyYWNlIGEgc3Vic2V0IG9mIGluY29taW5nIHJlcXVlc3RzIHdpdGggWC1SYXkgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL3NlcnZpY2VzLXhyYXkuaHRtbCkuXG4gKlxuICogQHNjaGVtYSBGdW5jdGlvblNwZWNUcmFjaW5nQ29uZmlnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25TcGVjVHJhY2luZ0NvbmZpZyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEZ1bmN0aW9uU3BlY1RyYWNpbmdDb25maWcjbW9kZVxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdGdW5jdGlvblNwZWNUcmFjaW5nQ29uZmlnJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9GdW5jdGlvblNwZWNUcmFjaW5nQ29uZmlnKG9iajogRnVuY3Rpb25TcGVjVHJhY2luZ0NvbmZpZyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21vZGUnOiBvYmoubW9kZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBGb3IgbmV0d29yayBjb25uZWN0aXZpdHkgdG8gQW1hem9uIFdlYiBTZXJ2aWNlcyByZXNvdXJjZXMgaW4gYSBWUEMsIHNwZWNpZnkgYSBsaXN0IG9mIHNlY3VyaXR5IGdyb3VwcyBhbmQgc3VibmV0cyBpbiB0aGUgVlBDLiBXaGVuIHlvdSBjb25uZWN0IGEgZnVuY3Rpb24gdG8gYSBWUEMsIGl0IGNhbiBvbmx5IGFjY2VzcyByZXNvdXJjZXMgYW5kIHRoZSBpbnRlcm5ldCB0aHJvdWdoIHRoYXQgVlBDLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFZQQyBTZXR0aW5ncyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvY29uZmlndXJhdGlvbi12cGMuaHRtbCkuXG4gKlxuICogQHNjaGVtYSBGdW5jdGlvblNwZWNWcGNDb25maWdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvblNwZWNWcGNDb25maWcge1xuICAvKipcbiAgICogQHNjaGVtYSBGdW5jdGlvblNwZWNWcGNDb25maWcjc2VjdXJpdHlHcm91cElEc1xuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cElEcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEZ1bmN0aW9uU3BlY1ZwY0NvbmZpZyNzdWJuZXRJRHNcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldElEcz86IHN0cmluZ1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0Z1bmN0aW9uU3BlY1ZwY0NvbmZpZycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRnVuY3Rpb25TcGVjVnBjQ29uZmlnKG9iajogRnVuY3Rpb25TcGVjVnBjQ29uZmlnIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnc2VjdXJpdHlHcm91cElEcyc6IG9iai5zZWN1cml0eUdyb3VwSURzPy5tYXAoeSA9PiB5KSxcbiAgICAnc3VibmV0SURzJzogb2JqLnN1Ym5ldElEcz8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbiJdfQ==