@aws-cdk/aws-gamelift-alpha 2.219.0-alpha.0 → 2.220.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/script.js CHANGED
@@ -1,12 +1,38 @@
1
1
  "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
2
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
+ var _, done = false;
8
+ for (var i = decorators.length - 1; i >= 0; i--) {
9
+ var context = {};
10
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
+ if (kind === "accessor") {
15
+ if (result === void 0) continue;
16
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
+ if (_ = accept(result.get)) descriptor.get = _;
18
+ if (_ = accept(result.set)) descriptor.set = _;
19
+ if (_ = accept(result.init)) initializers.unshift(_);
20
+ }
21
+ else if (_ = accept(result)) {
22
+ if (kind === "field") initializers.unshift(_);
23
+ else descriptor[key] = _;
24
+ }
25
+ }
26
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
+ done = true;
28
+ };
29
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
+ var useValue = arguments.length > 2;
31
+ for (var i = 0; i < initializers.length; i++) {
32
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
+ }
34
+ return useValue ? value : void 0;
7
35
  };
8
- var _a, _b;
9
- var Script_1;
10
36
  Object.defineProperty(exports, "__esModule", { value: true });
11
37
  exports.Script = exports.ScriptBase = void 0;
12
38
  const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
@@ -21,10 +47,9 @@ const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
21
47
  * Base class for new and imported GameLift realtime server script.
22
48
  */
23
49
  class ScriptBase extends cdk.Resource {
50
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-gamelift-alpha.ScriptBase", version: "2.220.0-alpha.0" };
24
51
  }
25
52
  exports.ScriptBase = ScriptBase;
26
- _a = JSII_RTTI_SYMBOL_1;
27
- ScriptBase[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.ScriptBase", version: "2.219.0-alpha.0" };
28
53
  /**
29
54
  * A GameLift script, that is installed and runs on instances in an Amazon GameLift fleet. It consists of
30
55
  * a zip file with all of the components of the realtime game server script.
@@ -33,109 +58,140 @@ ScriptBase[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.ScriptBase", version: "2.21
33
58
  *
34
59
  * @resource AWS::GameLift::Script
35
60
  */
36
- let Script = Script_1 = class Script extends ScriptBase {
37
- /**
38
- * Create a new realtime server script from s3 content
39
- */
40
- static fromBucket(scope, id, bucket, key, objectVersion) {
41
- return new Script_1(scope, id, {
42
- content: content_1.Content.fromBucket(bucket, key, objectVersion),
43
- });
44
- }
45
- /**
46
- * Create a new realtime server script from asset content
47
- */
48
- static fromAsset(scope, id, path, options) {
49
- return new Script_1(scope, id, {
50
- content: content_1.Content.fromAsset(path, options),
51
- });
52
- }
53
- /**
54
- * Import a script into CDK using its ARN
55
- */
56
- static fromScriptArn(scope, id, scriptArn) {
57
- return this.fromScriptAttributes(scope, id, { scriptArn });
58
- }
59
- /**
60
- * Import an existing realtime server script from its attributes.
61
- */
62
- static fromScriptAttributes(scope, id, attrs) {
63
- try {
64
- jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_ScriptAttributes(attrs);
61
+ let Script = (() => {
62
+ let _classDecorators = [prop_injectable_1.propertyInjectable];
63
+ let _classDescriptor;
64
+ let _classExtraInitializers = [];
65
+ let _classThis;
66
+ let _classSuper = ScriptBase;
67
+ var Script = class extends _classSuper {
68
+ static { _classThis = this; }
69
+ static {
70
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
71
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
72
+ Script = _classThis = _classDescriptor.value;
73
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
65
74
  }
66
- catch (error) {
67
- if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
68
- Error.captureStackTrace(error, this.fromScriptAttributes);
69
- }
70
- throw error;
75
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-gamelift-alpha.Script", version: "2.220.0-alpha.0" };
76
+ /** Uniquely identifies this class. */
77
+ static PROPERTY_INJECTION_ID = '@aws-cdk.aws-gamelift-alpha.Script';
78
+ /**
79
+ * Create a new realtime server script from s3 content
80
+ */
81
+ static fromBucket(scope, id, bucket, key, objectVersion) {
82
+ return new Script(scope, id, {
83
+ content: content_1.Content.fromBucket(bucket, key, objectVersion),
84
+ });
71
85
  }
72
- const scriptArn = attrs.scriptArn;
73
- const scriptId = extractIdFromArn(attrs.scriptArn);
74
- const role = attrs.role;
75
- class Import extends ScriptBase {
76
- constructor(s, i) {
77
- super(s, i, {
78
- environmentFromArn: scriptArn,
79
- });
80
- this.scriptArn = scriptArn;
81
- this.scriptId = scriptId;
82
- this.role = role;
83
- this.grantPrincipal = this.role || new iam.UnknownPrincipal({ resource: this });
84
- }
86
+ /**
87
+ * Create a new realtime server script from asset content
88
+ */
89
+ static fromAsset(scope, id, path, options) {
90
+ return new Script(scope, id, {
91
+ content: content_1.Content.fromAsset(path, options),
92
+ });
85
93
  }
86
- return new Import(scope, id);
87
- }
88
- constructor(scope, id, props) {
89
- super(scope, id, {
90
- physicalName: props.scriptName,
91
- });
92
- try {
93
- jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_ScriptProps(props);
94
+ /**
95
+ * Import a script into CDK using its ARN
96
+ */
97
+ static fromScriptArn(scope, id, scriptArn) {
98
+ return this.fromScriptAttributes(scope, id, { scriptArn });
94
99
  }
95
- catch (error) {
96
- if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
97
- Error.captureStackTrace(error, Script);
100
+ /**
101
+ * Import an existing realtime server script from its attributes.
102
+ */
103
+ static fromScriptAttributes(scope, id, attrs) {
104
+ try {
105
+ jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_ScriptAttributes(attrs);
106
+ }
107
+ catch (error) {
108
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
109
+ Error.captureStackTrace(error, this.fromScriptAttributes);
110
+ }
111
+ throw error;
98
112
  }
99
- throw error;
113
+ const scriptArn = attrs.scriptArn;
114
+ const scriptId = extractIdFromArn(attrs.scriptArn);
115
+ const role = attrs.role;
116
+ class Import extends ScriptBase {
117
+ scriptArn = scriptArn;
118
+ scriptId = scriptId;
119
+ grantPrincipal;
120
+ role = role;
121
+ constructor(s, i) {
122
+ super(s, i, {
123
+ environmentFromArn: scriptArn,
124
+ });
125
+ this.grantPrincipal = this.role || new iam.UnknownPrincipal({ resource: this });
126
+ }
127
+ }
128
+ return new Import(scope, id);
100
129
  }
101
- // Enhanced CDK Analytics Telemetry
102
- (0, metadata_resource_1.addConstructMetadata)(this, props);
103
- if (props.scriptName && !cdk.Token.isUnresolved(props.scriptName)) {
104
- if (props.scriptName.length > 1024) {
105
- throw new Error(`Script name can not be longer than 1024 characters but has ${props.scriptName.length} characters.`);
130
+ /**
131
+ * The Identifier of the realtime server script.
132
+ */
133
+ scriptId;
134
+ /**
135
+ * The ARN of the realtime server script.
136
+ */
137
+ scriptArn;
138
+ /**
139
+ * The IAM role GameLift assumes to acccess server script content.
140
+ */
141
+ role;
142
+ /**
143
+ * The principal this GameLift script is using.
144
+ */
145
+ grantPrincipal;
146
+ constructor(scope, id, props) {
147
+ super(scope, id, {
148
+ physicalName: props.scriptName,
149
+ });
150
+ try {
151
+ jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_ScriptProps(props);
152
+ }
153
+ catch (error) {
154
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
155
+ Error.captureStackTrace(error, Script);
156
+ }
157
+ throw error;
106
158
  }
159
+ // Enhanced CDK Analytics Telemetry
160
+ (0, metadata_resource_1.addConstructMetadata)(this, props);
161
+ if (props.scriptName && !cdk.Token.isUnresolved(props.scriptName)) {
162
+ if (props.scriptName.length > 1024) {
163
+ throw new Error(`Script name can not be longer than 1024 characters but has ${props.scriptName.length} characters.`);
164
+ }
165
+ }
166
+ this.role = props.role ?? new iam.Role(this, 'ServiceRole', {
167
+ assumedBy: new iam.ServicePrincipal('gamelift.amazonaws.com'),
168
+ });
169
+ this.grantPrincipal = this.role;
170
+ const content = props.content.bind(this, this.role);
171
+ const resource = new aws_gamelift_1.CfnScript(this, 'Resource', {
172
+ name: props.scriptName,
173
+ version: props.scriptVersion,
174
+ storageLocation: {
175
+ bucket: content.s3Location && content.s3Location.bucketName,
176
+ key: content.s3Location && content.s3Location.objectKey,
177
+ objectVersion: content.s3Location && content.s3Location.objectVersion,
178
+ roleArn: this.role.roleArn,
179
+ },
180
+ });
181
+ this.scriptId = this.getResourceNameAttribute(resource.ref);
182
+ this.scriptArn = this.getResourceArnAttribute(resource.attrArn, {
183
+ service: 'gamelift',
184
+ resource: `script/${this.physicalName}`,
185
+ arnFormat: cdk.ArnFormat.COLON_RESOURCE_NAME,
186
+ });
107
187
  }
108
- this.role = props.role ?? new iam.Role(this, 'ServiceRole', {
109
- assumedBy: new iam.ServicePrincipal('gamelift.amazonaws.com'),
110
- });
111
- this.grantPrincipal = this.role;
112
- const content = props.content.bind(this, this.role);
113
- const resource = new aws_gamelift_1.CfnScript(this, 'Resource', {
114
- name: props.scriptName,
115
- version: props.scriptVersion,
116
- storageLocation: {
117
- bucket: content.s3Location && content.s3Location.bucketName,
118
- key: content.s3Location && content.s3Location.objectKey,
119
- objectVersion: content.s3Location && content.s3Location.objectVersion,
120
- roleArn: this.role.roleArn,
121
- },
122
- });
123
- this.scriptId = this.getResourceNameAttribute(resource.ref);
124
- this.scriptArn = this.getResourceArnAttribute(resource.attrArn, {
125
- service: 'gamelift',
126
- resource: `script/${this.physicalName}`,
127
- arnFormat: cdk.ArnFormat.COLON_RESOURCE_NAME,
128
- });
129
- }
130
- };
188
+ static {
189
+ __runInitializers(_classThis, _classExtraInitializers);
190
+ }
191
+ };
192
+ return Script = _classThis;
193
+ })();
131
194
  exports.Script = Script;
132
- _b = JSII_RTTI_SYMBOL_1;
133
- Script[_b] = { fqn: "@aws-cdk/aws-gamelift-alpha.Script", version: "2.219.0-alpha.0" };
134
- /** Uniquely identifies this class. */
135
- Script.PROPERTY_INJECTION_ID = '@aws-cdk.aws-gamelift-alpha.Script';
136
- exports.Script = Script = Script_1 = __decorate([
137
- prop_injectable_1.propertyInjectable
138
- ], Script);
139
195
  /**
140
196
  * Given an opaque (token) ARN, returns a CloudFormation expression that extracts the script
141
197
  * identifier from the ARN.
@@ -153,4 +209,4 @@ function extractIdFromArn(arn) {
153
209
  const splitValue = cdk.Fn.select(5, cdk.Fn.split(':', arn));
154
210
  return cdk.Fn.select(1, cdk.Fn.split('/', splitValue));
155
211
  }
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NyaXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBMkM7QUFHM0Msd0NBQXdDO0FBRXhDLHVDQUFvQztBQUNwQywyREFBcUQ7QUFDckQsOEVBQThFO0FBQzlFLDBFQUEwRTtBQTJCMUU7O0dBRUc7QUFDSCxNQUFzQixVQUFXLFNBQVEsR0FBRyxDQUFDLFFBQVE7O0FBQXJELGdDQVFDOzs7QUFpRUQ7Ozs7Ozs7R0FPRztBQUVJLElBQU0sTUFBTSxjQUFaLE1BQU0sTUFBTyxTQUFRLFVBQVU7SUFJcEM7O09BRUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE1BQWtCLEVBQUUsR0FBVyxFQUFFLGFBQXNCO1FBQ3JHLE9BQU8sSUFBSSxRQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUMzQixPQUFPLEVBQUUsaUJBQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxhQUFhLENBQUM7U0FDeEQsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsSUFBWSxFQUFFLE9BQWdDO1FBQzNGLE9BQU8sSUFBSSxRQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUMzQixPQUFPLEVBQUUsaUJBQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztTQUMxQyxDQUFDLENBQUM7S0FDSjtJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxTQUFpQjtRQUNsRSxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztLQUM1RDtJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLG9CQUFv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QUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUU7WUFDOUQsT0FBTyxFQUFFLFVBQVU7WUFDbkIsUUFBUSxFQUFFLFVBQVUsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN2QyxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUI7U0FDN0MsQ0FBQyxDQUFDO0tBQ0o7O0FBOUdVLHdCQUFNOzs7QUFDakIsc0NBQXNDO0FBQ2YsNEJBQXFCLEdBQVcsb0NBQW9DLEFBQS9DLENBQWdEO2lCQUZqRixNQUFNO0lBRGxCLG9DQUFrQjtHQUNOLE1BQU0sQ0ErR2xCO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFXO0lBQ25DLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RCxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHMzX2Fzc2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gJy4vY29udGVudCc7XG5pbXBvcnQgeyBDZm5TY3JpcHQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2FtZWxpZnQnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuXG4vKipcbiAqIFlvdXIgY29uZmlndXJhdGlvbiBhbmQgY3VzdG9tIGdhbWUgbG9naWMgZm9yIHVzZSB3aXRoIFJlYWx0aW1lIFNlcnZlcnMuXG4gKiBSZWFsdGltZSBTZXJ2ZXJzIGFyZSBwcm92aWRlZCBieSBHYW1lTGlmdCB0byB1c2UgaW5zdGVhZCBvZiBhIGN1c3RvbS1idWlsdCBnYW1lIHNlcnZlci5cbiAqIFlvdSBjb25maWd1cmUgUmVhbHRpbWUgU2VydmVycyBmb3IgeW91ciBnYW1lIGNsaWVudHMgYnkgY3JlYXRpbmcgYSBzY3JpcHQgdXNpbmcgSmF2YVNjcmlwdCxcbiAqIGFuZCBhZGQgY3VzdG9tIGdhbWUgbG9naWMgYXMgYXBwcm9wcmlhdGUgdG8gaG9zdCBnYW1lIHNlc3Npb25zIGZvciB5b3VyIHBsYXllcnMuXG4gKiBZb3UgdXBsb2FkIHRoZSBSZWFsdGltZSBzY3JpcHQgdG8gdGhlIEdhbWVMaWZ0IHNlcnZpY2UgaW4gdGhlIFJlZ2lvbnMgd2hlcmUgeW91IHBsYW4gdG8gc2V0IHVwIGZsZWV0cy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nYW1lbGlmdC9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvcmVhbHRpbWUtc2NyaXB0LXVwbG9hZGluZy5odG1sXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNjcmlwdCBleHRlbmRzIGNkay5JUmVzb3VyY2UsIGlhbS5JR3JhbnRhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSBJZGVudGlmaWVyIG9mIHRoZSByZWFsdGltZSBzZXJ2ZXIgc2NyaXB0LlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzY3JpcHRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSByZWFsdGltZSBzZXJ2ZXIgc2NyaXB0LlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzY3JpcHRBcm46IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBuZXcgYW5kIGltcG9ydGVkIEdhbWVMaWZ0IHJlYWx0aW1lIHNlcnZlciBzY3JpcHQuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTY3JpcHRCYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSVNjcmlwdCB7XG4gIC8qKlxuICAgKiBUaGUgSWRlbnRpZmllciBvZiB0aGUgcmVhbHRpbWUgc2VydmVyIHNjcmlwdC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBzY3JpcHRJZDogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgc2NyaXB0QXJuOiBzdHJpbmc7XG5cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGdyYW50UHJpbmNpcGFsOiBpYW0uSVByaW5jaXBhbDtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgU2NyaXB0IGNvbnRlbnQgZGVmaW5lZCBvdXRzaWRlIG9mIHRoaXMgc3RhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NyaXB0QXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSByZWFsdGltZSBzZXJ2ZXIgc2NyaXB0XG4gICAqL1xuICByZWFkb25seSBzY3JpcHRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElBTSByb2xlIGFzc3VtZWQgYnkgR2FtZUxpZnQgdG8gYWNjZXNzIHNlcnZlciBzY3JpcHQgaW4gUzMuXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgbmV3IHJlYWx0aW1lIHNlcnZlciBzY3JpcHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY3JpcHRQcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgcmVhbHRpbWUgc2VydmVyIHNjcmlwdFxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBuYW1lXG4gICAqL1xuICByZWFkb25seSBzY3JpcHROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHRoaXMgcmVhbHRpbWUgc2VydmVyIHNjcmlwdFxuICAgKlxuICAgKiBAZGVmYXVsdCBObyB2ZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBzY3JpcHRWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2FtZSBjb250ZW50XG4gICAqL1xuICByZWFkb25seSBjb250ZW50OiBDb250ZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgSUFNIHJvbGUgYXNzdW1lZCBieSBHYW1lTGlmdCB0byBhY2Nlc3Mgc2VydmVyIHNjcmlwdCBpbiBTMy5cbiAgICogSWYgcHJvdmlkaW5nIGEgY3VzdG9tIHJvbGUsIGl0IG5lZWRzIHRvIHRydXN0IHRoZSBHYW1lTGlmdCBzZXJ2aWNlIHByaW5jaXBhbCAoZ2FtZWxpZnQuYW1hem9uYXdzLmNvbSkgYW5kIGJlIGdyYW50ZWQgc3VmZmljaWVudCBwZXJtaXNzaW9uc1xuICAgKiB0byBoYXZlIFJlYWQgYWNjZXNzIHRvIGEgc3BlY2lmaWMga2V5IGNvbnRlbnQgaW50byBhIHNwZWNpZmljIFMzIGJ1Y2tldC5cbiAgICogQmVsb3cgYW4gZXhhbXBsZSBvZiByZXF1aXJlZCBwZXJtaXNzaW9uOlxuICAgKiB7XG4gICAqICBcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG4gICAqICBcIlN0YXRlbWVudFwiOiBbe1xuICAgKiAgICAgICAgXCJFZmZlY3RcIjogXCJBbGxvd1wiLFxuICAgKiAgICAgICAgXCJBY3Rpb25cIjogW1xuICAgKiAgICAgICAgICAgIFwiczM6R2V0T2JqZWN0XCIsXG4gICAqICAgICAgICAgICAgXCJzMzpHZXRPYmplY3RWZXJzaW9uXCJcbiAgICogICAgICAgIF0sXG4gICAqICAgICAgICBcIlJlc291cmNlXCI6IFwiYXJuOmF3czpzMzo6OmJ1Y2tldC1uYW1lL29iamVjdC1uYW1lXCJcbiAgICogIH1dXG4gICAqIH1cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2FtZWxpZnQvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3NlY3VyaXR5X2lhbV9pZC1iYXNlZC1wb2xpY3ktZXhhbXBsZXMuaHRtbCNzZWN1cml0eV9pYW1faWQtYmFzZWQtcG9saWN5LWV4YW1wbGVzLWFjY2Vzcy1zdG9yYWdlLWxvY1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgcm9sZSB3aWxsIGJlIGNyZWF0ZWQgd2l0aCBkZWZhdWx0IHBlcm1pc3Npb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcbn1cblxuLyoqXG4gKiBBIEdhbWVMaWZ0IHNjcmlwdCwgdGhhdCBpcyBpbnN0YWxsZWQgYW5kIHJ1bnMgb24gaW5zdGFuY2VzIGluIGFuIEFtYXpvbiBHYW1lTGlmdCBmbGVldC4gSXQgY29uc2lzdHMgb2ZcbiAqIGEgemlwIGZpbGUgd2l0aCBhbGwgb2YgdGhlIGNvbXBvbmVudHMgb2YgdGhlIHJlYWx0aW1lIGdhbWUgc2VydmVyIHNjcmlwdC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nYW1lbGlmdC9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvcmVhbHRpbWUtc2NyaXB0LXVwbG9hZGluZy5odG1sXG4gKlxuICogQHJlc291cmNlIEFXUzo6R2FtZUxpZnQ6OlNjcmlwdFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgU2NyaXB0IGV4dGVuZHMgU2NyaXB0QmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWdhbWVsaWZ0LWFscGhhLlNjcmlwdCc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyByZWFsdGltZSBzZXJ2ZXIgc2NyaXB0IGZyb20gczMgY29udGVudFxuICAgKi9cbiAgc3RhdGljIGZyb21CdWNrZXQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYnVja2V0OiBzMy5JQnVja2V0LCBrZXk6IHN0cmluZywgb2JqZWN0VmVyc2lvbj86IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgU2NyaXB0KHNjb3BlLCBpZCwge1xuICAgICAgY29udGVudDogQ29udGVudC5mcm9tQnVja2V0KGJ1Y2tldCwga2V5LCBvYmplY3RWZXJzaW9uKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcmVhbHRpbWUgc2VydmVyIHNjcmlwdCBmcm9tIGFzc2V0IGNvbnRlbnRcbiAgICovXG4gIHN0YXRpYyBmcm9tQXNzZXQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcGF0aDogc3RyaW5nLCBvcHRpb25zPzogczNfYXNzZXRzLkFzc2V0T3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgU2NyaXB0KHNjb3BlLCBpZCwge1xuICAgICAgY29udGVudDogQ29udGVudC5mcm9tQXNzZXQocGF0aCwgb3B0aW9ucyksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGEgc2NyaXB0IGludG8gQ0RLIHVzaW5nIGl0cyBBUk5cbiAgICovXG4gIHN0YXRpYyBmcm9tU2NyaXB0QXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHNjcmlwdEFybjogc3RyaW5nKTogSVNjcmlwdCB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbVNjcmlwdEF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHNjcmlwdEFybiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgcmVhbHRpbWUgc2VydmVyIHNjcmlwdCBmcm9tIGl0cyBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgc3RhdGljIGZyb21TY3JpcHRBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBTY3JpcHRBdHRyaWJ1dGVzKTogSVNjcmlwdCB7XG4gICAgY29uc3Qgc2NyaXB0QXJuID0gYXR0cnMuc2NyaXB0QXJuO1xuICAgIGNvbnN0IHNjcmlwdElkID0gZXh0cmFjdElkRnJvbUFybihhdHRycy5zY3JpcHRBcm4pO1xuICAgIGNvbnN0IHJvbGUgPSBhdHRycy5yb2xlO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgU2NyaXB0QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2NyaXB0QXJuID0gc2NyaXB0QXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHNjcmlwdElkID0gc2NyaXB0SWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6aWFtLklQcmluY2lwYWw7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcm9sZSA9IHJvbGU7XG5cbiAgICAgIGNvbnN0cnVjdG9yKHM6IENvbnN0cnVjdCwgaTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHMsIGksIHtcbiAgICAgICAgICBlbnZpcm9ubWVudEZyb21Bcm46IHNjcmlwdEFybixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ncmFudFByaW5jaXBhbCA9IHRoaXMucm9sZSB8fCBuZXcgaWFtLlVua25vd25QcmluY2lwYWwoeyByZXNvdXJjZTogdGhpcyB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBJZGVudGlmaWVyIG9mIHRoZSByZWFsdGltZSBzZXJ2ZXIgc2NyaXB0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNjcmlwdElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHJlYWx0aW1lIHNlcnZlciBzY3JpcHQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2NyaXB0QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJQU0gcm9sZSBHYW1lTGlmdCBhc3N1bWVzIHRvIGFjY2Nlc3Mgc2VydmVyIHNjcmlwdCBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIHByaW5jaXBhbCB0aGlzIEdhbWVMaWZ0IHNjcmlwdCBpcyB1c2luZy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBncmFudFByaW5jaXBhbDogaWFtLklQcmluY2lwYWw7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNjcmlwdFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLnNjcmlwdE5hbWUsXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMuc2NyaXB0TmFtZSAmJiAhY2RrLlRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5zY3JpcHROYW1lKSkge1xuICAgICAgaWYgKHByb3BzLnNjcmlwdE5hbWUubGVuZ3RoID4gMTAyNCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNjcmlwdCBuYW1lIGNhbiBub3QgYmUgbG9uZ2VyIHRoYW4gMTAyNCBjaGFyYWN0ZXJzIGJ1dCBoYXMgJHtwcm9wcy5zY3JpcHROYW1lLmxlbmd0aH0gY2hhcmFjdGVycy5gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yb2xlID0gcHJvcHMucm9sZSA/PyBuZXcgaWFtLlJvbGUodGhpcywgJ1NlcnZpY2VSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2dhbWVsaWZ0LmFtYXpvbmF3cy5jb20nKSxcbiAgICB9KTtcbiAgICB0aGlzLmdyYW50UHJpbmNpcGFsID0gdGhpcy5yb2xlO1xuICAgIGNvbnN0IGNvbnRlbnQgPSBwcm9wcy5jb250ZW50LmJpbmQodGhpcywgdGhpcy5yb2xlKTtcblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IENmblNjcmlwdCh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiBwcm9wcy5zY3JpcHROYW1lLFxuICAgICAgdmVyc2lvbjogcHJvcHMuc2NyaXB0VmVyc2lvbixcbiAgICAgIHN0b3JhZ2VMb2NhdGlvbjoge1xuICAgICAgICBidWNrZXQ6IGNvbnRlbnQuczNMb2NhdGlvbiAmJiBjb250ZW50LnMzTG9jYXRpb24uYnVja2V0TmFtZSxcbiAgICAgICAga2V5OiBjb250ZW50LnMzTG9jYXRpb24gJiYgY29udGVudC5zM0xvY2F0aW9uLm9iamVjdEtleSxcbiAgICAgICAgb2JqZWN0VmVyc2lvbjogY29udGVudC5zM0xvY2F0aW9uICYmIGNvbnRlbnQuczNMb2NhdGlvbi5vYmplY3RWZXJzaW9uLFxuICAgICAgICByb2xlQXJuOiB0aGlzLnJvbGUucm9sZUFybixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnNjcmlwdElkID0gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUocmVzb3VyY2UucmVmKTtcbiAgICB0aGlzLnNjcmlwdEFybiA9IHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUocmVzb3VyY2UuYXR0ckFybiwge1xuICAgICAgc2VydmljZTogJ2dhbWVsaWZ0JyxcbiAgICAgIHJlc291cmNlOiBgc2NyaXB0LyR7dGhpcy5waHlzaWNhbE5hbWV9YCxcbiAgICAgIGFybkZvcm1hdDogY2RrLkFybkZvcm1hdC5DT0xPTl9SRVNPVVJDRV9OQU1FLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogR2l2ZW4gYW4gb3BhcXVlICh0b2tlbikgQVJOLCByZXR1cm5zIGEgQ2xvdWRGb3JtYXRpb24gZXhwcmVzc2lvbiB0aGF0IGV4dHJhY3RzIHRoZSBzY3JpcHRcbiAqIGlkZW50aWZpZXIgZnJvbSB0aGUgQVJOLlxuICpcbiAqIFNjcmlwdCBBUk5zIGxvb2sgbGlrZSB0aGlzOlxuICpcbiAqICAgYXJuOmF3czpnYW1lbGlmdDpyZWdpb246YWNjb3VudC1pZDpzY3JpcHQvc2NyaXB0LWlkZW50aWZpZXJcbiAqXG4gKiAuLndoaWNoIG1lYW5zIHRoYXQgaW4gb3JkZXIgdG8gZXh0cmFjdCB0aGUgYHNjcmlwdC1pZGVudGlmaWVyYCBjb21wb25lbnQgZnJvbSB0aGUgQVJOLCB3ZSBjYW5cbiAqIHNwbGl0IHRoZSBBUk4gdXNpbmcgXCI6XCIgYW5kIHNlbGVjdCB0aGUgY29tcG9uZW50IGluIGluZGV4IDUgdGhlbiBzcGxpdCB1c2luZyBcIi9cIiBhbmQgc2VsZWN0IHRoZSBjb21wb25lbnQgaW4gaW5kZXggMS5cbiAqXG4gKiBAcmV0dXJucyB0aGUgc2NyaXB0IGlkZW50aWZpZXIgZnJvbSBoaXMgQVJOXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RJZEZyb21Bcm4oYXJuOiBzdHJpbmcpIHtcbiAgY29uc3Qgc3BsaXRWYWx1ZSA9IGNkay5Gbi5zZWxlY3QoNSwgY2RrLkZuLnNwbGl0KCc6JywgYXJuKSk7XG4gIHJldHVybiBjZGsuRm4uc2VsZWN0KDEsIGNkay5Gbi5zcGxpdCgnLycsIHNwbGl0VmFsdWUpKTtcbn1cbiJdfQ==
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NyaXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUEyQztBQUczQyx3Q0FBd0M7QUFFeEMsdUNBQW9DO0FBQ3BDLDJEQUFxRDtBQUNyRCw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBMkIxRTs7R0FFRztBQUNILE1BQXNCLFVBQVcsU0FBUSxHQUFHLENBQUMsUUFBUTs7O0FBQXJELGdDQVFDO0FBaUVEOzs7Ozs7O0dBT0c7SUFFVSxNQUFNOzRCQURsQixvQ0FBa0I7Ozs7c0JBQ1MsVUFBVTtzQkFBbEIsU0FBUSxXQUFVOzs7O1lBQXRDLDZLQStHQzs7Ozs7UUE5R0Msc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyxvQ0FBb0MsQ0FBQztRQUU1Rjs7V0FFRztRQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsTUFBa0IsRUFBRSxHQUFXLEVBQUUsYUFBc0I7WUFDckcsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUMzQixPQUFPLEVBQUUsaUJBQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxhQUFhLENBQUM7YUFDeEQsQ0FBQyxDQUFDO1NBQ0o7UUFFRDs7V0FFRztRQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsSUFBWSxFQUFFLE9BQWdDO1lBQzNGLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtnQkFDM0IsT0FBTyxFQUFFLGlCQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7YUFDMUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRDs7V0FFRztRQUNILE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsU0FBaUI7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Q0FBQyxVQUFVLENBQUMsU0FBUztvQkFDdkQsYUFBYSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxhQUFhO29CQUNyRSxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO2lCQUMzQjthQUNGLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO2dCQUM5RCxPQUFPLEVBQUUsVUFBVTtnQkFDbkIsUUFBUSxFQUFFLFVBQVUsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDdkMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsbUJBQW1CO2FBQzdDLENBQUMsQ0FBQztTQUNKOztZQTlHVSx1REFBTTs7Ozs7QUFBTix3QkFBTTtBQWlIbkI7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFXO0lBQ25DLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RCxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHMzX2Fzc2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gJy4vY29udGVudCc7XG5pbXBvcnQgeyBDZm5TY3JpcHQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2FtZWxpZnQnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuXG4vKipcbiAqIFlvdXIgY29uZmlndXJhdGlvbiBhbmQgY3VzdG9tIGdhbWUgbG9naWMgZm9yIHVzZSB3aXRoIFJlYWx0aW1lIFNlcnZlcnMuXG4gKiBSZWFsdGltZSBTZXJ2ZXJzIGFyZSBwcm92aWRlZCBieSBHYW1lTGlmdCB0byB1c2UgaW5zdGVhZCBvZiBhIGN1c3RvbS1idWlsdCBnYW1lIHNlcnZlci5cbiAqIFlvdSBjb25maWd1cmUgUmVhbHRpbWUgU2VydmVycyBmb3IgeW91ciBnYW1lIGNsaWVudHMgYnkgY3JlYXRpbmcgYSBzY3JpcHQgdXNpbmcgSmF2YVNjcmlwdCxcbiAqIGFuZCBhZGQgY3VzdG9tIGdhbWUgbG9naWMgYXMgYXBwcm9wcmlhdGUgdG8gaG9zdCBnYW1lIHNlc3Npb25zIGZvciB5b3VyIHBsYXllcnMuXG4gKiBZb3UgdXBsb2FkIHRoZSBSZWFsdGltZSBzY3JpcHQgdG8gdGhlIEdhbWVMaWZ0IHNlcnZpY2UgaW4gdGhlIFJlZ2lvbnMgd2hlcmUgeW91IHBsYW4gdG8gc2V0IHVwIGZsZWV0cy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nYW1lbGlmdC9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvcmVhbHRpbWUtc2NyaXB0LXVwbG9hZGluZy5odG1sXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNjcmlwdCBleHRlbmRzIGNkay5JUmVzb3VyY2UsIGlhbS5JR3JhbnRhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSBJZGVudGlmaWVyIG9mIHRoZSByZWFsdGltZSBzZXJ2ZXIgc2NyaXB0LlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzY3JpcHRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSByZWFsdGltZSBzZXJ2ZXIgc2NyaXB0LlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzY3JpcHRBcm46IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBuZXcgYW5kIGltcG9ydGVkIEdhbWVMaWZ0IHJlYWx0aW1lIHNlcnZlciBzY3JpcHQuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTY3JpcHRCYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSVNjcmlwdCB7XG4gIC8qKlxuICAgKiBUaGUgSWRlbnRpZmllciBvZiB0aGUgcmVhbHRpbWUgc2VydmVyIHNjcmlwdC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBzY3JpcHRJZDogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgc2NyaXB0QXJuOiBzdHJpbmc7XG5cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGdyYW50UHJpbmNpcGFsOiBpYW0uSVByaW5jaXBhbDtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgU2NyaXB0IGNvbnRlbnQgZGVmaW5lZCBvdXRzaWRlIG9mIHRoaXMgc3RhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NyaXB0QXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSByZWFsdGltZSBzZXJ2ZXIgc2NyaXB0XG4gICAqL1xuICByZWFkb25seSBzY3JpcHRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElBTSByb2xlIGFzc3VtZWQgYnkgR2FtZUxpZnQgdG8gYWNjZXNzIHNlcnZlciBzY3JpcHQgaW4gUzMuXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgbmV3IHJlYWx0aW1lIHNlcnZlciBzY3JpcHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY3JpcHRQcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgcmVhbHRpbWUgc2VydmVyIHNjcmlwdFxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBuYW1lXG4gICAqL1xuICByZWFkb25seSBzY3JpcHROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHRoaXMgcmVhbHRpbWUgc2VydmVyIHNjcmlwdFxuICAgKlxuICAgKiBAZGVmYXVsdCBObyB2ZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBzY3JpcHRWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2FtZSBjb250ZW50XG4gICAqL1xuICByZWFkb25seSBjb250ZW50OiBDb250ZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgSUFNIHJvbGUgYXNzdW1lZCBieSBHYW1lTGlmdCB0byBhY2Nlc3Mgc2VydmVyIHNjcmlwdCBpbiBTMy5cbiAgICogSWYgcHJvdmlkaW5nIGEgY3VzdG9tIHJvbGUsIGl0IG5lZWRzIHRvIHRydXN0IHRoZSBHYW1lTGlmdCBzZXJ2aWNlIHByaW5jaXBhbCAoZ2FtZWxpZnQuYW1hem9uYXdzLmNvbSkgYW5kIGJlIGdyYW50ZWQgc3VmZmljaWVudCBwZXJtaXNzaW9uc1xuICAgKiB0byBoYXZlIFJlYWQgYWNjZXNzIHRvIGEgc3BlY2lmaWMga2V5IGNvbnRlbnQgaW50byBhIHNwZWNpZmljIFMzIGJ1Y2tldC5cbiAgICogQmVsb3cgYW4gZXhhbXBsZSBvZiByZXF1aXJlZCBwZXJtaXNzaW9uOlxuICAgKiB7XG4gICAqICBcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG4gICAqICBcIlN0YXRlbWVudFwiOiBbe1xuICAgKiAgICAgICAgXCJFZmZlY3RcIjogXCJBbGxvd1wiLFxuICAgKiAgICAgICAgXCJBY3Rpb25cIjogW1xuICAgKiAgICAgICAgICAgIFwiczM6R2V0T2JqZWN0XCIsXG4gICAqICAgICAgICAgICAgXCJzMzpHZXRPYmplY3RWZXJzaW9uXCJcbiAgICogICAgICAgIF0sXG4gICAqICAgICAgICBcIlJlc291cmNlXCI6IFwiYXJuOmF3czpzMzo6OmJ1Y2tldC1uYW1lL29iamVjdC1uYW1lXCJcbiAgICogIH1dXG4gICAqIH1cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2FtZWxpZnQvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3NlY3VyaXR5X2lhbV9pZC1iYXNlZC1wb2xpY3ktZXhhbXBsZXMuaHRtbCNzZWN1cml0eV9pYW1faWQtYmFzZWQtcG9saWN5LWV4YW1wbGVzLWFjY2Vzcy1zdG9yYWdlLWxvY1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgcm9sZSB3aWxsIGJlIGNyZWF0ZWQgd2l0aCBkZWZhdWx0IHBlcm1pc3Npb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcbn1cblxuLyoqXG4gKiBBIEdhbWVMaWZ0IHNjcmlwdCwgdGhhdCBpcyBpbnN0YWxsZWQgYW5kIHJ1bnMgb24gaW5zdGFuY2VzIGluIGFuIEFtYXpvbiBHYW1lTGlmdCBmbGVldC4gSXQgY29uc2lzdHMgb2ZcbiAqIGEgemlwIGZpbGUgd2l0aCBhbGwgb2YgdGhlIGNvbXBvbmVudHMgb2YgdGhlIHJlYWx0aW1lIGdhbWUgc2VydmVyIHNjcmlwdC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nYW1lbGlmdC9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvcmVhbHRpbWUtc2NyaXB0LXVwbG9hZGluZy5odG1sXG4gKlxuICogQHJlc291cmNlIEFXUzo6R2FtZUxpZnQ6OlNjcmlwdFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgU2NyaXB0IGV4dGVuZHMgU2NyaXB0QmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWdhbWVsaWZ0LWFscGhhLlNjcmlwdCc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyByZWFsdGltZSBzZXJ2ZXIgc2NyaXB0IGZyb20gczMgY29udGVudFxuICAgKi9cbiAgc3RhdGljIGZyb21CdWNrZXQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYnVja2V0OiBzMy5JQnVja2V0LCBrZXk6IHN0cmluZywgb2JqZWN0VmVyc2lvbj86IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgU2NyaXB0KHNjb3BlLCBpZCwge1xuICAgICAgY29udGVudDogQ29udGVudC5mcm9tQnVja2V0KGJ1Y2tldCwga2V5LCBvYmplY3RWZXJzaW9uKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcmVhbHRpbWUgc2VydmVyIHNjcmlwdCBmcm9tIGFzc2V0IGNvbnRlbnRcbiAgICovXG4gIHN0YXRpYyBmcm9tQXNzZXQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcGF0aDogc3RyaW5nLCBvcHRpb25zPzogczNfYXNzZXRzLkFzc2V0T3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgU2NyaXB0KHNjb3BlLCBpZCwge1xuICAgICAgY29udGVudDogQ29udGVudC5mcm9tQXNzZXQocGF0aCwgb3B0aW9ucyksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGEgc2NyaXB0IGludG8gQ0RLIHVzaW5nIGl0cyBBUk5cbiAgICovXG4gIHN0YXRpYyBmcm9tU2NyaXB0QXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHNjcmlwdEFybjogc3RyaW5nKTogSVNjcmlwdCB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbVNjcmlwdEF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHNjcmlwdEFybiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgcmVhbHRpbWUgc2VydmVyIHNjcmlwdCBmcm9tIGl0cyBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgc3RhdGljIGZyb21TY3JpcHRBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBTY3JpcHRBdHRyaWJ1dGVzKTogSVNjcmlwdCB7XG4gICAgY29uc3Qgc2NyaXB0QXJuID0gYXR0cnMuc2NyaXB0QXJuO1xuICAgIGNvbnN0IHNjcmlwdElkID0gZXh0cmFjdElkRnJvbUFybihhdHRycy5zY3JpcHRBcm4pO1xuICAgIGNvbnN0IHJvbGUgPSBhdHRycy5yb2xlO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgU2NyaXB0QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2NyaXB0QXJuID0gc2NyaXB0QXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHNjcmlwdElkID0gc2NyaXB0SWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6aWFtLklQcmluY2lwYWw7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcm9sZSA9IHJvbGU7XG5cbiAgICAgIGNvbnN0cnVjdG9yKHM6IENvbnN0cnVjdCwgaTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHMsIGksIHtcbiAgICAgICAgICBlbnZpcm9ubWVudEZyb21Bcm46IHNjcmlwdEFybixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ncmFudFByaW5jaXBhbCA9IHRoaXMucm9sZSB8fCBuZXcgaWFtLlVua25vd25QcmluY2lwYWwoeyByZXNvdXJjZTogdGhpcyB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBJZGVudGlmaWVyIG9mIHRoZSByZWFsdGltZSBzZXJ2ZXIgc2NyaXB0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNjcmlwdElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHJlYWx0aW1lIHNlcnZlciBzY3JpcHQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2NyaXB0QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJQU0gcm9sZSBHYW1lTGlmdCBhc3N1bWVzIHRvIGFjY2Nlc3Mgc2VydmVyIHNjcmlwdCBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIHByaW5jaXBhbCB0aGlzIEdhbWVMaWZ0IHNjcmlwdCBpcyB1c2luZy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBncmFudFByaW5jaXBhbDogaWFtLklQcmluY2lwYWw7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNjcmlwdFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLnNjcmlwdE5hbWUsXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMuc2NyaXB0TmFtZSAmJiAhY2RrLlRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5zY3JpcHROYW1lKSkge1xuICAgICAgaWYgKHByb3BzLnNjcmlwdE5hbWUubGVuZ3RoID4gMTAyNCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNjcmlwdCBuYW1lIGNhbiBub3QgYmUgbG9uZ2VyIHRoYW4gMTAyNCBjaGFyYWN0ZXJzIGJ1dCBoYXMgJHtwcm9wcy5zY3JpcHROYW1lLmxlbmd0aH0gY2hhcmFjdGVycy5gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yb2xlID0gcHJvcHMucm9sZSA/PyBuZXcgaWFtLlJvbGUodGhpcywgJ1NlcnZpY2VSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2dhbWVsaWZ0LmFtYXpvbmF3cy5jb20nKSxcbiAgICB9KTtcbiAgICB0aGlzLmdyYW50UHJpbmNpcGFsID0gdGhpcy5yb2xlO1xuICAgIGNvbnN0IGNvbnRlbnQgPSBwcm9wcy5jb250ZW50LmJpbmQodGhpcywgdGhpcy5yb2xlKTtcblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IENmblNjcmlwdCh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiBwcm9wcy5zY3JpcHROYW1lLFxuICAgICAgdmVyc2lvbjogcHJvcHMuc2NyaXB0VmVyc2lvbixcbiAgICAgIHN0b3JhZ2VMb2NhdGlvbjoge1xuICAgICAgICBidWNrZXQ6IGNvbnRlbnQuczNMb2NhdGlvbiAmJiBjb250ZW50LnMzTG9jYXRpb24uYnVja2V0TmFtZSxcbiAgICAgICAga2V5OiBjb250ZW50LnMzTG9jYXRpb24gJiYgY29udGVudC5zM0xvY2F0aW9uLm9iamVjdEtleSxcbiAgICAgICAgb2JqZWN0VmVyc2lvbjogY29udGVudC5zM0xvY2F0aW9uICYmIGNvbnRlbnQuczNMb2NhdGlvbi5vYmplY3RWZXJzaW9uLFxuICAgICAgICByb2xlQXJuOiB0aGlzLnJvbGUucm9sZUFybixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnNjcmlwdElkID0gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUocmVzb3VyY2UucmVmKTtcbiAgICB0aGlzLnNjcmlwdEFybiA9IHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUocmVzb3VyY2UuYXR0ckFybiwge1xuICAgICAgc2VydmljZTogJ2dhbWVsaWZ0JyxcbiAgICAgIHJlc291cmNlOiBgc2NyaXB0LyR7dGhpcy5waHlzaWNhbE5hbWV9YCxcbiAgICAgIGFybkZvcm1hdDogY2RrLkFybkZvcm1hdC5DT0xPTl9SRVNPVVJDRV9OQU1FLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogR2l2ZW4gYW4gb3BhcXVlICh0b2tlbikgQVJOLCByZXR1cm5zIGEgQ2xvdWRGb3JtYXRpb24gZXhwcmVzc2lvbiB0aGF0IGV4dHJhY3RzIHRoZSBzY3JpcHRcbiAqIGlkZW50aWZpZXIgZnJvbSB0aGUgQVJOLlxuICpcbiAqIFNjcmlwdCBBUk5zIGxvb2sgbGlrZSB0aGlzOlxuICpcbiAqICAgYXJuOmF3czpnYW1lbGlmdDpyZWdpb246YWNjb3VudC1pZDpzY3JpcHQvc2NyaXB0LWlkZW50aWZpZXJcbiAqXG4gKiAuLndoaWNoIG1lYW5zIHRoYXQgaW4gb3JkZXIgdG8gZXh0cmFjdCB0aGUgYHNjcmlwdC1pZGVudGlmaWVyYCBjb21wb25lbnQgZnJvbSB0aGUgQVJOLCB3ZSBjYW5cbiAqIHNwbGl0IHRoZSBBUk4gdXNpbmcgXCI6XCIgYW5kIHNlbGVjdCB0aGUgY29tcG9uZW50IGluIGluZGV4IDUgdGhlbiBzcGxpdCB1c2luZyBcIi9cIiBhbmQgc2VsZWN0IHRoZSBjb21wb25lbnQgaW4gaW5kZXggMS5cbiAqXG4gKiBAcmV0dXJucyB0aGUgc2NyaXB0IGlkZW50aWZpZXIgZnJvbSBoaXMgQVJOXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RJZEZyb21Bcm4oYXJuOiBzdHJpbmcpIHtcbiAgY29uc3Qgc3BsaXRWYWx1ZSA9IGNkay5Gbi5zZWxlY3QoNSwgY2RrLkZuLnNwbGl0KCc6JywgYXJuKSk7XG4gIHJldHVybiBjZGsuRm4uc2VsZWN0KDEsIGNkay5Gbi5zcGxpdCgnLycsIHNwbGl0VmFsdWUpKTtcbn1cbiJdfQ==