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.
- package/.gitattributes +21 -0
- package/.jsii +4392 -0
- package/API.md +2204 -0
- package/LICENSE +202 -0
- package/README.md +201 -0
- package/changelog.md +2 -0
- package/examples/rds-db-instance/README.md +0 -0
- package/examples/rds-db-instance/cdk.out/RdsDBInstanceStack.assets.json +19 -0
- package/examples/rds-db-instance/cdk.out/RdsDBInstanceStack.template.json +86 -0
- package/examples/rds-db-instance/cdk.out/cdk.out +1 -0
- package/examples/rds-db-instance/cdk.out/manifest.json +230 -0
- package/examples/rds-db-instance/cdk.out/tree.json +171 -0
- package/examples/rds-db-instance/main.ts +136 -0
- package/lib/adapter.d.ts +37 -0
- package/lib/adapter.d.ts.map +1 -0
- package/lib/adapter.js +196 -0
- package/lib/chart.d.ts +19 -0
- package/lib/chart.d.ts.map +1 -0
- package/lib/chart.js +63 -0
- package/lib/imports/cloudcontrol.services.k8s.aws.d.ts +106 -0
- package/lib/imports/cloudcontrol.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/cloudcontrol.services.k8s.aws.js +92 -0
- package/lib/imports/dynamotables-dynamodb.services.k8s.aws.d.ts +430 -0
- package/lib/imports/dynamotables-dynamodb.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/dynamotables-dynamodb.services.k8s.aws.js +314 -0
- package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.d.ts +173 -0
- package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.js +156 -0
- package/lib/imports/fieldexports-services.k8s.aws.d.ts +159 -0
- package/lib/imports/fieldexports-services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/fieldexports-services.k8s.aws.js +151 -0
- package/lib/imports/iampolicies-iam.services.k8s.aws.d.ts +135 -0
- package/lib/imports/iampolicies-iam.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/iampolicies-iam.services.k8s.aws.js +109 -0
- package/lib/imports/iamroles-iam.services.k8s.aws.d.ts +143 -0
- package/lib/imports/iamroles-iam.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/iamroles-iam.services.k8s.aws.js +112 -0
- package/lib/imports/k8s.d.ts +18619 -0
- package/lib/imports/k8s.d.ts.map +1 -0
- package/lib/imports/k8s.js +14701 -0
- package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.d.ts +280 -0
- package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.js +183 -0
- package/lib/imports/lambdafunctions-lambda.services.k8s.aws.d.ts +343 -0
- package/lib/imports/lambdafunctions-lambda.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/lambdafunctions-lambda.services.k8s.aws.js +225 -0
- package/lib/imports/rdsdbinstances-rds.services.k8s.aws.d.ts +790 -0
- package/lib/imports/rdsdbinstances-rds.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/rdsdbinstances-rds.services.k8s.aws.js +217 -0
- package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.d.ts +114 -0
- package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.js +108 -0
- package/lib/imports/s3buckets-s3.services.k8s.aws.d.ts +2253 -0
- package/lib/imports/s3buckets-s3.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/s3buckets-s3.services.k8s.aws.js +1672 -0
- package/lib/imports/sfnmachines-sfn.services.k8s.aws.d.ts +203 -0
- package/lib/imports/sfnmachines-sfn.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/sfnmachines-sfn.services.k8s.aws.js +174 -0
- package/lib/imports/snstopics-sns.services.k8s.aws.d.ts +106 -0
- package/lib/imports/snstopics-sns.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/snstopics-sns.services.k8s.aws.js +110 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +16 -0
- package/lib/mappers/base.d.ts +23 -0
- package/lib/mappers/base.d.ts.map +1 -0
- package/lib/mappers/base.js +20 -0
- package/lib/mappers/ec2-security-group.d.ts +9 -0
- package/lib/mappers/ec2-security-group.d.ts.map +1 -0
- package/lib/mappers/ec2-security-group.js +33 -0
- package/lib/mappers/iam-policy.d.ts +9 -0
- package/lib/mappers/iam-policy.d.ts.map +1 -0
- package/lib/mappers/iam-policy.js +32 -0
- package/lib/mappers/iam-role.d.ts +9 -0
- package/lib/mappers/iam-role.d.ts.map +1 -0
- package/lib/mappers/iam-role.js +34 -0
- package/lib/mappers/index.d.ts +9 -0
- package/lib/mappers/index.d.ts.map +1 -0
- package/lib/mappers/index.js +21 -0
- package/lib/mappers/lambda-function.d.ts +9 -0
- package/lib/mappers/lambda-function.d.ts.map +1 -0
- package/lib/mappers/lambda-function.js +37 -0
- package/lib/mappers/rds-db-instance.d.ts +10 -0
- package/lib/mappers/rds-db-instance.d.ts.map +1 -0
- package/lib/mappers/rds-db-instance.js +65 -0
- package/lib/mappers/rds-db-subnet-group.d.ts +9 -0
- package/lib/mappers/rds-db-subnet-group.d.ts.map +1 -0
- package/lib/mappers/rds-db-subnet-group.js +34 -0
- package/lib/mappers/s3-bucket.d.ts +9 -0
- package/lib/mappers/s3-bucket.d.ts.map +1 -0
- package/lib/mappers/s3-bucket.js +53 -0
- package/package.json +129 -0
- package/releasetag.txt +1 -0
- package/version.txt +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rdsdbinstances-rds.services.k8s.aws.d.ts","sourceRoot":"","sources":["../../src/imports/rdsdbinstances-rds.services.k8s.aws.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toJson_DbInstanceSpecKmsKeyRefFrom = exports.toJson_DbInstanceSpecTags = exports.toJson_DbInstanceSpecProcessorFeatures = exports.toJson_DbInstanceSpecMasterUserPassword = exports.toJson_DbInstanceSpecKmsKeyRef = exports.toJson_DbInstanceSpec = exports.toJson_DbInstanceProps = exports.DbInstance = void 0;
|
|
4
|
+
// generated by cdk8s
|
|
5
|
+
const cdk8s_1 = require("cdk8s");
|
|
6
|
+
/**
|
|
7
|
+
* DBInstance is the Schema for the DBInstances API
|
|
8
|
+
*
|
|
9
|
+
* @schema DBInstance
|
|
10
|
+
*/
|
|
11
|
+
class DbInstance extends cdk8s_1.ApiObject {
|
|
12
|
+
/**
|
|
13
|
+
* Defines a "DBInstance" 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
|
+
...DbInstance.GVK,
|
|
21
|
+
...props,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Renders a Kubernetes manifest for "DBInstance".
|
|
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
|
+
...DbInstance.GVK,
|
|
34
|
+
...toJson_DbInstanceProps(props),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Renders the object to Kubernetes JSON.
|
|
39
|
+
*/
|
|
40
|
+
toJson() {
|
|
41
|
+
const resolved = super.toJson();
|
|
42
|
+
return {
|
|
43
|
+
...DbInstance.GVK,
|
|
44
|
+
...toJson_DbInstanceProps(resolved),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.DbInstance = DbInstance;
|
|
49
|
+
/**
|
|
50
|
+
* Returns the apiVersion and kind for "DBInstance"
|
|
51
|
+
*/
|
|
52
|
+
DbInstance.GVK = {
|
|
53
|
+
apiVersion: 'rds.services.k8s.aws/v1alpha1',
|
|
54
|
+
kind: 'DBInstance',
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Converts an object of type 'DbInstanceProps' to JSON representation.
|
|
58
|
+
*/
|
|
59
|
+
/* eslint-disable max-len, quote-props */
|
|
60
|
+
function toJson_DbInstanceProps(obj) {
|
|
61
|
+
if (obj === undefined) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
const result = {
|
|
65
|
+
'metadata': obj.metadata,
|
|
66
|
+
'spec': toJson_DbInstanceSpec(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_DbInstanceProps = toJson_DbInstanceProps;
|
|
72
|
+
/**
|
|
73
|
+
* Converts an object of type 'DbInstanceSpec' to JSON representation.
|
|
74
|
+
*/
|
|
75
|
+
/* eslint-disable max-len, quote-props */
|
|
76
|
+
function toJson_DbInstanceSpec(obj) {
|
|
77
|
+
var _a, _b, _c, _d, _e;
|
|
78
|
+
if (obj === undefined) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
const result = {
|
|
82
|
+
'allocatedStorage': obj.allocatedStorage,
|
|
83
|
+
'autoMinorVersionUpgrade': obj.autoMinorVersionUpgrade,
|
|
84
|
+
'availabilityZone': obj.availabilityZone,
|
|
85
|
+
'backupRetentionPeriod': obj.backupRetentionPeriod,
|
|
86
|
+
'characterSetName': obj.characterSetName,
|
|
87
|
+
'copyTagsToSnapshot': obj.copyTagsToSnapshot,
|
|
88
|
+
'customIAMInstanceProfile': obj.customIamInstanceProfile,
|
|
89
|
+
'dbClusterIdentifier': obj.dbClusterIdentifier,
|
|
90
|
+
'dbInstanceClass': obj.dbInstanceClass,
|
|
91
|
+
'dbInstanceIdentifier': obj.dbInstanceIdentifier,
|
|
92
|
+
'dbName': obj.dbName,
|
|
93
|
+
'dbParameterGroupName': obj.dbParameterGroupName,
|
|
94
|
+
'dbSecurityGroups': (_a = obj.dbSecurityGroups) === null || _a === void 0 ? void 0 : _a.map(y => y),
|
|
95
|
+
'dbSubnetGroupName': obj.dbSubnetGroupName,
|
|
96
|
+
'deletionProtection': obj.deletionProtection,
|
|
97
|
+
'domain': obj.domain,
|
|
98
|
+
'domainIAMRoleName': obj.domainIamRoleName,
|
|
99
|
+
'enableCloudwatchLogsExports': (_b = obj.enableCloudwatchLogsExports) === null || _b === void 0 ? void 0 : _b.map(y => y),
|
|
100
|
+
'enableCustomerOwnedIP': obj.enableCustomerOwnedIp,
|
|
101
|
+
'enableIAMDatabaseAuthentication': obj.enableIamDatabaseAuthentication,
|
|
102
|
+
'engine': obj.engine,
|
|
103
|
+
'engineVersion': obj.engineVersion,
|
|
104
|
+
'iops': obj.iops,
|
|
105
|
+
'kmsKeyID': obj.kmsKeyId,
|
|
106
|
+
'kmsKeyRef': toJson_DbInstanceSpecKmsKeyRef(obj.kmsKeyRef),
|
|
107
|
+
'licenseModel': obj.licenseModel,
|
|
108
|
+
'masterUserPassword': toJson_DbInstanceSpecMasterUserPassword(obj.masterUserPassword),
|
|
109
|
+
'masterUsername': obj.masterUsername,
|
|
110
|
+
'maxAllocatedStorage': obj.maxAllocatedStorage,
|
|
111
|
+
'monitoringInterval': obj.monitoringInterval,
|
|
112
|
+
'monitoringRoleARN': obj.monitoringRoleArn,
|
|
113
|
+
'multiAZ': obj.multiAz,
|
|
114
|
+
'ncharCharacterSetName': obj.ncharCharacterSetName,
|
|
115
|
+
'optionGroupName': obj.optionGroupName,
|
|
116
|
+
'performanceInsightsEnabled': obj.performanceInsightsEnabled,
|
|
117
|
+
'performanceInsightsKMSKeyID': obj.performanceInsightsKmsKeyId,
|
|
118
|
+
'performanceInsightsRetentionPeriod': obj.performanceInsightsRetentionPeriod,
|
|
119
|
+
'port': obj.port,
|
|
120
|
+
'preferredBackupWindow': obj.preferredBackupWindow,
|
|
121
|
+
'preferredMaintenanceWindow': obj.preferredMaintenanceWindow,
|
|
122
|
+
'processorFeatures': (_c = obj.processorFeatures) === null || _c === void 0 ? void 0 : _c.map(y => toJson_DbInstanceSpecProcessorFeatures(y)),
|
|
123
|
+
'promotionTier': obj.promotionTier,
|
|
124
|
+
'publiclyAccessible': obj.publiclyAccessible,
|
|
125
|
+
'storageEncrypted': obj.storageEncrypted,
|
|
126
|
+
'storageType': obj.storageType,
|
|
127
|
+
'tags': (_d = obj.tags) === null || _d === void 0 ? void 0 : _d.map(y => toJson_DbInstanceSpecTags(y)),
|
|
128
|
+
'tdeCredentialARN': obj.tdeCredentialArn,
|
|
129
|
+
'tdeCredentialPassword': obj.tdeCredentialPassword,
|
|
130
|
+
'timezone': obj.timezone,
|
|
131
|
+
'vpcSecurityGroupIDs': (_e = obj.vpcSecurityGroupIDs) === null || _e === void 0 ? void 0 : _e.map(y => y),
|
|
132
|
+
};
|
|
133
|
+
// filter undefined values
|
|
134
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
135
|
+
}
|
|
136
|
+
exports.toJson_DbInstanceSpec = toJson_DbInstanceSpec;
|
|
137
|
+
/**
|
|
138
|
+
* Converts an object of type 'DbInstanceSpecKmsKeyRef' to JSON representation.
|
|
139
|
+
*/
|
|
140
|
+
/* eslint-disable max-len, quote-props */
|
|
141
|
+
function toJson_DbInstanceSpecKmsKeyRef(obj) {
|
|
142
|
+
if (obj === undefined) {
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
const result = {
|
|
146
|
+
'from': toJson_DbInstanceSpecKmsKeyRefFrom(obj.from),
|
|
147
|
+
};
|
|
148
|
+
// filter undefined values
|
|
149
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
150
|
+
}
|
|
151
|
+
exports.toJson_DbInstanceSpecKmsKeyRef = toJson_DbInstanceSpecKmsKeyRef;
|
|
152
|
+
/**
|
|
153
|
+
* Converts an object of type 'DbInstanceSpecMasterUserPassword' to JSON representation.
|
|
154
|
+
*/
|
|
155
|
+
/* eslint-disable max-len, quote-props */
|
|
156
|
+
function toJson_DbInstanceSpecMasterUserPassword(obj) {
|
|
157
|
+
if (obj === undefined) {
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
160
|
+
const result = {
|
|
161
|
+
'key': obj.key,
|
|
162
|
+
'name': obj.name,
|
|
163
|
+
'namespace': obj.namespace,
|
|
164
|
+
};
|
|
165
|
+
// filter undefined values
|
|
166
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
167
|
+
}
|
|
168
|
+
exports.toJson_DbInstanceSpecMasterUserPassword = toJson_DbInstanceSpecMasterUserPassword;
|
|
169
|
+
/**
|
|
170
|
+
* Converts an object of type 'DbInstanceSpecProcessorFeatures' to JSON representation.
|
|
171
|
+
*/
|
|
172
|
+
/* eslint-disable max-len, quote-props */
|
|
173
|
+
function toJson_DbInstanceSpecProcessorFeatures(obj) {
|
|
174
|
+
if (obj === undefined) {
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
const result = {
|
|
178
|
+
'name': obj.name,
|
|
179
|
+
'value': obj.value,
|
|
180
|
+
};
|
|
181
|
+
// filter undefined values
|
|
182
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
183
|
+
}
|
|
184
|
+
exports.toJson_DbInstanceSpecProcessorFeatures = toJson_DbInstanceSpecProcessorFeatures;
|
|
185
|
+
/**
|
|
186
|
+
* Converts an object of type 'DbInstanceSpecTags' to JSON representation.
|
|
187
|
+
*/
|
|
188
|
+
/* eslint-disable max-len, quote-props */
|
|
189
|
+
function toJson_DbInstanceSpecTags(obj) {
|
|
190
|
+
if (obj === undefined) {
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
193
|
+
const result = {
|
|
194
|
+
'key': obj.key,
|
|
195
|
+
'value': obj.value,
|
|
196
|
+
};
|
|
197
|
+
// filter undefined values
|
|
198
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
199
|
+
}
|
|
200
|
+
exports.toJson_DbInstanceSpecTags = toJson_DbInstanceSpecTags;
|
|
201
|
+
/**
|
|
202
|
+
* Converts an object of type 'DbInstanceSpecKmsKeyRefFrom' to JSON representation.
|
|
203
|
+
*/
|
|
204
|
+
/* eslint-disable max-len, quote-props */
|
|
205
|
+
function toJson_DbInstanceSpecKmsKeyRefFrom(obj) {
|
|
206
|
+
if (obj === undefined) {
|
|
207
|
+
return undefined;
|
|
208
|
+
}
|
|
209
|
+
const result = {
|
|
210
|
+
'name': obj.name,
|
|
211
|
+
};
|
|
212
|
+
// filter undefined values
|
|
213
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
214
|
+
}
|
|
215
|
+
exports.toJson_DbInstanceSpecKmsKeyRefFrom = toJson_DbInstanceSpecKmsKeyRefFrom;
|
|
216
|
+
/* eslint-enable max-len, quote-props */
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzZGJpbnN0YW5jZXMtcmRzLnNlcnZpY2VzLms4cy5hd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wb3J0cy9yZHNkYmluc3RhbmNlcy1yZHMuc2VydmljZXMuazhzLmF3cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQkFBcUI7QUFDckIsaUNBQXVFO0FBSXZFOzs7O0dBSUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxpQkFBUztJQXVCdkM7Ozs7O09BS0c7SUFDSCxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUF5QixFQUFFO1FBQzFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxVQUFVLENBQUMsR0FBRztZQUNqQixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBekJEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBeUIsRUFBRTtRQUNoRCxPQUFPO1lBQ0wsR0FBRyxVQUFVLENBQUMsR0FBRztZQUNqQixHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQztTQUNqQyxDQUFDO0lBQ0osQ0FBQztJQWVEOztPQUVHO0lBQ0ksTUFBTTtRQUNYLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVoQyxPQUFPO1lBQ0wsR0FBRyxVQUFVLENBQUMsR0FBRztZQUNqQixHQUFHLHNCQUFzQixDQUFDLFFBQVEsQ0FBQztTQUNwQyxDQUFDO0lBQ0osQ0FBQzs7QUE5Q0gsZ0NBK0NDO0FBOUNDOztHQUVHO0FBQ29CLGNBQUcsR0FBcUI7SUFDN0MsVUFBVSxFQUFFLCtCQUErQjtJQUMzQyxJQUFJLEVBQUUsWUFBWTtDQUNuQixDQUFDO0FBZ0VKOztHQUVHO0FBQ0gseUNBQXlDO0FBQ3pDLFNBQWdCLHNCQUFzQixDQUFDLEdBQWdDO0lBQ3JFLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0tBQUU7SUFDNUMsTUFBTSxNQUFNLEdBQUc7UUFDYixVQUFVLEVBQUUsR0FBRyxDQUFDLFFBQVE7UUFDeEIsTUFBTSxFQUFFLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7S0FDeEMsQ0FBQztJQUNGLDBCQUEwQjtJQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBUkQsd0RBUUM7QUFncEJEOztHQUVHO0FBQ0gseUNBQXlDO0FBQ3pDLFNBQWdCLHFCQUFxQixDQUFDLEdBQStCOztJQUNuRSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2Isa0JBQWtCLEVBQUUsR0FBRyxDQUFDLGdCQUFnQjtRQUN4Qyx5QkFBeUIsRUFBRSxHQUFHLENBQUMsdUJBQXVCO1FBQ3RELGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxnQkFBZ0I7UUFDeEMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtRQUNsRCxrQkFBa0IsRUFBRSxHQUFHLENBQUMsZ0JBQWdCO1FBQ3hDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7UUFDNUMsMEJBQTBCLEVBQUUsR0FBRyxDQUFDLHdCQUF3QjtRQUN4RCxxQkFBcUIsRUFBRSxHQUFHLENBQUMsbUJBQW1CO1FBQzlDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxlQUFlO1FBQ3RDLHNCQUFzQixFQUFFLEdBQUcsQ0FBQyxvQkFBb0I7UUFDaEQsUUFBUSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1FBQ3BCLHNCQUFzQixFQUFFLEdBQUcsQ0FBQyxvQkFBb0I7UUFDaEQsa0JBQWtCLFFBQUUsR0FBRyxDQUFDLGdCQUFnQiwwQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckQsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLGlCQUFpQjtRQUMxQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsa0JBQWtCO1FBQzVDLFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTTtRQUNwQixtQkFBbUIsRUFBRSxHQUFHLENBQUMsaUJBQWlCO1FBQzFDLDZCQUE2QixRQUFFLEdBQUcsQ0FBQywyQkFBMkIsMENBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNFLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxxQkFBcUI7UUFDbEQsaUNBQWlDLEVBQUUsR0FBRyxDQUFDLCtCQUErQjtRQUN0RSxRQUFRLEVBQUUsR0FBRyxDQUFDLE1BQU07UUFDcEIsZUFBZSxFQUFFLEdBQUcsQ0FBQyxhQUFhO1FBQ2xDLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNoQixVQUFVLEVBQUUsR0FBRyxDQUFDLFFBQVE7UUFDeEIsV0FBVyxFQUFFLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDMUQsY0FBYyxFQUFFLEdBQUcsQ0FBQyxZQUFZO1FBQ2hDLG9CQUFvQixFQUFFLHVDQUF1QyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztRQUNyRixnQkFBZ0IsRUFBRSxHQUFHLENBQUMsY0FBYztRQUNwQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsbUJBQW1CO1FBQzlDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7UUFDNUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLGlCQUFpQjtRQUMxQyxTQUFTLEVBQUUsR0FBRyxDQUFDLE9BQU87UUFDdEIsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtRQUNsRCxpQkFBaUIsRUFBRSxHQUFHLENBQUMsZUFBZTtRQUN0Qyw0QkFBNEIsRUFBRSxHQUFHLENBQUMsMEJBQTBCO1FBQzVELDZCQUE2QixFQUFFLEdBQUcsQ0FBQywyQkFBMkI7UUFDOUQsb0NBQW9DLEVBQUUsR0FBRyxDQUFDLGtDQUFrQztRQUM1RSxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDaEIsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtRQUNsRCw0QkFBNEIsRUFBRSxHQUFHLENBQUMsMEJBQTBCO1FBQzVELG1CQUFtQixRQUFFLEdBQUcsQ0FBQyxpQkFBaUIsMENBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsc0NBQXNDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0YsZUFBZSxFQUFFLEdBQUcsQ0FBQyxhQUFhO1FBQ2xDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7UUFDNUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLGdCQUFnQjtRQUN4QyxhQUFhLEVBQUUsR0FBRyxDQUFDLFdBQVc7UUFDOUIsTUFBTSxRQUFFLEdBQUcsQ0FBQyxJQUFJLDBDQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxnQkFBZ0I7UUFDeEMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtRQUNsRCxVQUFVLEVBQUUsR0FBRyxDQUFDLFFBQVE7UUFDeEIscUJBQXFCLFFBQUUsR0FBRyxDQUFDLG1CQUFtQiwwQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDNUQsQ0FBQztJQUNGLDBCQUEwQjtJQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBeERELHNEQXdEQztBQWtCRDs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQiw4QkFBOEIsQ0FBQyxHQUF3QztJQUNyRixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsTUFBTSxFQUFFLGtDQUFrQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7S0FDckQsQ0FBQztJQUNGLDBCQUEwQjtJQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBUEQsd0VBT0M7QUE0Q0Q7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0IsdUNBQXVDLENBQUMsR0FBaUQ7SUFDdkcsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRztRQUNkLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNoQixXQUFXLEVBQUUsR0FBRyxDQUFDLFNBQVM7S0FDM0IsQ0FBQztJQUNGLDBCQUEwQjtJQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBVEQsMEZBU0M7QUFzQ0Q7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0Isc0NBQXNDLENBQUMsR0FBZ0Q7SUFDckcsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNoQixPQUFPLEVBQUUsR0FBRyxDQUFDLEtBQUs7S0FDbkIsQ0FBQztJQUNGLDBCQUEwQjtJQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBUkQsd0ZBUUM7QUFxQkQ7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0IseUJBQXlCLENBQUMsR0FBbUM7SUFDM0UsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRztRQUNkLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSztLQUNuQixDQUFDO0lBQ0YsMEJBQTBCO0lBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFHLENBQUM7QUFSRCw4REFRQztBQWdCRDs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQixrQ0FBa0MsQ0FBQyxHQUE0QztJQUM3RixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJO0tBQ2pCLENBQUM7SUFDRiwwQkFBMEI7SUFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQVBELGdGQU9DO0FBQ0Qsd0NBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2VuZXJhdGVkIGJ5IGNkazhzXG5pbXBvcnQgeyBBcGlPYmplY3QsIEFwaU9iamVjdE1ldGFkYXRhLCBHcm91cFZlcnNpb25LaW5kIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cblxuLyoqXG4gKiBEQkluc3RhbmNlIGlzIHRoZSBTY2hlbWEgZm9yIHRoZSBEQkluc3RhbmNlcyBBUElcbiAqXG4gKiBAc2NoZW1hIERCSW5zdGFuY2VcbiAqL1xuZXhwb3J0IGNsYXNzIERiSW5zdGFuY2UgZXh0ZW5kcyBBcGlPYmplY3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCJEQkluc3RhbmNlXCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1ZLOiBHcm91cFZlcnNpb25LaW5kID0ge1xuICAgIGFwaVZlcnNpb246ICdyZHMuc2VydmljZXMuazhzLmF3cy92MWFscGhhMScsXG4gICAga2luZDogJ0RCSW5zdGFuY2UnLFxuICB9O1xuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJEQkluc3RhbmNlXCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IERiSW5zdGFuY2VQcm9wcyA9IHt9KTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uRGJJbnN0YW5jZS5HVkssXG4gICAgICAuLi50b0pzb25fRGJJbnN0YW5jZVByb3BzKHByb3BzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBcIkRCSW5zdGFuY2VcIiBBUEkgb2JqZWN0XG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBhIHNjb3BlLWxvY2FsIG5hbWUgZm9yIHRoZSBvYmplY3RcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERiSW5zdGFuY2VQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5EYkluc3RhbmNlLkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5EYkluc3RhbmNlLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9EYkluc3RhbmNlUHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBEQkluc3RhbmNlIGlzIHRoZSBTY2hlbWEgZm9yIHRoZSBEQkluc3RhbmNlcyBBUElcbiAqXG4gKiBAc2NoZW1hIERCSW5zdGFuY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYkluc3RhbmNlUHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBEQkluc3RhbmNlI21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBEQkluc3RhbmNlU3BlYyBkZWZpbmVzIHRoZSBkZXNpcmVkIHN0YXRlIG9mIERCSW5zdGFuY2UuXG4gICAqIENvbnRhaW5zIHRoZSBkZXRhaWxzIG9mIGFuIEFtYXpvbiBSRFMgREIgaW5zdGFuY2UuXG4gICAqIFRoaXMgZGF0YSB0eXBlIGlzIHVzZWQgYXMgYSByZXNwb25zZSBlbGVtZW50IGluIHRoZSBEZXNjcmliZURCSW5zdGFuY2VzIGFjdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBEQkluc3RhbmNlI3NwZWNcbiAgICovXG4gIHJlYWRvbmx5IHNwZWM/OiBEYkluc3RhbmNlU3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdEYkluc3RhbmNlUHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0RiSW5zdGFuY2VQcm9wcyhvYmo6IERiSW5zdGFuY2VQcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX0RiSW5zdGFuY2VTcGVjKG9iai5zcGVjKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBEQkluc3RhbmNlU3BlYyBkZWZpbmVzIHRoZSBkZXNpcmVkIHN0YXRlIG9mIERCSW5zdGFuY2UuXG4gKiBDb250YWlucyB0aGUgZGV0YWlscyBvZiBhbiBBbWF6b24gUkRTIERCIGluc3RhbmNlLlxuICogVGhpcyBkYXRhIHR5cGUgaXMgdXNlZCBhcyBhIHJlc3BvbnNlIGVsZW1lbnQgaW4gdGhlIERlc2NyaWJlREJJbnN0YW5jZXMgYWN0aW9uLlxuICpcbiAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYkluc3RhbmNlU3BlYyB7XG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHN0b3JhZ2UgaW4gZ2liaWJ5dGVzIChHaUIpIHRvIGFsbG9jYXRlIGZvciB0aGUgREIgaW5zdGFuY2UuXG4gICAqIFR5cGU6IEludGVnZXJcbiAgICogQW1hem9uIEF1cm9yYVxuICAgKiBOb3QgYXBwbGljYWJsZS4gQXVyb3JhIGNsdXN0ZXIgdm9sdW1lcyBhdXRvbWF0aWNhbGx5IGdyb3cgYXMgdGhlIGFtb3VudCBvZiBkYXRhIGluIHlvdXIgZGF0YWJhc2UgaW5jcmVhc2VzLCB0aG91Z2ggeW91IGFyZSBvbmx5IGNoYXJnZWQgZm9yIHRoZSBzcGFjZSB0aGF0IHlvdSB1c2UgaW4gYW4gQXVyb3JhIGNsdXN0ZXIgdm9sdW1lLlxuICAgKiBBbWF6b24gUkRTIEN1c3RvbVxuICAgKiBDb25zdHJhaW50cyB0byB0aGUgYW1vdW50IG9mIHN0b3JhZ2UgZm9yIGVhY2ggc3RvcmFnZSB0eXBlIGFyZSB0aGUgZm9sbG93aW5nOlxuICAgKiAqIEdlbmVyYWwgUHVycG9zZSAoU1NEKSBzdG9yYWdlIChncDIpOiBNdXN0IGJlIGFuIGludGVnZXIgZnJvbSA0MCB0byA2NTUzNi5cbiAgICogKiBQcm92aXNpb25lZCBJT1BTIHN0b3JhZ2UgKGlvMSk6IE11c3QgYmUgYW4gaW50ZWdlciBmcm9tIDQwIHRvIDY1NTM2LlxuICAgKiBNeVNRTFxuICAgKiBDb25zdHJhaW50cyB0byB0aGUgYW1vdW50IG9mIHN0b3JhZ2UgZm9yIGVhY2ggc3RvcmFnZSB0eXBlIGFyZSB0aGUgZm9sbG93aW5nOlxuICAgKiAqIEdlbmVyYWwgUHVycG9zZSAoU1NEKSBzdG9yYWdlIChncDIpOiBNdXN0IGJlIGFuIGludGVnZXIgZnJvbSAyMCB0byA2NTUzNi5cbiAgICogKiBQcm92aXNpb25lZCBJT1BTIHN0b3JhZ2UgKGlvMSk6IE11c3QgYmUgYW4gaW50ZWdlciBmcm9tIDEwMCB0byA2NTUzNi5cbiAgICogKiBNYWduZXRpYyBzdG9yYWdlIChzdGFuZGFyZCk6IE11c3QgYmUgYW4gaW50ZWdlciBmcm9tIDUgdG8gMzA3Mi5cbiAgICogTWFyaWFEQlxuICAgKiBDb25zdHJhaW50cyB0byB0aGUgYW1vdW50IG9mIHN0b3JhZ2UgZm9yIGVhY2ggc3RvcmFnZSB0eXBlIGFyZSB0aGUgZm9sbG93aW5nOlxuICAgKiAqIEdlbmVyYWwgUHVycG9zZSAoU1NEKSBzdG9yYWdlIChncDIpOiBNdXN0IGJlIGFuIGludGVnZXIgZnJvbSAyMCB0byA2NTUzNi5cbiAgICogKiBQcm92aXNpb25lZCBJT1BTIHN0b3JhZ2UgKGlvMSk6IE11c3QgYmUgYW4gaW50ZWdlciBmcm9tIDEwMCB0byA2NTUzNi5cbiAgICogKiBNYWduZXRpYyBzdG9yYWdlIChzdGFuZGFyZCk6IE11c3QgYmUgYW4gaW50ZWdlciBmcm9tIDUgdG8gMzA3Mi5cbiAgICogUG9zdGdyZVNRTFxuICAgKiBDb25zdHJhaW50cyB0byB0aGUgYW1vdW50IG9mIHN0b3JhZ2UgZm9yIGVhY2ggc3RvcmFnZSB0eXBlIGFyZSB0aGUgZm9sbG93aW5nOlxuICAgKiAqIEdlbmVyYWwgUHVycG9zZSAoU1NEKSBzdG9yYWdlIChncDIpOiBNdXN0IGJlIGFuIGludGVnZXIgZnJvbSAyMCB0byA2NTUzNi5cbiAgICogKiBQcm92aXNpb25lZCBJT1BTIHN0b3JhZ2UgKGlvMSk6IE11c3QgYmUgYW4gaW50ZWdlciBmcm9tIDEwMCB0byA2NTUzNi5cbiAgICogKiBNYWduZXRpYyBzdG9yYWdlIChzdGFuZGFyZCk6IE11c3QgYmUgYW4gaW50ZWdlciBmcm9tIDUgdG8gMzA3Mi5cbiAgICogT3JhY2xlXG4gICAqIENvbnN0cmFpbnRzIHRvIHRoZSBhbW91bnQgb2Ygc3RvcmFnZSBmb3IgZWFjaCBzdG9yYWdlIHR5cGUgYXJlIHRoZSBmb2xsb3dpbmc6XG4gICAqICogR2VuZXJhbCBQdXJwb3NlIChTU0QpIHN0b3JhZ2UgKGdwMik6IE11c3QgYmUgYW4gaW50ZWdlciBmcm9tIDIwIHRvIDY1NTM2LlxuICAgKiAqIFByb3Zpc2lvbmVkIElPUFMgc3RvcmFnZSAoaW8xKTogTXVzdCBiZSBhbiBpbnRlZ2VyIGZyb20gMTAwIHRvIDY1NTM2LlxuICAgKiAqIE1hZ25ldGljIHN0b3JhZ2UgKHN0YW5kYXJkKTogTXVzdCBiZSBhbiBpbnRlZ2VyIGZyb20gMTAgdG8gMzA3Mi5cbiAgICogU1FMIFNlcnZlclxuICAgKiBDb25zdHJhaW50cyB0byB0aGUgYW1vdW50IG9mIHN0b3JhZ2UgZm9yIGVhY2ggc3RvcmFnZSB0eXBlIGFyZSB0aGUgZm9sbG93aW5nOlxuICAgKiAqIEdlbmVyYWwgUHVycG9zZSAoU1NEKSBzdG9yYWdlIChncDIpOiBFbnRlcnByaXNlIGFuZCBTdGFuZGFyZCBlZGl0aW9uczogICAgTXVzdCBiZSBhbiBpbnRlZ2VyIGZyb20gMjAwIHRvIDE2Mzg0LiBXZWIgYW5kIEV4cHJlc3MgZWRpdGlvbnM6IE11c3QgYmUgICAgYW4gaW50ZWdlciBmcm9tIDIwIHRvIDE2Mzg0LlxuICAgKiAqIFByb3Zpc2lvbmVkIElPUFMgc3RvcmFnZSAoaW8xKTogRW50ZXJwcmlzZSBhbmQgU3RhbmRhcmQgZWRpdGlvbnM6IE11c3QgICAgYmUgYW4gaW50ZWdlciBmcm9tIDIwMCB0byAxNjM4NC4gV2ViIGFuZCBFeHByZXNzIGVkaXRpb25zOiBNdXN0IGJlIGFuICAgIGludGVnZXIgZnJvbSAxMDAgdG8gMTYzODQuXG4gICAqICogTWFnbmV0aWMgc3RvcmFnZSAoc3RhbmRhcmQpOiBFbnRlcnByaXNlIGFuZCBTdGFuZGFyZCBlZGl0aW9uczogTXVzdCAgICBiZSBhbiBpbnRlZ2VyIGZyb20gMjAwIHRvIDEwMjQuIFdlYiBhbmQgRXhwcmVzcyBlZGl0aW9uczogTXVzdCBiZSBhbiBpbnRlZ2VyICAgIGZyb20gMjAgdG8gMTAyNC5cbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyNhbGxvY2F0ZWRTdG9yYWdlXG4gICAqL1xuICByZWFkb25seSBhbGxvY2F0ZWRTdG9yYWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgbWlub3IgZW5naW5lIHVwZ3JhZGVzIGFyZSBhcHBsaWVkIGF1dG9tYXRpY2FsbHkgdG8gdGhlIERCIGluc3RhbmNlIGR1cmluZyB0aGUgbWFpbnRlbmFuY2Ugd2luZG93LiBCeSBkZWZhdWx0LCBtaW5vciBlbmdpbmUgdXBncmFkZXMgYXJlIGFwcGxpZWQgYXV0b21hdGljYWxseS5cbiAgICogSWYgeW91IGNyZWF0ZSBhbiBSRFMgQ3VzdG9tIERCIGluc3RhbmNlLCB5b3UgbXVzdCBzZXQgQXV0b01pbm9yVmVyc2lvblVwZ3JhZGUgdG8gZmFsc2UuXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMjYXV0b01pbm9yVmVyc2lvblVwZ3JhZGVcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9NaW5vclZlcnNpb25VcGdyYWRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIEF2YWlsYWJpbGl0eSBab25lIChBWikgd2hlcmUgdGhlIGRhdGFiYXNlIHdpbGwgYmUgY3JlYXRlZC4gRm9yIGluZm9ybWF0aW9uIG9uIEFtYXpvbiBXZWIgU2VydmljZXMgUmVnaW9ucyBhbmQgQXZhaWxhYmlsaXR5IFpvbmVzLCBzZWUgUmVnaW9ucyBhbmQgQXZhaWxhYmlsaXR5IFpvbmVzIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvQ29uY2VwdHMuUmVnaW9uc0FuZEF2YWlsYWJpbGl0eVpvbmVzLmh0bWwpLlxuICAgKiBEZWZhdWx0OiBBIHJhbmRvbSwgc3lzdGVtLWNob3NlbiBBdmFpbGFiaWxpdHkgWm9uZSBpbiB0aGUgZW5kcG9pbnQncyBBbWF6b24gV2ViIFNlcnZpY2VzIFJlZ2lvbi5cbiAgICogRXhhbXBsZTogdXMtZWFzdC0xZFxuICAgKiBDb25zdHJhaW50OiBUaGUgQXZhaWxhYmlsaXR5Wm9uZSBwYXJhbWV0ZXIgY2FuJ3QgYmUgc3BlY2lmaWVkIGlmIHRoZSBEQiBpbnN0YW5jZSBpcyBhIE11bHRpLUFaIGRlcGxveW1lbnQuIFRoZSBzcGVjaWZpZWQgQXZhaWxhYmlsaXR5IFpvbmUgbXVzdCBiZSBpbiB0aGUgc2FtZSBBbWF6b24gV2ViIFNlcnZpY2VzIFJlZ2lvbiBhcyB0aGUgY3VycmVudCBlbmRwb2ludC5cbiAgICogSWYgeW91J3JlIGNyZWF0aW5nIGEgREIgaW5zdGFuY2UgaW4gYW4gUkRTIG9uIFZNd2FyZSBlbnZpcm9ubWVudCwgc3BlY2lmeSB0aGUgaWRlbnRpZmllciBvZiB0aGUgY3VzdG9tIEF2YWlsYWJpbGl0eSBab25lIHRvIGNyZWF0ZSB0aGUgREIgaW5zdGFuY2UgaW4uXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFJEUyBvbiBWTXdhcmUsIHNlZSB0aGUgUkRTIG9uIFZNd2FyZSBVc2VyIEd1aWRlLiAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvUkRTb25WTXdhcmVVc2VyR3VpZGUvcmRzLW9uLXZtd2FyZS5odG1sKVxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjI2F2YWlsYWJpbGl0eVpvbmVcbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgZGF5cyBmb3Igd2hpY2ggYXV0b21hdGVkIGJhY2t1cHMgYXJlIHJldGFpbmVkLiBTZXR0aW5nIHRoaXMgcGFyYW1ldGVyIHRvIGEgcG9zaXRpdmUgbnVtYmVyIGVuYWJsZXMgYmFja3Vwcy4gU2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byAwIGRpc2FibGVzIGF1dG9tYXRlZCBiYWNrdXBzLlxuICAgKiBBbWF6b24gQXVyb3JhXG4gICAqIE5vdCBhcHBsaWNhYmxlLiBUaGUgcmV0ZW50aW9uIHBlcmlvZCBmb3IgYXV0b21hdGVkIGJhY2t1cHMgaXMgbWFuYWdlZCBieSB0aGUgREIgY2x1c3Rlci5cbiAgICogRGVmYXVsdDogMVxuICAgKiBDb25zdHJhaW50czpcbiAgICogKiBNdXN0IGJlIGEgdmFsdWUgZnJvbSAwIHRvIDM1XG4gICAqICogQ2FuJ3QgYmUgc2V0IHRvIDAgaWYgdGhlIERCIGluc3RhbmNlIGlzIGEgc291cmNlIHRvIHJlYWQgcmVwbGljYXNcbiAgICogKiBDYW4ndCBiZSBzZXQgdG8gMCBvciAzNSBmb3IgYW4gUkRTIEN1c3RvbSBEQiBpbnN0YW5jZVxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjI2JhY2t1cFJldGVudGlvblBlcmlvZFxuICAgKi9cbiAgcmVhZG9ubHkgYmFja3VwUmV0ZW50aW9uUGVyaW9kPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBGb3Igc3VwcG9ydGVkIGVuZ2luZXMsIHRoaXMgdmFsdWUgaW5kaWNhdGVzIHRoYXQgdGhlIERCIGluc3RhbmNlIHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBDaGFyYWN0ZXJTZXQuXG4gICAqIFRoaXMgc2V0dGluZyBkb2Vzbid0IGFwcGx5IHRvIFJEUyBDdXN0b20uIEhvd2V2ZXIsIGlmIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgY2hhcmFjdGVyIHNldCwgeW91IGNhbiBjaGFuZ2UgaXQgb24gdGhlIGRhdGFiYXNlIGl0c2VsZi5cbiAgICogQW1hem9uIEF1cm9yYVxuICAgKiBOb3QgYXBwbGljYWJsZS4gVGhlIGNoYXJhY3RlciBzZXQgaXMgbWFuYWdlZCBieSB0aGUgREIgY2x1c3Rlci4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBDcmVhdGVEQkNsdXN0ZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMjY2hhcmFjdGVyU2V0TmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgY2hhcmFjdGVyU2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRvIGNvcHkgdGFncyBmcm9tIHRoZSBEQiBpbnN0YW5jZSB0byBzbmFwc2hvdHMgb2YgdGhlIERCIGluc3RhbmNlLiBCeSBkZWZhdWx0LCB0YWdzIGFyZSBub3QgY29waWVkLlxuICAgKiBBbWF6b24gQXVyb3JhXG4gICAqIE5vdCBhcHBsaWNhYmxlLiBDb3B5aW5nIHRhZ3MgdG8gc25hcHNob3RzIGlzIG1hbmFnZWQgYnkgdGhlIERCIGNsdXN0ZXIuIFNldHRpbmcgdGhpcyB2YWx1ZSBmb3IgYW4gQXVyb3JhIERCIGluc3RhbmNlIGhhcyBubyBlZmZlY3Qgb24gdGhlIERCIGNsdXN0ZXIgc2V0dGluZy5cbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyNjb3B5VGFnc1RvU25hcHNob3RcbiAgICovXG4gIHJlYWRvbmx5IGNvcHlUYWdzVG9TbmFwc2hvdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZSBwcm9maWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgdW5kZXJseWluZyBBbWF6b24gRUMyIGluc3RhbmNlIG9mIGFuIFJEUyBDdXN0b20gREIgaW5zdGFuY2UuIFRoZSBpbnN0YW5jZSBwcm9maWxlIG11c3QgbWVldCB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50czpcbiAgICogKiBUaGUgcHJvZmlsZSBtdXN0IGV4aXN0IGluIHlvdXIgYWNjb3VudC5cbiAgICogKiBUaGUgcHJvZmlsZSBtdXN0IGhhdmUgYW4gSUFNIHJvbGUgdGhhdCBBbWF6b24gRUMyIGhhcyBwZXJtaXNzaW9ucyB0byAgICBhc3N1bWUuXG4gICAqICogVGhlIGluc3RhbmNlIHByb2ZpbGUgbmFtZSBhbmQgdGhlIGFzc29jaWF0ZWQgSUFNIHJvbGUgbmFtZSBtdXN0IHN0YXJ0ICAgIHdpdGggdGhlIHByZWZpeCBBV1NSRFNDdXN0b20uXG4gICAqIEZvciB0aGUgbGlzdCBvZiBwZXJtaXNzaW9ucyByZXF1aXJlZCBmb3IgdGhlIElBTSByb2xlLCBzZWUgQ29uZmlndXJlIElBTSBhbmQgeW91ciBWUEMgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9jdXN0b20tc2V0dXAtb3JjbC5odG1sI2N1c3RvbS1zZXR1cC1vcmNsLmlhbS12cGMpIGluIHRoZSBBbWF6b24gUmVsYXRpb25hbCBEYXRhYmFzZSBTZXJ2aWNlIFVzZXIgR3VpZGUuXG4gICAqIFRoaXMgc2V0dGluZyBpcyByZXF1aXJlZCBmb3IgUkRTIEN1c3RvbS5cbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyNjdXN0b21JQU1JbnN0YW5jZVByb2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbUlhbUluc3RhbmNlUHJvZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGlkZW50aWZpZXIgb2YgdGhlIERCIGNsdXN0ZXIgdGhhdCB0aGUgaW5zdGFuY2Ugd2lsbCBiZWxvbmcgdG8uXG4gICAqIFRoaXMgc2V0dGluZyBkb2Vzbid0IGFwcGx5IHRvIFJEUyBDdXN0b20uXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMjZGJDbHVzdGVySWRlbnRpZmllclxuICAgKi9cbiAgcmVhZG9ubHkgZGJDbHVzdGVySWRlbnRpZmllcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNvbXB1dGUgYW5kIG1lbW9yeSBjYXBhY2l0eSBvZiB0aGUgREIgaW5zdGFuY2UsIGZvciBleGFtcGxlLCBkYi5tNC5sYXJnZS4gTm90IGFsbCBEQiBpbnN0YW5jZSBjbGFzc2VzIGFyZSBhdmFpbGFibGUgaW4gYWxsIEFtYXpvbiBXZWIgU2VydmljZXMgUmVnaW9ucywgb3IgZm9yIGFsbCBkYXRhYmFzZSBlbmdpbmVzLiBGb3IgdGhlIGZ1bGwgbGlzdCBvZiBEQiBpbnN0YW5jZSBjbGFzc2VzLCBhbmQgYXZhaWxhYmlsaXR5IGZvciB5b3VyIGVuZ2luZSwgc2VlIERCIEluc3RhbmNlIENsYXNzIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvQ29uY2VwdHMuREJJbnN0YW5jZUNsYXNzLmh0bWwpIGluIHRoZSBBbWF6b24gUkRTIFVzZXIgR3VpZGUuXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMjZGJJbnN0YW5jZUNsYXNzXG4gICAqL1xuICByZWFkb25seSBkYkluc3RhbmNlQ2xhc3M6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIERCIGluc3RhbmNlIGlkZW50aWZpZXIuIFRoaXMgcGFyYW1ldGVyIGlzIHN0b3JlZCBhcyBhIGxvd2VyY2FzZSBzdHJpbmcuXG4gICAqIENvbnN0cmFpbnRzOlxuICAgKiAqIE11c3QgY29udGFpbiBmcm9tIDEgdG8gNjMgbGV0dGVycywgbnVtYmVycywgb3IgaHlwaGVucy5cbiAgICogKiBGaXJzdCBjaGFyYWN0ZXIgbXVzdCBiZSBhIGxldHRlci5cbiAgICogKiBDYW4ndCBlbmQgd2l0aCBhIGh5cGhlbiBvciBjb250YWluIHR3byBjb25zZWN1dGl2ZSBoeXBoZW5zLlxuICAgKiBFeGFtcGxlOiBteWRiaW5zdGFuY2VcbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyNkYkluc3RhbmNlSWRlbnRpZmllclxuICAgKi9cbiAgcmVhZG9ubHkgZGJJbnN0YW5jZUlkZW50aWZpZXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1lYW5pbmcgb2YgdGhpcyBwYXJhbWV0ZXIgZGlmZmVycyBhY2NvcmRpbmcgdG8gdGhlIGRhdGFiYXNlIGVuZ2luZSB5b3UgdXNlLlxuICAgKiBNeVNRTFxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgdG8gY3JlYXRlIHdoZW4gdGhlIERCIGluc3RhbmNlIGlzIGNyZWF0ZWQuIElmIHRoaXMgcGFyYW1ldGVyIGlzbid0IHNwZWNpZmllZCwgbm8gZGF0YWJhc2UgaXMgY3JlYXRlZCBpbiB0aGUgREIgaW5zdGFuY2UuXG4gICAqIENvbnN0cmFpbnRzOlxuICAgKiAqIE11c3QgY29udGFpbiAxIHRvIDY0IGxldHRlcnMgb3IgbnVtYmVycy5cbiAgICogKiBNdXN0IGJlZ2luIHdpdGggYSBsZXR0ZXIuIFN1YnNlcXVlbnQgY2hhcmFjdGVycyBjYW4gYmUgbGV0dGVycywgdW5kZXJzY29yZXMsICAgIG9yIGRpZ2l0cyAoMC05KS5cbiAgICogKiBDYW4ndCBiZSBhIHdvcmQgcmVzZXJ2ZWQgYnkgdGhlIHNwZWNpZmllZCBkYXRhYmFzZSBlbmdpbmVcbiAgICogTWFyaWFEQlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgdG8gY3JlYXRlIHdoZW4gdGhlIERCIGluc3RhbmNlIGlzIGNyZWF0ZWQuIElmIHRoaXMgcGFyYW1ldGVyIGlzbid0IHNwZWNpZmllZCwgbm8gZGF0YWJhc2UgaXMgY3JlYXRlZCBpbiB0aGUgREIgaW5zdGFuY2UuXG4gICAqIENvbnN0cmFpbnRzOlxuICAgKiAqIE11c3QgY29udGFpbiAxIHRvIDY0IGxldHRlcnMgb3IgbnVtYmVycy5cbiAgICogKiBNdXN0IGJlZ2luIHdpdGggYSBsZXR0ZXIuIFN1YnNlcXVlbnQgY2hhcmFjdGVycyBjYW4gYmUgbGV0dGVycywgdW5kZXJzY29yZXMsICAgIG9yIGRpZ2l0cyAoMC05KS5cbiAgICogKiBDYW4ndCBiZSBhIHdvcmQgcmVzZXJ2ZWQgYnkgdGhlIHNwZWNpZmllZCBkYXRhYmFzZSBlbmdpbmVcbiAgICogUG9zdGdyZVNRTFxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgdG8gY3JlYXRlIHdoZW4gdGhlIERCIGluc3RhbmNlIGlzIGNyZWF0ZWQuIElmIHRoaXMgcGFyYW1ldGVyIGlzbid0IHNwZWNpZmllZCwgYSBkYXRhYmFzZSBuYW1lZCBwb3N0Z3JlcyBpcyBjcmVhdGVkIGluIHRoZSBEQiBpbnN0YW5jZS5cbiAgICogQ29uc3RyYWludHM6XG4gICAqICogTXVzdCBjb250YWluIDEgdG8gNjMgbGV0dGVycywgbnVtYmVycywgb3IgdW5kZXJzY29yZXMuXG4gICAqICogTXVzdCBiZWdpbiB3aXRoIGEgbGV0dGVyLiBTdWJzZXF1ZW50IGNoYXJhY3RlcnMgY2FuIGJlIGxldHRlcnMsIHVuZGVyc2NvcmVzLCAgICBvciBkaWdpdHMgKDAtOSkuXG4gICAqICogQ2FuJ3QgYmUgYSB3b3JkIHJlc2VydmVkIGJ5IHRoZSBzcGVjaWZpZWQgZGF0YWJhc2UgZW5naW5lXG4gICAqIE9yYWNsZVxuICAgKiBUaGUgT3JhY2xlIFN5c3RlbSBJRCAoU0lEKSBvZiB0aGUgY3JlYXRlZCBEQiBpbnN0YW5jZS4gSWYgeW91IHNwZWNpZnkgbnVsbCwgdGhlIGRlZmF1bHQgdmFsdWUgT1JDTCBpcyB1c2VkLiBZb3UgY2FuJ3Qgc3BlY2lmeSB0aGUgc3RyaW5nIE5VTEwsIG9yIGFueSBvdGhlciByZXNlcnZlZCB3b3JkLCBmb3IgREJOYW1lLlxuICAgKiBEZWZhdWx0OiBPUkNMXG4gICAqIENvbnN0cmFpbnRzOlxuICAgKiAqIENhbid0IGJlIGxvbmdlciB0aGFuIDggY2hhcmFjdGVyc1xuICAgKiBBbWF6b24gUkRTIEN1c3RvbVxuICAgKiBUaGUgT3JhY2xlIFN5c3RlbSBJRCAoU0lEKSBvZiB0aGUgY3JlYXRlZCBSRFMgQ3VzdG9tIERCIGluc3RhbmNlLiBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBhIHZhbHVlLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBPUkNMLlxuICAgKiBEZWZhdWx0OiBPUkNMXG4gICAqIENvbnN0cmFpbnRzOlxuICAgKiAqIEl0IG11c3QgY29udGFpbiAxIHRvIDggYWxwaGFudW1lcmljIGNoYXJhY3RlcnMuXG4gICAqICogSXQgbXVzdCBjb250YWluIGEgbGV0dGVyLlxuICAgKiAqIEl0IGNhbid0IGJlIGEgd29yZCByZXNlcnZlZCBieSB0aGUgZGF0YWJhc2UgZW5naW5lLlxuICAgKiBTUUwgU2VydmVyXG4gICAqIE5vdCBhcHBsaWNhYmxlLiBNdXN0IGJlIG51bGwuXG4gICAqIEFtYXpvbiBBdXJvcmEgTXlTUUxcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIHRvIGNyZWF0ZSB3aGVuIHRoZSBwcmltYXJ5IERCIGluc3RhbmNlIG9mIHRoZSBBdXJvcmEgTXlTUUwgREIgY2x1c3RlciBpcyBjcmVhdGVkLiBJZiB0aGlzIHBhcmFtZXRlciBpc24ndCBzcGVjaWZpZWQgZm9yIGFuIEF1cm9yYSBNeVNRTCBEQiBjbHVzdGVyLCBubyBkYXRhYmFzZSBpcyBjcmVhdGVkIGluIHRoZSBEQiBjbHVzdGVyLlxuICAgKiBDb25zdHJhaW50czpcbiAgICogKiBJdCBtdXN0IGNvbnRhaW4gMSB0byA2NCBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy5cbiAgICogKiBJdCBjYW4ndCBiZSBhIHdvcmQgcmVzZXJ2ZWQgYnkgdGhlIGRhdGFiYXNlIGVuZ2luZS5cbiAgICogQW1hem9uIEF1cm9yYSBQb3N0Z3JlU1FMXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSB0byBjcmVhdGUgd2hlbiB0aGUgcHJpbWFyeSBEQiBpbnN0YW5jZSBvZiB0aGUgQXVyb3JhIFBvc3RncmVTUUwgREIgY2x1c3RlciBpcyBjcmVhdGVkLiBJZiB0aGlzIHBhcmFtZXRlciBpc24ndCBzcGVjaWZpZWQgZm9yIGFuIEF1cm9yYSBQb3N0Z3JlU1FMIERCIGNsdXN0ZXIsIGEgZGF0YWJhc2UgbmFtZWQgcG9zdGdyZXMgaXMgY3JlYXRlZCBpbiB0aGUgREIgY2x1c3Rlci5cbiAgICogQ29uc3RyYWludHM6XG4gICAqICogSXQgbXVzdCBjb250YWluIDEgdG8gNjMgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMuXG4gICAqICogSXQgbXVzdCBiZWdpbiB3aXRoIGEgbGV0dGVyIG9yIGFuIHVuZGVyc2NvcmUuIFN1YnNlcXVlbnQgY2hhcmFjdGVycyAgICBjYW4gYmUgbGV0dGVycywgdW5kZXJzY29yZXMsIG9yIGRpZ2l0cyAoMCB0byA5KS5cbiAgICogKiBJdCBjYW4ndCBiZSBhIHdvcmQgcmVzZXJ2ZWQgYnkgdGhlIGRhdGFiYXNlIGVuZ2luZS5cbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyNkYk5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGRiTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIERCIHBhcmFtZXRlciBncm91cCB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIERCIGluc3RhbmNlLiBJZiB5b3UgZG8gbm90IHNwZWNpZnkgYSB2YWx1ZSwgdGhlbiB0aGUgZGVmYXVsdCBEQiBwYXJhbWV0ZXIgZ3JvdXAgZm9yIHRoZSBzcGVjaWZpZWQgREIgZW5naW5lIGFuZCB2ZXJzaW9uIGlzIHVzZWQuXG4gICAqIFRoaXMgc2V0dGluZyBkb2Vzbid0IGFwcGx5IHRvIFJEUyBDdXN0b20uXG4gICAqIENvbnN0cmFpbnRzOlxuICAgKiAqIE11c3QgYmUgMSB0byAyNTUgbGV0dGVycywgbnVtYmVycywgb3IgaHlwaGVucy5cbiAgICogKiBGaXJzdCBjaGFyYWN0ZXIgbXVzdCBiZSBhIGxldHRlclxuICAgKiAqIENhbid0IGVuZCB3aXRoIGEgaHlwaGVuIG9yIGNvbnRhaW4gdHdvIGNvbnNlY3V0aXZlIGh5cGhlbnNcbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyNkYlBhcmFtZXRlckdyb3VwTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgZGJQYXJhbWV0ZXJHcm91cE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBEQiBzZWN1cml0eSBncm91cHMgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBEQiBpbnN0YW5jZS5cbiAgICogRGVmYXVsdDogVGhlIGRlZmF1bHQgREIgc2VjdXJpdHkgZ3JvdXAgZm9yIHRoZSBkYXRhYmFzZSBlbmdpbmUuXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMjZGJTZWN1cml0eUdyb3Vwc1xuICAgKi9cbiAgcmVhZG9ubHkgZGJTZWN1cml0eUdyb3Vwcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIERCIHN1Ym5ldCBncm91cCB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIERCIGluc3RhbmNlLlxuICAgKiBJZiB0aGVyZSBpcyBubyBEQiBzdWJuZXQgZ3JvdXAsIHRoZW4gaXQgaXMgYSBub24tVlBDIERCIGluc3RhbmNlLlxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjI2RiU3VibmV0R3JvdXBOYW1lXG4gICAqL1xuICByZWFkb25seSBkYlN1Ym5ldEdyb3VwTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBEQiBpbnN0YW5jZSBoYXMgZGVsZXRpb24gcHJvdGVjdGlvbiBlbmFibGVkLiBUaGUgZGF0YWJhc2UgY2FuJ3QgYmUgZGVsZXRlZCB3aGVuIGRlbGV0aW9uIHByb3RlY3Rpb24gaXMgZW5hYmxlZC4gQnkgZGVmYXVsdCwgZGVsZXRpb24gcHJvdGVjdGlvbiBpcyBkaXNhYmxlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBEZWxldGluZyBhIERCIEluc3RhbmNlIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvVVNFUl9EZWxldGVJbnN0YW5jZS5odG1sKS5cbiAgICogQW1hem9uIEF1cm9yYVxuICAgKiBOb3QgYXBwbGljYWJsZS4gWW91IGNhbiBlbmFibGUgb3IgZGlzYWJsZSBkZWxldGlvbiBwcm90ZWN0aW9uIGZvciB0aGUgREIgY2x1c3Rlci4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBDcmVhdGVEQkNsdXN0ZXIuIERCIGluc3RhbmNlcyBpbiBhIERCIGNsdXN0ZXIgY2FuIGJlIGRlbGV0ZWQgZXZlbiB3aGVuIGRlbGV0aW9uIHByb3RlY3Rpb24gaXMgZW5hYmxlZCBmb3IgdGhlIERCIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMjZGVsZXRpb25Qcm90ZWN0aW9uXG4gICAqL1xuICByZWFkb25seSBkZWxldGlvblByb3RlY3Rpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgQWN0aXZlIERpcmVjdG9yeSBkaXJlY3RvcnkgSUQgdG8gY3JlYXRlIHRoZSBEQiBpbnN0YW5jZSBpbi4gQ3VycmVudGx5LCBvbmx5IE15U1FMLCBNaWNyb3NvZnQgU1FMIFNlcnZlciwgT3JhY2xlLCBhbmQgUG9zdGdyZVNRTCBEQiBpbnN0YW5jZXMgY2FuIGJlIGNyZWF0ZWQgaW4gYW4gQWN0aXZlIERpcmVjdG9yeSBEb21haW4uXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgS2VyYmVyb3MgQXV0aGVudGljYXRpb24gKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9rZXJiZXJvcy1hdXRoZW50aWNhdGlvbi5odG1sKSBpbiB0aGUgQW1hem9uIFJEUyBVc2VyIEd1aWRlLlxuICAgKiBUaGlzIHNldHRpbmcgZG9lc24ndCBhcHBseSB0byBSRFMgQ3VzdG9tLlxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjI2RvbWFpblxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBJQU0gcm9sZSB0byBiZSB1c2VkIHdoZW4gbWFraW5nIEFQSSBjYWxscyB0byB0aGUgRGlyZWN0b3J5IFNlcnZpY2UuXG4gICAqIFRoaXMgc2V0dGluZyBkb2Vzbid0IGFwcGx5IHRvIFJEUyBDdXN0b20uXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMjZG9tYWluSUFNUm9sZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbklhbVJvbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBsb2cgdHlwZXMgdGhhdCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIGV4cG9ydGluZyB0byBDbG91ZFdhdGNoIExvZ3MuIFRoZSB2YWx1ZXMgaW4gdGhlIGxpc3QgZGVwZW5kIG9uIHRoZSBEQiBlbmdpbmUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgUHVibGlzaGluZyBEYXRhYmFzZSBMb2dzIHRvIEFtYXpvbiBDbG91ZFdhdGNoIExvZ3MgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9VU0VSX0xvZ0FjY2Vzcy5odG1sI1VTRVJfTG9nQWNjZXNzLlByb2NlZHVyYWwuVXBsb2FkdG9DbG91ZFdhdGNoKSBpbiB0aGUgQW1hem9uIFJlbGF0aW9uYWwgRGF0YWJhc2UgU2VydmljZSBVc2VyIEd1aWRlLlxuICAgKiBBbWF6b24gQXVyb3JhXG4gICAqIE5vdCBhcHBsaWNhYmxlLiBDbG91ZFdhdGNoIExvZ3MgZXhwb3J0cyBhcmUgbWFuYWdlZCBieSB0aGUgREIgY2x1c3Rlci5cbiAgICogUkRTIEN1c3RvbVxuICAgKiBOb3QgYXBwbGljYWJsZS5cbiAgICogTWFyaWFEQlxuICAgKiBQb3NzaWJsZSB2YWx1ZXMgYXJlIGF1ZGl0LCBlcnJvciwgZ2VuZXJhbCwgYW5kIHNsb3dxdWVyeS5cbiAgICogTWljcm9zb2Z0IFNRTCBTZXJ2ZXJcbiAgICogUG9zc2libGUgdmFsdWVzIGFyZSBhZ2VudCBhbmQgZXJyb3IuXG4gICAqIE15U1FMXG4gICAqIFBvc3NpYmxlIHZhbHVlcyBhcmUgYXVkaXQsIGVycm9yLCBnZW5lcmFsLCBhbmQgc2xvd3F1ZXJ5LlxuICAgKiBPcmFjbGVcbiAgICogUG9zc2libGUgdmFsdWVzIGFyZSBhbGVydCwgYXVkaXQsIGxpc3RlbmVyLCB0cmFjZSwgYW5kIG9lbWFnZW50LlxuICAgKiBQb3N0Z3JlU1FMXG4gICAqIFBvc3NpYmxlIHZhbHVlcyBhcmUgcG9zdGdyZXNxbCBhbmQgdXBncmFkZS5cbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyNlbmFibGVDbG91ZHdhdGNoTG9nc0V4cG9ydHNcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUNsb3Vkd2F0Y2hMb2dzRXhwb3J0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdG8gZW5hYmxlIGEgY3VzdG9tZXItb3duZWQgSVAgYWRkcmVzcyAoQ29JUCkgZm9yIGFuIFJEUyBvbiBPdXRwb3N0cyBEQiBpbnN0YW5jZS5cbiAgICogQSBDb0lQIHByb3ZpZGVzIGxvY2FsIG9yIGV4dGVybmFsIGNvbm5lY3Rpdml0eSB0byByZXNvdXJjZXMgaW4geW91ciBPdXRwb3N0IHN1Ym5ldHMgdGhyb3VnaCB5b3VyIG9uLXByZW1pc2VzIG5ldHdvcmsuIEZvciBzb21lIHVzZSBjYXNlcywgYSBDb0lQIGNhbiBwcm92aWRlIGxvd2VyIGxhdGVuY3kgZm9yIGNvbm5lY3Rpb25zIHRvIHRoZSBEQiBpbnN0YW5jZSBmcm9tIG91dHNpZGUgb2YgaXRzIHZpcnR1YWwgcHJpdmF0ZSBjbG91ZCAoVlBDKSBvbiB5b3VyIGxvY2FsIG5ldHdvcmsuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFJEUyBvbiBPdXRwb3N0cywgc2VlIFdvcmtpbmcgd2l0aCBBbWF6b24gUkRTIG9uIEFtYXpvbiBXZWIgU2VydmljZXMgT3V0cG9zdHMgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9yZHMtb24tb3V0cG9zdHMuaHRtbCkgaW4gdGhlIEFtYXpvbiBSRFMgVXNlciBHdWlkZS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ29JUHMsIHNlZSBDdXN0b21lci1vd25lZCBJUCBhZGRyZXNzZXMgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vdXRwb3N0cy9sYXRlc3QvdXNlcmd1aWRlL291dHBvc3RzLW5ldHdvcmtpbmctY29tcG9uZW50cy5odG1sI2lwLWFkZHJlc3NpbmcpIGluIHRoZSBBbWF6b24gV2ViIFNlcnZpY2VzIE91dHBvc3RzIFVzZXIgR3VpZGUuXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMjZW5hYmxlQ3VzdG9tZXJPd25lZElQXG4gICAqL1xuICByZWFkb25seSBlbmFibGVDdXN0b21lck93bmVkSXA/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdG8gZW5hYmxlIG1hcHBpbmcgb2YgQW1hem9uIFdlYiBTZXJ2aWNlcyBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSkgYWNjb3VudHMgdG8gZGF0YWJhc2UgYWNjb3VudHMuIEJ5IGRlZmF1bHQsIG1hcHBpbmcgaXMgZGlzYWJsZWQuXG4gICAqIFRoaXMgc2V0dGluZyBkb2Vzbid0IGFwcGx5IHRvIFJEUyBDdXN0b20gb3IgQW1hem9uIEF1cm9yYS4gSW4gQXVyb3JhLCBtYXBwaW5nIEFtYXpvbiBXZWIgU2VydmljZXMgSUFNIGFjY291bnRzIHRvIGRhdGFiYXNlIGFjY291bnRzIGlzIG1hbmFnZWQgYnkgdGhlIERCIGNsdXN0ZXIuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgSUFNIERhdGFiYXNlIEF1dGhlbnRpY2F0aW9uIGZvciBNeVNRTCBhbmQgUG9zdGdyZVNRTCAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL1VzaW5nV2l0aFJEUy5JQU1EQkF1dGguaHRtbCkgaW4gdGhlIEFtYXpvbiBSRFMgVXNlciBHdWlkZS5cbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyNlbmFibGVJQU1EYXRhYmFzZUF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICByZWFkb25seSBlbmFibGVJYW1EYXRhYmFzZUF1dGhlbnRpY2F0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGVuZ2luZSB0byBiZSB1c2VkIGZvciB0aGlzIGluc3RhbmNlLlxuICAgKiBOb3QgZXZlcnkgZGF0YWJhc2UgZW5naW5lIGlzIGF2YWlsYWJsZSBmb3IgZXZlcnkgQW1hem9uIFdlYiBTZXJ2aWNlcyBSZWdpb24uXG4gICAqIFZhbGlkIFZhbHVlczpcbiAgICogKiBhdXJvcmEgKGZvciBNeVNRTCA1LjYtY29tcGF0aWJsZSBBdXJvcmEpXG4gICAqICogYXVyb3JhLW15c3FsIChmb3IgTXlTUUwgNS43LWNvbXBhdGlibGUgQXVyb3JhKVxuICAgKiAqIGF1cm9yYS1wb3N0Z3Jlc3FsXG4gICAqICogY3VzdG9tLW9yYWNsZS1lZSAoZm9yIFJEUyBDdXN0b20gaW5zdGFuY2VzKVxuICAgKiAqIG1hcmlhZGJcbiAgICogKiBteXNxbFxuICAgKiAqIG9yYWNsZS1lZVxuICAgKiAqIG9yYWNsZS1lZS1jZGJcbiAgICogKiBvcmFjbGUtc2UyXG4gICAqICogb3JhY2xlLXNlMi1jZGJcbiAgICogKiBwb3N0Z3Jlc1xuICAgKiAqIHNxbHNlcnZlci1lZVxuICAgKiAqIHNxbHNlcnZlci1zZVxuICAgKiAqIHNxbHNlcnZlci1leFxuICAgKiAqIHNxbHNlcnZlci13ZWJcbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyNlbmdpbmVcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGRhdGFiYXNlIGVuZ2luZSB0byB1c2UuXG4gICAqIEZvciBhIGxpc3Qgb2YgdmFsaWQgZW5naW5lIHZlcnNpb25zLCB1c2UgdGhlIERlc2NyaWJlREJFbmdpbmVWZXJzaW9ucyBhY3Rpb24uXG4gICAqIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBkYXRhYmFzZSBlbmdpbmVzIGFuZCBsaW5rcyB0byBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb25zIHRoYXQgYXJlIGF2YWlsYWJsZSB3aXRoIEFtYXpvbiBSRFMuIE5vdCBldmVyeSBkYXRhYmFzZSBlbmdpbmUgaXMgYXZhaWxhYmxlIGZvciBldmVyeSBBbWF6b24gV2ViIFNlcnZpY2VzIFJlZ2lvbi5cbiAgICogQW1hem9uIEF1cm9yYVxuICAgKiBOb3QgYXBwbGljYWJsZS4gVGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBkYXRhYmFzZSBlbmdpbmUgdG8gYmUgdXNlZCBieSB0aGUgREIgaW5zdGFuY2UgaXMgbWFuYWdlZCBieSB0aGUgREIgY2x1c3Rlci5cbiAgICogQW1hem9uIFJEUyBDdXN0b21cbiAgICogQSBjdXN0b20gZW5naW5lIHZlcnNpb24gKENFVikgdGhhdCB5b3UgaGF2ZSBwcmV2aW91c2x5IGNyZWF0ZWQuIFRoaXMgc2V0dGluZyBpcyByZXF1aXJlZCBmb3IgUkRTIEN1c3RvbS4gVGhlIENFViBuYW1lIGhhcyB0aGUgZm9sbG93aW5nIGZvcm1hdDogMTkuY3VzdG9taXplZF9zdHJpbmcgLiBBbiBleGFtcGxlIGlkZW50aWZpZXIgaXMgMTkubXlfY2V2MS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBDcmVhdGluZyBhbiBSRFMgQ3VzdG9tIERCIGluc3RhbmNlIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvY3VzdG9tLWNyZWF0aW5nLmh0bWwjY3VzdG9tLWNyZWF0aW5nLmNyZWF0ZSkgaW4gdGhlIEFtYXpvbiBSRFMgVXNlciBHdWlkZS4uXG4gICAqIE1hcmlhREJcbiAgICogU2VlIE1hcmlhREIgb24gQW1hem9uIFJEUyBWZXJzaW9ucyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL0NIQVBfTWFyaWFEQi5odG1sI01hcmlhREIuQ29uY2VwdHMuVmVyc2lvbk1nbXQpIGluIHRoZSBBbWF6b24gUkRTIFVzZXIgR3VpZGUuXG4gICAqIE1pY3Jvc29mdCBTUUwgU2VydmVyXG4gICAqIFNlZSBNaWNyb3NvZnQgU1FMIFNlcnZlciBWZXJzaW9ucyBvbiBBbWF6b24gUkRTIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvQ0hBUF9TUUxTZXJ2ZXIuaHRtbCNTUUxTZXJ2ZXIuQ29uY2VwdHMuR2VuZXJhbC5WZXJzaW9uU3VwcG9ydCkgaW4gdGhlIEFtYXpvbiBSRFMgVXNlciBHdWlkZS5cbiAgICogTXlTUUxcbiAgICogU2VlIE15U1FMIG9uIEFtYXpvbiBSRFMgVmVyc2lvbnMgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9DSEFQX015U1FMLmh0bWwjTXlTUUwuQ29uY2VwdHMuVmVyc2lvbk1nbXQpIGluIHRoZSBBbWF6b24gUkRTIFVzZXIgR3VpZGUuXG4gICAqIE9yYWNsZVxuICAgKiBTZWUgT3JhY2xlIERhdGFiYXNlIEVuZ2luZSBSZWxlYXNlIE5vdGVzIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvQXBwZW5kaXguT3JhY2xlLlBhdGNoQ29tcG9zaXRpb24uaHRtbCkgaW4gdGhlIEFtYXpvbiBSRFMgVXNlciBHdWlkZS5cbiAgICogUG9zdGdyZVNRTFxuICAgKiBTZWUgQW1hem9uIFJEUyBmb3IgUG9zdGdyZVNRTCB2ZXJzaW9ucyBhbmQgZXh0ZW5zaW9ucyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL0NIQVBfUG9zdGdyZVNRTC5odG1sI1Bvc3RncmVTUUwuQ29uY2VwdHMpIGluIHRoZSBBbWF6b24gUkRTIFVzZXIgR3VpZGUuXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMjZW5naW5lVmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiBQcm92aXNpb25lZCBJT1BTIChpbnB1dC9vdXRwdXQgb3BlcmF0aW9ucyBwZXIgc2Vjb25kKSB0byBiZSBpbml0aWFsbHkgYWxsb2NhdGVkIGZvciB0aGUgREIgaW5zdGFuY2UuIEZvciBpbmZvcm1hdGlvbiBhYm91dCB2YWxpZCBJb3BzIHZhbHVlcywgc2VlIEFtYXpvbiBSRFMgUHJvdmlzaW9uZWQgSU9QUyBTdG9yYWdlIHRvIEltcHJvdmUgUGVyZm9ybWFuY2UgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9DSEFQX1N0b3JhZ2UuaHRtbCNVU0VSX1BJT1BTKSBpbiB0aGUgQW1hem9uIFJEUyBVc2VyIEd1aWRlLlxuICAgKiBDb25zdHJhaW50czogRm9yIE1hcmlhREIsIE15U1FMLCBPcmFjbGUsIGFuZCBQb3N0Z3JlU1FMIERCIGluc3RhbmNlcywgbXVzdCBiZSBhIG11bHRpcGxlIGJldHdlZW4gLjUgYW5kIDUwIG9mIHRoZSBzdG9yYWdlIGFtb3VudCBmb3IgdGhlIERCIGluc3RhbmNlLiBGb3IgU1FMIFNlcnZlciBEQiBpbnN0YW5jZXMsIG11c3QgYmUgYSBtdWx0aXBsZSBiZXR3ZWVuIDEgYW5kIDUwIG9mIHRoZSBzdG9yYWdlIGFtb3VudCBmb3IgdGhlIERCIGluc3RhbmNlLlxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjI2lvcHNcbiAgICovXG4gIHJlYWRvbmx5IGlvcHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gV2ViIFNlcnZpY2VzIEtNUyBrZXkgaWRlbnRpZmllciBmb3IgYW4gZW5jcnlwdGVkIERCIGluc3RhbmNlLlxuICAgKiBUaGUgQW1hem9uIFdlYiBTZXJ2aWNlcyBLTVMga2V5IGlkZW50aWZpZXIgaXMgdGhlIGtleSBBUk4sIGtleSBJRCwgYWxpYXMgQVJOLCBvciBhbGlhcyBuYW1lIGZvciB0aGUgS01TIGtleS4gVG8gdXNlIGEgS01TIGtleSBpbiBhIGRpZmZlcmVudCBBbWF6b24gV2ViIFNlcnZpY2VzIGFjY291bnQsIHNwZWNpZnkgdGhlIGtleSBBUk4gb3IgYWxpYXMgQVJOLlxuICAgKiBBbWF6b24gQXVyb3JhXG4gICAqIE5vdCBhcHBsaWNhYmxlLiBUaGUgQW1hem9uIFdlYiBTZXJ2aWNlcyBLTVMga2V5IGlkZW50aWZpZXIgaXMgbWFuYWdlZCBieSB0aGUgREIgY2x1c3Rlci4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBDcmVhdGVEQkNsdXN0ZXIuXG4gICAqIElmIFN0b3JhZ2VFbmNyeXB0ZWQgaXMgZW5hYmxlZCwgYW5kIHlvdSBkbyBub3Qgc3BlY2lmeSBhIHZhbHVlIGZvciB0aGUgS21zS2V5SWQgcGFyYW1ldGVyLCB0aGVuIEFtYXpvbiBSRFMgdXNlcyB5b3VyIGRlZmF1bHQgS01TIGtleS4gVGhlcmUgaXMgYSBkZWZhdWx0IEtNUyBrZXkgZm9yIHlvdXIgQW1hem9uIFdlYiBTZXJ2aWNlcyBhY2NvdW50LiBZb3VyIEFtYXpvbiBXZWIgU2VydmljZXMgYWNjb3VudCBoYXMgYSBkaWZmZXJlbnQgZGVmYXVsdCBLTVMga2V5IGZvciBlYWNoIEFtYXpvbiBXZWIgU2VydmljZXMgUmVnaW9uLlxuICAgKiBBbWF6b24gUkRTIEN1c3RvbVxuICAgKiBBIEtNUyBrZXkgaXMgcmVxdWlyZWQgZm9yIFJEUyBDdXN0b20gT3JhY2xlIGluc3RhbmNlcy4gRm9yIG1vc3QgUkRTIGVuZ2luZXMsIGlmIHlvdSBsZWF2ZSB0aGlzIHBhcmFtZXRlciBlbXB0eSB3aGlsZSBlbmFibGluZyBTdG9yYWdlRW5jcnlwdGVkLCB0aGUgZW5naW5lIHVzZXMgdGhlIGRlZmF1bHQgS01TIGtleS4gSG93ZXZlciwgUkRTIEN1c3RvbSBmb3IgT3JhY2xlIGRvZXNuJ3QgdXNlIHRoZSBkZWZhdWx0IGtleSB3aGVuIHRoaXMgcGFyYW1ldGVyIGlzIGVtcHR5LiBZb3UgbXVzdCBleHBsaWNpdGx5IHNwZWNpZnkgYSBrZXkuXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMja21zS2V5SURcbiAgICovXG4gIHJlYWRvbmx5IGttc0tleUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBV1NSZXNvdXJjZVJlZmVyZW5jZVdyYXBwZXIgcHJvdmlkZXMgYSB3cmFwcGVyIGFyb3VuZCAqQVdTUmVzb3VyY2VSZWZlcmVuY2UgdHlwZSB0byBwcm92aWRlIG1vcmUgdXNlciBmcmllbmRseSBzeW50YXggZm9yIHJlZmVyZW5jZXMgdXNpbmcgJ2Zyb20nIGZpZWxkIEV4OiBBUElJRFJlZjogICBmcm9tOiAgICAgbmFtZTogbXktYXBpXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMja21zS2V5UmVmXG4gICAqL1xuICByZWFkb25seSBrbXNLZXlSZWY/OiBEYkluc3RhbmNlU3BlY0ttc0tleVJlZjtcblxuICAvKipcbiAgICogTGljZW5zZSBtb2RlbCBpbmZvcm1hdGlvbiBmb3IgdGhpcyBEQiBpbnN0YW5jZS5cbiAgICogVmFsaWQgdmFsdWVzOiBsaWNlbnNlLWluY2x1ZGVkIHwgYnJpbmcteW91ci1vd24tbGljZW5zZSB8IGdlbmVyYWwtcHVibGljLWxpY2Vuc2VcbiAgICogVGhpcyBzZXR0aW5nIGRvZXNuJ3QgYXBwbHkgdG8gUkRTIEN1c3RvbS5cbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyNsaWNlbnNlTW9kZWxcbiAgICovXG4gIHJlYWRvbmx5IGxpY2Vuc2VNb2RlbD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhc3N3b3JkIGZvciB0aGUgbWFzdGVyIHVzZXIuIFRoZSBwYXNzd29yZCBjYW4gaW5jbHVkZSBhbnkgcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgXCIvXCIsIFwiXCJcIiwgb3IgXCJAXCIuXG4gICAqIEFtYXpvbiBBdXJvcmFcbiAgICogTm90IGFwcGxpY2FibGUuIFRoZSBwYXNzd29yZCBmb3IgdGhlIG1hc3RlciB1c2VyIGlzIG1hbmFnZWQgYnkgdGhlIERCIGNsdXN0ZXIuXG4gICAqIE1hcmlhREJcbiAgICogQ29uc3RyYWludHM6IE11c3QgY29udGFpbiBmcm9tIDggdG8gNDEgY2hhcmFjdGVycy5cbiAgICogTWljcm9zb2Z0IFNRTCBTZXJ2ZXJcbiAgICogQ29uc3RyYWludHM6IE11c3QgY29udGFpbiBmcm9tIDggdG8gMTI4IGNoYXJhY3RlcnMuXG4gICAqIE15U1FMXG4gICAqIENvbnN0cmFpbnRzOiBNdXN0IGNvbnRhaW4gZnJvbSA4IHRvIDQxIGNoYXJhY3RlcnMuXG4gICAqIE9yYWNsZVxuICAgKiBDb25zdHJhaW50czogTXVzdCBjb250YWluIGZyb20gOCB0byAzMCBjaGFyYWN0ZXJzLlxuICAgKiBQb3N0Z3JlU1FMXG4gICAqIENvbnN0cmFpbnRzOiBNdXN0IGNvbnRhaW4gZnJvbSA4IHRvIDEyOCBjaGFyYWN0ZXJzLlxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjI21hc3RlclVzZXJQYXNzd29yZFxuICAgKi9cbiAgcmVhZG9ubHkgbWFzdGVyVXNlclBhc3N3b3JkPzogRGJJbnN0YW5jZVNwZWNNYXN0ZXJVc2VyUGFzc3dvcmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIGZvciB0aGUgbWFzdGVyIHVzZXIuXG4gICAqIEFtYXpvbiBBdXJvcmFcbiAgICogTm90IGFwcGxpY2FibGUuIFRoZSBuYW1lIGZvciB0aGUgbWFzdGVyIHVzZXIgaXMgbWFuYWdlZCBieSB0aGUgREIgY2x1c3Rlci5cbiAgICogTWFyaWFEQlxuICAgKiBDb25zdHJhaW50czpcbiAgICogKiBSZXF1aXJlZCBmb3IgTWFyaWFEQi5cbiAgICogKiBNdXN0IGJlIDEgdG8gMTYgbGV0dGVycyBvciBudW1iZXJzLlxuICAgKiAqIENhbid0IGJlIGEgcmVzZXJ2ZWQgd29yZCBmb3IgdGhlIGNob3NlbiBkYXRhYmFzZSBlbmdpbmUuXG4gICAqIE1pY3Jvc29mdCBTUUwgU2VydmVyXG4gICAqIENvbnN0cmFpbnRzOlxuICAgKiAqIFJlcXVpcmVkIGZvciBTUUwgU2VydmVyLlxuICAgKiAqIE11c3QgYmUgMSB0byAxMjggbGV0dGVycyBvciBudW1iZXJzLlxuICAgKiAqIFRoZSBmaXJzdCBjaGFyYWN0ZXIgbXVzdCBiZSBhIGxldHRlci5cbiAgICogKiBDYW4ndCBiZSBhIHJlc2VydmVkIHdvcmQgZm9yIHRoZSBjaG9zZW4gZGF0YWJhc2UgZW5naW5lLlxuICAgKiBNeVNRTFxuICAgKiBDb25zdHJhaW50czpcbiAgICogKiBSZXF1aXJlZCBmb3IgTXlTUUwuXG4gICAqICogTXVzdCBiZSAxIHRvIDE2IGxldHRlcnMgb3IgbnVtYmVycy5cbiAgICogKiBGaXJzdCBjaGFyYWN0ZXIgbXVzdCBiZSBhIGxldHRlci5cbiAgICogKiBDYW4ndCBiZSBhIHJlc2VydmVkIHdvcmQgZm9yIHRoZSBjaG9zZW4gZGF0YWJhc2UgZW5naW5lLlxuICAgKiBPcmFjbGVcbiAgICogQ29uc3RyYWludHM6XG4gICAqICogUmVxdWlyZWQgZm9yIE9yYWNsZS5cbiAgICogKiBNdXN0IGJlIDEgdG8gMzAgbGV0dGVycyBvciBudW1iZXJzLlxuICAgKiAqIEZpcnN0IGNoYXJhY3RlciBtdXN0IGJlIGEgbGV0dGVyLlxuICAgKiAqIENhbid0IGJlIGEgcmVzZXJ2ZWQgd29yZCBmb3IgdGhlIGNob3NlbiBkYXRhYmFzZSBlbmdpbmUuXG4gICAqIFBvc3RncmVTUUxcbiAgICogQ29uc3RyYWludHM6XG4gICAqICogUmVxdWlyZWQgZm9yIFBvc3RncmVTUUwuXG4gICAqICogTXVzdCBiZSAxIHRvIDYzIGxldHRlcnMgb3IgbnVtYmVycy5cbiAgICogKiBGaXJzdCBjaGFyYWN0ZXIgbXVzdCBiZSBhIGxldHRlci5cbiAgICogKiBDYW4ndCBiZSBhIHJlc2VydmVkIHdvcmQgZm9yIHRoZSBjaG9zZW4gZGF0YWJhc2UgZW5naW5lLlxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjI21hc3RlclVzZXJuYW1lXG4gICAqL1xuICByZWFkb25seSBtYXN0ZXJVc2VybmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHVwcGVyIGxpbWl0IGluIGdpYmlieXRlcyAoR2lCKSB0byB3aGljaCBBbWF6b24gUkRTIGNhbiBhdXRvbWF0aWNhbGx5IHNjYWxlIHRoZSBzdG9yYWdlIG9mIHRoZSBEQiBpbnN0YW5jZS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBzZXR0aW5nLCBpbmNsdWRpbmcgbGltaXRhdGlvbnMgdGhhdCBhcHBseSB0byBpdCwgc2VlIE1hbmFnaW5nIGNhcGFjaXR5IGF1dG9tYXRpY2FsbHkgd2l0aCBBbWF6b24gUkRTIHN0b3JhZ2UgYXV0b3NjYWxpbmcgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9VU0VSX1BJT1BTLlN0b3JhZ2VUeXBlcy5odG1sI1VTRVJfUElPUFMuQXV0b3NjYWxpbmcpIGluIHRoZSBBbWF6b24gUkRTIFVzZXIgR3VpZGUuXG4gICAqIFRoaXMgc2V0dGluZyBkb2Vzbid0IGFwcGx5IHRvIFJEUyBDdXN0b20uXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMjbWF4QWxsb2NhdGVkU3RvcmFnZVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4QWxsb2NhdGVkU3RvcmFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGludGVydmFsLCBpbiBzZWNvbmRzLCBiZXR3ZWVuIHBvaW50cyB3aGVuIEVuaGFuY2VkIE1vbml0b3JpbmcgbWV0cmljcyBhcmUgY29sbGVjdGVkIGZvciB0aGUgREIgaW5zdGFuY2UuIFRvIGRpc2FibGUgY29sbGVjdGlvbiBvZiBFbmhhbmNlZCBNb25pdG9yaW5nIG1ldHJpY3MsIHNwZWNpZnkgMC4gVGhlIGRlZmF1bHQgaXMgMC5cbiAgICogSWYgTW9uaXRvcmluZ1JvbGVBcm4gaXMgc3BlY2lmaWVkLCB0aGVuIHlvdSBtdXN0IHNldCBNb25pdG9yaW5nSW50ZXJ2YWwgdG8gYSB2YWx1ZSBvdGhlciB0aGFuIDAuXG4gICAqIFRoaXMgc2V0dGluZyBkb2Vzbid0IGFwcGx5IHRvIFJEUyBDdXN0b20uXG4gICAqIFZhbGlkIFZhbHVlczogMCwgMSwgNSwgMTAsIDE1LCAzMCwgNjBcbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyNtb25pdG9yaW5nSW50ZXJ2YWxcbiAgICovXG4gIHJlYWRvbmx5IG1vbml0b3JpbmdJbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIEFSTiBmb3IgdGhlIElBTSByb2xlIHRoYXQgcGVybWl0cyBSRFMgdG8gc2VuZCBlbmhhbmNlZCBtb25pdG9yaW5nIG1ldHJpY3MgdG8gQW1hem9uIENsb3VkV2F0Y2ggTG9ncy4gRm9yIGV4YW1wbGUsIGFybjphd3M6aWFtOjEyMzQ1Njc4OTAxMjpyb2xlL2VtYWNjZXNzLiBGb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgYSBtb25pdG9yaW5nIHJvbGUsIHNlZSBTZXR0aW5nIFVwIGFuZCBFbmFibGluZyBFbmhhbmNlZCBNb25pdG9yaW5nIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvVVNFUl9Nb25pdG9yaW5nLk9TLmh0bWwjVVNFUl9Nb25pdG9yaW5nLk9TLkVuYWJsaW5nKSBpbiB0aGUgQW1hem9uIFJEUyBVc2VyIEd1aWRlLlxuICAgKiBJZiBNb25pdG9yaW5nSW50ZXJ2YWwgaXMgc2V0IHRvIGEgdmFsdWUgb3RoZXIgdGhhbiAwLCB0aGVuIHlvdSBtdXN0IHN1cHBseSBhIE1vbml0b3JpbmdSb2xlQXJuIHZhbHVlLlxuICAgKiBUaGlzIHNldHRpbmcgZG9lc24ndCBhcHBseSB0byBSRFMgQ3VzdG9tLlxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjI21vbml0b3JpbmdSb2xlQVJOXG4gICAqL1xuICByZWFkb25seSBtb25pdG9yaW5nUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogQSB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBEQiBpbnN0YW5jZSBpcyBhIE11bHRpLUFaIGRlcGxveW1lbnQuIFlvdSBjYW4ndCBzZXQgdGhlIEF2YWlsYWJpbGl0eVpvbmUgcGFyYW1ldGVyIGlmIHRoZSBEQiBpbnN0YW5jZSBpcyBhIE11bHRpLUFaIGRlcGxveW1lbnQuXG4gICAqIFRoaXMgc2V0dGluZyBkb2Vzbid0IGFwcGx5IHRvIFJEUyBDdXN0b20uXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMjbXVsdGlBWlxuICAgKi9cbiAgcmVhZG9ubHkgbXVsdGlBej86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBOQ0hBUiBjaGFyYWN0ZXIgc2V0IGZvciB0aGUgT3JhY2xlIERCIGluc3RhbmNlLlxuICAgKiBUaGlzIHBhcmFtZXRlciBkb2Vzbid0IGFwcGx5IHRvIFJEUyBDdXN0b20uXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMjbmNoYXJDaGFyYWN0ZXJTZXROYW1lXG4gICAqL1xuICByZWFkb25seSBuY2hhckNoYXJhY3RlclNldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgdGhhdCB0aGUgREIgaW5zdGFuY2Ugc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIG9wdGlvbiBncm91cC5cbiAgICogUGVybWFuZW50IG9wdGlvbnMsIHN1Y2ggYXMgdGhlIFRERSBvcHRpb24gZm9yIE9yYWNsZSBBZHZhbmNlZCBTZWN1cml0eSBUREUsIGNhbid0IGJlIHJlbW92ZWQgZnJvbSBhbiBvcHRpb24gZ3JvdXAuIEFsc28sIHRoYXQgb3B0aW9uIGdyb3VwIGNhbid0IGJlIHJlbW92ZWQgZnJvbSBhIERCIGluc3RhbmNlIGFmdGVyIGl0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIERCIGluc3RhbmNlLlxuICAgKiBUaGlzIHNldHRpbmcgZG9lc24ndCBhcHBseSB0byBSRFMgQ3VzdG9tLlxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjI29wdGlvbkdyb3VwTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgb3B0aW9uR3JvdXBOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdG8gZW5hYmxlIFBlcmZvcm1hbmNlIEluc2lnaHRzIGZvciB0aGUgREIgaW5zdGFuY2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgVXNpbmcgQW1hem9uIFBlcmZvcm1hbmNlIEluc2lnaHRzIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvVVNFUl9QZXJmSW5zaWdodHMuaHRtbCkgaW4gdGhlIEFtYXpvbiBSZWxhdGlvbmFsIERhdGFiYXNlIFNlcnZpY2UgVXNlciBHdWlkZS5cbiAgICogVGhpcyBzZXR0aW5nIGRvZXNuJ3QgYXBwbHkgdG8gUkRTIEN1c3RvbS5cbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyNwZXJmb3JtYW5jZUluc2lnaHRzRW5hYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgcGVyZm9ybWFuY2VJbnNpZ2h0c0VuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFdlYiBTZXJ2aWNlcyBLTVMga2V5IGlkZW50aWZpZXIgZm9yIGVuY3J5cHRpb24gb2YgUGVyZm9ybWFuY2UgSW5zaWdodHMgZGF0YS5cbiAgICogVGhlIEFtYXpvbiBXZWIgU2VydmljZXMgS01TIGtleSBpZGVudGlmaWVyIGlzIHRoZSBrZXkgQVJOLCBrZXkgSUQsIGFsaWFzIEFSTiwgb3IgYWxpYXMgbmFtZSBmb3IgdGhlIEtNUyBrZXkuXG4gICAqIElmIHlvdSBkbyBub3Qgc3BlY2lmeSBhIHZhbHVlIGZvciBQZXJmb3JtYW5jZUluc2lnaHRzS01TS2V5SWQsIHRoZW4gQW1hem9uIFJEUyB1c2VzIHlvdXIgZGVmYXVsdCBLTVMga2V5LiBUaGVyZSBpcyBhIGRlZmF1bHQgS01TIGtleSBmb3IgeW91ciBBbWF6b24gV2ViIFNlcnZpY2VzIGFjY291bnQuIFlvdXIgQW1hem9uIFdlYiBTZXJ2aWNlcyBhY2NvdW50IGhhcyBhIGRpZmZlcmVudCBkZWZhdWx0IEtNUyBrZXkgZm9yIGVhY2ggQW1hem9uIFdlYiBTZXJ2aWNlcyBSZWdpb24uXG4gICAqIFRoaXMgc2V0dGluZyBkb2Vzbid0IGFwcGx5IHRvIFJEUyBDdXN0b20uXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMjcGVyZm9ybWFuY2VJbnNpZ2h0c0tNU0tleUlEXG4gICAqL1xuICByZWFkb25seSBwZXJmb3JtYW5jZUluc2lnaHRzS21zS2V5SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgdGltZSwgaW4gZGF5cywgdG8gcmV0YWluIFBlcmZvcm1hbmNlIEluc2lnaHRzIGRhdGEuIFZhbGlkIHZhbHVlcyBhcmUgNyBvciA3MzEgKDIgeWVhcnMpLlxuICAgKiBUaGlzIHNldHRpbmcgZG9lc24ndCBhcHBseSB0byBSRFMgQ3VzdG9tLlxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjI3BlcmZvcm1hbmNlSW5zaWdodHNSZXRlbnRpb25QZXJpb2RcbiAgICovXG4gIHJlYWRvbmx5IHBlcmZvcm1hbmNlSW5zaWdodHNSZXRlbnRpb25QZXJpb2Q/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBwb3J0IG51bWJlciBvbiB3aGljaCB0aGUgZGF0YWJhc2UgYWNjZXB0cyBjb25uZWN0aW9ucy5cbiAgICogTXlTUUxcbiAgICogRGVmYXVsdDogMzMwNlxuICAgKiBWYWxpZCB2YWx1ZXM6IDExNTAtNjU1MzVcbiAgICogVHlwZTogSW50ZWdlclxuICAgKiBNYXJpYURCXG4gICAqIERlZmF1bHQ6IDMzMDZcbiAgICogVmFsaWQgdmFsdWVzOiAxMTUwLTY1NTM1XG4gICAqIFR5cGU6IEludGVnZXJcbiAgICogUG9zdGdyZVNRTFxuICAgKiBEZWZhdWx0OiA1NDMyXG4gICAqIFZhbGlkIHZhbHVlczogMTE1MC02NTUzNVxuICAgKiBUeXBlOiBJbnRlZ2VyXG4gICAqIE9yYWNsZVxuICAgKiBEZWZhdWx0OiAxNTIxXG4gICAqIFZhbGlkIHZhbHVlczogMTE1MC02NTUzNVxuICAgKiBTUUwgU2VydmVyXG4gICAqIERlZmF1bHQ6IDE0MzNcbiAgICogVmFsaWQgdmFsdWVzOiAxMTUwLTY1NTM1IGV4Y2VwdCAxMjM0LCAxNDM0LCAzMjYwLCAzMzQzLCAzMzg5LCA0NzAwMSwgYW5kIDQ5MTUyLTQ5MTU2LlxuICAgKiBBbWF6b24gQXVyb3JhXG4gICAqIERlZmF1bHQ6IDMzMDZcbiAgICogVmFsaWQgdmFsdWVzOiAxMTUwLTY1NTM1XG4gICAqIFR5cGU6IEludGVnZXJcbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyNwb3J0XG4gICAqL1xuICByZWFkb25seSBwb3J0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZGFpbHkgdGltZSByYW5nZSBkdXJpbmcgd2hpY2ggYXV0b21hdGVkIGJhY2t1cHMgYXJlIGNyZWF0ZWQgaWYgYXV0b21hdGVkIGJhY2t1cHMgYXJlIGVuYWJsZWQsIHVzaW5nIHRoZSBCYWNrdXBSZXRlbnRpb25QZXJpb2QgcGFyYW1ldGVyLiBUaGUgZGVmYXVsdCBpcyBhIDMwLW1pbnV0ZSB3aW5kb3cgc2VsZWN0ZWQgYXQgcmFuZG9tIGZyb20gYW4gOC1ob3VyIGJsb2NrIG9mIHRpbWUgZm9yIGVhY2ggQW1hem9uIFdlYiBTZXJ2aWNlcyBSZWdpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgQmFja3VwIHdpbmRvdyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL1VTRVJfV29ya2luZ1dpdGhBdXRvbWF0ZWRCYWNrdXBzLmh0bWwjVVNFUl9Xb3JraW5nV2l0aEF1dG9tYXRlZEJhY2t1cHMuQmFja3VwV2luZG93KSBpbiB0aGUgQW1hem9uIFJEUyBVc2VyIEd1aWRlLlxuICAgKiBBbWF6b24gQXVyb3JhXG4gICAqIE5vdCBhcHBsaWNhYmxlLiBUaGUgZGFpbHkgdGltZSByYW5nZSBmb3IgY3JlYXRpbmcgYXV0b21hdGVkIGJhY2t1cHMgaXMgbWFuYWdlZCBieSB0aGUgREIgY2x1c3Rlci5cbiAgICogQ29uc3RyYWludHM6XG4gICAqICogTXVzdCBiZSBpbiB0aGUgZm9ybWF0IGhoMjQ6bWktaGgyNDptaS5cbiAgICogKiBNdXN0IGJlIGluIFVuaXZlcnNhbCBDb29yZGluYXRlZCBUaW1lIChVVEMpLlxuICAgKiAqIE11c3Qgbm90IGNvbmZsaWN0IHdpdGggdGhlIHByZWZlcnJlZCBtYWludGVuYW5jZSB3aW5kb3cuXG4gICAqICogTXVzdCBiZSBhdCBsZWFzdCAzMCBtaW51dGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjI3ByZWZlcnJlZEJhY2t1cFdpbmRvd1xuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVycmVkQmFja3VwV2luZG93Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSByYW5nZSBlYWNoIHdlZWsgZHVyaW5nIHdoaWNoIHN5c3RlbSBtYWludGVuYW5jZSBjYW4gb2NjdXIsIGluIFVuaXZlcnNhbCBDb29yZGluYXRlZCBUaW1lIChVVEMpLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIEFtYXpvbiBSRFMgTWFpbnRlbmFuY2UgV2luZG93IChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvVVNFUl9VcGdyYWRlREJJbnN0YW5jZS5NYWludGVuYW5jZS5odG1sI0NvbmNlcHRzLkRCTWFpbnRlbmFuY2UpLlxuICAgKiBGb3JtYXQ6IGRkZDpoaDI0Om1pLWRkZDpoaDI0Om1pXG4gICAqIFRoZSBkZWZhdWx0IGlzIGEgMzAtbWludXRlIHdpbmRvdyBzZWxlY3RlZCBhdCByYW5kb20gZnJvbSBhbiA4LWhvdXIgYmxvY2sgb2YgdGltZSBmb3IgZWFjaCBBbWF6b24gV2ViIFNlcnZpY2VzIFJlZ2lvbiwgb2NjdXJyaW5nIG9uIGEgcmFuZG9tIGRheSBvZiB0aGUgd2Vlay5cbiAgICogVmFsaWQgRGF5czogTW9uLCBUdWUsIFdlZCwgVGh1LCBGcmksIFNhdCwgU3VuLlxuICAgKiBDb25zdHJhaW50czogTWluaW11bSAzMC1taW51dGUgd2luZG93LlxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjI3ByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93XG4gICAqL1xuICByZWFkb25seSBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBDUFUgY29yZXMgYW5kIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBwZXIgY29yZSBmb3IgdGhlIERCIGluc3RhbmNlIGNsYXNzIG9mIHRoZSBEQiBpbnN0YW5jZS5cbiAgICogVGhpcyBzZXR0aW5nIGRvZXNuJ3QgYXBwbHkgdG8gUkRTIEN1c3RvbS5cbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyNwcm9jZXNzb3JGZWF0dXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJvY2Vzc29yRmVhdHVyZXM/OiBEYkluc3RhbmNlU3BlY1Byb2Nlc3NvckZlYXR1cmVzW107XG5cbiAgLyoqXG4gICAqIEEgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIG9yZGVyIGluIHdoaWNoIGFuIEF1cm9yYSBSZXBsaWNhIGlzIHByb21vdGVkIHRvIHRoZSBwcmltYXJ5IGluc3RhbmNlIGFmdGVyIGEgZmFpbHVyZSBvZiB0aGUgZXhpc3RpbmcgcHJpbWFyeSBpbnN0YW5jZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBGYXVsdCBUb2xlcmFuY2UgZm9yIGFuIEF1cm9yYSBEQiBDbHVzdGVyIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvQXVyb3JhLk1hbmFnaW5nLkJhY2t1cHMuaHRtbCNBdXJvcmEuTWFuYWdpbmcuRmF1bHRUb2xlcmFuY2UpIGluIHRoZSBBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUuXG4gICAqIFRoaXMgc2V0dGluZyBkb2Vzbid0IGFwcGx5IHRvIFJEUyBDdXN0b20uXG4gICAqIERlZmF1bHQ6IDFcbiAgICogVmFsaWQgVmFsdWVzOiAwIC0gMTVcbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyNwcm9tb3Rpb25UaWVyXG4gICAqL1xuICByZWFkb25seSBwcm9tb3Rpb25UaWVyPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIERCIGluc3RhbmNlIGlzIHB1YmxpY2x5IGFjY2Vzc2libGUuXG4gICAqIFdoZW4gdGhlIERCIGluc3RhbmNlIGlzIHB1YmxpY2x5IGFjY2Vzc2libGUsIGl0cyBETlMgZW5kcG9pbnQgcmVzb2x2ZXMgdG8gdGhlIHByaXZhdGUgSVAgYWRkcmVzcyBmcm9tIHdpdGhpbiB0aGUgREIgaW5zdGFuY2UncyBWUEMsIGFuZCB0byB0aGUgcHVibGljIElQIGFkZHJlc3MgZnJvbSBvdXRzaWRlIG9mIHRoZSBEQiBpbnN0YW5jZSdzIFZQQy4gQWNjZXNzIHRvIHRoZSBEQiBpbnN0YW5jZSBpcyB1bHRpbWF0ZWx5IGNvbnRyb2xsZWQgYnkgdGhlIHNlY3VyaXR5IGdyb3VwIGl0IHVzZXMsIGFuZCB0aGF0IHB1YmxpYyBhY2Nlc3MgaXMgbm90IHBlcm1pdHRlZCBpZiB0aGUgc2VjdXJpdHkgZ3JvdXAgYXNzaWduZWQgdG8gdGhlIERCIGluc3RhbmNlIGRvZXNuJ3QgcGVybWl0IGl0LlxuICAgKiBXaGVuIHRoZSBEQiBpbnN0YW5jZSBpc24ndCBwdWJsaWNseSBhY2Nlc3NpYmxlLCBpdCBpcyBhbiBpbnRlcm5hbCBEQiBpbnN0YW5jZSB3aXRoIGEgRE5TIG5hbWUgdGhhdCByZXNvbHZlcyB0byBhIHByaXZhdGUgSVAgYWRkcmVzcy5cbiAgICogRGVmYXVsdDogVGhlIGRlZmF1bHQgYmVoYXZpb3IgdmFyaWVzIGRlcGVuZGluZyBvbiB3aGV0aGVyIERCU3VibmV0R3JvdXBOYW1lIGlzIHNwZWNpZmllZC5cbiAgICogSWYgREJTdWJuZXRHcm91cE5hbWUgaXNuJ3Qgc3BlY2lmaWVkLCBhbmQgUHVibGljbHlBY2Nlc3NpYmxlIGlzbid0IHNwZWNpZmllZCwgdGhlIGZvbGxvd2luZyBhcHBsaWVzOlxuICAgKiAqIElmIHRoZSBkZWZhdWx0IFZQQyBpbiB0aGUgdGFyZ2V0IHJlZ2lvbiBkb2VzbuKAmXQgaGF2ZSBhbiBJbnRlcm5ldCBnYXRld2F5ICAgIGF0dGFjaGVkIHRvIGl0LCB0aGUgREIgaW5zdGFuY2UgaXMgcHJpdmF0ZS5cbiAgICogKiBJZiB0aGUgZGVmYXVsdCBWUEMgaW4gdGhlIHRhcmdldCByZWdpb24gaGFzIGFuIEludGVybmV0IGdhdGV3YXkgYXR0YWNoZWQgICAgdG8gaXQsIHRoZSBEQiBpbnN0YW5jZSBpcyBwdWJsaWMuXG4gICAqIElmIERCU3VibmV0R3JvdXBOYW1lIGlzIHNwZWNpZmllZCwgYW5kIFB1YmxpY2x5QWNjZXNzaWJsZSBpc24ndCBzcGVjaWZpZWQsIHRoZSBmb2xsb3dpbmcgYXBwbGllczpcbiAgICogKiBJZiB0aGUgc3VibmV0cyBhcmUgcGFydCBvZiBhIFZQQyB0aGF0IGRvZXNu4oCZdCBoYXZlIGFuIEludGVybmV0IGdhdGV3YXkgICAgYXR0YWNoZWQgdG8gaXQsIHRoZSBEQiBpbnN0YW5jZSBpcyBwcml2YXRlLlxuICAgKiAqIElmIHRoZSBzdWJuZXRzIGFyZSBwYXJ0IG9mIGEgVlBDIHRoYXQgaGFzIGFuIEludGVybmV0IGdhdGV3YXkgYXR0YWNoZWQgICAgdG8gaXQsIHRoZSBEQiBpbnN0YW5jZSBpcyBwdWJsaWMuXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMjcHVibGljbHlBY2Nlc3NpYmxlXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNseUFjY2Vzc2libGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIERCIGluc3RhbmNlIGlzIGVuY3J5cHRlZC4gQnkgZGVmYXVsdCwgaXQgaXNuJ3QgZW5jcnlwdGVkLlxuICAgKiBGb3IgUkRTIEN1c3RvbSBPcmFjbGUgaW5zdGFuY2VzLCBlaXRoZXIgc2V0IHRoaXMgcGFyYW1ldGVyIHRvIHRydWUgb3IgbGVhdmUgaXQgdW5zZXQuIElmIHlvdSBzZXQgdGhpcyBwYXJhbWV0ZXIgdG8gZmFsc2UsIFJEUyByZXBvcnRzIGFuIGVycm9yLlxuICAgKiBBbWF6b24gQXVyb3JhXG4gICAqIE5vdCBhcHBsaWNhYmxlLiBUaGUgZW5jcnlwdGlvbiBmb3IgREIgaW5zdGFuY2VzIGlzIG1hbmFnZWQgYnkgdGhlIERCIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMjc3RvcmFnZUVuY3J5cHRlZFxuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZUVuY3J5cHRlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgc3RvcmFnZSB0eXBlIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgREIgaW5zdGFuY2UuXG4gICAqIFZhbGlkIHZhbHVlczogc3RhbmRhcmQgfCBncDIgfCBpbzFcbiAgICogSWYgeW91IHNwZWNpZnkgaW8xLCB5b3UgbXVzdCBhbHNvIGluY2x1ZGUgYSB2YWx1ZSBmb3IgdGhlIElvcHMgcGFyYW1ldGVyLlxuICAgKiBEZWZhdWx0OiBpbzEgaWYgdGhlIElvcHMgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCwgb3RoZXJ3aXNlIGdwMlxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjI3N0b3JhZ2VUeXBlXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlVHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGFncyB0byBhc3NpZ24gdG8gdGhlIERCIGluc3RhbmNlLlxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjI3RhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiBEYkluc3RhbmNlU3BlY1RhZ3NbXTtcblxuICAvKipcbiAgICogVGhlIEFSTiBmcm9tIHRoZSBrZXkgc3RvcmUgd2l0aCB3aGljaCB0byBhc3NvY2lhdGUgdGhlIGluc3RhbmNlIGZvciBUREUgZW5jcnlwdGlvbi5cbiAgICogVGhpcyBzZXR0aW5nIGRvZXNuJ3QgYXBwbHkgdG8gUkRTIEN1c3RvbS5cbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyN0ZGVDcmVkZW50aWFsQVJOXG4gICAqL1xuICByZWFkb25seSB0ZGVDcmVkZW50aWFsQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFzc3dvcmQgZm9yIHRoZSBnaXZlbiBBUk4gZnJvbSB0aGUga2V5IHN0b3JlIGluIG9yZGVyIHRvIGFjY2VzcyB0aGUgZGV2aWNlLlxuICAgKiBUaGlzIHNldHRpbmcgZG9lc24ndCBhcHBseSB0byBSRFMgQ3VzdG9tLlxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjI3RkZUNyZWRlbnRpYWxQYXNzd29yZFxuICAgKi9cbiAgcmVhZG9ubHkgdGRlQ3JlZGVudGlhbFBhc3N3b3JkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSB6b25lIG9mIHRoZSBEQiBpbnN0YW5jZS4gVGhlIHRpbWUgem9uZSBwYXJhbWV0ZXIgaXMgY3VycmVudGx5IHN1cHBvcnRlZCBvbmx5IGJ5IE1pY3Jvc29mdCBTUUwgU2VydmVyIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvQ0hBUF9TUUxTZXJ2ZXIuaHRtbCNTUUxTZXJ2ZXIuQ29uY2VwdHMuR2VuZXJhbC5UaW1lWm9uZSkuXG4gICAqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWMjdGltZXpvbmVcbiAgICovXG4gIHJlYWRvbmx5IHRpbWV6b25lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgQW1hem9uIEVDMiBWUEMgc2VjdXJpdHkgZ3JvdXBzIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgREIgaW5zdGFuY2UuXG4gICAqIEFtYXpvbiBBdXJvcmFcbiAgICogTm90IGFwcGxpY2FibGUuIFRoZSBhc3NvY2lhdGVkIGxpc3Qgb2YgRUMyIFZQQyBzZWN1cml0eSBncm91cHMgaXMgbWFuYWdlZCBieSB0aGUgREIgY2x1c3Rlci5cbiAgICogRGVmYXVsdDogVGhlIGRlZmF1bHQgRUMyIFZQQyBzZWN1cml0eSBncm91cCBmb3IgdGhlIERCIHN1Ym5ldCBncm91cCdzIFZQQy5cbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlYyN2cGNTZWN1cml0eUdyb3VwSURzXG4gICAqL1xuICByZWFkb25seSB2cGNTZWN1cml0eUdyb3VwSURzPzogc3RyaW5nW107XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRGJJbnN0YW5jZVNwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0RiSW5zdGFuY2VTcGVjKG9iajogRGJJbnN0YW5jZVNwZWMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhbGxvY2F0ZWRTdG9yYWdlJzogb2JqLmFsbG9jYXRlZFN0b3JhZ2UsXG4gICAgJ2F1dG9NaW5vclZlcnNpb25VcGdyYWRlJzogb2JqLmF1dG9NaW5vclZlcnNpb25VcGdyYWRlLFxuICAgICdhdmFpbGFiaWxpdHlab25lJzogb2JqLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgJ2JhY2t1cFJldGVudGlvblBlcmlvZCc6IG9iai5iYWNrdXBSZXRlbnRpb25QZXJpb2QsXG4gICAgJ2NoYXJhY3RlclNldE5hbWUnOiBvYmouY2hhcmFjdGVyU2V0TmFtZSxcbiAgICAnY29weVRhZ3NUb1NuYXBzaG90Jzogb2JqLmNvcHlUYWdzVG9TbmFwc2hvdCxcbiAgICAnY3VzdG9tSUFNSW5zdGFuY2VQcm9maWxlJzogb2JqLmN1c3RvbUlhbUluc3RhbmNlUHJvZmlsZSxcbiAgICAnZGJDbHVzdGVySWRlbnRpZmllcic6IG9iai5kYkNsdXN0ZXJJZGVudGlmaWVyLFxuICAgICdkYkluc3RhbmNlQ2xhc3MnOiBvYmouZGJJbnN0YW5jZUNsYXNzLFxuICAgICdkYkluc3RhbmNlSWRlbnRpZmllcic6IG9iai5kYkluc3RhbmNlSWRlbnRpZmllcixcbiAgICAnZGJOYW1lJzogb2JqLmRiTmFtZSxcbiAgICAnZGJQYXJhbWV0ZXJHcm91cE5hbWUnOiBvYmouZGJQYXJhbWV0ZXJHcm91cE5hbWUsXG4gICAgJ2RiU2VjdXJpdHlHcm91cHMnOiBvYmouZGJTZWN1cml0eUdyb3Vwcz8ubWFwKHkgPT4geSksXG4gICAgJ2RiU3VibmV0R3JvdXBOYW1lJzogb2JqLmRiU3VibmV0R3JvdXBOYW1lLFxuICAgICdkZWxldGlvblByb3RlY3Rpb24nOiBvYmouZGVsZXRpb25Qcm90ZWN0aW9uLFxuICAgICdkb21haW4nOiBvYmouZG9tYWluLFxuICAgICdkb21haW5JQU1Sb2xlTmFtZSc6IG9iai5kb21haW5JYW1Sb2xlTmFtZSxcbiAgICAnZW5hYmxlQ2xvdWR3YXRjaExvZ3NFeHBvcnRzJzogb2JqLmVuYWJsZUNsb3Vkd2F0Y2hMb2dzRXhwb3J0cz8ubWFwKHkgPT4geSksXG4gICAgJ2VuYWJsZUN1c3RvbWVyT3duZWRJUCc6IG9iai5lbmFibGVDdXN0b21lck93bmVkSXAsXG4gICAgJ2VuYWJsZUlBTURhdGFiYXNlQXV0aGVudGljYXRpb24nOiBvYmouZW5hYmxlSWFtRGF0YWJhc2VBdXRoZW50aWNhdGlvbixcbiAgICAnZW5naW5lJzogb2JqLmVuZ2luZSxcbiAgICAnZW5naW5lVmVyc2lvbic6IG9iai5lbmdpbmVWZXJzaW9uLFxuICAgICdpb3BzJzogb2JqLmlvcHMsXG4gICAgJ2ttc0tleUlEJzogb2JqLmttc0tleUlkLFxuICAgICdrbXNLZXlSZWYnOiB0b0pzb25fRGJJbnN0YW5jZVNwZWNLbXNLZXlSZWYob2JqLmttc0tleVJlZiksXG4gICAgJ2xpY2Vuc2VNb2RlbCc6IG9iai5saWNlbnNlTW9kZWwsXG4gICAgJ21hc3RlclVzZXJQYXNzd29yZCc6IHRvSnNvbl9EYkluc3RhbmNlU3BlY01hc3RlclVzZXJQYXNzd29yZChvYmoubWFzdGVyVXNlclBhc3N3b3JkKSxcbiAgICAnbWFzdGVyVXNlcm5hbWUnOiBvYmoubWFzdGVyVXNlcm5hbWUsXG4gICAgJ21heEFsbG9jYXRlZFN0b3JhZ2UnOiBvYmoubWF4QWxsb2NhdGVkU3RvcmFnZSxcbiAgICAnbW9uaXRvcmluZ0ludGVydmFsJzogb2JqLm1vbml0b3JpbmdJbnRlcnZhbCxcbiAgICAnbW9uaXRvcmluZ1JvbGVBUk4nOiBvYmoubW9uaXRvcmluZ1JvbGVBcm4sXG4gICAgJ211bHRpQVonOiBvYmoubXVsdGlBeixcbiAgICAnbmNoYXJDaGFyYWN0ZXJTZXROYW1lJzogb2JqLm5jaGFyQ2hhcmFjdGVyU2V0TmFtZSxcbiAgICAnb3B0aW9uR3JvdXBOYW1lJzogb2JqLm9wdGlvbkdyb3VwTmFtZSxcbiAgICAncGVyZm9ybWFuY2VJbnNpZ2h0c0VuYWJsZWQnOiBvYmoucGVyZm9ybWFuY2VJbnNpZ2h0c0VuYWJsZWQsXG4gICAgJ3BlcmZvcm1hbmNlSW5zaWdodHNLTVNLZXlJRCc6IG9iai5wZXJmb3JtYW5jZUluc2lnaHRzS21zS2V5SWQsXG4gICAgJ3BlcmZvcm1hbmNlSW5zaWdodHNSZXRlbnRpb25QZXJpb2QnOiBvYmoucGVyZm9ybWFuY2VJbnNpZ2h0c1JldGVudGlvblBlcmlvZCxcbiAgICAncG9ydCc6IG9iai5wb3J0LFxuICAgICdwcmVmZXJyZWRCYWNrdXBXaW5kb3cnOiBvYmoucHJlZmVycmVkQmFja3VwV2luZG93LFxuICAgICdwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdyc6IG9iai5wcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdyxcbiAgICAncHJvY2Vzc29yRmVhdHVyZXMnOiBvYmoucHJvY2Vzc29yRmVhdHVyZXM/Lm1hcCh5ID0+IHRvSnNvbl9EYkluc3RhbmNlU3BlY1Byb2Nlc3NvckZlYXR1cmVzKHkpKSxcbiAgICAncHJvbW90aW9uVGllcic6IG9iai5wcm9tb3Rpb25UaWVyLFxuICAgICdwdWJsaWNseUFjY2Vzc2libGUnOiBvYmoucHVibGljbHlBY2Nlc3NpYmxlLFxuICAgICdzdG9yYWdlRW5jcnlwdGVkJzogb2JqLnN0b3JhZ2VFbmNyeXB0ZWQsXG4gICAgJ3N0b3JhZ2VUeXBlJzogb2JqLnN0b3JhZ2VUeXBlLFxuICAgICd0YWdzJzogb2JqLnRhZ3M/Lm1hcCh5ID0+IHRvSnNvbl9EYkluc3RhbmNlU3BlY1RhZ3MoeSkpLFxuICAgICd0ZGVDcmVkZW50aWFsQVJOJzogb2JqLnRkZUNyZWRlbnRpYWxBcm4sXG4gICAgJ3RkZUNyZWRlbnRpYWxQYXNzd29yZCc6IG9iai50ZGVDcmVkZW50aWFsUGFzc3dvcmQsXG4gICAgJ3RpbWV6b25lJzogb2JqLnRpbWV6b25lLFxuICAgICd2cGNTZWN1cml0eUdyb3VwSURzJzogb2JqLnZwY1NlY3VyaXR5R3JvdXBJRHM/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEFXU1Jlc291cmNlUmVmZXJlbmNlV3JhcHBlciBwcm92aWRlcyBhIHdyYXBwZXIgYXJvdW5kICpBV1NSZXNvdXJjZVJlZmVyZW5jZSB0eXBlIHRvIHByb3ZpZGUgbW9yZSB1c2VyIGZyaWVuZGx5IHN5bnRheCBmb3IgcmVmZXJlbmNlcyB1c2luZyAnZnJvbScgZmllbGQgRXg6IEFQSUlEUmVmOiAgIGZyb206ICAgICBuYW1lOiBteS1hcGlcbiAqXG4gKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjS21zS2V5UmVmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGJJbnN0YW5jZVNwZWNLbXNLZXlSZWYge1xuICAvKipcbiAgICogQVdTUmVzb3VyY2VSZWZlcmVuY2UgcHJvdmlkZXMgYWxsIHRoZSB2YWx1ZXMgbmVjZXNzYXJ5IHRvIHJlZmVyZW5jZSBhbm90aGVyIGs4cyByZXNvdXJjZSBmb3IgZmluZGluZyB0aGUgaWRlbnRpZmllcihJZC9BUk4vTmFtZSlcbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlY0ttc0tleVJlZiNmcm9tXG4gICAqL1xuICByZWFkb25seSBmcm9tPzogRGJJbnN0YW5jZVNwZWNLbXNLZXlSZWZGcm9tO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0RiSW5zdGFuY2VTcGVjS21zS2V5UmVmJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9EYkluc3RhbmNlU3BlY0ttc0tleVJlZihvYmo6IERiSW5zdGFuY2VTcGVjS21zS2V5UmVmIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZnJvbSc6IHRvSnNvbl9EYkluc3RhbmNlU3BlY0ttc0tleVJlZkZyb20ob2JqLmZyb20pLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFRoZSBwYXNzd29yZCBmb3IgdGhlIG1hc3RlciB1c2VyLiBUaGUgcGFzc3dvcmQgY2FuIGluY2x1ZGUgYW55IHByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0IFwiL1wiLCBcIlwiXCIsIG9yIFwiQFwiLlxuICogQW1hem9uIEF1cm9yYVxuICogTm90IGFwcGxpY2FibGUuIFRoZSBwYXNzd29yZCBmb3IgdGhlIG1hc3RlciB1c2VyIGlzIG1hbmFnZWQgYnkgdGhlIERCIGNsdXN0ZXIuXG4gKiBNYXJpYURCXG4gKiBDb25zdHJhaW50czogTXVzdCBjb250YWluIGZyb20gOCB0byA0MSBjaGFyYWN0ZXJzLlxuICogTWljcm9zb2Z0IFNRTCBTZXJ2ZXJcbiAqIENvbnN0cmFpbnRzOiBNdXN0IGNvbnRhaW4gZnJvbSA4IHRvIDEyOCBjaGFyYWN0ZXJzLlxuICogTXlTUUxcbiAqIENvbnN0cmFpbnRzOiBNdXN0IGNvbnRhaW4gZnJvbSA4IHRvIDQxIGNoYXJhY3RlcnMuXG4gKiBPcmFjbGVcbiAqIENvbnN0cmFpbnRzOiBNdXN0IGNvbnRhaW4gZnJvbSA4IHRvIDMwIGNoYXJhY3RlcnMuXG4gKiBQb3N0Z3JlU1FMXG4gKiBDb25zdHJhaW50czogTXVzdCBjb250YWluIGZyb20gOCB0byAxMjggY2hhcmFjdGVycy5cbiAqXG4gKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjTWFzdGVyVXNlclBhc3N3b3JkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGJJbnN0YW5jZVNwZWNNYXN0ZXJVc2VyUGFzc3dvcmQge1xuICAvKipcbiAgICogS2V5IGlzIHRoZSBrZXkgd2l0aGluIHRoZSBzZWNyZXRcbiAgICpcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlY01hc3RlclVzZXJQYXNzd29yZCNrZXlcbiAgICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIGlzIHVuaXF1ZSB3aXRoaW4gYSBuYW1lc3BhY2UgdG8gcmVmZXJlbmNlIGEgc2VjcmV0IHJlc291cmNlLlxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjTWFzdGVyVXNlclBhc3N3b3JkI25hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWVzcGFjZSBkZWZpbmVzIHRoZSBzcGFjZSB3aXRoaW4gd2hpY2ggdGhlIHNlY3JldCBuYW1lIG11c3QgYmUgdW5pcXVlLlxuICAgKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjTWFzdGVyVXNlclBhc3N3b3JkI25hbWVzcGFjZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0RiSW5zdGFuY2VTcGVjTWFzdGVyVXNlclBhc3N3b3JkJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9EYkluc3RhbmNlU3BlY01hc3RlclVzZXJQYXNzd29yZChvYmo6IERiSW5zdGFuY2VTcGVjTWFzdGVyVXNlclBhc3N3b3JkIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAna2V5Jzogb2JqLmtleSxcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICduYW1lc3BhY2UnOiBvYmoubmFtZXNwYWNlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIENvbnRhaW5zIHRoZSBwcm9jZXNzb3IgZmVhdHVyZXMgb2YgYSBEQiBpbnN0YW5jZSBjbGFzcy5cbiAqIFRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBDUFUgY29yZXMsIHVzZSB0aGUgY29yZUNvdW50IGZlYXR1cmUgbmFtZSBmb3IgdGhlIE5hbWUgcGFyYW1ldGVyLiBUbyBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgdGhyZWFkcyBwZXIgY29yZSwgdXNlIHRoZSB0aHJlYWRzUGVyQ29yZSBmZWF0dXJlIG5hbWUgZm9yIHRoZSBOYW1lIHBhcmFtZXRlci5cbiAqIFlvdSBjYW4gc2V0IHRoZSBwcm9jZXNzb3IgZmVhdHVyZXMgb2YgdGhlIERCIGluc3RhbmNlIGNsYXNzIGZvciBhIERCIGluc3RhbmNlIHdoZW4geW91IGNhbGwgb25lIG9mIHRoZSBmb2xsb3dpbmcgYWN0aW9uczpcbiAqICogQ3JlYXRlREJJbnN0YW5jZVxuICogKiBNb2RpZnlEQkluc3RhbmNlXG4gKiAqIFJlc3RvcmVEQkluc3RhbmNlRnJvbURCU25hcHNob3RcbiAqICogUmVzdG9yZURCSW5zdGFuY2VGcm9tUzNcbiAqICogUmVzdG9yZURCSW5zdGFuY2VUb1BvaW50SW5UaW1lXG4gKiBZb3UgY2FuIHZpZXcgdGhlIHZhbGlkIHByb2Nlc3NvciB2YWx1ZXMgZm9yIGEgcGFydGljdWxhciBpbnN0YW5jZSBjbGFzcyBieSBjYWxsaW5nIHRoZSBEZXNjcmliZU9yZGVyYWJsZURCSW5zdGFuY2VPcHRpb25zIGFjdGlvbiBhbmQgc3BlY2lmeWluZyB0aGUgaW5zdGFuY2UgY2xhc3MgZm9yIHRoZSBEQkluc3RhbmNlQ2xhc3MgcGFyYW1ldGVyLlxuICogSW4gYWRkaXRpb24sIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgYWN0aW9ucyBmb3IgREIgaW5zdGFuY2UgY2xhc3MgcHJvY2Vzc29yIGluZm9ybWF0aW9uOlxuICogKiBEZXNjcmliZURCSW5zdGFuY2VzXG4gKiAqIERlc2NyaWJlREJTbmFwc2hvdHNcbiAqICogRGVzY3JpYmVWYWxpZERCSW5zdGFuY2VNb2RpZmljYXRpb25zXG4gKiBJZiB5b3UgY2FsbCBEZXNjcmliZURCSW5zdGFuY2VzLCBQcm9jZXNzb3JGZWF0dXJlIHJldHVybnMgbm9uLW51bGwgdmFsdWVzIG9ubHkgaWYgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG4gKiAqIFlvdSBhcmUgYWNjZXNzaW5nIGFuIE9yYWNsZSBEQiBpbnN0YW5jZS5cbiAqICogWW91ciBPcmFjbGUgREIgaW5zdGFuY2UgY2xhc3Mgc3VwcG9ydHMgY29uZmlndXJpbmcgdGhlIG51bWJlciBvZiBDUFUgICAgY29yZXMgYW5kIHRocmVhZHMgcGVyIGNvcmUuXG4gKiAqIFRoZSBjdXJyZW50IG51bWJlciBDUFUgY29yZXMgYW5kIHRocmVhZHMgaXMgc2V0IHRvIGEgbm9uLWRlZmF1bHQgdmFsdWUuXG4gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIENvbmZpZ3VyaW5nIHRoZSBQcm9jZXNzb3Igb2YgdGhlIERCIEluc3RhbmNlIENsYXNzIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvQ29uY2VwdHMuREJJbnN0YW5jZUNsYXNzLmh0bWwjVVNFUl9Db25maWd1cmVQcm9jZXNzb3IpIGluIHRoZSBBbWF6b24gUkRTIFVzZXIgR3VpZGUuXG4gKlxuICogQHNjaGVtYSBEYkluc3RhbmNlU3BlY1Byb2Nlc3NvckZlYXR1cmVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGJJbnN0YW5jZVNwZWNQcm9jZXNzb3JGZWF0dXJlcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIERiSW5zdGFuY2VTcGVjUHJvY2Vzc29yRmVhdHVyZXMjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlY1Byb2Nlc3NvckZlYXR1cmVzI3ZhbHVlXG4gICAqL1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdEYkluc3RhbmNlU3BlY1Byb2Nlc3NvckZlYXR1cmVzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9EYkluc3RhbmNlU3BlY1Byb2Nlc3NvckZlYXR1cmVzKG9iajogRGJJbnN0YW5jZVNwZWNQcm9jZXNzb3JGZWF0dXJlcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAndmFsdWUnOiBvYmoudmFsdWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogTWV0YWRhdGEgYXNzaWduZWQgdG8gYW4gQW1hem9uIFJEUyByZXNvdXJjZSBjb25zaXN0aW5nIG9mIGEga2V5LXZhbHVlIHBhaXIuXG4gKlxuICogQHNjaGVtYSBEYkluc3RhbmNlU3BlY1RhZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYkluc3RhbmNlU3BlY1RhZ3Mge1xuICAvKipcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlY1RhZ3Mja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRGJJbnN0YW5jZVNwZWNUYWdzI3ZhbHVlXG4gICAqL1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdEYkluc3RhbmNlU3BlY1RhZ3MnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0RiSW5zdGFuY2VTcGVjVGFncyhvYmo6IERiSW5zdGFuY2VTcGVjVGFncyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tleSc6IG9iai5rZXksXG4gICAgJ3ZhbHVlJzogb2JqLnZhbHVlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEFXU1Jlc291cmNlUmVmZXJlbmNlIHByb3ZpZGVzIGFsbCB0aGUgdmFsdWVzIG5lY2Vzc2FyeSB0byByZWZlcmVuY2UgYW5vdGhlciBrOHMgcmVzb3VyY2UgZm9yIGZpbmRpbmcgdGhlIGlkZW50aWZpZXIoSWQvQVJOL05hbWUpXG4gKlxuICogQHNjaGVtYSBEYkluc3RhbmNlU3BlY0ttc0tleVJlZkZyb21cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYkluc3RhbmNlU3BlY0ttc0tleVJlZkZyb20ge1xuICAvKipcbiAgICogQHNjaGVtYSBEYkluc3RhbmNlU3BlY0ttc0tleVJlZkZyb20jbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdEYkluc3RhbmNlU3BlY0ttc0tleVJlZkZyb20nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0RiSW5zdGFuY2VTcGVjS21zS2V5UmVmRnJvbShvYmo6IERiSW5zdGFuY2VTcGVjS21zS2V5UmVmRnJvbSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuIl19
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { ApiObject, ApiObjectMetadata, GroupVersionKind } from 'cdk8s';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
/**
|
|
4
|
+
* DBSubnetGroup is the Schema for the DBSubnetGroups API
|
|
5
|
+
*
|
|
6
|
+
* @schema DBSubnetGroup
|
|
7
|
+
*/
|
|
8
|
+
export declare class DbSubnetGroup extends ApiObject {
|
|
9
|
+
/**
|
|
10
|
+
* Returns the apiVersion and kind for "DBSubnetGroup"
|
|
11
|
+
*/
|
|
12
|
+
static readonly GVK: GroupVersionKind;
|
|
13
|
+
/**
|
|
14
|
+
* Renders a Kubernetes manifest for "DBSubnetGroup".
|
|
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?: DbSubnetGroupProps): any;
|
|
21
|
+
/**
|
|
22
|
+
* Defines a "DBSubnetGroup" 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?: DbSubnetGroupProps);
|
|
28
|
+
/**
|
|
29
|
+
* Renders the object to Kubernetes JSON.
|
|
30
|
+
*/
|
|
31
|
+
toJson(): any;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* DBSubnetGroup is the Schema for the DBSubnetGroups API
|
|
35
|
+
*
|
|
36
|
+
* @schema DBSubnetGroup
|
|
37
|
+
*/
|
|
38
|
+
export interface DbSubnetGroupProps {
|
|
39
|
+
/**
|
|
40
|
+
* @schema DBSubnetGroup#metadata
|
|
41
|
+
*/
|
|
42
|
+
readonly metadata?: ApiObjectMetadata;
|
|
43
|
+
/**
|
|
44
|
+
* DBSubnetGroupSpec defines the desired state of DBSubnetGroup.
|
|
45
|
+
* Contains the details of an Amazon RDS DB subnet group.
|
|
46
|
+
* This data type is used as a response element in the DescribeDBSubnetGroups action.
|
|
47
|
+
*
|
|
48
|
+
* @schema DBSubnetGroup#spec
|
|
49
|
+
*/
|
|
50
|
+
readonly spec?: DbSubnetGroupSpec;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Converts an object of type 'DbSubnetGroupProps' to JSON representation.
|
|
54
|
+
*/
|
|
55
|
+
export declare function toJson_DbSubnetGroupProps(obj: DbSubnetGroupProps | undefined): Record<string, any> | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* DBSubnetGroupSpec defines the desired state of DBSubnetGroup.
|
|
58
|
+
* Contains the details of an Amazon RDS DB subnet group.
|
|
59
|
+
* This data type is used as a response element in the DescribeDBSubnetGroups action.
|
|
60
|
+
*
|
|
61
|
+
* @schema DbSubnetGroupSpec
|
|
62
|
+
*/
|
|
63
|
+
export interface DbSubnetGroupSpec {
|
|
64
|
+
/**
|
|
65
|
+
* The description for the DB subnet group.
|
|
66
|
+
*
|
|
67
|
+
* @schema DbSubnetGroupSpec#description
|
|
68
|
+
*/
|
|
69
|
+
readonly description: string;
|
|
70
|
+
/**
|
|
71
|
+
* The name for the DB subnet group. This value is stored as a lowercase string.
|
|
72
|
+
* Constraints: Must contain no more than 255 letters, numbers, periods, underscores, spaces, or hyphens. Must not be default.
|
|
73
|
+
* Example: mySubnetgroup
|
|
74
|
+
*
|
|
75
|
+
* @schema DbSubnetGroupSpec#name
|
|
76
|
+
*/
|
|
77
|
+
readonly name: string;
|
|
78
|
+
/**
|
|
79
|
+
* The EC2 Subnet IDs for the DB subnet group.
|
|
80
|
+
*
|
|
81
|
+
* @schema DbSubnetGroupSpec#subnetIDs
|
|
82
|
+
*/
|
|
83
|
+
readonly subnetIDs: string[];
|
|
84
|
+
/**
|
|
85
|
+
* Tags to assign to the DB subnet group.
|
|
86
|
+
*
|
|
87
|
+
* @schema DbSubnetGroupSpec#tags
|
|
88
|
+
*/
|
|
89
|
+
readonly tags?: DbSubnetGroupSpecTags[];
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Converts an object of type 'DbSubnetGroupSpec' to JSON representation.
|
|
93
|
+
*/
|
|
94
|
+
export declare function toJson_DbSubnetGroupSpec(obj: DbSubnetGroupSpec | undefined): Record<string, any> | undefined;
|
|
95
|
+
/**
|
|
96
|
+
* Metadata assigned to an Amazon RDS resource consisting of a key-value pair.
|
|
97
|
+
*
|
|
98
|
+
* @schema DbSubnetGroupSpecTags
|
|
99
|
+
*/
|
|
100
|
+
export interface DbSubnetGroupSpecTags {
|
|
101
|
+
/**
|
|
102
|
+
* @schema DbSubnetGroupSpecTags#key
|
|
103
|
+
*/
|
|
104
|
+
readonly key?: string;
|
|
105
|
+
/**
|
|
106
|
+
* @schema DbSubnetGroupSpecTags#value
|
|
107
|
+
*/
|
|
108
|
+
readonly value?: string;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Converts an object of type 'DbSubnetGroupSpecTags' to JSON representation.
|
|
112
|
+
*/
|
|
113
|
+
export declare function toJson_DbSubnetGroupSpecTags(obj: DbSubnetGroupSpecTags | undefined): Record<string, any> | undefined;
|
|
114
|
+
//# sourceMappingURL=rdsdbsubnetgroups-rds.services.k8s.aws.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rdsdbsubnetgroups-rds.services.k8s.aws.d.ts","sourceRoot":"","sources":["../../src/imports/rdsdbsubnetgroups-rds.services.k8s.aws.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,SAAS;IAC1C;;OAEG;IACH,gBAAuB,GAAG,EAAE,gBAAgB,CAG1C;IAEF;;;;;;OAMG;WACW,QAAQ,CAAC,KAAK,GAAE,kBAAuB,GAAG,GAAG;IAO3D;;;;;OAKG;gBACgB,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,GAAE,kBAAuB;IAO/E;;OAEG;IACI,MAAM,IAAI,GAAG;CAQrB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAEtC;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAEnC;AAED;;GAEG;AAEH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,kBAAkB,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAQ9G;AAGD;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAE7B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,qBAAqB,EAAE,CAAC;CAEzC;AAED;;GAEG;AAEH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,iBAAiB,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAU5G;AAGD;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CAEzB;AAED;;GAEG;AAEH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,qBAAqB,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAQpH"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toJson_DbSubnetGroupSpecTags = exports.toJson_DbSubnetGroupSpec = exports.toJson_DbSubnetGroupProps = exports.DbSubnetGroup = void 0;
|
|
4
|
+
// generated by cdk8s
|
|
5
|
+
const cdk8s_1 = require("cdk8s");
|
|
6
|
+
/**
|
|
7
|
+
* DBSubnetGroup is the Schema for the DBSubnetGroups API
|
|
8
|
+
*
|
|
9
|
+
* @schema DBSubnetGroup
|
|
10
|
+
*/
|
|
11
|
+
class DbSubnetGroup extends cdk8s_1.ApiObject {
|
|
12
|
+
/**
|
|
13
|
+
* Defines a "DBSubnetGroup" 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
|
+
...DbSubnetGroup.GVK,
|
|
21
|
+
...props,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Renders a Kubernetes manifest for "DBSubnetGroup".
|
|
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
|
+
...DbSubnetGroup.GVK,
|
|
34
|
+
...toJson_DbSubnetGroupProps(props),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Renders the object to Kubernetes JSON.
|
|
39
|
+
*/
|
|
40
|
+
toJson() {
|
|
41
|
+
const resolved = super.toJson();
|
|
42
|
+
return {
|
|
43
|
+
...DbSubnetGroup.GVK,
|
|
44
|
+
...toJson_DbSubnetGroupProps(resolved),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.DbSubnetGroup = DbSubnetGroup;
|
|
49
|
+
/**
|
|
50
|
+
* Returns the apiVersion and kind for "DBSubnetGroup"
|
|
51
|
+
*/
|
|
52
|
+
DbSubnetGroup.GVK = {
|
|
53
|
+
apiVersion: 'rds.services.k8s.aws/v1alpha1',
|
|
54
|
+
kind: 'DBSubnetGroup',
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Converts an object of type 'DbSubnetGroupProps' to JSON representation.
|
|
58
|
+
*/
|
|
59
|
+
/* eslint-disable max-len, quote-props */
|
|
60
|
+
function toJson_DbSubnetGroupProps(obj) {
|
|
61
|
+
if (obj === undefined) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
const result = {
|
|
65
|
+
'metadata': obj.metadata,
|
|
66
|
+
'spec': toJson_DbSubnetGroupSpec(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_DbSubnetGroupProps = toJson_DbSubnetGroupProps;
|
|
72
|
+
/**
|
|
73
|
+
* Converts an object of type 'DbSubnetGroupSpec' to JSON representation.
|
|
74
|
+
*/
|
|
75
|
+
/* eslint-disable max-len, quote-props */
|
|
76
|
+
function toJson_DbSubnetGroupSpec(obj) {
|
|
77
|
+
var _a, _b;
|
|
78
|
+
if (obj === undefined) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
const result = {
|
|
82
|
+
'description': obj.description,
|
|
83
|
+
'name': obj.name,
|
|
84
|
+
'subnetIDs': (_a = obj.subnetIDs) === null || _a === void 0 ? void 0 : _a.map(y => y),
|
|
85
|
+
'tags': (_b = obj.tags) === null || _b === void 0 ? void 0 : _b.map(y => toJson_DbSubnetGroupSpecTags(y)),
|
|
86
|
+
};
|
|
87
|
+
// filter undefined values
|
|
88
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
89
|
+
}
|
|
90
|
+
exports.toJson_DbSubnetGroupSpec = toJson_DbSubnetGroupSpec;
|
|
91
|
+
/**
|
|
92
|
+
* Converts an object of type 'DbSubnetGroupSpecTags' to JSON representation.
|
|
93
|
+
*/
|
|
94
|
+
/* eslint-disable max-len, quote-props */
|
|
95
|
+
function toJson_DbSubnetGroupSpecTags(obj) {
|
|
96
|
+
if (obj === undefined) {
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
const result = {
|
|
100
|
+
'key': obj.key,
|
|
101
|
+
'value': obj.value,
|
|
102
|
+
};
|
|
103
|
+
// filter undefined values
|
|
104
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
105
|
+
}
|
|
106
|
+
exports.toJson_DbSubnetGroupSpecTags = toJson_DbSubnetGroupSpecTags;
|
|
107
|
+
/* eslint-enable max-len, quote-props */
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzZGJzdWJuZXRncm91cHMtcmRzLnNlcnZpY2VzLms4cy5hd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wb3J0cy9yZHNkYnN1Ym5ldGdyb3Vwcy1yZHMuc2VydmljZXMuazhzLmF3cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQkFBcUI7QUFDckIsaUNBQXVFO0FBSXZFOzs7O0dBSUc7QUFDSCxNQUFhLGFBQWMsU0FBUSxpQkFBUztJQXVCMUM7Ozs7O09BS0c7SUFDSCxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUE0QixFQUFFO1FBQzdFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxhQUFhLENBQUMsR0FBRztZQUNwQixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBekJEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBNEIsRUFBRTtRQUNuRCxPQUFPO1lBQ0wsR0FBRyxhQUFhLENBQUMsR0FBRztZQUNwQixHQUFHLHlCQUF5QixDQUFDLEtBQUssQ0FBQztTQUNwQyxDQUFDO0lBQ0osQ0FBQztJQWVEOztPQUVHO0lBQ0ksTUFBTTtRQUNYLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVoQyxPQUFPO1lBQ0wsR0FBRyxhQUFhLENBQUMsR0FBRztZQUNwQixHQUFHLHlCQUF5QixDQUFDLFFBQVEsQ0FBQztTQUN2QyxDQUFDO0lBQ0osQ0FBQzs7QUE5Q0gsc0NBK0NDO0FBOUNDOztHQUVHO0FBQ29CLGlCQUFHLEdBQXFCO0lBQzdDLFVBQVUsRUFBRSwrQkFBK0I7SUFDM0MsSUFBSSxFQUFFLGVBQWU7Q0FDdEIsQ0FBQztBQWdFSjs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQix5QkFBeUIsQ0FBQyxHQUFtQztJQUMzRSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1FBQ3hCLE1BQU0sRUFBRSx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO0tBQzNDLENBQUM7SUFDRiwwQkFBMEI7SUFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQVJELDhEQVFDO0FBMkNEOztHQUVHO0FBQ0gseUNBQXlDO0FBQ3pDLFNBQWdCLHdCQUF3QixDQUFDLEdBQWtDOztJQUN6RSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsYUFBYSxFQUFFLEdBQUcsQ0FBQyxXQUFXO1FBQzlCLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNoQixXQUFXLFFBQUUsR0FBRyxDQUFDLFNBQVMsMENBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sUUFBRSxHQUFHLENBQUMsSUFBSSwwQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM1RCxDQUFDO0lBQ0YsMEJBQTBCO0lBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFHLENBQUM7QUFWRCw0REFVQztBQXFCRDs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQiw0QkFBNEIsQ0FBQyxHQUFzQztJQUNqRixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHO1FBQ2QsT0FBTyxFQUFFLEdBQUcsQ0FBQyxLQUFLO0tBQ25CLENBQUM7SUFDRiwwQkFBMEI7SUFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQVJELG9FQVFDO0FBQ0Qsd0NBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2VuZXJhdGVkIGJ5IGNkazhzXG5pbXBvcnQgeyBBcGlPYmplY3QsIEFwaU9iamVjdE1ldGFkYXRhLCBHcm91cFZlcnNpb25LaW5kIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cblxuLyoqXG4gKiBEQlN1Ym5ldEdyb3VwIGlzIHRoZSBTY2hlbWEgZm9yIHRoZSBEQlN1Ym5ldEdyb3VwcyBBUElcbiAqXG4gKiBAc2NoZW1hIERCU3VibmV0R3JvdXBcbiAqL1xuZXhwb3J0IGNsYXNzIERiU3VibmV0R3JvdXAgZXh0ZW5kcyBBcGlPYmplY3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCJEQlN1Ym5ldEdyb3VwXCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1ZLOiBHcm91cFZlcnNpb25LaW5kID0ge1xuICAgIGFwaVZlcnNpb246ICdyZHMuc2VydmljZXMuazhzLmF3cy92MWFscGhhMScsXG4gICAga2luZDogJ0RCU3VibmV0R3JvdXAnLFxuICB9O1xuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCJEQlN1Ym5ldEdyb3VwXCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IERiU3VibmV0R3JvdXBQcm9wcyA9IHt9KTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uRGJTdWJuZXRHcm91cC5HVkssXG4gICAgICAuLi50b0pzb25fRGJTdWJuZXRHcm91cFByb3BzKHByb3BzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBcIkRCU3VibmV0R3JvdXBcIiBBUEkgb2JqZWN0XG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBhIHNjb3BlLWxvY2FsIG5hbWUgZm9yIHRoZSBvYmplY3RcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERiU3VibmV0R3JvdXBQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5EYlN1Ym5ldEdyb3VwLkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5EYlN1Ym5ldEdyb3VwLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9EYlN1Ym5ldEdyb3VwUHJvcHMocmVzb2x2ZWQpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBEQlN1Ym5ldEdyb3VwIGlzIHRoZSBTY2hlbWEgZm9yIHRoZSBEQlN1Ym5ldEdyb3VwcyBBUElcbiAqXG4gKiBAc2NoZW1hIERCU3VibmV0R3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYlN1Ym5ldEdyb3VwUHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBEQlN1Ym5ldEdyb3VwI21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBEQlN1Ym5ldEdyb3VwU3BlYyBkZWZpbmVzIHRoZSBkZXNpcmVkIHN0YXRlIG9mIERCU3VibmV0R3JvdXAuXG4gICAqIENvbnRhaW5zIHRoZSBkZXRhaWxzIG9mIGFuIEFtYXpvbiBSRFMgREIgc3VibmV0IGdyb3VwLlxuICAgKiBUaGlzIGRhdGEgdHlwZSBpcyB1c2VkIGFzIGEgcmVzcG9uc2UgZWxlbWVudCBpbiB0aGUgRGVzY3JpYmVEQlN1Ym5ldEdyb3VwcyBhY3Rpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgREJTdWJuZXRHcm91cCNzcGVjXG4gICAqL1xuICByZWFkb25seSBzcGVjPzogRGJTdWJuZXRHcm91cFNwZWM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRGJTdWJuZXRHcm91cFByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9EYlN1Ym5ldEdyb3VwUHJvcHMob2JqOiBEYlN1Ym5ldEdyb3VwUHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdtZXRhZGF0YSc6IG9iai5tZXRhZGF0YSxcbiAgICAnc3BlYyc6IHRvSnNvbl9EYlN1Ym5ldEdyb3VwU3BlYyhvYmouc3BlYyksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogREJTdWJuZXRHcm91cFNwZWMgZGVmaW5lcyB0aGUgZGVzaXJlZCBzdGF0ZSBvZiBEQlN1Ym5ldEdyb3VwLlxuICogQ29udGFpbnMgdGhlIGRldGFpbHMgb2YgYW4gQW1hem9uIFJEUyBEQiBzdWJuZXQgZ3JvdXAuXG4gKiBUaGlzIGRhdGEgdHlwZSBpcyB1c2VkIGFzIGEgcmVzcG9uc2UgZWxlbWVudCBpbiB0aGUgRGVzY3JpYmVEQlN1Ym5ldEdyb3VwcyBhY3Rpb24uXG4gKlxuICogQHNjaGVtYSBEYlN1Ym5ldEdyb3VwU3BlY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIERiU3VibmV0R3JvdXBTcGVjIHtcbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIERCIHN1Ym5ldCBncm91cC5cbiAgICpcbiAgICogQHNjaGVtYSBEYlN1Ym5ldEdyb3VwU3BlYyNkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgZm9yIHRoZSBEQiBzdWJuZXQgZ3JvdXAuIFRoaXMgdmFsdWUgaXMgc3RvcmVkIGFzIGEgbG93ZXJjYXNlIHN0cmluZy5cbiAgICogQ29uc3RyYWludHM6IE11c3QgY29udGFpbiBubyBtb3JlIHRoYW4gMjU1IGxldHRlcnMsIG51bWJlcnMsIHBlcmlvZHMsIHVuZGVyc2NvcmVzLCBzcGFjZXMsIG9yIGh5cGhlbnMuIE11c3Qgbm90IGJlIGRlZmF1bHQuXG4gICAqIEV4YW1wbGU6IG15U3VibmV0Z3JvdXBcbiAgICpcbiAgICogQHNjaGVtYSBEYlN1Ym5ldEdyb3VwU3BlYyNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBFQzIgU3VibmV0IElEcyBmb3IgdGhlIERCIHN1Ym5ldCBncm91cC5cbiAgICpcbiAgICogQHNjaGVtYSBEYlN1Ym5ldEdyb3VwU3BlYyNzdWJuZXRJRHNcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldElEczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRhZ3MgdG8gYXNzaWduIHRvIHRoZSBEQiBzdWJuZXQgZ3JvdXAuXG4gICAqXG4gICAqIEBzY2hlbWEgRGJTdWJuZXRHcm91cFNwZWMjdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IERiU3VibmV0R3JvdXBTcGVjVGFnc1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0RiU3VibmV0R3JvdXBTcGVjJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9EYlN1Ym5ldEdyb3VwU3BlYyhvYmo6IERiU3VibmV0R3JvdXBTcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZGVzY3JpcHRpb24nOiBvYmouZGVzY3JpcHRpb24sXG4gICAgJ25hbWUnOiBvYmoubmFtZSxcbiAgICAnc3VibmV0SURzJzogb2JqLnN1Ym5ldElEcz8ubWFwKHkgPT4geSksXG4gICAgJ3RhZ3MnOiBvYmoudGFncz8ubWFwKHkgPT4gdG9Kc29uX0RiU3VibmV0R3JvdXBTcGVjVGFncyh5KSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogTWV0YWRhdGEgYXNzaWduZWQgdG8gYW4gQW1hem9uIFJEUyByZXNvdXJjZSBjb25zaXN0aW5nIG9mIGEga2V5LXZhbHVlIHBhaXIuXG4gKlxuICogQHNjaGVtYSBEYlN1Ym5ldEdyb3VwU3BlY1RhZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYlN1Ym5ldEdyb3VwU3BlY1RhZ3Mge1xuICAvKipcbiAgICogQHNjaGVtYSBEYlN1Ym5ldEdyb3VwU3BlY1RhZ3Mja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgRGJTdWJuZXRHcm91cFNwZWNUYWdzI3ZhbHVlXG4gICAqL1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdEYlN1Ym5ldEdyb3VwU3BlY1RhZ3MnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0RiU3VibmV0R3JvdXBTcGVjVGFncyhvYmo6IERiU3VibmV0R3JvdXBTcGVjVGFncyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2tleSc6IG9iai5rZXksXG4gICAgJ3ZhbHVlJzogb2JqLnZhbHVlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4iXX0=
|