@aws-cdk/toolkit-lib 1.25.0 → 1.25.1
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/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/api/deployments/deploy-stack.js +2 -1
- package/lib/api/diagnosing/{early-validation.d.ts → changeset-error-fetcher.d.ts} +10 -8
- package/lib/api/diagnosing/changeset-error-fetcher.js +83 -0
- package/lib/api/diagnosing/diagnosis-formatting.js +7 -6
- package/lib/api/diagnosing/stack-diagnoser.d.ts +7 -0
- package/lib/api/diagnosing/stack-diagnoser.js +51 -35
- package/lib/api/diagnosing/tree-builder.d.ts +2 -1
- package/lib/api/diagnosing/tree-builder.js +5 -5
- package/lib/api/diagnosing/tree.d.ts +10 -4
- package/lib/api/diagnosing/tree.js +23 -12
- package/lib/api/stack-events/stack-activity-monitor.js +2 -2
- package/lib/api/stack-events/stack-progress-monitor.d.ts +2 -2
- package/lib/api/stack-events/stack-progress-monitor.js +8 -2
- package/lib/index_bg.wasm +0 -0
- package/package.json +9 -9
- package/lib/api/diagnosing/early-validation.js +0 -81
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CloudFormationStackDiagnoser = void 0;
|
|
4
4
|
exports.changeSetHasNoChanges = changeSetHasNoChanges;
|
|
5
5
|
const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
|
|
6
|
-
const
|
|
6
|
+
const changeset_error_fetcher_1 = require("./changeset-error-fetcher");
|
|
7
7
|
const stack_events_1 = require("../stack-events");
|
|
8
8
|
const stack_status_1 = require("../stack-events/stack-status");
|
|
9
9
|
/**
|
|
@@ -133,36 +133,21 @@ class CloudFormationStackDiagnoser {
|
|
|
133
133
|
// This will lead to a change set that is FAILED but it's not actually a problem
|
|
134
134
|
return { type: 'no-problem' };
|
|
135
135
|
}
|
|
136
|
+
// We report early validation errors differently than generic changeset errors. Mostly
|
|
137
|
+
// for historical reasons.
|
|
136
138
|
const isEarlyValidationError = changeSet.StatusReason?.includes('AWS::EarlyValidation');
|
|
137
139
|
if (isEarlyValidationError) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
// Emit the warning here and otherwise just return an empty error block
|
|
143
|
-
await this.props.ioHelper.defaults.warn(ev.message);
|
|
144
|
-
return {
|
|
145
|
-
type: 'problem',
|
|
146
|
-
detectedBy: {
|
|
147
|
-
type: 'early-validation',
|
|
148
|
-
changeSetName: changeSet.ChangeSetName ?? '',
|
|
149
|
-
},
|
|
150
|
-
problems: [],
|
|
151
|
-
};
|
|
152
|
-
case 'resource-errors':
|
|
153
|
-
return {
|
|
154
|
-
type: 'problem',
|
|
155
|
-
detectedBy: {
|
|
156
|
-
type: 'early-validation',
|
|
157
|
-
changeSetName: changeSet.ChangeSetName ?? '',
|
|
158
|
-
},
|
|
159
|
-
problems: await this.addErrorTraces(ev.errors.map((e) => resourceErrorFromEarlyValidationError(changeSet.StackId ?? '', this.parentStackLogicalIds, e))),
|
|
160
|
-
};
|
|
161
|
-
}
|
|
140
|
+
return this._reportChangeSetFailureFromEvents(changeSet, {
|
|
141
|
+
type: 'early-validation',
|
|
142
|
+
changeSetName: changeSet.ChangeSetName ?? '',
|
|
143
|
+
});
|
|
162
144
|
}
|
|
145
|
+
// We will recurse into nested change sets if necessary.
|
|
163
146
|
if (changeSet.StatusReason?.includes('Nested change set')) {
|
|
164
147
|
return this._diagnoseNestedChangeSetFailure(changeSet);
|
|
165
148
|
}
|
|
149
|
+
// We special-case failed automatic imports. We know all the meat of the error details are in the
|
|
150
|
+
// status reason, and nowhere else. We parse it specifically.
|
|
166
151
|
const failedAutoErrors = this._tryDetectFailedAutoImport(changeSet);
|
|
167
152
|
if (failedAutoErrors) {
|
|
168
153
|
return {
|
|
@@ -176,7 +161,38 @@ class CloudFormationStackDiagnoser {
|
|
|
176
161
|
problems: await this.addErrorTraces(failedAutoErrors),
|
|
177
162
|
};
|
|
178
163
|
}
|
|
179
|
-
|
|
164
|
+
// Otherwise, a generic change set creation error where `DescribeEvents`
|
|
165
|
+
// might or might not give additional information.
|
|
166
|
+
return this._reportChangeSetFailureFromEvents(changeSet, {
|
|
167
|
+
type: 'change-set',
|
|
168
|
+
changeSetStatus: changeSet.Status ?? '',
|
|
169
|
+
changeSetName: changeSet.ChangeSetName ?? '',
|
|
170
|
+
statusReason: changeSet.StatusReason ?? '',
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Try to read the resource-specific reasons for a changeset failure from `DescribeEvents`.
|
|
175
|
+
*
|
|
176
|
+
* If we couldn't read the events or there are 0 errors returned by that API, return a generic
|
|
177
|
+
* error.
|
|
178
|
+
*/
|
|
179
|
+
async _reportChangeSetFailureFromEvents(changeSet, detectedBy) {
|
|
180
|
+
const ev = await new changeset_error_fetcher_1.ChangeSetResourceErrorFetcher(this.props.sdk, this.props.envResources)
|
|
181
|
+
.fetchDetailsStructured(changeSet.ChangeSetName, changeSet.StackName);
|
|
182
|
+
// If we have errors to return, return them
|
|
183
|
+
if (ev.type === 'resource-errors' && ev.errors.length > 0) {
|
|
184
|
+
return {
|
|
185
|
+
type: 'problem',
|
|
186
|
+
detectedBy,
|
|
187
|
+
problems: await this.addErrorTraces(ev.errors.map((e) => resourceErrorFromEarlyValidationError(changeSet.StackId ?? '', this.parentStackLogicalIds, e))),
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
// Otherwise, we will return a generic changeset error message. If there was a problem
|
|
191
|
+
// checking, we log that for good measure but the result is the same.
|
|
192
|
+
if (ev.type === 'could-not-check') {
|
|
193
|
+
await this.props.ioHelper.defaults.warn(ev.message);
|
|
194
|
+
}
|
|
195
|
+
return this._nonSpecificChangeSetError(changeSet, detectedBy);
|
|
180
196
|
}
|
|
181
197
|
async addErrorTraces(errs) {
|
|
182
198
|
// eslint-disable-next-line @cdklabs/promiseall-no-unbounded-parallelism
|
|
@@ -197,15 +213,10 @@ class CloudFormationStackDiagnoser {
|
|
|
197
213
|
*
|
|
198
214
|
* We can't point to a specific resource.
|
|
199
215
|
*/
|
|
200
|
-
async _nonSpecificChangeSetError(changeSet) {
|
|
216
|
+
async _nonSpecificChangeSetError(changeSet, detectedBy) {
|
|
201
217
|
return {
|
|
202
218
|
type: 'problem',
|
|
203
|
-
detectedBy
|
|
204
|
-
type: 'change-set',
|
|
205
|
-
changeSetName: changeSet.ChangeSetName ?? '',
|
|
206
|
-
changeSetStatus: changeSet.Status ?? '',
|
|
207
|
-
statusReason: changeSet.StatusReason ?? '',
|
|
208
|
-
},
|
|
219
|
+
detectedBy,
|
|
209
220
|
problems: [
|
|
210
221
|
await this.addErrorTrace({
|
|
211
222
|
// It's about a stack
|
|
@@ -226,7 +237,12 @@ class CloudFormationStackDiagnoser {
|
|
|
226
237
|
const nested = await this._findFailedNestedStack(changeSet);
|
|
227
238
|
if (!nested) {
|
|
228
239
|
// That's weird. Let's return the change set's status reason as a non-specific error
|
|
229
|
-
return this._nonSpecificChangeSetError(changeSet
|
|
240
|
+
return this._nonSpecificChangeSetError(changeSet, {
|
|
241
|
+
type: 'change-set',
|
|
242
|
+
changeSetName: changeSet.ChangeSetName ?? '',
|
|
243
|
+
changeSetStatus: changeSet.Status ?? '',
|
|
244
|
+
statusReason: changeSet.StatusReason ?? '',
|
|
245
|
+
});
|
|
230
246
|
}
|
|
231
247
|
const nestedCs = await this.cfn.describeChangeSet({
|
|
232
248
|
ChangeSetName: nested.changeSetName,
|
|
@@ -335,4 +351,4 @@ function resourceErrorFromEarlyValidationError(stackId, parentStackLogicalIds, e
|
|
|
335
351
|
stackArn: stackId,
|
|
336
352
|
};
|
|
337
353
|
}
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stZGlhZ25vc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhY2stZGlhZ25vc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQThXQSxzREFXQztBQXhYRCwwRUFBNkU7QUFFN0UseURBQTZEO0FBTTdELGtEQUE4RDtBQUU5RCwrREFBMkQ7QUFVM0Q7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBYSw0QkFBNEI7SUFJVjtJQUhaLEdBQUcsQ0FBd0I7SUFDcEMscUJBQXFCLENBQVc7SUFFeEMsWUFBNkIsS0FBd0M7UUFBeEMsVUFBSyxHQUFMLEtBQUssQ0FBbUM7UUFDbkUsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFpQjtRQUM5QyxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDekUsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxPQUFPO29CQUNMLElBQUksRUFBRSxrQkFBa0I7b0JBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsU0FBUyxZQUFZO2lCQUNsRCxDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLDBCQUFXLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkQsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3hCLE9BQU87b0JBQ0wsSUFBSSxFQUFFLGtCQUFrQjtvQkFDeEIsT0FBTyxFQUFF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QUFFLENBQUMsWUFBWSxHQUFHO1FBQ2hELFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRTtRQUNqRCxxQkFBcUI7UUFDckIsUUFBUSxFQUFFLE9BQU87S0FDbEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENoYW5nZVNldFN1bW1hcnksIFN0YWNrIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IENoYW5nZVNldFN0YXR1cywgQ2hhbmdlVHlwZSB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgdHlwZSB7IEVhcmx5VmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi9lYXJseS12YWxpZGF0aW9uJztcbmltcG9ydCB7IEVhcmx5VmFsaWRhdGlvblJlcG9ydGVyIH0gZnJvbSAnLi9lYXJseS12YWxpZGF0aW9uJztcbmltcG9ydCB0eXBlIHsgU3RhY2tEaWFnbm9zaXMsIFRyYWNlZFJlc291cmNlRXJyb3IgfSBmcm9tICcuLi8uLi9hY3Rpb25zL2RpYWdub3NlJztcbmltcG9ydCB0eXBlIHsgSUNsb3VkRm9ybWF0aW9uQ2xpZW50LCBTREsgfSBmcm9tICcuLi9hd3MtYXV0aC9zZGsnO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudFJlc291cmNlcyB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB0eXBlIHsgSW9IZWxwZXIgfSBmcm9tICcuLi9pby9wcml2YXRlL2lvLWhlbHBlcic7XG5pbXBvcnQgdHlwZSB7IElTb3VyY2VUcmFjZXIgfSBmcm9tICcuLi9zb3VyY2UtdHJhY2luZy9wcml2YXRlL3NvdXJjZS10cmFjaW5nJztcbmltcG9ydCB7IFBvbGxSYW5nZSwgU3RhY2tFdmVudFBvbGxlciB9IGZyb20gJy4uL3N0YWNrLWV2ZW50cyc7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlRXJyb3IsIFJlc291cmNlRXJyb3JzIH0gZnJvbSAnLi4vc3RhY2stZXZlbnRzL3Jlc291cmNlLWVycm9ycyc7XG5pbXBvcnQgeyBTdGFja1N0YXR1cyB9IGZyb20gJy4uL3N0YWNrLWV2ZW50cy9zdGFjay1zdGF0dXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkRm9ybWF0aW9uU3RhY2tEaWFnbm9zZXJQcm9wcyB7XG4gIHJlYWRvbmx5IHNkazogU0RLO1xuICByZWFkb25seSBlbnZSZXNvdXJjZXM/OiBFbnZpcm9ubWVudFJlc291cmNlcztcbiAgcmVhZG9ubHkgc291cmNlVHJhY2VyOiBJU291cmNlVHJhY2VyO1xuICByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXI7XG4gIHJlYWRvbmx5IHRvcExldmVsU3RhY2tIaWVyYXJjaGljYWxJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIERpYWdub3NlIGEgc3RhY2sncyBmYWlsZWQgc3RhdGVcbiAqXG4gKiAtIEZpcnN0LCBkZXRlcm1pbmUgdGhlIHN0YWNrJ3Mgc3RhdGUuXG4gKiAtIElmIGl0IGlzIGluIGEgZmFpbGVkIHN0YXRlLCB3ZSBzdGFydGVkIGEgZGVwbG95bWVudCB0aGF0IGZhaWxlZC4gRGVzY3JpYmUgdGhlIHN0YWNrXG4gKiAgIGV2ZW50cywgYW5kIHRyeSB0byBkZXRlcm1pbmUgdGhlIHJvb3QgY2F1c2UgZnJvbSB0aGF0LlxuICogLSBJZiBpdCBpcyBpbiBhIG5vcm1hbCBzdGF0ZSwgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZmFpbGVkIGNoYW5nZSBzZXRzLiBFaXRoZXJcbiAqICAgZ2V0IHRoZSBmYWlsdXJlIG1lc3NhZ2UgZnJvbSB0aGUgY2hhbmdlIHNldCwgb3IgZ2V0IHRoZSBmYWlsdXJlIGV2ZW50cyBmcm9tXG4gKiAgIHRoZSBjaGFuZ2Ugc2V0IChlYXJseSB2YWxpZGF0aW9uKS5cbiAqXG4gKiBUaGlzIGNsYXNzIHdvcmtzIGF0IHRoZSBDbG91ZEZvcm1hdGlvbiBsZXZlbCwgYW5kIGRvZXMgbm90IGRlYWwgd2l0aCB0cmFjaW5nXG4gKiBDbG91ZEZvcm1hdGlvbiBlcnJvcnMgdG8gY29uc3RydWN0IGNvZGUgc291cmNlcyB5ZXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDbG91ZEZvcm1hdGlvblN0YWNrRGlhZ25vc2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjZm46IElDbG91ZEZvcm1hdGlvbkNsaWVudDtcbiAgcHJpdmF0ZSBwYXJlbnRTdGFja0xvZ2ljYWxJZHM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IENsb3VkRm9ybWF0aW9uU3RhY2tEaWFnbm9zZXJQcm9wcykge1xuICAgIHRoaXMuY2ZuID0gdGhpcy5wcm9wcy5zZGsuY2xvdWRGb3JtYXRpb24oKTtcbiAgICB0aGlzLnBhcmVudFN0YWNrTG9naWNhbElkcyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIERpYWdub3NlIGEgc3RhY2sncyByb290IGNhdXNlIGdpdmVuIG5vIHByZS1leGlzdGluZyBzdGF0ZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRpYWdub3NlRnJvbUZyZXNoKHN0YWNrTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdGFja0RpYWdub3Npcz4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2ZuLmRlc2NyaWJlU3RhY2tzKHsgU3RhY2tOYW1lOiBzdGFja05hbWUgfSk7XG4gICAgICBjb25zdCBzdGFjayA9IHJlc3BvbnNlLlN0YWNrcz8uWzBdO1xuICAgICAgaWYgKCFzdGFjaykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6ICdlcnJvci1kaWFnbm9zaW5nJyxcbiAgICAgICAgICBtZXNzYWdlOiBgU3RhY2sgd2l0aCBuYW1lICR7c3RhY2tOYW1lfSBub3QgZm91bmRgLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdGF0dXMgPSBTdGFja1N0YXR1cy5mcm9tU3RhY2tEZXNjcmlwdGlvbihzdGFjayk7XG4gICAgICBpZiAoc3RhdHVzLmlzSW5Qcm9ncmVzcykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6ICdlcnJvci1kaWFnbm9zaW5nJyxcbiAgICAgICAgICBtZXNzYWdlOiBgU3RhY2sgd2l0aCBuYW1lICR7c3RhY2tOYW1lfSBpcyBjdXJyZW50bHkgYmVpbmcgdXBkYXRlZCAoJHtzdGF0dXMubmFtZX0pLiBUcnkgYWdhaW4gd2hlbiBpdCdzIGZpbmlzaGVkLmAsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0dXMuaXNGYWlsdXJlKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9kaWFnbm9zZVZpYVN0YWNrRXZlbnRzKHN0YWNrTmFtZSwgc3RhY2spO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5fZGlhZ25vc2VDaGFuZ2VTZXRGYWlsdXJlRnJvbVN0YWNrTmFtZShzdGFja05hbWUpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogJ2Vycm9yLWRpYWdub3NpbmcnLCBtZXNzYWdlOiBlLm1lc3NhZ2UgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGlhZ25vc2UgcG90ZW50aWFsIHByb2JsZW1zIHdpdGggdGhlIGNoYW5nZSBzZXRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBkaWFnbm9zZUNoYW5nZVNldChjaGFuZ2VTZXQ6IENoYW5nZVNldFN1bW1hcnkpOiBQcm9taXNlPFN0YWNrRGlhZ25vc2lzPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9kaWFnbm9zZUNoYW5nZVNldEZhaWx1cmUoY2hhbmdlU2V0KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdlcnJvci1kaWFnbm9zaW5nJywgbWVzc2FnZTogZS5tZXNzYWdlIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERpYWdub3NlIHBvdGVudGlhbCBwcm9ibGVtcyB3aXRoIHRoZSBjaGFuZ2Ugc2V0XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGlhZ25vc2VGcm9tRXJyb3JDb2xsZWN0aW9uKGVycm9yczogUmVzb3VyY2VFcnJvcnMsIHN0YWNrOiBTdGFjayk6IFByb21pc2U8U3RhY2tEaWFnbm9zaXM+IHtcbiAgICBpZiAoZXJyb3JzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogJ25vLXByb2JsZW0nIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdwcm9ibGVtJyxcbiAgICAgIGRldGVjdGVkQnk6IHtcbiAgICAgICAgdHlwZTogJ2RlcGxveW1lbnQnLFxuICAgICAgICBzdGFja1N0YXR1czogc3RhY2suU3RhY2tTdGF0dXMgPz8gJycsXG4gICAgICAgIHN0YXR1c1JlYXNvbjogc3RhY2suU3RhY2tTdGF0dXNSZWFzb24gPz8gJycsXG4gICAgICB9LFxuICAgICAgcHJvYmxlbXM6IGF3YWl0IHRoaXMuYWRkRXJyb3JUcmFjZXMoZXJyb3JzLmFsbCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaWFnbm9zZSBhIGRlcGxveW1lbnQgZmFpbHVyZSB2aWEgc3RhY2sgZXZlbnRzXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIHNhbWUgbG9naWMgdGhhdCB0aGUgZGVwbG95bWVudCBtb25pdG9yIHVzZXMuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9kaWFnbm9zZVZpYVN0YWNrRXZlbnRzKHN0YWNrTmFtZTogc3RyaW5nLCBzdGFjazogU3RhY2spOiBQcm9taXNlPFN0YWNrRGlhZ25vc2lzPiB7XG4gICAgY29uc3QgcG9sbGVyID0gbmV3IFN0YWNrRXZlbnRQb2xsZXIodGhpcy5jZm4sIHtcbiAgICAgIHN0YWNrTmFtZSxcbiAgICAgIGluaXRpYWxQb2xsUmFuZ2U6IFBvbGxSYW5nZS5tb3N0UmVjZW50T3BlcmF0aW9uKCksXG4gICAgfSk7XG5cbiAgICAvLyBXZSBkb24ndCBuZWVkIHRoZSByZXN1bHRpbmcgZXZlbnRzIG9mIHBvbGxpbmcuIFBvbGxpbmcgd2lsbCBhdXRvbWF0aWNhbGx5IHVwZGF0ZSB0aGUgZXJyb3IgY29sbGVjdGlvbixcbiAgICAvLyB3aGljaCBpcyB0aGUgdGhpbmcgd2UgY2FyZSBhYm91dC5cbiAgICBhd2FpdCBwb2xsZXIucG9sbCgpO1xuXG4gICAgcmV0dXJuIHRoaXMuZGlhZ25vc2VGcm9tRXJyb3JDb2xsZWN0aW9uKHBvbGxlci5lcnJvcnMsIHN0YWNrKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2RpYWdub3NlQ2hhbmdlU2V0RmFpbHVyZUZyb21TdGFja05hbWUoc3RhY2tOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0YWNrRGlhZ25vc2lzPiB7XG4gICAgY29uc3QgY3MgPSAoYXdhaXQgdGhpcy5jZm4ubGlzdENoYW5nZVNldHMoe1xuICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsXG4gICAgfSkpLlN1bW1hcmllcyA/PyBbXTtcblxuICAgIGNvbnN0IHBlbmRpbmcgPSBjcy5maWx0ZXIoeCA9PiB4LlN0YXR1cyA9PT0gQ2hhbmdlU2V0U3RhdHVzLkNSRUFURV9JTl9QUk9HUkVTUyB8fCB4LlN0YXR1cyA9PT0gQ2hhbmdlU2V0U3RhdHVzLkNSRUFURV9QRU5ESU5HKTtcbiAgICBpZiAocGVuZGluZy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAnZXJyb3ItZGlhZ25vc2luZycsXG4gICAgICAgIG1lc3NhZ2U6IGBTdGFjayB3aXRoIG5hbWUgJHtzdGFja05hbWV9IGhhcyBjaGFuZ2Ugc2V0cyBjdXJyZW50bHkgYmVpbmcgY3JlYXRlZCAoJHtwZW5kaW5nWzBdLkNoYW5nZVNldE5hbWV9KS4gVHJ5IGFnYWluIHdoZW4gaXQncyBmaW5pc2hlZC5gLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBmYWlsZWQgPSBjcy5maWx0ZXIoeCA9PiB4LlN0YXR1cyA9PT0gQ2hhbmdlU2V0U3RhdHVzLkZBSUxFRCk7XG4gICAgaWYgKGZhaWxlZC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7IHR5cGU6ICduby1wcm9ibGVtJyB9O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9kaWFnbm9zZUNoYW5nZVNldEZhaWx1cmUoZmFpbGVkWzBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcnkgdG8gZGlhZ25vc2UgdGhlIHJlYXNvbiB0aGF0IGNhdXNlZCBhIGNoYW5nZXNldCB0byBmYWlsIHRvIGNyZWF0ZVxuICAgKlxuICAgKiBUaGVyZSBhcmUgYSBjb3VwbGUgb2YgZGlmZmVyZW50IHJlYXNvbnMgdGhpcyBjYW4gaGFwcGVuLCBhbmQgd2UgZ28gdGhyb3VnaCBlYWNoIG9mIHRoZW0gaW4gb3JkZXIuXG4gICAqXG4gICAqIFVzdWFsbHkgdGhpcyBzdGFydHMgZnJvbSB0cnlpbmcgdG8gZGV0ZWN0IGFuIGVycm9yIG1lc3NhZ2UgcGF0dGVybiBpbiB0aGUgY2hhbmdlIHNldCBzdGF0dXMgcmVhc29uLFxuICAgKiBhbmQgdGhlbiBwb3RlbnRpYWxseSBnb2luZyB0byBmZXRjaCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHVzaW5nIGFkZGl0aW9uYWwgQVBJIGNhbGxzLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBfZGlhZ25vc2VDaGFuZ2VTZXRGYWlsdXJlKGNoYW5nZVNldDogQ2hhbmdlU2V0U3VtbWFyeSk6IFByb21pc2U8U3RhY2tEaWFnbm9zaXM+IHtcbiAgICBpZiAoY2hhbmdlU2V0LlN0YXR1cyAhPT0gQ2hhbmdlU2V0U3RhdHVzLkZBSUxFRCkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogJ25vLXByb2JsZW0nIH07XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZVNldEhhc05vQ2hhbmdlcyhjaGFuZ2VTZXQpKSB7XG4gICAgICAvLyBUaGlzIHdpbGwgbGVhZCB0byBhIGNoYW5nZSBzZXQgdGhhdCBpcyBGQUlMRUQgYnV0IGl0J3Mgbm90IGFjdHVhbGx5IGEgcHJvYmxlbVxuICAgICAgcmV0dXJuIHsgdHlwZTogJ25vLXByb2JsZW0nIH07XG4gICAgfVxuXG4gICAgY29uc3QgaXNFYXJseVZhbGlkYXRpb25FcnJvciA9IGNoYW5nZVNldC5TdGF0dXNSZWFzb24/LmluY2x1ZGVzKCdBV1M6OkVhcmx5VmFsaWRhdGlvbicpO1xuICAgIGlmIChpc0Vhcmx5VmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICBjb25zdCBldiA9IGF3YWl0IG5ldyBFYXJseVZhbGlkYXRpb25SZXBvcnRlcih0aGlzLnByb3BzLnNkaywgdGhpcy5wcm9wcy5lbnZSZXNvdXJjZXMpXG4gICAgICAgIC5mZXRjaERldGFpbHNTdHJ1Y3R1cmVkKGNoYW5nZVNldC5DaGFuZ2VTZXROYW1lISwgY2hhbmdlU2V0LlN0YWNrTmFtZSEpO1xuICAgICAgc3dpdGNoIChldi50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2NvdWxkLW5vdC1jaGVjayc6XG4gICAgICAgICAgLy8gRW1pdCB0aGUgd2FybmluZyBoZXJlIGFuZCBvdGhlcndpc2UganVzdCByZXR1cm4gYW4gZW1wdHkgZXJyb3IgYmxvY2tcbiAgICAgICAgICBhd2FpdCB0aGlzLnByb3BzLmlvSGVscGVyLmRlZmF1bHRzLndhcm4oZXYubWVzc2FnZSk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdwcm9ibGVtJyxcbiAgICAgICAgICAgIGRldGVjdGVkQnk6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ2Vhcmx5LXZhbGlkYXRpb24nLFxuICAgICAgICAgICAgICBjaGFuZ2VTZXROYW1lOiBjaGFuZ2VTZXQuQ2hhbmdlU2V0TmFtZSA/PyAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9ibGVtczogW10sXG4gICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAncmVzb3VyY2UtZXJyb3JzJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ3Byb2JsZW0nLFxuICAgICAgICAgICAgZGV0ZWN0ZWRCeToge1xuICAgICAgICAgICAgICB0eXBlOiAnZWFybHktdmFsaWRhdGlvbicsXG4gICAgICAgICAgICAgIGNoYW5nZVNldE5hbWU6IGNoYW5nZVNldC5DaGFuZ2VTZXROYW1lID8/ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByb2JsZW1zOiBhd2FpdCB0aGlzLmFkZEVycm9yVHJhY2VzKGV2LmVycm9ycy5tYXAoKGUpID0+IHJlc291cmNlRXJyb3JGcm9tRWFybHlWYWxpZGF0aW9uRXJyb3IoY2hhbmdlU2V0LlN0YWNrSWQgPz8gJycsIHRoaXMucGFyZW50U3RhY2tMb2dpY2FsSWRzLCBlKSkpLFxuICAgICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZVNldC5TdGF0dXNSZWFzb24/LmluY2x1ZGVzKCdOZXN0ZWQgY2hhbmdlIHNldCcpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGlhZ25vc2VOZXN0ZWRDaGFuZ2VTZXRGYWlsdXJlKGNoYW5nZVNldCk7XG4gICAgfVxuXG4gICAgY29uc3QgZmFpbGVkQXV0b0Vycm9ycyA9IHRoaXMuX3RyeURldGVjdEZhaWxlZEF1dG9JbXBvcnQoY2hhbmdlU2V0KTtcbiAgICBpZiAoZmFpbGVkQXV0b0Vycm9ycykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3Byb2JsZW0nLFxuICAgICAgICBkZXRlY3RlZEJ5OiB7XG4gICAgICAgICAgdHlwZTogJ2NoYW5nZS1zZXQnLFxuICAgICAgICAgIGNoYW5nZVNldFN0YXR1czogY2hhbmdlU2V0LlN0YXR1cyA/PyAnJyxcbiAgICAgICAgICBjaGFuZ2VTZXROYW1lOiBjaGFuZ2VTZXQuQ2hhbmdlU2V0TmFtZSA/PyAnJyxcbiAgICAgICAgICBzdGF0dXNSZWFzb246IGNoYW5nZVNldC5TdGF0dXNSZWFzb24gPz8gJycsXG4gICAgICAgIH0sXG4gICAgICAgIHByb2JsZW1zOiBhd2FpdCB0aGlzLmFkZEVycm9yVHJhY2VzKGZhaWxlZEF1dG9FcnJvcnMpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbm9uU3BlY2lmaWNDaGFuZ2VTZXRFcnJvcihjaGFuZ2VTZXQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhZGRFcnJvclRyYWNlcyhlcnJzOiByZWFkb25seSBSZXNvdXJjZUVycm9yW10pOiBQcm9taXNlPFRyYWNlZFJlc291cmNlRXJyb3JbXT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9wcm9taXNlYWxsLW5vLXVuYm91bmRlZC1wYXJhbGxlbGlzbVxuICAgIHJldHVybiBQcm9taXNlLmFsbChlcnJzLm1hcCgoZSkgPT4gdGhpcy5hZGRFcnJvclRyYWNlKGUpKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZEVycm9yVHJhY2UoZXJyOiBSZXNvdXJjZUVycm9yKTogUHJvbWlzZTxUcmFjZWRSZXNvdXJjZUVycm9yPiB7XG4gICAgbGV0IHNvdXJjZVRyYWNlO1xuICAgIGlmIChlcnIubG9naWNhbElkKSB7XG4gICAgICBzb3VyY2VUcmFjZSA9IGF3YWl0IHRoaXMucHJvcHMuc291cmNlVHJhY2VyLnRyYWNlUmVzb3VyY2UoZXJyLnN0YWNrQXJuLCBlcnIucGFyZW50U3RhY2tMb2dpY2FsSWRzLCBlcnIubG9naWNhbElkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc291cmNlVHJhY2UgPSBhd2FpdCB0aGlzLnByb3BzLnNvdXJjZVRyYWNlci50cmFjZVN0YWNrKGVyci5zdGFja0FybiwgZXJyLnBhcmVudFN0YWNrTG9naWNhbElkcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgLi4uZXJyLCBzb3VyY2VUcmFjZSwgdG9wTGV2ZWxTdGFja0hpZXJhcmNoaWNhbElkOiB0aGlzLnByb3BzLnRvcExldmVsU3RhY2tIaWVyYXJjaGljYWxJZCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgZ2VuZXJpYyBzdGFjayBlcnJvciBmcm9tIHRoZSBnaXZlbiBjaGFuZ2Ugc2V0IGluZm9ybWF0aW9uXG4gICAqXG4gICAqIFdlIGNhbid0IHBvaW50IHRvIGEgc3BlY2lmaWMgcmVzb3VyY2UuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9ub25TcGVjaWZpY0NoYW5nZVNldEVycm9yKGNoYW5nZVNldDogQ2hhbmdlU2V0U3VtbWFyeSk6IFByb21pc2U8U3RhY2tEaWFnbm9zaXM+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ3Byb2JsZW0nLFxuICAgICAgZGV0ZWN0ZWRCeToge1xuICAgICAgICB0eXBlOiAnY2hhbmdlLXNldCcsXG4gICAgICAgIGNoYW5nZVNldE5hbWU6IGNoYW5nZVNldC5DaGFuZ2VTZXROYW1lID8/ICcnLFxuICAgICAgICBjaGFuZ2VTZXRTdGF0dXM6IGNoYW5nZVNldC5TdGF0dXMgPz8gJycsXG4gICAgICAgIHN0YXR1c1JlYXNvbjogY2hhbmdlU2V0LlN0YXR1c1JlYXNvbiA/PyAnJyxcbiAgICAgIH0sXG4gICAgICBwcm9ibGVtczogW1xuICAgICAgICBhd2FpdCB0aGlzLmFkZEVycm9yVHJhY2Uoe1xuICAgICAgICAgIC8vIEl0J3MgYWJvdXQgYSBzdGFja1xuICAgICAgICAgIGxvZ2ljYWxJZDogdW5kZWZpbmVkLFxuICAgICAgICAgIG1lc3NhZ2U6IGNoYW5nZVNldC5TdGF0dXNSZWFzb24gPz8gJycsXG4gICAgICAgICAgcGFyZW50U3RhY2tMb2dpY2FsSWRzOiB0aGlzLnBhcmVudFN0YWNrTG9naWNhbElkcyxcbiAgICAgICAgICBzdGFja0FybjogY2hhbmdlU2V0LlN0YWNrSWQgPz8gJycsXG4gICAgICAgICAgcGh5c2ljYWxJZDogY2hhbmdlU2V0LlN0YWNrSWQsXG4gICAgICAgICAgcmVzb3VyY2VUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rIGZvciBuZXN0ZWQgY2hhbmdlIHNldHMgdGhhdCBoYXZlIGZhaWxlZCwgYW5kIGRpYWdub3NlIHRob3NlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBfZGlhZ25vc2VOZXN0ZWRDaGFuZ2VTZXRGYWlsdXJlKGNoYW5nZVNldDogQ2hhbmdlU2V0U3VtbWFyeSk6IFByb21pc2U8U3RhY2tEaWFnbm9zaXM+IHtcbiAgICBjb25zdCBuZXN0ZWQgPSBhd2FpdCB0aGlzLl9maW5kRmFpbGVkTmVzdGVkU3RhY2soY2hhbmdlU2V0KTtcbiAgICBpZiAoIW5lc3RlZCkge1xuICAgICAgLy8gVGhhdCdzIHdlaXJkLiBMZXQncyByZXR1cm4gdGhlIGNoYW5nZSBzZXQncyBzdGF0dXMgcmVhc29uIGFzIGEgbm9uLXNwZWNpZmljIGVycm9yXG4gICAgICByZXR1cm4gdGhpcy5fbm9uU3BlY2lmaWNDaGFuZ2VTZXRFcnJvcihjaGFuZ2VTZXQpO1xuICAgIH1cblxuICAgIGNvbnN0IG5lc3RlZENzID0gYXdhaXQgdGhpcy5jZm4uZGVzY3JpYmVDaGFuZ2VTZXQoe1xuICAgICAgQ2hhbmdlU2V0TmFtZTogbmVzdGVkLmNoYW5nZVNldE5hbWUsXG4gICAgICBTdGFja05hbWU6IG5lc3RlZC5zdGFja05hbWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBuZXN0ZWREaWFnID0gbmV3IENsb3VkRm9ybWF0aW9uU3RhY2tEaWFnbm9zZXIodGhpcy5wcm9wcyk7XG4gICAgbmVzdGVkRGlhZy5wYXJlbnRTdGFja0xvZ2ljYWxJZHMgPSBbLi4udGhpcy5wYXJlbnRTdGFja0xvZ2ljYWxJZHMsIG5lc3RlZC5sb2dpY2FsSWRdO1xuICAgIHJldHVybiBuZXN0ZWREaWFnLl9kaWFnbm9zZUNoYW5nZVNldEZhaWx1cmUobmVzdGVkQ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfZmluZEZhaWxlZE5lc3RlZFN0YWNrKGNoYW5nZVNldDogQ2hhbmdlU2V0U3VtbWFyeSk6IFByb21pc2U8e1xuICAgIHN0YWNrTmFtZTogc3RyaW5nO1xuICAgIGNoYW5nZVNldE5hbWU6IHN0cmluZztcbiAgICBsb2dpY2FsSWQ6IHN0cmluZztcbiAgfSB8IHVuZGVmaW5lZD4ge1xuICAgIC8vIFRoZSBzdGF0dXMgcmVhc29uIG9ubHkgaW5jbHVkZXMgdGhlIGNoYW5nZSBzZXQgSUQsIGJ1dCB3ZSBhbHNvIG5lZWQgdGhlIHN0YWNrIG5hbWUuIFRoZSB3YXkgdG8gZ2V0IHRoaXMgaXNcbiAgICAvLyBkZXNjcmliZSB0aGUgY3VycmVudCBjaGFuZ2Ugc2V0LCB0aGVuIGZyb20gdGhlIENoYW5nZXMgZmluZCB0aGUgc3RhY2sgd2hvc2UgQ2hhbmdlU2V0SWQgaXMgbWVudGlvbmVkIGluIHRoZVxuICAgIC8vIHN0YXR1cyByZWFzb24sIHRoZW4gbG9vayB1cCB0aGF0IGNoYW5nZSBzZXQgYW5kIHJlY3Vyc2UgaW50byBhIHJlZ3VsYXIgY2hhbmdlIHNldCBkaWFnbm9zaXMuXG4gICAgbGV0IG5leHRUb2tlbiA9IHVuZGVmaW5lZDtcbiAgICBkbyB7XG4gICAgICAvLyBDaGFuZ2VzIGluIHRoaXMgcmVzcG9uc2UgbWlnaHQgYmUgcGFnaW5hdGVkXG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5jZm4uZGVzY3JpYmVDaGFuZ2VTZXQoe1xuICAgICAgICBTdGFja05hbWU6IGNoYW5nZVNldC5TdGFja05hbWUsXG4gICAgICAgIENoYW5nZVNldE5hbWU6IGNoYW5nZVNldC5DaGFuZ2VTZXROYW1lLFxuICAgICAgICAuLi5uZXh0VG9rZW4gPyB7IE5leHRUb2tlbjogbmV4dFRva2VuIH0gOiB7fSxcbiAgICAgIH0pO1xuXG4gICAgICBmb3IgKGNvbnN0IGNoYW5nZSBvZiByZXNwLkNoYW5nZXMgPz8gW10pIHtcbiAgICAgICAgaWYgKGNoYW5nZS5UeXBlID09PSBDaGFuZ2VUeXBlLlJlc291cmNlICYmIGNoYW5nZS5SZXNvdXJjZUNoYW5nZT8uUmVzb3VyY2VUeXBlID09PSAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snICYmIGNoYW5nZS5SZXNvdXJjZUNoYW5nZT8uQ2hhbmdlU2V0SWQgJiYgY2hhbmdlU2V0LlN0YXR1c1JlYXNvbj8uaW5jbHVkZXMoY2hhbmdlLlJlc291cmNlQ2hhbmdlPy5DaGFuZ2VTZXRJZCkpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hhbmdlU2V0TmFtZTogY2hhbmdlLlJlc291cmNlQ2hhbmdlLkNoYW5nZVNldElkLFxuICAgICAgICAgICAgc3RhY2tOYW1lOiBjaGFuZ2UuUmVzb3VyY2VDaGFuZ2UuUGh5c2ljYWxSZXNvdXJjZUlkID8/ICcnLFxuICAgICAgICAgICAgbG9naWNhbElkOiBjaGFuZ2UuUmVzb3VyY2VDaGFuZ2UuTG9naWNhbFJlc291cmNlSWQgPz8gJycsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBuZXh0VG9rZW4gPSByZXNwLk5leHRUb2tlbjtcbiAgICB9IHdoaWxlIChuZXh0VG9rZW4pO1xuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcnkgdG8gcGFyc2UgZmFpbGVkIGF1dG8taW1wb3J0cyBvdXQgZnJvbSBhIGNoYW5nZSBzZXQgc3RhdHVzXG4gICAqXG4gICAqIFRoZSBwYXR0ZXJuIGxvb2tzIGxpa2UgdGhpczpcbiAgICpcbiAgICogYGBgXG4gICAqIENsb3VkRm9ybWF0aW9uIGlzIGF0dGVtcHRpbmcgdG8gaW1wb3J0IHNvbWUgcmVzb3VyY2VzIGJlY2F1c2UgdGhleSBhbHJlYWR5IGV4aXN0IGluIHlvdXIgYWNjb3VudC4gVGhlIHJlc291cmNlcyBtdXN0IGhhdmUgdGhlIERlbGV0aW9uUG9saWN5IGF0dHJpYnV0ZSBzZXQgdG8gJ1JldGFpbicgb3IgJ1JldGFpbkV4Y2VwdE9uQ3JlYXRlJyBpbiB0aGUgdGVtcGxhdGUgZm9yIHN1Y2Nlc3NmdWwgaW1wb3J0LiBUaGUgYWZmZWN0ZWQgcmVzb3VyY2VzIGFyZSBTb21lQnVja2V0RDVCNzA3MDQgKHtCdWNrZXROYW1lPXpvbWFhcmVlbmJ1Y2tldH0pXG4gICAqIGBgYFxuICAgKlxuICAgKiBGb2xsb3dlZCBieVxuICAgKlxuICAgKiBgYGBcbiAgICogTG9naWNhbElEICh7UHJvcD1WYWx1ZSxQcm9wPVZhbHVlfSksIExvZ2ljYWxJRCAoe1Byb3A9VmFsdWV9KSwgLi4uXG4gICAqIGBgYFxuICAgKi9cbiAgcHJpdmF0ZSBfdHJ5RGV0ZWN0RmFpbGVkQXV0b0ltcG9ydChjaGFuZ2VTZXQ6IENoYW5nZVNldFN1bW1hcnkpOiBSZXNvdXJjZUVycm9yW10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjaGFuZ2VTZXQuU3RhdHVzUmVhc29uO1xuICAgIC8vIE9ubHkgZW5oYW5jZSB0aGUgc3BlY2lmaWMgQ0ZOIGVycm9yIGFib3V0IGltcG9ydGluZyBleGlzdGluZyByZXNvdXJjZXNcbiAgICBpZiAoIW1lc3NhZ2U/LmluY2x1ZGVzKCdDbG91ZEZvcm1hdGlvbiBpcyBhdHRlbXB0aW5nIHRvIGltcG9ydCBzb21lIHJlc291cmNlcyBiZWNhdXNlIHRoZXkgYWxyZWFkeSBleGlzdCBpbiB5b3VyIGFjY291bnQnKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBtYXJrZXIgPSAnVGhlIGFmZmVjdGVkIHJlc291cmNlcyBhcmUgJztcbiAgICBjb25zdCBtYXJrZXJJbmRleCA9IG1lc3NhZ2UuaW5kZXhPZihtYXJrZXIpO1xuICAgIGlmIChtYXJrZXJJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgcmV0OiBSZXNvdXJjZUVycm9yW10gPSBbXTtcbiAgICBsZXQgcmVtYWluaW5nID0gbWVzc2FnZS5zbGljZShtYXJrZXJJbmRleCArIG1hcmtlci5sZW5ndGgpO1xuICAgIHdoaWxlIChyZW1haW5pbmcpIHtcbiAgICAgIGNvbnN0IGVuZEl4ID0gcmVtYWluaW5nLmluZGV4T2YoJyksICcpO1xuICAgICAgY29uc3QgdGhpc1Jlc291cmNlID0gZW5kSXggPiAtMSA/IHJlbWFpbmluZy5zbGljZSgwLCBlbmRJeCArIDEpIDogcmVtYWluaW5nO1xuICAgICAgcmVtYWluaW5nID0gcmVtYWluaW5nLnNsaWNlKHRoaXNSZXNvdXJjZS5sZW5ndGggKyAyKTtcblxuICAgICAgLy8gdGhpc1Jlc291cmNlID0gXCJMb2dpY2FsSWQgKHtQcm9wPVZhbHVlLCBQcm9wPVZhbHVlfSlcIlxuICAgICAgY29uc3Qgb3BlblBhcmVuID0gdGhpc1Jlc291cmNlLmluZGV4T2YoJygnKTtcbiAgICAgIGNvbnN0IGxvZ2ljYWxJZCA9IG9wZW5QYXJlbiA+IC0xID8gdGhpc1Jlc291cmNlLnNsaWNlKDAsIG9wZW5QYXJlbikudHJpbSgpIDogdW5kZWZpbmVkO1xuXG4gICAgICByZXQucHVzaCh7XG4gICAgICAgIG1lc3NhZ2U6IGBBdXRvbWF0aWMgaW1wb3J0IG9mIGV4aXN0aW5nIHJlc291cmNlICR7dGhpc1Jlc291cmNlfSBuZWVkcyBhIERlbGV0aW9uUG9saWN5IG9mIFxcJ1JldGFpblxcJyBvciBcXCdSZXRhaW5FeGNlcHRPbkNyZWF0ZVxcJy4gU2V0IHRoZSByZW1vdmFsIHBvbGljeSB0byBcXCdSZW1vdmFsUG9saWN5LlJFVEFJTlxcJyBvciBcXCdSZW1vdmFsUG9saWN5LlJFVEFJTl9PTl9VUERBVEVfT1JfREVMRVRFXFwnIChTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nkay92Mi9ndWlkZS9yZXNvdXJjZXMuaHRtbCNyZXNvdXJjZXMtcmVtb3ZhbClgLFxuICAgICAgICBwYXJlbnRTdGFja0xvZ2ljYWxJZHM6IHRoaXMucGFyZW50U3RhY2tMb2dpY2FsSWRzLFxuICAgICAgICBzdGFja0FybjogY2hhbmdlU2V0LlN0YWNrSWQgPz8gJycsXG4gICAgICAgIGVycm9yQ29kZTogJ0F1dG9tYXRpY0ltcG9ydE5lZWRzUmV0YWluJyxcbiAgICAgICAgbG9naWNhbElkLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gY2hhbmdlIHNldCBoYXMgbm8gY2hhbmdlc1xuICpcbiAqIFRoaXMgbXVzdCBiZSBkZXRlcm1pbmVkIGZyb20gdGhlIHN0YXR1cywgbm90IHRoZSAnQ2hhbmdlcycgYXJyYXkgb24gdGhlXG4gKiBvYmplY3Q7IHRoZSBsYXR0ZXIgY2FuIGJlIGVtcHR5IGJlY2F1c2Ugbm8gcmVzb3VyY2VzIHdlcmUgY2hhbmdlZCwgYnV0IGlmXG4gKiB0aGVyZSBhcmUgY2hhbmdlcyB0byBPdXRwdXRzLCB0aGUgY2hhbmdlIHNldCBjYW4gc3RpbGwgYmUgZXhlY3V0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VTZXRIYXNOb0NoYW5nZXMoZGVzY3JpcHRpb246IENoYW5nZVNldFN1bW1hcnkpIHtcbiAgY29uc3Qgbm9DaGFuZ2VFcnJvclByZWZpeGVzID0gW1xuICAgIC8vIEVycm9yIG1lc3NhZ2UgZm9yIGEgcmVndWxhciB0ZW1wbGF0ZVxuICAgIFwiVGhlIHN1Ym1pdHRlZCBpbmZvcm1hdGlvbiBkaWRuJ3QgY29udGFpbiBjaGFuZ2VzLlwiLFxuICAgIC8vIEVycm9yIG1lc3NhZ2Ugd2hlbiBhIFRyYW5zZm9ybSBpcyBpbnZvbHZlZCAoc2VlICMxMDY1MClcbiAgICAnTm8gdXBkYXRlcyBhcmUgdG8gYmUgcGVyZm9ybWVkLicsXG4gIF07XG5cbiAgcmV0dXJuIChcbiAgICBkZXNjcmlwdGlvbi5TdGF0dXMgPT09ICdGQUlMRUQnICYmIG5vQ2hhbmdlRXJyb3JQcmVmaXhlcy5zb21lKChwKSA9PiAoZGVzY3JpcHRpb24uU3RhdHVzUmVhc29uID8/ICcnKS5zdGFydHNXaXRoKHApKVxuICApO1xufVxuXG5mdW5jdGlvbiByZXNvdXJjZUVycm9yRnJvbUVhcmx5VmFsaWRhdGlvbkVycm9yKHN0YWNrSWQ6IHN0cmluZywgcGFyZW50U3RhY2tMb2dpY2FsSWRzOiBzdHJpbmdbXSwgZXY6IEVhcmx5VmFsaWRhdGlvbkVycm9yKTogUmVzb3VyY2VFcnJvciB7XG4gIHJldHVybiB7XG4gICAgbG9naWNhbElkOiBldi5sb2dpY2FsSWQsXG4gICAgcGh5c2ljYWxJZDogZXYucGh5c2ljYWxJZCxcbiAgICByZXNvdXJjZVR5cGU6IGV2LnJlc291cmNlVHlwZSxcbiAgICBtZXNzYWdlOiBgJHtldi5tZXNzYWdlfSAoYXQgJHtldi5kb2N1bWVudFBhdGh9KWAsXG4gICAgZXJyb3JDb2RlOiBgJHtldi52YWxpZGF0aW9uTmFtZX1fJHtldi5ldmVudFR5cGV9YCxcbiAgICBwYXJlbnRTdGFja0xvZ2ljYWxJZHMsXG4gICAgc3RhY2tBcm46IHN0YWNrSWQsXG4gIH07XG59XG4iXX0=
|
|
354
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stZGlhZ25vc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhY2stZGlhZ25vc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWtZQSxzREFXQztBQTVZRCwwRUFBNkU7QUFFN0UsdUVBQTBFO0FBTTFFLGtEQUE4RDtBQUU5RCwrREFBMkQ7QUFVM0Q7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBYSw0QkFBNEI7SUFJVjtJQUhaLEdBQUcsQ0FBd0I7SUFDcEMscUJBQXFCLENBQVc7SUFFeEMsWUFBNkIsS0FBd0M7UUFBeEMsVUFBSyxHQUFMLEtBQUssQ0FBbUM7UUFDbkUsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFpQjtRQUM5QyxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDekUsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxPQUFPO29CQUNMLElBQUksRUFBRSxrQkFBa0I7b0JBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsU0FBUyxZQUFZO2lCQUNsRCxDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLDBCQUFXLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkQsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3hCLE9BQU87b0JBQ0wsSUFBSSxFQUFFLGtCQUFrQjtvQkFDeEIsT0FBTyxFQUFF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RUYsT0FBTyxDQUNMLFdBQVcsQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNySCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMscUNBQXFDLENBQUMsT0FBZSxFQUFFLHFCQUErQixFQUFFLEVBQTBCO0lBQ3pILE9BQU87UUFDTCxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVM7UUFDdkIsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVO1FBQ3pCLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWTtRQUM3QixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxRQUFRLEVBQUUsQ0FBQyxZQUFZLEdBQUc7UUFDaEQsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFO1FBQ2pELHFCQUFxQjtRQUNyQixRQUFRLEVBQUUsT0FBTztLQUNsQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2hhbmdlU2V0U3VtbWFyeSwgU3RhY2sgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgQ2hhbmdlU2V0U3RhdHVzLCBDaGFuZ2VUeXBlIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB0eXBlIHsgQ2hhbmdlU2V0UmVzb3VyY2VFcnJvciB9IGZyb20gJy4vY2hhbmdlc2V0LWVycm9yLWZldGNoZXInO1xuaW1wb3J0IHsgQ2hhbmdlU2V0UmVzb3VyY2VFcnJvckZldGNoZXIgfSBmcm9tICcuL2NoYW5nZXNldC1lcnJvci1mZXRjaGVyJztcbmltcG9ydCB0eXBlIHsgU3RhY2tEaWFnbm9zaXMsIFN0YWNrUHJvYmxlbVNvdXJjZSwgVHJhY2VkUmVzb3VyY2VFcnJvciB9IGZyb20gJy4uLy4uL2FjdGlvbnMvZGlhZ25vc2UnO1xuaW1wb3J0IHR5cGUgeyBJQ2xvdWRGb3JtYXRpb25DbGllbnQsIFNESyB9IGZyb20gJy4uL2F3cy1hdXRoL3Nkayc7XG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50UmVzb3VyY2VzIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHR5cGUgeyBJb0hlbHBlciB9IGZyb20gJy4uL2lvL3ByaXZhdGUvaW8taGVscGVyJztcbmltcG9ydCB0eXBlIHsgSVNvdXJjZVRyYWNlciB9IGZyb20gJy4uL3NvdXJjZS10cmFjaW5nL3ByaXZhdGUvc291cmNlLXRyYWNpbmcnO1xuaW1wb3J0IHsgUG9sbFJhbmdlLCBTdGFja0V2ZW50UG9sbGVyIH0gZnJvbSAnLi4vc3RhY2stZXZlbnRzJztcbmltcG9ydCB0eXBlIHsgUmVzb3VyY2VFcnJvciwgUmVzb3VyY2VFcnJvcnMgfSBmcm9tICcuLi9zdGFjay1ldmVudHMvcmVzb3VyY2UtZXJyb3JzJztcbmltcG9ydCB7IFN0YWNrU3RhdHVzIH0gZnJvbSAnLi4vc3RhY2stZXZlbnRzL3N0YWNrLXN0YXR1cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRGb3JtYXRpb25TdGFja0RpYWdub3NlclByb3BzIHtcbiAgcmVhZG9ubHkgc2RrOiBTREs7XG4gIHJlYWRvbmx5IGVudlJlc291cmNlcz86IEVudmlyb25tZW50UmVzb3VyY2VzO1xuICByZWFkb25seSBzb3VyY2VUcmFjZXI6IElTb3VyY2VUcmFjZXI7XG4gIHJlYWRvbmx5IGlvSGVscGVyOiBJb0hlbHBlcjtcbiAgcmVhZG9ubHkgdG9wTGV2ZWxTdGFja0hpZXJhcmNoaWNhbElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGlhZ25vc2UgYSBzdGFjaydzIGZhaWxlZCBzdGF0ZVxuICpcbiAqIC0gRmlyc3QsIGRldGVybWluZSB0aGUgc3RhY2sncyBzdGF0ZS5cbiAqIC0gSWYgaXQgaXMgaW4gYSBmYWlsZWQgc3RhdGUsIHdlIHN0YXJ0ZWQgYSBkZXBsb3ltZW50IHRoYXQgZmFpbGVkLiBEZXNjcmliZSB0aGUgc3RhY2tcbiAqICAgZXZlbnRzLCBhbmQgdHJ5IHRvIGRldGVybWluZSB0aGUgcm9vdCBjYXVzZSBmcm9tIHRoYXQuXG4gKiAtIElmIGl0IGlzIGluIGEgbm9ybWFsIHN0YXRlLCBzZWUgaWYgdGhlcmUgYXJlIGFueSBmYWlsZWQgY2hhbmdlIHNldHMuIEVpdGhlclxuICogICBnZXQgdGhlIGZhaWx1cmUgbWVzc2FnZSBmcm9tIHRoZSBjaGFuZ2Ugc2V0LCBvciBnZXQgdGhlIGZhaWx1cmUgZXZlbnRzIGZyb21cbiAqICAgdGhlIGNoYW5nZSBzZXQgKGVhcmx5IHZhbGlkYXRpb24pLlxuICpcbiAqIFRoaXMgY2xhc3Mgd29ya3MgYXQgdGhlIENsb3VkRm9ybWF0aW9uIGxldmVsLCBhbmQgZG9lcyBub3QgZGVhbCB3aXRoIHRyYWNpbmdcbiAqIENsb3VkRm9ybWF0aW9uIGVycm9ycyB0byBjb25zdHJ1Y3QgY29kZSBzb3VyY2VzIHlldC5cbiAqL1xuZXhwb3J0IGNsYXNzIENsb3VkRm9ybWF0aW9uU3RhY2tEaWFnbm9zZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGNmbjogSUNsb3VkRm9ybWF0aW9uQ2xpZW50O1xuICBwcml2YXRlIHBhcmVudFN0YWNrTG9naWNhbElkczogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogQ2xvdWRGb3JtYXRpb25TdGFja0RpYWdub3NlclByb3BzKSB7XG4gICAgdGhpcy5jZm4gPSB0aGlzLnByb3BzLnNkay5jbG91ZEZvcm1hdGlvbigpO1xuICAgIHRoaXMucGFyZW50U3RhY2tMb2dpY2FsSWRzID0gW107XG4gIH1cblxuICAvKipcbiAgICogRGlhZ25vc2UgYSBzdGFjaydzIHJvb3QgY2F1c2UgZ2l2ZW4gbm8gcHJlLWV4aXN0aW5nIHN0YXRlXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGlhZ25vc2VGcm9tRnJlc2goc3RhY2tOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0YWNrRGlhZ25vc2lzPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jZm4uZGVzY3JpYmVTdGFja3MoeyBTdGFja05hbWU6IHN0YWNrTmFtZSB9KTtcbiAgICAgIGNvbnN0IHN0YWNrID0gcmVzcG9uc2UuU3RhY2tzPy5bMF07XG4gICAgICBpZiAoIXN0YWNrKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ2Vycm9yLWRpYWdub3NpbmcnLFxuICAgICAgICAgIG1lc3NhZ2U6IGBTdGFjayB3aXRoIG5hbWUgJHtzdGFja05hbWV9IG5vdCBmb3VuZGAsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0YXR1cyA9IFN0YWNrU3RhdHVzLmZyb21TdGFja0Rlc2NyaXB0aW9uKHN0YWNrKTtcbiAgICAgIGlmIChzdGF0dXMuaXNJblByb2dyZXNzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ2Vycm9yLWRpYWdub3NpbmcnLFxuICAgICAgICAgIG1lc3NhZ2U6IGBTdGFjayB3aXRoIG5hbWUgJHtzdGFja05hbWV9IGlzIGN1cnJlbnRseSBiZWluZyB1cGRhdGVkICgke3N0YXR1cy5uYW1lfSkuIFRyeSBhZ2FpbiB3aGVuIGl0J3MgZmluaXNoZWQuYCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXR1cy5pc0ZhaWx1cmUpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2RpYWdub3NlVmlhU3RhY2tFdmVudHMoc3RhY2tOYW1lLCBzdGFjayk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9kaWFnbm9zZUNoYW5nZVNldEZhaWx1cmVGcm9tU3RhY2tOYW1lKHN0YWNrTmFtZSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICByZXR1cm4geyB0eXBlOiAnZXJyb3ItZGlhZ25vc2luZycsIG1lc3NhZ2U6IGUubWVzc2FnZSB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEaWFnbm9zZSBwb3RlbnRpYWwgcHJvYmxlbXMgd2l0aCB0aGUgY2hhbmdlIHNldFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRpYWdub3NlQ2hhbmdlU2V0KGNoYW5nZVNldDogQ2hhbmdlU2V0U3VtbWFyeSk6IFByb21pc2U8U3RhY2tEaWFnbm9zaXM+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2RpYWdub3NlQ2hhbmdlU2V0RmFpbHVyZShjaGFuZ2VTZXQpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogJ2Vycm9yLWRpYWdub3NpbmcnLCBtZXNzYWdlOiBlLm1lc3NhZ2UgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGlhZ25vc2UgcG90ZW50aWFsIHByb2JsZW1zIHdpdGggdGhlIGNoYW5nZSBzZXRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBkaWFnbm9zZUZyb21FcnJvckNvbGxlY3Rpb24oZXJyb3JzOiBSZXNvdXJjZUVycm9ycywgc3RhY2s6IFN0YWNrKTogUHJvbWlzZTxTdGFja0RpYWdub3Npcz4ge1xuICAgIGlmIChlcnJvcnMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiAnbm8tcHJvYmxlbScgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ3Byb2JsZW0nLFxuICAgICAgZGV0ZWN0ZWRCeToge1xuICAgICAgICB0eXBlOiAnZGVwbG95bWVudCcsXG4gICAgICAgIHN0YWNrU3RhdHVzOiBzdGFjay5TdGFja1N0YXR1cyA/PyAnJyxcbiAgICAgICAgc3RhdHVzUmVhc29uOiBzdGFjay5TdGFja1N0YXR1c1JlYXNvbiA/PyAnJyxcbiAgICAgIH0sXG4gICAgICBwcm9ibGVtczogYXdhaXQgdGhpcy5hZGRFcnJvclRyYWNlcyhlcnJvcnMuYWxsKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERpYWdub3NlIGEgZGVwbG95bWVudCBmYWlsdXJlIHZpYSBzdGFjayBldmVudHNcbiAgICpcbiAgICogVGhpcyBpcyB0aGUgc2FtZSBsb2dpYyB0aGF0IHRoZSBkZXBsb3ltZW50IG1vbml0b3IgdXNlcy5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgX2RpYWdub3NlVmlhU3RhY2tFdmVudHMoc3RhY2tOYW1lOiBzdHJpbmcsIHN0YWNrOiBTdGFjayk6IFByb21pc2U8U3RhY2tEaWFnbm9zaXM+IHtcbiAgICBjb25zdCBwb2xsZXIgPSBuZXcgU3RhY2tFdmVudFBvbGxlcih0aGlzLmNmbiwge1xuICAgICAgc3RhY2tOYW1lLFxuICAgICAgaW5pdGlhbFBvbGxSYW5nZTogUG9sbFJhbmdlLm1vc3RSZWNlbnRPcGVyYXRpb24oKSxcbiAgICB9KTtcblxuICAgIC8vIFdlIGRvbid0IG5lZWQgdGhlIHJlc3VsdGluZyBldmVudHMgb2YgcG9sbGluZy4gUG9sbGluZyB3aWxsIGF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSBlcnJvciBjb2xsZWN0aW9uLFxuICAgIC8vIHdoaWNoIGlzIHRoZSB0aGluZyB3ZSBjYXJlIGFib3V0LlxuICAgIGF3YWl0IHBvbGxlci5wb2xsKCk7XG5cbiAgICByZXR1cm4gdGhpcy5kaWFnbm9zZUZyb21FcnJvckNvbGxlY3Rpb24ocG9sbGVyLmVycm9ycywgc3RhY2spO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfZGlhZ25vc2VDaGFuZ2VTZXRGYWlsdXJlRnJvbVN0YWNrTmFtZShzdGFja05hbWU6IHN0cmluZyk6IFByb21pc2U8U3RhY2tEaWFnbm9zaXM+IHtcbiAgICBjb25zdCBjcyA9IChhd2FpdCB0aGlzLmNmbi5saXN0Q2hhbmdlU2V0cyh7XG4gICAgICBTdGFja05hbWU6IHN0YWNrTmFtZSxcbiAgICB9KSkuU3VtbWFyaWVzID8/IFtdO1xuXG4gICAgY29uc3QgcGVuZGluZyA9IGNzLmZpbHRlcih4ID0+IHguU3RhdHVzID09PSBDaGFuZ2VTZXRTdGF0dXMuQ1JFQVRFX0lOX1BST0dSRVNTIHx8IHguU3RhdHVzID09PSBDaGFuZ2VTZXRTdGF0dXMuQ1JFQVRFX1BFTkRJTkcpO1xuICAgIGlmIChwZW5kaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdlcnJvci1kaWFnbm9zaW5nJyxcbiAgICAgICAgbWVzc2FnZTogYFN0YWNrIHdpdGggbmFtZSAke3N0YWNrTmFtZX0gaGFzIGNoYW5nZSBzZXRzIGN1cnJlbnRseSBiZWluZyBjcmVhdGVkICgke3BlbmRpbmdbMF0uQ2hhbmdlU2V0TmFtZX0pLiBUcnkgYWdhaW4gd2hlbiBpdCdzIGZpbmlzaGVkLmAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGZhaWxlZCA9IGNzLmZpbHRlcih4ID0+IHguU3RhdHVzID09PSBDaGFuZ2VTZXRTdGF0dXMuRkFJTEVEKTtcbiAgICBpZiAoZmFpbGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogJ25vLXByb2JsZW0nIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2RpYWdub3NlQ2hhbmdlU2V0RmFpbHVyZShmYWlsZWRbMF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBkaWFnbm9zZSB0aGUgcmVhc29uIHRoYXQgY2F1c2VkIGEgY2hhbmdlc2V0IHRvIGZhaWwgdG8gY3JlYXRlXG4gICAqXG4gICAqIFRoZXJlIGFyZSBhIGNvdXBsZSBvZiBkaWZmZXJlbnQgcmVhc29ucyB0aGlzIGNhbiBoYXBwZW4sIGFuZCB3ZSBnbyB0aHJvdWdoIGVhY2ggb2YgdGhlbSBpbiBvcmRlci5cbiAgICpcbiAgICogVXN1YWxseSB0aGlzIHN0YXJ0cyBmcm9tIHRyeWluZyB0byBkZXRlY3QgYW4gZXJyb3IgbWVzc2FnZSBwYXR0ZXJuIGluIHRoZSBjaGFuZ2Ugc2V0IHN0YXR1cyByZWFzb24sXG4gICAqIGFuZCB0aGVuIHBvdGVudGlhbGx5IGdvaW5nIHRvIGZldGNoIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdXNpbmcgYWRkaXRpb25hbCBBUEkgY2FsbHMuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9kaWFnbm9zZUNoYW5nZVNldEZhaWx1cmUoY2hhbmdlU2V0OiBDaGFuZ2VTZXRTdW1tYXJ5KTogUHJvbWlzZTxTdGFja0RpYWdub3Npcz4ge1xuICAgIGlmIChjaGFuZ2VTZXQuU3RhdHVzICE9PSBDaGFuZ2VTZXRTdGF0dXMuRkFJTEVEKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiAnbm8tcHJvYmxlbScgfTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlU2V0SGFzTm9DaGFuZ2VzKGNoYW5nZVNldCkpIHtcbiAgICAgIC8vIFRoaXMgd2lsbCBsZWFkIHRvIGEgY2hhbmdlIHNldCB0aGF0IGlzIEZBSUxFRCBidXQgaXQncyBub3QgYWN0dWFsbHkgYSBwcm9ibGVtXG4gICAgICByZXR1cm4geyB0eXBlOiAnbm8tcHJvYmxlbScgfTtcbiAgICB9XG5cbiAgICAvLyBXZSByZXBvcnQgZWFybHkgdmFsaWRhdGlvbiBlcnJvcnMgZGlmZmVyZW50bHkgdGhhbiBnZW5lcmljIGNoYW5nZXNldCBlcnJvcnMuIE1vc3RseVxuICAgIC8vIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMuXG4gICAgY29uc3QgaXNFYXJseVZhbGlkYXRpb25FcnJvciA9IGNoYW5nZVNldC5TdGF0dXNSZWFzb24/LmluY2x1ZGVzKCdBV1M6OkVhcmx5VmFsaWRhdGlvbicpO1xuICAgIGlmIChpc0Vhcmx5VmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVwb3J0Q2hhbmdlU2V0RmFpbHVyZUZyb21FdmVudHMoY2hhbmdlU2V0LCB7XG4gICAgICAgIHR5cGU6ICdlYXJseS12YWxpZGF0aW9uJyxcbiAgICAgICAgY2hhbmdlU2V0TmFtZTogY2hhbmdlU2V0LkNoYW5nZVNldE5hbWUgPz8gJycsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBXZSB3aWxsIHJlY3Vyc2UgaW50byBuZXN0ZWQgY2hhbmdlIHNldHMgaWYgbmVjZXNzYXJ5LlxuICAgIGlmIChjaGFuZ2VTZXQuU3RhdHVzUmVhc29uPy5pbmNsdWRlcygnTmVzdGVkIGNoYW5nZSBzZXQnKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2RpYWdub3NlTmVzdGVkQ2hhbmdlU2V0RmFpbHVyZShjaGFuZ2VTZXQpO1xuICAgIH1cblxuICAgIC8vIFdlIHNwZWNpYWwtY2FzZSBmYWlsZWQgYXV0b21hdGljIGltcG9ydHMuIFdlIGtub3cgYWxsIHRoZSBtZWF0IG9mIHRoZSBlcnJvciBkZXRhaWxzIGFyZSBpbiB0aGVcbiAgICAvLyBzdGF0dXMgcmVhc29uLCBhbmQgbm93aGVyZSBlbHNlLiBXZSBwYXJzZSBpdCBzcGVjaWZpY2FsbHkuXG4gICAgY29uc3QgZmFpbGVkQXV0b0Vycm9ycyA9IHRoaXMuX3RyeURldGVjdEZhaWxlZEF1dG9JbXBvcnQoY2hhbmdlU2V0KTtcbiAgICBpZiAoZmFpbGVkQXV0b0Vycm9ycykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3Byb2JsZW0nLFxuICAgICAgICBkZXRlY3RlZEJ5OiB7XG4gICAgICAgICAgdHlwZTogJ2NoYW5nZS1zZXQnLFxuICAgICAgICAgIGNoYW5nZVNldFN0YXR1czogY2hhbmdlU2V0LlN0YXR1cyA/PyAnJyxcbiAgICAgICAgICBjaGFuZ2VTZXROYW1lOiBjaGFuZ2VTZXQuQ2hhbmdlU2V0TmFtZSA/PyAnJyxcbiAgICAgICAgICBzdGF0dXNSZWFzb246IGNoYW5nZVNldC5TdGF0dXNSZWFzb24gPz8gJycsXG4gICAgICAgIH0sXG4gICAgICAgIHByb2JsZW1zOiBhd2FpdCB0aGlzLmFkZEVycm9yVHJhY2VzKGZhaWxlZEF1dG9FcnJvcnMpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIGEgZ2VuZXJpYyBjaGFuZ2Ugc2V0IGNyZWF0aW9uIGVycm9yIHdoZXJlIGBEZXNjcmliZUV2ZW50c2BcbiAgICAvLyBtaWdodCBvciBtaWdodCBub3QgZ2l2ZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLlxuICAgIHJldHVybiB0aGlzLl9yZXBvcnRDaGFuZ2VTZXRGYWlsdXJlRnJvbUV2ZW50cyhjaGFuZ2VTZXQsIHtcbiAgICAgIHR5cGU6ICdjaGFuZ2Utc2V0JyxcbiAgICAgIGNoYW5nZVNldFN0YXR1czogY2hhbmdlU2V0LlN0YXR1cyA/PyAnJyxcbiAgICAgIGNoYW5nZVNldE5hbWU6IGNoYW5nZVNldC5DaGFuZ2VTZXROYW1lID8/ICcnLFxuICAgICAgc3RhdHVzUmVhc29uOiBjaGFuZ2VTZXQuU3RhdHVzUmVhc29uID8/ICcnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byByZWFkIHRoZSByZXNvdXJjZS1zcGVjaWZpYyByZWFzb25zIGZvciBhIGNoYW5nZXNldCBmYWlsdXJlIGZyb20gYERlc2NyaWJlRXZlbnRzYC5cbiAgICpcbiAgICogSWYgd2UgY291bGRuJ3QgcmVhZCB0aGUgZXZlbnRzIG9yIHRoZXJlIGFyZSAwIGVycm9ycyByZXR1cm5lZCBieSB0aGF0IEFQSSwgcmV0dXJuIGEgZ2VuZXJpY1xuICAgKiBlcnJvci5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgX3JlcG9ydENoYW5nZVNldEZhaWx1cmVGcm9tRXZlbnRzKGNoYW5nZVNldDogQ2hhbmdlU2V0U3VtbWFyeSwgZGV0ZWN0ZWRCeTogU3RhY2tQcm9ibGVtU291cmNlKTogUHJvbWlzZTxTdGFja0RpYWdub3Npcz4ge1xuICAgIGNvbnN0IGV2ID0gYXdhaXQgbmV3IENoYW5nZVNldFJlc291cmNlRXJyb3JGZXRjaGVyKHRoaXMucHJvcHMuc2RrLCB0aGlzLnByb3BzLmVudlJlc291cmNlcylcbiAgICAgIC5mZXRjaERldGFpbHNTdHJ1Y3R1cmVkKGNoYW5nZVNldC5DaGFuZ2VTZXROYW1lISwgY2hhbmdlU2V0LlN0YWNrTmFtZSEpO1xuXG4gICAgLy8gSWYgd2UgaGF2ZSBlcnJvcnMgdG8gcmV0dXJuLCByZXR1cm4gdGhlbVxuICAgIGlmIChldi50eXBlID09PSAncmVzb3VyY2UtZXJyb3JzJyAmJiBldi5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3Byb2JsZW0nLFxuICAgICAgICBkZXRlY3RlZEJ5LFxuICAgICAgICBwcm9ibGVtczogYXdhaXQgdGhpcy5hZGRFcnJvclRyYWNlcyhldi5lcnJvcnMubWFwKChlKSA9PiByZXNvdXJjZUVycm9yRnJvbUVhcmx5VmFsaWRhdGlvbkVycm9yKGNoYW5nZVNldC5TdGFja0lkID8/ICcnLCB0aGlzLnBhcmVudFN0YWNrTG9naWNhbElkcywgZSkpKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gT3RoZXJ3aXNlLCB3ZSB3aWxsIHJldHVybiBhIGdlbmVyaWMgY2hhbmdlc2V0IGVycm9yIG1lc3NhZ2UuIElmIHRoZXJlIHdhcyBhIHByb2JsZW1cbiAgICAvLyBjaGVja2luZywgd2UgbG9nIHRoYXQgZm9yIGdvb2QgbWVhc3VyZSBidXQgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZS5cbiAgICBpZiAoZXYudHlwZSA9PT0gJ2NvdWxkLW5vdC1jaGVjaycpIHtcbiAgICAgIGF3YWl0IHRoaXMucHJvcHMuaW9IZWxwZXIuZGVmYXVsdHMud2Fybihldi5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbm9uU3BlY2lmaWNDaGFuZ2VTZXRFcnJvcihjaGFuZ2VTZXQsIGRldGVjdGVkQnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhZGRFcnJvclRyYWNlcyhlcnJzOiByZWFkb25seSBSZXNvdXJjZUVycm9yW10pOiBQcm9taXNlPFRyYWNlZFJlc291cmNlRXJyb3JbXT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9wcm9taXNlYWxsLW5vLXVuYm91bmRlZC1wYXJhbGxlbGlzbVxuICAgIHJldHVybiBQcm9taXNlLmFsbChlcnJzLm1hcCgoZSkgPT4gdGhpcy5hZGRFcnJvclRyYWNlKGUpKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZEVycm9yVHJhY2UoZXJyOiBSZXNvdXJjZUVycm9yKTogUHJvbWlzZTxUcmFjZWRSZXNvdXJjZUVycm9yPiB7XG4gICAgbGV0IHNvdXJjZVRyYWNlO1xuICAgIGlmIChlcnIubG9naWNhbElkKSB7XG4gICAgICBzb3VyY2VUcmFjZSA9IGF3YWl0IHRoaXMucHJvcHMuc291cmNlVHJhY2VyLnRyYWNlUmVzb3VyY2UoZXJyLnN0YWNrQXJuLCBlcnIucGFyZW50U3RhY2tMb2dpY2FsSWRzLCBlcnIubG9naWNhbElkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc291cmNlVHJhY2UgPSBhd2FpdCB0aGlzLnByb3BzLnNvdXJjZVRyYWNlci50cmFjZVN0YWNrKGVyci5zdGFja0FybiwgZXJyLnBhcmVudFN0YWNrTG9naWNhbElkcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgLi4uZXJyLCBzb3VyY2VUcmFjZSwgdG9wTGV2ZWxTdGFja0hpZXJhcmNoaWNhbElkOiB0aGlzLnByb3BzLnRvcExldmVsU3RhY2tIaWVyYXJjaGljYWxJZCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgZ2VuZXJpYyBzdGFjayBlcnJvciBmcm9tIHRoZSBnaXZlbiBjaGFuZ2Ugc2V0IGluZm9ybWF0aW9uXG4gICAqXG4gICAqIFdlIGNhbid0IHBvaW50IHRvIGEgc3BlY2lmaWMgcmVzb3VyY2UuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9ub25TcGVjaWZpY0NoYW5nZVNldEVycm9yKGNoYW5nZVNldDogQ2hhbmdlU2V0U3VtbWFyeSwgZGV0ZWN0ZWRCeTogU3RhY2tQcm9ibGVtU291cmNlKTogUHJvbWlzZTxTdGFja0RpYWdub3Npcz4ge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAncHJvYmxlbScsXG4gICAgICBkZXRlY3RlZEJ5LFxuICAgICAgcHJvYmxlbXM6IFtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGRFcnJvclRyYWNlKHtcbiAgICAgICAgICAvLyBJdCdzIGFib3V0IGEgc3RhY2tcbiAgICAgICAgICBsb2dpY2FsSWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICBtZXNzYWdlOiBjaGFuZ2VTZXQuU3RhdHVzUmVhc29uID8/ICcnLFxuICAgICAgICAgIHBhcmVudFN0YWNrTG9naWNhbElkczogdGhpcy5wYXJlbnRTdGFja0xvZ2ljYWxJZHMsXG4gICAgICAgICAgc3RhY2tBcm46IGNoYW5nZVNldC5TdGFja0lkID8/ICcnLFxuICAgICAgICAgIHBoeXNpY2FsSWQ6IGNoYW5nZVNldC5TdGFja0lkLFxuICAgICAgICAgIHJlc291cmNlVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTG9vayBmb3IgbmVzdGVkIGNoYW5nZSBzZXRzIHRoYXQgaGF2ZSBmYWlsZWQsIGFuZCBkaWFnbm9zZSB0aG9zZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgX2RpYWdub3NlTmVzdGVkQ2hhbmdlU2V0RmFpbHVyZShjaGFuZ2VTZXQ6IENoYW5nZVNldFN1bW1hcnkpOiBQcm9taXNlPFN0YWNrRGlhZ25vc2lzPiB7XG4gICAgY29uc3QgbmVzdGVkID0gYXdhaXQgdGhpcy5fZmluZEZhaWxlZE5lc3RlZFN0YWNrKGNoYW5nZVNldCk7XG4gICAgaWYgKCFuZXN0ZWQpIHtcbiAgICAgIC8vIFRoYXQncyB3ZWlyZC4gTGV0J3MgcmV0dXJuIHRoZSBjaGFuZ2Ugc2V0J3Mgc3RhdHVzIHJlYXNvbiBhcyBhIG5vbi1zcGVjaWZpYyBlcnJvclxuICAgICAgcmV0dXJuIHRoaXMuX25vblNwZWNpZmljQ2hhbmdlU2V0RXJyb3IoY2hhbmdlU2V0LCB7XG4gICAgICAgIHR5cGU6ICdjaGFuZ2Utc2V0JyxcbiAgICAgICAgY2hhbmdlU2V0TmFtZTogY2hhbmdlU2V0LkNoYW5nZVNldE5hbWUgPz8gJycsXG4gICAgICAgIGNoYW5nZVNldFN0YXR1czogY2hhbmdlU2V0LlN0YXR1cyA/PyAnJyxcbiAgICAgICAgc3RhdHVzUmVhc29uOiBjaGFuZ2VTZXQuU3RhdHVzUmVhc29uID8/ICcnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgbmVzdGVkQ3MgPSBhd2FpdCB0aGlzLmNmbi5kZXNjcmliZUNoYW5nZVNldCh7XG4gICAgICBDaGFuZ2VTZXROYW1lOiBuZXN0ZWQuY2hhbmdlU2V0TmFtZSxcbiAgICAgIFN0YWNrTmFtZTogbmVzdGVkLnN0YWNrTmFtZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IG5lc3RlZERpYWcgPSBuZXcgQ2xvdWRGb3JtYXRpb25TdGFja0RpYWdub3Nlcih0aGlzLnByb3BzKTtcbiAgICBuZXN0ZWREaWFnLnBhcmVudFN0YWNrTG9naWNhbElkcyA9IFsuLi50aGlzLnBhcmVudFN0YWNrTG9naWNhbElkcywgbmVzdGVkLmxvZ2ljYWxJZF07XG4gICAgcmV0dXJuIG5lc3RlZERpYWcuX2RpYWdub3NlQ2hhbmdlU2V0RmFpbHVyZShuZXN0ZWRDcyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9maW5kRmFpbGVkTmVzdGVkU3RhY2soY2hhbmdlU2V0OiBDaGFuZ2VTZXRTdW1tYXJ5KTogUHJvbWlzZTx7XG4gICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgY2hhbmdlU2V0TmFtZTogc3RyaW5nO1xuICAgIGxvZ2ljYWxJZDogc3RyaW5nO1xuICB9IHwgdW5kZWZpbmVkPiB7XG4gICAgLy8gVGhlIHN0YXR1cyByZWFzb24gb25seSBpbmNsdWRlcyB0aGUgY2hhbmdlIHNldCBJRCwgYnV0IHdlIGFsc28gbmVlZCB0aGUgc3RhY2sgbmFtZS4gVGhlIHdheSB0byBnZXQgdGhpcyBpc1xuICAgIC8vIGRlc2NyaWJlIHRoZSBjdXJyZW50IGNoYW5nZSBzZXQsIHRoZW4gZnJvbSB0aGUgQ2hhbmdlcyBmaW5kIHRoZSBzdGFjayB3aG9zZSBDaGFuZ2VTZXRJZCBpcyBtZW50aW9uZWQgaW4gdGhlXG4gICAgLy8gc3RhdHVzIHJlYXNvbiwgdGhlbiBsb29rIHVwIHRoYXQgY2hhbmdlIHNldCBhbmQgcmVjdXJzZSBpbnRvIGEgcmVndWxhciBjaGFuZ2Ugc2V0IGRpYWdub3Npcy5cbiAgICBsZXQgbmV4dFRva2VuID0gdW5kZWZpbmVkO1xuICAgIGRvIHtcbiAgICAgIC8vIENoYW5nZXMgaW4gdGhpcyByZXNwb25zZSBtaWdodCBiZSBwYWdpbmF0ZWRcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmNmbi5kZXNjcmliZUNoYW5nZVNldCh7XG4gICAgICAgIFN0YWNrTmFtZTogY2hhbmdlU2V0LlN0YWNrTmFtZSxcbiAgICAgICAgQ2hhbmdlU2V0TmFtZTogY2hhbmdlU2V0LkNoYW5nZVNldE5hbWUsXG4gICAgICAgIC4uLm5leHRUb2tlbiA/IHsgTmV4dFRva2VuOiBuZXh0VG9rZW4gfSA6IHt9LFxuICAgICAgfSk7XG5cbiAgICAgIGZvciAoY29uc3QgY2hhbmdlIG9mIHJlc3AuQ2hhbmdlcyA/PyBbXSkge1xuICAgICAgICBpZiAoY2hhbmdlLlR5cGUgPT09IENoYW5nZVR5cGUuUmVzb3VyY2UgJiYgY2hhbmdlLlJlc291cmNlQ2hhbmdlPy5SZXNvdXJjZVR5cGUgPT09ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycgJiYgY2hhbmdlLlJlc291cmNlQ2hhbmdlPy5DaGFuZ2VTZXRJZCAmJiBjaGFuZ2VTZXQuU3RhdHVzUmVhc29uPy5pbmNsdWRlcyhjaGFuZ2UuUmVzb3VyY2VDaGFuZ2U/LkNoYW5nZVNldElkKSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjaGFuZ2VTZXROYW1lOiBjaGFuZ2UuUmVzb3VyY2VDaGFuZ2UuQ2hhbmdlU2V0SWQsXG4gICAgICAgICAgICBzdGFja05hbWU6IGNoYW5nZS5SZXNvdXJjZUNoYW5nZS5QaHlzaWNhbFJlc291cmNlSWQgPz8gJycsXG4gICAgICAgICAgICBsb2dpY2FsSWQ6IGNoYW5nZS5SZXNvdXJjZUNoYW5nZS5Mb2dpY2FsUmVzb3VyY2VJZCA/PyAnJyxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5leHRUb2tlbiA9IHJlc3AuTmV4dFRva2VuO1xuICAgIH0gd2hpbGUgKG5leHRUb2tlbik7XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBwYXJzZSBmYWlsZWQgYXV0by1pbXBvcnRzIG91dCBmcm9tIGEgY2hhbmdlIHNldCBzdGF0dXNcbiAgICpcbiAgICogVGhlIHBhdHRlcm4gbG9va3MgbGlrZSB0aGlzOlxuICAgKlxuICAgKiBgYGBcbiAgICogQ2xvdWRGb3JtYXRpb24gaXMgYXR0ZW1wdGluZyB0byBpbXBvcnQgc29tZSByZXNvdXJjZXMgYmVjYXVzZSB0aGV5IGFscmVhZHkgZXhpc3QgaW4geW91ciBhY2NvdW50LiBUaGUgcmVzb3VyY2VzIG11c3QgaGF2ZSB0aGUgRGVsZXRpb25Qb2xpY3kgYXR0cmlidXRlIHNldCB0byAnUmV0YWluJyBvciAnUmV0YWluRXhjZXB0T25DcmVhdGUnIGluIHRoZSB0ZW1wbGF0ZSBmb3Igc3VjY2Vzc2Z1bCBpbXBvcnQuIFRoZSBhZmZlY3RlZCByZXNvdXJjZXMgYXJlIFNvbWVCdWNrZXRENUI3MDcwNCAoe0J1Y2tldE5hbWU9em9tYWFyZWVuYnVja2V0fSlcbiAgICogYGBgXG4gICAqXG4gICAqIEZvbGxvd2VkIGJ5XG4gICAqXG4gICAqIGBgYFxuICAgKiBMb2dpY2FsSUQgKHtQcm9wPVZhbHVlLFByb3A9VmFsdWV9KSwgTG9naWNhbElEICh7UHJvcD1WYWx1ZX0pLCAuLi5cbiAgICogYGBgXG4gICAqL1xuICBwcml2YXRlIF90cnlEZXRlY3RGYWlsZWRBdXRvSW1wb3J0KGNoYW5nZVNldDogQ2hhbmdlU2V0U3VtbWFyeSk6IFJlc291cmNlRXJyb3JbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNoYW5nZVNldC5TdGF0dXNSZWFzb247XG4gICAgLy8gT25seSBlbmhhbmNlIHRoZSBzcGVjaWZpYyBDRk4gZXJyb3IgYWJvdXQgaW1wb3J0aW5nIGV4aXN0aW5nIHJlc291cmNlc1xuICAgIGlmICghbWVzc2FnZT8uaW5jbHVkZXMoJ0Nsb3VkRm9ybWF0aW9uIGlzIGF0dGVtcHRpbmcgdG8gaW1wb3J0IHNvbWUgcmVzb3VyY2VzIGJlY2F1c2UgdGhleSBhbHJlYWR5IGV4aXN0IGluIHlvdXIgYWNjb3VudCcpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IG1hcmtlciA9ICdUaGUgYWZmZWN0ZWQgcmVzb3VyY2VzIGFyZSAnO1xuICAgIGNvbnN0IG1hcmtlckluZGV4ID0gbWVzc2FnZS5pbmRleE9mKG1hcmtlcik7XG4gICAgaWYgKG1hcmtlckluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCByZXQ6IFJlc291cmNlRXJyb3JbXSA9IFtdO1xuICAgIGxldCByZW1haW5pbmcgPSBtZXNzYWdlLnNsaWNlKG1hcmtlckluZGV4ICsgbWFya2VyLmxlbmd0aCk7XG4gICAgd2hpbGUgKHJlbWFpbmluZykge1xuICAgICAgY29uc3QgZW5kSXggPSByZW1haW5pbmcuaW5kZXhPZignKSwgJyk7XG4gICAgICBjb25zdCB0aGlzUmVzb3VyY2UgPSBlbmRJeCA+IC0xID8gcmVtYWluaW5nLnNsaWNlKDAsIGVuZEl4ICsgMSkgOiByZW1haW5pbmc7XG4gICAgICByZW1haW5pbmcgPSByZW1haW5pbmcuc2xpY2UodGhpc1Jlc291cmNlLmxlbmd0aCArIDIpO1xuXG4gICAgICAvLyB0aGlzUmVzb3VyY2UgPSBcIkxvZ2ljYWxJZCAoe1Byb3A9VmFsdWUsIFByb3A9VmFsdWV9KVwiXG4gICAgICBjb25zdCBvcGVuUGFyZW4gPSB0aGlzUmVzb3VyY2UuaW5kZXhPZignKCcpO1xuICAgICAgY29uc3QgbG9naWNhbElkID0gb3BlblBhcmVuID4gLTEgPyB0aGlzUmVzb3VyY2Uuc2xpY2UoMCwgb3BlblBhcmVuKS50cmltKCkgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHJldC5wdXNoKHtcbiAgICAgICAgbWVzc2FnZTogYEF1dG9tYXRpYyBpbXBvcnQgb2YgZXhpc3RpbmcgcmVzb3VyY2UgJHt0aGlzUmVzb3VyY2V9IG5lZWRzIGEgRGVsZXRpb25Qb2xpY3kgb2YgXFwnUmV0YWluXFwnIG9yIFxcJ1JldGFpbkV4Y2VwdE9uQ3JlYXRlXFwnLiBTZXQgdGhlIHJlbW92YWwgcG9saWN5IHRvIFxcJ1JlbW92YWxQb2xpY3kuUkVUQUlOXFwnIG9yIFxcJ1JlbW92YWxQb2xpY3kuUkVUQUlOX09OX1VQREFURV9PUl9ERUxFVEVcXCcgKFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL3YyL2d1aWRlL3Jlc291cmNlcy5odG1sI3Jlc291cmNlcy1yZW1vdmFsKWAsXG4gICAgICAgIHBhcmVudFN0YWNrTG9naWNhbElkczogdGhpcy5wYXJlbnRTdGFja0xvZ2ljYWxJZHMsXG4gICAgICAgIHN0YWNrQXJuOiBjaGFuZ2VTZXQuU3RhY2tJZCA/PyAnJyxcbiAgICAgICAgZXJyb3JDb2RlOiAnQXV0b21hdGljSW1wb3J0TmVlZHNSZXRhaW4nLFxuICAgICAgICBsb2dpY2FsSWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBjaGFuZ2Ugc2V0IGhhcyBubyBjaGFuZ2VzXG4gKlxuICogVGhpcyBtdXN0IGJlIGRldGVybWluZWQgZnJvbSB0aGUgc3RhdHVzLCBub3QgdGhlICdDaGFuZ2VzJyBhcnJheSBvbiB0aGVcbiAqIG9iamVjdDsgdGhlIGxhdHRlciBjYW4gYmUgZW1wdHkgYmVjYXVzZSBubyByZXNvdXJjZXMgd2VyZSBjaGFuZ2VkLCBidXQgaWZcbiAqIHRoZXJlIGFyZSBjaGFuZ2VzIHRvIE91dHB1dHMsIHRoZSBjaGFuZ2Ugc2V0IGNhbiBzdGlsbCBiZSBleGVjdXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZVNldEhhc05vQ2hhbmdlcyhkZXNjcmlwdGlvbjogQ2hhbmdlU2V0U3VtbWFyeSkge1xuICBjb25zdCBub0NoYW5nZUVycm9yUHJlZml4ZXMgPSBbXG4gICAgLy8gRXJyb3IgbWVzc2FnZSBmb3IgYSByZWd1bGFyIHRlbXBsYXRlXG4gICAgXCJUaGUgc3VibWl0dGVkIGluZm9ybWF0aW9uIGRpZG4ndCBjb250YWluIGNoYW5nZXMuXCIsXG4gICAgLy8gRXJyb3IgbWVzc2FnZSB3aGVuIGEgVHJhbnNmb3JtIGlzIGludm9sdmVkIChzZWUgIzEwNjUwKVxuICAgICdObyB1cGRhdGVzIGFyZSB0byBiZSBwZXJmb3JtZWQuJyxcbiAgXTtcblxuICByZXR1cm4gKFxuICAgIGRlc2NyaXB0aW9uLlN0YXR1cyA9PT0gJ0ZBSUxFRCcgJiYgbm9DaGFuZ2VFcnJvclByZWZpeGVzLnNvbWUoKHApID0+IChkZXNjcmlwdGlvbi5TdGF0dXNSZWFzb24gPz8gJycpLnN0YXJ0c1dpdGgocCkpXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlc291cmNlRXJyb3JGcm9tRWFybHlWYWxpZGF0aW9uRXJyb3Ioc3RhY2tJZDogc3RyaW5nLCBwYXJlbnRTdGFja0xvZ2ljYWxJZHM6IHN0cmluZ1tdLCBldjogQ2hhbmdlU2V0UmVzb3VyY2VFcnJvcik6IFJlc291cmNlRXJyb3Ige1xuICByZXR1cm4ge1xuICAgIGxvZ2ljYWxJZDogZXYubG9naWNhbElkLFxuICAgIHBoeXNpY2FsSWQ6IGV2LnBoeXNpY2FsSWQsXG4gICAgcmVzb3VyY2VUeXBlOiBldi5yZXNvdXJjZVR5cGUsXG4gICAgbWVzc2FnZTogYCR7ZXYubWVzc2FnZX0gKGF0ICR7ZXYuZG9jdW1lbnRQYXRofSlgLFxuICAgIGVycm9yQ29kZTogYCR7ZXYudmFsaWRhdGlvbk5hbWV9XyR7ZXYuZXZlbnRUeXBlfWAsXG4gICAgcGFyZW50U3RhY2tMb2dpY2FsSWRzLFxuICAgIHN0YWNrQXJuOiBzdGFja0lkLFxuICB9O1xufVxuIl19
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { TreeText } from './tree';
|
|
1
2
|
export declare class TreeBuilder {
|
|
2
3
|
private readonly rootText;
|
|
3
4
|
private readonly root;
|
|
4
5
|
constructor(rootText: string);
|
|
5
|
-
|
|
6
|
+
nodeText(constructPath: string): TreeText;
|
|
6
7
|
render(): string;
|
|
7
8
|
toString(): string;
|
|
8
9
|
private obtainNode;
|
|
@@ -10,12 +10,12 @@ class TreeBuilder {
|
|
|
10
10
|
constructor(rootText) {
|
|
11
11
|
this.rootText = rootText;
|
|
12
12
|
this.root = {
|
|
13
|
-
tree: new tree_1.Tree(rootText),
|
|
13
|
+
tree: new tree_1.Tree(new tree_1.TreeText([rootText])),
|
|
14
14
|
children: {},
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
this.obtainNode(constructPath).text
|
|
17
|
+
nodeText(constructPath) {
|
|
18
|
+
return this.obtainNode(constructPath).text;
|
|
19
19
|
}
|
|
20
20
|
render() {
|
|
21
21
|
const out = this.root.tree.render();
|
|
@@ -41,7 +41,7 @@ class TreeBuilder {
|
|
|
41
41
|
cur = child;
|
|
42
42
|
}
|
|
43
43
|
else {
|
|
44
|
-
const tree = new tree_1.Tree(next);
|
|
44
|
+
const tree = new tree_1.Tree(new tree_1.TreeText([next]));
|
|
45
45
|
cur.tree.addChild(tree);
|
|
46
46
|
cur = cur.children[next] = {
|
|
47
47
|
tree,
|
|
@@ -83,4 +83,4 @@ function wrapText(n, text) {
|
|
|
83
83
|
}
|
|
84
84
|
return ret;
|
|
85
85
|
}
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidHJlZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTBEQSxnQ0FVQztBQUVELDRCQXNCQztBQTVGRCxpQ0FBd0M7QUFFeEMsTUFBYSxXQUFXO0lBR087SUFGWixJQUFJLENBQWtCO0lBRXZDLFlBQTZCLFFBQWdCO1FBQWhCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDM0MsSUFBSSxDQUFDLElBQUksR0FBRztZQUNWLElBQUksRUFBRSxJQUFJLFdBQUksQ0FBQyxJQUFJLGVBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDeEMsUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDO0lBQ0osQ0FBQztJQUVNLFFBQVEsQ0FBQyxhQUFxQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdDLENBQUM7SUFFTSxNQUFNO1FBQ1gsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDO1FBQ0QsMEVBQTBFO1FBQzFFLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxVQUFVLENBQUMsYUFBcUI7UUFDdEMsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxF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QUFDO2dCQUNsRSxPQUFPLElBQUksQ0FBQyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDekMsU0FBUyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyZWUsIFRyZWVUZXh0IH0gZnJvbSAnLi90cmVlJztcblxuZXhwb3J0IGNsYXNzIFRyZWVCdWlsZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSByb290OiBUcmVlQnVpbGRlck5vZGU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb290VGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5yb290ID0ge1xuICAgICAgdHJlZTogbmV3IFRyZWUobmV3IFRyZWVUZXh0KFtyb290VGV4dF0pKSxcbiAgICAgIGNoaWxkcmVuOiB7fSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIG5vZGVUZXh0KGNvbnN0cnVjdFBhdGg6IHN0cmluZyk6IFRyZWVUZXh0IHtcbiAgICByZXR1cm4gdGhpcy5vYnRhaW5Ob2RlKGNvbnN0cnVjdFBhdGgpLnRleHQ7XG4gIH1cblxuICBwdWJsaWMgcmVuZGVyKCkge1xuICAgIGNvbnN0IG91dCA9IHRoaXMucm9vdC50cmVlLnJlbmRlcigpO1xuICAgIGlmICh0aGlzLnJvb3RUZXh0KSB7XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICAvLyBSb290VGV4dCBpcyBlbXB0eSwgaGlkZSB0aGUgZW50aXJlIG5vZGUgKHNsaWNlIG9mZiB0aGUgaW5pdGlhbCBuZXdsaW5lKVxuICAgIHJldHVybiBvdXQuc2xpY2UoMSk7XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBwcml2YXRlIG9idGFpbk5vZGUoY29uc3RydWN0UGF0aDogc3RyaW5nKTogVHJlZSB7XG4gICAgY29uc3QgcGFydHMgPSBjb25zdHJ1Y3RQYXRoLnNwbGl0KCcvJyk7XG4gICAgbGV0IGN1ciA9IHRoaXMucm9vdDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgbmV4dCA9IHBhcnRzLnNoaWZ0KCk7XG4gICAgICBpZiAobmV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBjdXIudHJlZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2hpbGQgPSBjdXIuY2hpbGRyZW5bbmV4dF07XG4gICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgY3VyID0gY2hpbGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0cmVlID0gbmV3IFRyZWUobmV3IFRyZWVUZXh0KFtuZXh0XSkpO1xuICAgICAgICBjdXIudHJlZS5hZGRDaGlsZCh0cmVlKTtcbiAgICAgICAgY3VyID0gY3VyLmNoaWxkcmVuW25leHRdID0ge1xuICAgICAgICAgIHRyZWUsXG4gICAgICAgICAgY2hpbGRyZW46IHt9LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5pbnRlcmZhY2UgVHJlZUJ1aWxkZXJOb2RlIHtcbiAgdHJlZTogVHJlZTtcbiAgY2hpbGRyZW46IFJlY29yZDxzdHJpbmcsIFRyZWVCdWlsZGVyTm9kZT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWRlQnlTaWRlKGxlZnQ6IHN0cmluZ1tdLCBzZXA6IHN0cmluZywgcmlnaHQ6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IHdpZHRoID0gbGVmdC5tYXAoeCA9PiB4Lmxlbmd0aCkucmVkdWNlKChhY2MsIG4pID0+IE1hdGgubWF4KGFjYywgbiksIDApO1xuXG4gIGNvbnN0IHJldDogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZWZ0Lmxlbmd0aCB8fCBpIDwgcmlnaHQubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBsID0gaSA8IGxlZnQubGVuZ3RoID8gbGVmdFtpXSA6ICcgJy5yZXBlYXQod2lkdGgpO1xuICAgIGNvbnN0IHIgPSBpIDwgcmlnaHQubGVuZ3RoID8gcmlnaHRbaV0gOiAnJztcbiAgICByZXQucHVzaChgJHtsfSR7c2VwfSR7cn1gKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcFRleHQobjogbnVtYmVyLCB0ZXh0OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGJyZWFrZXJzID0gWycgJywgJ1xcbiddO1xuXG4gIGNvbnN0IHJldDogc3RyaW5nW10gPSBbXTtcbiAgbGV0IGxpbmVTdGFydCA9IDA7XG4gIHdoaWxlIChsaW5lU3RhcnQgPCB0ZXh0Lmxlbmd0aCkge1xuICAgIGxldCBsaW5lRW5kID0gbGluZVN0YXJ0ICsgbjtcbiAgICB3aGlsZSAobGluZUVuZCA+IGxpbmVTdGFydCAmJiBsaW5lRW5kIDwgdGV4dC5sZW5ndGggJiYgIWJyZWFrZXJzLmluY2x1ZGVzKHRleHRbbGluZUVuZF0pKSB7XG4gICAgICBsaW5lRW5kIC09IDE7XG4gICAgfVxuICAgIGlmIChsaW5lRW5kID09PSBsaW5lU3RhcnQpIHtcbiAgICAgIC8vIENvdWxkIG5vdCBmaW5kIGEgc3BhY2UgaW4gdGhpcyBsaW5lLiBTZWVrIGZvcndhcmQgdG8gdGhlIGZpcnN0IHNwYWNlIHRvIGdldCB0aGUgc21hbGxlc3QgbGluZSBvdmVyZmxvd1xuICAgICAgbGluZUVuZCA9IGxpbmVTdGFydCArIG47XG4gICAgICB3aGlsZSAobGluZUVuZCA8IHRleHQubGVuZ3RoICYmICFicmVha2Vycy5pbmNsdWRlcyh0ZXh0W2xpbmVFbmRdKSkge1xuICAgICAgICBsaW5lRW5kICs9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0LnB1c2godGV4dC5zbGljZShsaW5lU3RhcnQsIGxpbmVFbmQpKTtcbiAgICBsaW5lU3RhcnQgPSBsaW5lRW5kICsgMTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuIl19
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
export declare class Tree {
|
|
2
|
-
|
|
2
|
+
text: TreeText;
|
|
3
3
|
private readonly children;
|
|
4
|
-
constructor(text:
|
|
5
|
-
get text(): string;
|
|
6
|
-
set text(text: string);
|
|
4
|
+
constructor(text: TreeText, children?: Tree[]);
|
|
7
5
|
addChild(tree: Tree): void;
|
|
8
6
|
height(): number;
|
|
9
7
|
render(): string;
|
|
10
8
|
toString(): string;
|
|
11
9
|
private _render;
|
|
12
10
|
}
|
|
11
|
+
export declare class TreeText {
|
|
12
|
+
header: string[];
|
|
13
|
+
body: string[];
|
|
14
|
+
footer: string[];
|
|
15
|
+
constructor(header?: string[], body?: string[], footer?: string[]);
|
|
16
|
+
get lines(): string[];
|
|
17
|
+
lineCount(): number;
|
|
18
|
+
}
|
|
13
19
|
//# sourceMappingURL=tree.d.ts.map
|
|
@@ -1,24 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Tree = void 0;
|
|
3
|
+
exports.TreeText = exports.Tree = void 0;
|
|
4
4
|
class Tree {
|
|
5
|
-
|
|
5
|
+
text;
|
|
6
6
|
children;
|
|
7
7
|
constructor(text, children = []) {
|
|
8
|
-
this.
|
|
8
|
+
this.text = text;
|
|
9
9
|
this.children = [...children];
|
|
10
10
|
}
|
|
11
|
-
get text() {
|
|
12
|
-
return this.lines.join('\n');
|
|
13
|
-
}
|
|
14
|
-
set text(text) {
|
|
15
|
-
this.lines = text.split('\n');
|
|
16
|
-
}
|
|
17
11
|
addChild(tree) {
|
|
18
12
|
this.children.push(tree);
|
|
19
13
|
}
|
|
20
14
|
height() {
|
|
21
|
-
return this.
|
|
15
|
+
return this.text.lineCount() + sum(this.children.map(c => c.height()));
|
|
22
16
|
}
|
|
23
17
|
render() {
|
|
24
18
|
return this._render().join('\n');
|
|
@@ -28,7 +22,7 @@ class Tree {
|
|
|
28
22
|
}
|
|
29
23
|
_render() {
|
|
30
24
|
const ret = [];
|
|
31
|
-
ret.push(...this.lines);
|
|
25
|
+
ret.push(...this.text.lines);
|
|
32
26
|
for (let i = 0; i < this.children.length; i++) {
|
|
33
27
|
const isLastChild = i === this.children.length - 1;
|
|
34
28
|
let bullet;
|
|
@@ -51,6 +45,23 @@ class Tree {
|
|
|
51
45
|
}
|
|
52
46
|
}
|
|
53
47
|
exports.Tree = Tree;
|
|
48
|
+
class TreeText {
|
|
49
|
+
header;
|
|
50
|
+
body;
|
|
51
|
+
footer;
|
|
52
|
+
constructor(header = [], body = [], footer = []) {
|
|
53
|
+
this.header = header;
|
|
54
|
+
this.body = body;
|
|
55
|
+
this.footer = footer;
|
|
56
|
+
}
|
|
57
|
+
get lines() {
|
|
58
|
+
return [...this.header, ...this.body, ...this.footer];
|
|
59
|
+
}
|
|
60
|
+
lineCount() {
|
|
61
|
+
return this.header.length + this.body.length + this.footer.length;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.TreeText = TreeText;
|
|
54
65
|
function sum(xs) {
|
|
55
66
|
let ret = 0;
|
|
56
67
|
for (const x of xs) {
|
|
@@ -58,4 +69,4 @@ function sum(xs) {
|
|
|
58
69
|
}
|
|
59
70
|
return ret;
|
|
60
71
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBYSxJQUFJO0lBQ1IsSUFBSSxDQUFXO0lBQ0wsUUFBUSxDQUFTO0lBRWxDLFlBQVksSUFBYyxFQUFFLFdBQW1CLEVBQUU7UUFDL0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxJQUFVO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVNLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sT0FBTztRQUNiLE1BQU0sR0FBRyxHQUFhLEVBQUUsQ0FBQztRQUN6QixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM5QyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBRW5ELElBQUksTUFBTSxDQUFDO1lBQ1gsSUFBSSxNQUFNLENBQUM7WUFDWCxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUNoQixNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ2xCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUNoQixNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ2xCLENBQUM7WUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQy9DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzVDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRTVCLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FDRjtBQWxERCxvQkFrREM7QUFFRCxNQUFhLFFBQVE7SUFFVjtJQUNBO0lBQ0E7SUFIVCxZQUNTLFNBQW1CLEVBQUUsRUFDckIsT0FBaUIsRUFBRSxFQUNuQixTQUFtQixFQUFFO1FBRnJCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFlO0lBRTlCLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDcEUsQ0FBQztDQUNGO0FBZkQsNEJBZUM7QUFFRCxTQUFTLEdBQUcsQ0FBQyxFQUFvQjtJQUMvQixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDWixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ25CLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFRyZWUge1xuICBwdWJsaWMgdGV4dDogVHJlZVRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hpbGRyZW46IFRyZWVbXTtcblxuICBjb25zdHJ1Y3Rvcih0ZXh0OiBUcmVlVGV4dCwgY2hpbGRyZW46IFRyZWVbXSA9IFtdKSB7XG4gICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICB0aGlzLmNoaWxkcmVuID0gWy4uLmNoaWxkcmVuXTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDaGlsZCh0cmVlOiBUcmVlKSB7XG4gICAgdGhpcy5jaGlsZHJlbi5wdXNoKHRyZWUpO1xuICB9XG5cbiAgcHVibGljIGhlaWdodCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRleHQubGluZUNvdW50KCkgKyBzdW0odGhpcy5jaGlsZHJlbi5tYXAoYyA9PiBjLmhlaWdodCgpKSk7XG4gIH1cblxuICBwdWJsaWMgcmVuZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3JlbmRlcigpLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByZXQ6IHN0cmluZ1tdID0gW107XG4gICAgcmV0LnB1c2goLi4udGhpcy50ZXh0LmxpbmVzKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGlzTGFzdENoaWxkID0gaSA9PT0gdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxO1xuXG4gICAgICBsZXQgYnVsbGV0O1xuICAgICAgbGV0IGhhbmdlcjtcbiAgICAgIGlmIChpc0xhc3RDaGlsZCkge1xuICAgICAgICBidWxsZXQgPSAnIOKUlOKUgCAnO1xuICAgICAgICBoYW5nZXIgPSAnICAgICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBidWxsZXQgPSAnIOKUnOKUgCAnO1xuICAgICAgICBoYW5nZXIgPSAnIOKUgiAgJztcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2hpbGRSZW5kZXIgPSB0aGlzLmNoaWxkcmVuW2ldLl9yZW5kZXIoKTtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY2hpbGRSZW5kZXIubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgY29uc3QgaXNGaXJzdExpbmUgPSBqID09PSAwO1xuXG4gICAgICAgIHJldC5wdXNoKChpc0ZpcnN0TGluZSA/IGJ1bGxldCA6IGhhbmdlcikgKyBjaGlsZFJlbmRlcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRyZWVUZXh0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGhlYWRlcjogc3RyaW5nW10gPSBbXSxcbiAgICBwdWJsaWMgYm9keTogc3RyaW5nW10gPSBbXSxcbiAgICBwdWJsaWMgZm9vdGVyOiBzdHJpbmdbXSA9IFtdLFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGluZXMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmhlYWRlciwgLi4udGhpcy5ib2R5LCAuLi50aGlzLmZvb3Rlcl07XG4gIH1cblxuICBwdWJsaWMgbGluZUNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyLmxlbmd0aCArIHRoaXMuYm9keS5sZW5ndGggKyB0aGlzLmZvb3Rlci5sZW5ndGg7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3VtKHhzOiBJdGVyYWJsZTxudW1iZXI+KTogbnVtYmVyIHtcbiAgbGV0IHJldCA9IDA7XG4gIGZvciAoY29uc3QgeCBvZiB4cykge1xuICAgIHJldCArPSB4O1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=
|
|
@@ -188,7 +188,7 @@ class StackActivityMonitor {
|
|
|
188
188
|
async readNewEvents(monitorId) {
|
|
189
189
|
const pollEvents = await this.poller.poll();
|
|
190
190
|
for (const resourceEvent of pollEvents) {
|
|
191
|
-
this.progressMonitor.process(resourceEvent
|
|
191
|
+
this.progressMonitor.process(resourceEvent);
|
|
192
192
|
// If this is a failed Guard Hook event with an invocation ID, fetch annotations
|
|
193
193
|
if (resourceEvent.event.HookInvocationId) {
|
|
194
194
|
const annotations = await this.fetchGuardHookAnnotations(resourceEvent.event.HookInvocationId);
|
|
@@ -233,4 +233,4 @@ class StackActivityMonitor {
|
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
235
|
exports.StackActivityMonitor = StackActivityMonitor;
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stYWN0aXZpdHktbW9uaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0YWNrLWFjdGl2aXR5LW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTZCO0FBRTdCLDZCQUE2QjtBQUM3Qiw2REFBbUU7QUFDbkUscUVBQWdFO0FBSWhFLDJDQUFrRDtBQUNsRCw4RUFBMEU7QUErRDFFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsb0JBQW9CO0lBQy9COztPQUVHO0lBQ2MsTUFBTSxDQUFtQjtJQUUxQzs7O09BR0c7SUFDYyxlQUFlLENBQVM7SUFFakMsU0FBUyxDQUFVO0lBRVYsZUFBZSxDQUF1QjtJQUV2RDs7T0FFRztJQUNLLFNBQVMsQ0FBaUM7SUFFbEQ7O09BRUc7SUFDSyxXQUFXLENBQWdCO0lBRWxCLFFBQVEsQ0FBVztJQUNuQixTQUFTLENBQVM7SUFDbEIsS0FBSyxDQUE4QjtJQUNuQyxHQUFHLENBQXdCO0lBQzNCLFlBQVksQ0FBd0I7SUFFckQsWUFBWSxFQUNWLEdBQUcsRUFDSCxRQUFRLEVBQ1IsS0FBSyxFQUNMLFNBQVMsRUFDVCxjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLGVBQWUsR0FBRyxLQUFLLEVBQ3ZCLFlBQVksR0FDYztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBRWpDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSw2Q0FBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUkscUNBQWdCLENBQUMsR0FB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QUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDO1FBQ3ZGLE1BQU0sU0FBUyxHQUFHLFlBQVksS0FBSyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVsRyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQ2hCLGlDQUFpQyxFQUNqQyxLQUFLLENBQUMsU0FBUyxFQUNmLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUM3RCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBVSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsRUFDL0MsS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLEVBQzFCLEtBQUssQ0FBQyxZQUFZLEVBQ2xCLFlBQVksRUFDWixTQUFTLEVBQ1QsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDNUQsUUFBUSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDNUUsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXBSRCxvREFvUkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gJ3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGknO1xuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcbmltcG9ydCB7IFN0YWNrRXZlbnRQb2xsZXIsIFBvbGxSYW5nZSB9IGZyb20gJy4vc3RhY2stZXZlbnQtcG9sbGVyJztcbmltcG9ydCB7IFN0YWNrUHJvZ3Jlc3NNb25pdG9yIH0gZnJvbSAnLi9zdGFjay1wcm9ncmVzcy1tb25pdG9yJztcbmltcG9ydCB0eXBlIHsgU3RhY2tBY3Rpdml0eSB9IGZyb20gJy4uLy4uL3BheWxvYWRzL3N0YWNrLWFjdGl2aXR5JztcbmltcG9ydCB0eXBlIHsgSUNsb3VkRm9ybWF0aW9uQ2xpZW50IH0gZnJvbSAnLi4vYXdzLWF1dGgvcHJpdmF0ZSc7XG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50UmVzb3VyY2VzIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgSU8sIHR5cGUgSW9IZWxwZXIgfSBmcm9tICcuLi9pby9wcml2YXRlJztcbmltcG9ydCB7IHJlc291cmNlTWV0YWRhdGEgfSBmcm9tICcuLi9yZXNvdXJjZS1tZXRhZGF0YS9yZXNvdXJjZS1tZXRhZGF0YSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tBY3Rpdml0eU1vbml0b3JQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gY2xpZW50XG4gICAqL1xuICByZWFkb25seSBjZm46IElDbG91ZEZvcm1hdGlvbkNsaWVudDtcblxuICAvKipcbiAgICogVGhlIElvSGVscGVyIHVzZWQgZm9yIG1lc3NhZ2luZ1xuICAgKi9cbiAgcmVhZG9ubHkgaW9IZWxwZXI6IElvSGVscGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgYXJ0aWZhY3QgdGhhdCBpcyBnZXR0aW5nIGRlcGxveWVkXG4gICAqL1xuICByZWFkb25seSBzdGFjazogQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgU3RhY2sgdGhhdCBpcyBnZXR0aW5nIGRlcGxveWVkXG4gICAqL1xuICByZWFkb25seSBzdGFja05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVG90YWwgbnVtYmVyIG9mIHJlc291cmNlcyB0byB1cGRhdGVcbiAgICpcbiAgICogVXNlZCB0byBjYWxjdWxhdGUgYSBwcm9ncmVzcyBiYXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcHJvZ3Jlc3MgcmVwb3J0aW5nXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZXNUb3RhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogQ3JlYXRpb24gdGltZSBvZiB0aGUgY2hhbmdlIHNldFxuICAgKlxuICAgKiBUaGlzIHdpbGwgYmUgdXNlZCB0byBmaWx0ZXIgZXZlbnRzLCBvbmx5IHNob3dpbmcgdGhvc2UgZnJvbSBhZnRlciB0aGUgY2hhbmdlXG4gICAqIHNldCBjcmVhdGlvbiB0aW1lLlxuICAgKlxuICAgKiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhpcywgb3RoZXJ3aXNlIHRoZSBmaWx0ZXJpbmcgd2lsbCBiZSBzdWJqZWN0XG4gICAqIHRvIGNsb2NrIGRyaWZ0IGJldHdlZW4gbG9jYWwgYW5kIGNsb3VkIG1hY2hpbmVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIExvY2FsIG1hY2hpbmUncyBjdXJyZW50IHRpbWVcbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZVNldENyZWF0aW9uVGltZT86IERhdGU7XG5cbiAgLyoqXG4gICAqIFRpbWUgdG8gd2FpdCBiZXR3ZWVuIGZldGNoaW5nIG5ldyBhY3Rpdml0aWVzLlxuICAgKlxuICAgKiBNdXN0IHdhaXQgYSByZWFzb25hYmxlIGFtb3VudCBvZiB0aW1lIGJldHdlZW4gcG9sbHMsIHNpbmNlIHdlIG5lZWQgdG8gY29uc2lkZXIgQ2xvdWRGb3JtYXRpb24gQVBJIGxpbWl0c1xuICAgKlxuICAgKiBAZGVmYXVsdCAyXzAwMFxuICAgKi9cbiAgcmVhZG9ubHkgcG9sbGluZ0ludGVydmFsPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCByZXNvdXJjZXMsIHVzZWQgdG8gbG9vayB1cCB0aGUgYm9vdHN0cmFwIHRvb2xraXQgdmVyc2lvbiB3aGVuXG4gICAqIGRpYWdub3NpbmcgR3VhcmQgSG9vayBhbm5vdGF0aW9uIGZldGNoIGZhaWx1cmVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEJvb3RzdHJhcCB2ZXJzaW9uIGlzIG5vdCByZXBvcnRlZCBpbiBlcnJvciBtZXNzYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgZW52UmVzb3VyY2VzPzogRW52aXJvbm1lbnRSZXNvdXJjZXM7XG59XG5cbi8qKlxuICogRHJpdmVzIHRoZSBtb25pdG9yaW5nIG9mIGEgU3RhY2sgZGVwbG95bWVudFxuICpcbiAqIGBgYFxuICog4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQICAgICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgICAgICAgICAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICog4pSCICAgICAgICAgU3RhY2sgICAgICAgICDilIIgcG9sbCgpIOKUgiAgICAgICAgIFN0YWNrICAgICAgICAg4pSCICBwcm9jZXNzKGV2KSDilIIgICAgICAgICBTdGFjayAgICAgICAgIOKUglxuICog4pSCICAgICAgRXZlbnRQb2xsZXIgICAgICDilILil4DilIDilIDilIDilIDilIDilIDilIDilIIgICAgQWN0aXZpdHlNb25pdG9yICAgIOKUguKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKWtuKUgiAgICBQcm9ncmVzc01vbml0b3IgICAg4pSCXG4gKiDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJggICAgICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgICAgICAgICAgICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFN0YWNrQWN0aXZpdHlNb25pdG9yIHtcbiAgLyoqXG4gICAqIFRoZSBwb2xsZXIgdXNlZCB0byByZWFkIHN0YWNrIGV2ZW50c1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwb2xsZXI6IFN0YWNrRXZlbnRQb2xsZXI7XG5cbiAgLyoqXG4gICAqIEZldGNoIG5ldyBhY3Rpdml0eSBldmVyeSAxIHNlY29uZFxuICAgKiBQcmludGVycyBjYW4gZGVjaWRlIHRvIHVwZGF0ZSBhIHZpZXcgbGVzcyBmcmVxdWVudGx5IGlmIGRlc2lyZWRcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcG9sbGluZ0ludGVydmFsOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBtb25pdG9ySWQ/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9ncmVzc01vbml0b3I6IFN0YWNrUHJvZ3Jlc3NNb25pdG9yO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHRpY2sgdGltZXJcbiAgICovXG4gIHByaXZhdGUgdGlja1RpbWVyPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG5cbiAgLyoqXG4gICAqIFNldCB0byB0aGUgYWN0aXZpdHkgb2YgcmVhZGluZyB0aGUgY3VycmVudCBldmVudHNcbiAgICovXG4gIHByaXZhdGUgcmVhZFByb21pc2U/OiBQcm9taXNlPGFueT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhY2s6IENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdDtcbiAgcHJpdmF0ZSByZWFkb25seSBjZm46IElDbG91ZEZvcm1hdGlvbkNsaWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBlbnZSZXNvdXJjZXM/OiBFbnZpcm9ubWVudFJlc291cmNlcztcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgY2ZuLFxuICAgIGlvSGVscGVyLFxuICAgIHN0YWNrLFxuICAgIHN0YWNrTmFtZSxcbiAgICByZXNvdXJjZXNUb3RhbCxcbiAgICBjaGFuZ2VTZXRDcmVhdGlvblRpbWUsXG4gICAgcG9sbGluZ0ludGVydmFsID0gMl8wMDAsXG4gICAgZW52UmVzb3VyY2VzLFxuICB9OiBTdGFja0FjdGl2aXR5TW9uaXRvclByb3BzKSB7XG4gICAgdGhpcy5pb0hlbHBlciA9IGlvSGVscGVyO1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLnN0YWNrTmFtZSA9IHN0YWNrTmFtZTtcbiAgICB0aGlzLmNmbiA9IGNmbjtcbiAgICB0aGlzLmVudlJlc291cmNlcyA9IGVudlJlc291cmNlcztcblxuICAgIHRoaXMucHJvZ3Jlc3NNb25pdG9yID0gbmV3IFN0YWNrUHJvZ3Jlc3NNb25pdG9yKHJlc291cmNlc1RvdGFsKTtcbiAgICB0aGlzLnBvbGxpbmdJbnRlcnZhbCA9IHBvbGxpbmdJbnRlcnZhbDtcbiAgICB0aGlzLnBvbGxlciA9IG5ldyBTdGFja0V2ZW50UG9sbGVyKGNmbiwge1xuICAgICAgc3RhY2tOYW1lLFxuICAgICAgaW5pdGlhbFBvbGxSYW5nZTogUG9sbFJhbmdlLnNpbmNlVGltZXN0YW1wKGNoYW5nZVNldENyZWF0aW9uVGltZT8uZ2V0VGltZSgpID8/IERhdGUubm93KCkpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBlcnJvcnMgdGhhdCB3ZXJlIGRpc2NvdmVyZWQgZHVyaW5nIG1vbml0b3Jpbmcgb2YgdGhpcyBzdGFja1xuICAgKi9cbiAgcHVibGljIGdldCBlcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucG9sbGVyLmVycm9ycztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdGFydCgpIHtcbiAgICB0aGlzLm1vbml0b3JJZCA9IHV1aWQudjQoKTtcbiAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JNTUwMS5tc2coYERlcGxveWluZyAke3RoaXMuc3RhY2tOYW1lfWAsIHtcbiAgICAgIGRlcGxveW1lbnQ6IHRoaXMubW9uaXRvcklkLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2ssXG4gICAgICBzdGFja05hbWU6IHRoaXMuc3RhY2tOYW1lLFxuICAgICAgcmVzb3VyY2VzVG90YWw6IHRoaXMucHJvZ3Jlc3NNb25pdG9yLnRvdGFsLFxuICAgIH0pKTtcbiAgICB0aGlzLnNjaGVkdWxlTmV4dFRpY2soKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdG9wKCkge1xuICAgIGNvbnN0IG9sZE1vbml0b3JJZCA9IHRoaXMubW9uaXRvcklkITtcbiAgICB0aGlzLm1vbml0b3JJZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy50aWNrVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpY2tUaW1lcik7XG4gICAgfVxuXG4gICAgLy8gRG8gYSBmaW5hbCBwb2xsIGZvciBhbGwgZXZlbnRzLiBUaGlzIGlzIHRvIGhhbmRsZSB0aGUgc2l0dWF0aW9uIHdoZXJlIERlc2NyaWJlU3RhY2tTdGF0dXNcbiAgICAvLyBhbHJlYWR5IHJldHVybmVkIGFuIGVycm9yLCBidXQgdGhlIG1vbml0b3IgaGFzbid0IHNlZW4gYWxsIHRoZSBldmVudHMgeWV0IGFuZCB3ZSdkIGVuZFxuICAgIC8vIHVwIG5vdCBwcmludGluZyB0aGUgZmFpbHVyZSByZWFzb24gdG8gdXNlcnMuXG4gICAgYXdhaXQgdGhpcy5maW5hbFBvbGxUb0VuZChvbGRNb25pdG9ySWQpO1xuXG4gICAgYXdhaXQgdGhpcy5pb0hlbHBlci5ub3RpZnkoSU8uQ0RLX1RPT0xLSVRfSTU1MDMubXNnKGBDb21wbGV0ZWQgJHt0aGlzLnN0YWNrTmFtZX1gLCB7XG4gICAgICBkZXBsb3ltZW50OiBvbGRNb25pdG9ySWQsXG4gICAgICBzdGFjazogdGhpcy5zdGFjayxcbiAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFja05hbWUsXG4gICAgICByZXNvdXJjZXNUb3RhbDogdGhpcy5wcm9ncmVzc01vbml0b3IudG90YWwsXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZU5leHRUaWNrKCkge1xuICAgIGlmICghdGhpcy5tb25pdG9ySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRpY2tUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRpY2soKSwgdGhpcy5wb2xsaW5nSW50ZXJ2YWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0aWNrKCkge1xuICAgIGlmICghdGhpcy5tb25pdG9ySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5yZWFkUHJvbWlzZSA9IHRoaXMucmVhZE5ld0V2ZW50cyh0aGlzLm1vbml0b3JJZCk7XG4gICAgICBhd2FpdCB0aGlzLnJlYWRQcm9taXNlO1xuICAgICAgdGhpcy5yZWFkUHJvbWlzZSA9IHVuZGVmaW5lZDtcblxuICAgICAgLy8gV2UgbWlnaHQgaGF2ZSBiZWVuIHN0b3AoKXBlZCB3aGlsZSB0aGUgbmV0d29yayBjYWxsIHdhcyBpbiBwcm9ncmVzcy5cbiAgICAgIGlmICghdGhpcy5tb25pdG9ySWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX0U1NTAwLm1zZyhcbiAgICAgICAgdXRpbC5mb3JtYXQoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIG1vbml0b3Jpbmcgc3RhY2s6ICVzJywgZSksXG4gICAgICAgIHsgZXJyb3I6IGUgYXMgYW55IH0sXG4gICAgICApKTtcbiAgICB9XG4gICAgdGhpcy5zY2hlZHVsZU5leHRUaWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRNZXRhZGF0YUZvcihsb2dpY2FsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5zdGFjay5tZXRhZGF0YTtcbiAgICBpZiAoIWxvZ2ljYWxJZCB8fCAhbWV0YWRhdGEpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiByZXNvdXJjZU1ldGFkYXRhKHRoaXMuc3RhY2ssIGxvZ2ljYWxJZCk7XG4gIH1cblxuICAvKipcbiAgICogVHJpbXMgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlLCBjb2xsYXBzZXMgYWxsIGludGVybmFsIHdoaXRlc3BhY2VcbiAgICogKGluY2x1ZGluZyBuZXdsaW5lcykgdG8gYSBzaW5nbGUgc3BhY2UsIGFuZCB0cnVuY2F0ZXMgdG8gYG1heENoYXJzYFxuICAgKiBjaGFyYWN0ZXJzLCBhcHBlbmRpbmcgYFsuLi50cnVuY2F0ZWRdYCB3aGVuIHRoZSBvcmlnaW5hbCB3YXMgbG9uZ2VyLlxuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZywgbWF4Q2hhcnM6IG51bWJlciA9IDQwMCk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG1lc3NhZ2UudHJpbSgpLnJlcGxhY2UoL1xccysvZywgJyAnKTtcbiAgICByZXR1cm4gbm9ybWFsaXplZC5sZW5ndGggPiBtYXhDaGFyc1xuICAgICAgPyBub3JtYWxpemVkLnN1YnN0cmluZygwLCBtYXhDaGFycykgKyAnWy4uLnRydW5jYXRlZF0nXG4gICAgICA6IG5vcm1hbGl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBHdWFyZCBIb29rIGFubm90YXRpb24gZGV0YWlscyB2aWEgR2V0SG9va1Jlc3VsdCBBUEkgYW5kIGZvcm1hdHMgdGhlbVxuICAgKiBpbnRvIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nLiBSZXR1cm5zIHVuZGVmaW5lZCBpZiB0aGUgZmV0Y2ggZmFpbHMgb3IgdGhlcmVcbiAgICogYXJlIG5vIGZhaWxlZCBhbm5vdGF0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hHdWFyZEhvb2tBbm5vdGF0aW9ucyhob29rSW52b2NhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNmbi5nZXRIb29rUmVzdWx0KHsgSG9va1Jlc3VsdElkOiBob29rSW52b2NhdGlvbklkIH0pO1xuICAgICAgY29uc3QgYW5ub3RhdGlvbnMgPSByZXN1bHQuQW5ub3RhdGlvbnMgPz8gW107XG4gICAgICBjb25zdCBmYWlsZWRBbm5vdGF0aW9ucyA9IGFubm90YXRpb25zLmZpbHRlcigoYSkgPT4gYS5TdGF0dXMgPT09ICdGQUlMRUQnKTtcbiAgICAgIGlmIChmYWlsZWRBbm5vdGF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gWydOb25Db21wbGlhbnQgUnVsZXM6JywgJyddO1xuICAgICAgZm9yIChjb25zdCBhbm5vdGF0aW9uIG9mIGZhaWxlZEFubm90YXRpb25zKSB7XG4gICAgICAgIGlmIChhbm5vdGF0aW9uLkFubm90YXRpb25OYW1lKSB7XG4gICAgICAgICAgbGluZXMucHVzaChgWyR7YW5ub3RhdGlvbi5Bbm5vdGF0aW9uTmFtZX1dYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFubm90YXRpb24uU3RhdHVzTWVzc2FnZSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYOKAoiAke3RoaXMubm9ybWFsaXplTWVzc2FnZShhbm5vdGF0aW9uLlN0YXR1c01lc3NhZ2UpfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbm5vdGF0aW9uLlJlbWVkaWF0aW9uTWVzc2FnZSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYFJlbWVkaWF0aW9uOiAke3RoaXMubm9ybWFsaXplTWVzc2FnZShhbm5vdGF0aW9uLlJlbWVkaWF0aW9uTWVzc2FnZSl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGluZXMuam9pbignXFxuJykudHJpbUVuZCgpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpO1xuXG4gICAgICBjb25zdCBpc1Blcm1pc3Npb25zRXJyb3IgPVxuICAgICAgICBlLm5hbWUgPT09ICdBY2Nlc3NEZW5pZWRFeGNlcHRpb24nIHx8XG4gICAgICAgICh0eXBlb2YgZXJyb3JNZXNzYWdlID09PSAnc3RyaW5nJyAmJiBlcnJvck1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybTogY2xvdWRmb3JtYXRpb246Z2V0aG9va3Jlc3VsdCcpKTtcblxuICAgICAgaWYgKGlzUGVybWlzc2lvbnNFcnJvciAmJiB0aGlzLmVudlJlc291cmNlcykge1xuICAgICAgICBsZXQgY3VycmVudFZlcnNpb246IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjdXJyZW50VmVyc2lvbiA9IChhd2FpdCB0aGlzLmVudlJlc291cmNlcy5sb29rdXBUb29sa2l0KCkpLnZlcnNpb247XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIGlnbm9yZSBlcnJvcnMgbG9va2luZyB1cCB0aGUgYm9vdHN0cmFwIHZlcnNpb25cbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIuZGVmYXVsdHMud2FybihcbiAgICAgICAgICB1dGlsLmZvcm1hdChcbiAgICAgICAgICAgIGBGYWlsZWQgdG8gZmV0Y2ggcmVzdWx0IGRldGFpbHMgZm9yIEhvb2sgaW52b2NhdGlvbiAke2hvb2tJbnZvY2F0aW9uSWR9OiAke2Vycm9yTWVzc2FnZX0uIE1ha2Ugc3VyZSB5b3UgaGF2ZSBwZXJtaXNzaW9ucyB0byBjYWxsIHRoZSBHZXRIb29rUmVzdWx0IEFQSSwgb3IgcmUtYm9vdHN0cmFwIHlvdXIgZW52aXJvbm1lbnQgYnkgcnVubmluZyAnY2RrIGJvb3RzdHJhcCcgdG8gdXBkYXRlIHRoZSBCb290c3RyYXAgQ0RLIFRvb2xraXQgc3RhY2suXG4gICAgICAgICAgICAnQm9vdHN0cmFwIHRvb2xraXQgc3RhY2sgdmVyc2lvbiAzMSBvciBsYXRlciBpcyBuZWVkZWQ7IGN1cnJlbnQgdmVyc2lvbjogJHtjdXJyZW50VmVyc2lvbiA/PyAndW5rbm93bid9LmAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIuZGVmYXVsdHMud2FybihcbiAgICAgICAgICB1dGlsLmZvcm1hdCgnRmFpbGVkIHRvIGZldGNoIEd1YXJkIEhvb2sgZGV0YWlscyBmb3IgaW52b2NhdGlvbiAlczogJXMnLCBob29rSW52b2NhdGlvbklkLCBlcnJvck1lc3NhZ2UpLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBhbGwgbmV3IGV2ZW50cyBmcm9tIHRoZSBzdGFjayBoaXN0b3J5XG4gICAqXG4gICAqIFRoZSBldmVudHMgYXJlIHJldHVybmVkIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIgYnkgdGhlIHVuZGVybHlpbmcgcG9sbGVyLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZWFkTmV3RXZlbnRzKG1vbml0b3JJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcG9sbEV2ZW50cyA9IGF3YWl0IHRoaXMucG9sbGVyLnBvbGwoKTtcblxuICAgIGZvciAoY29uc3QgcmVzb3VyY2VFdmVudCBvZiBwb2xsRXZlbnRzKSB7XG4gICAgICB0aGlzLnByb2dyZXNzTW9uaXRvci5wcm9jZXNzKHJlc291cmNlRXZlbnQuZXZlbnQpO1xuXG4gICAgICAvLyBJZiB0aGlzIGlzIGEgZmFpbGVkIEd1YXJkIEhvb2sgZXZlbnQgd2l0aCBhbiBpbnZvY2F0aW9uIElELCBmZXRjaCBhbm5vdGF0aW9uc1xuICAgICAgaWYgKHJlc291cmNlRXZlbnQuZXZlbnQuSG9va0ludm9jYXRpb25JZCkge1xuICAgICAgICBjb25zdCBhbm5vdGF0aW9ucyA9IGF3YWl0IHRoaXMuZmV0Y2hHdWFyZEhvb2tBbm5vdGF0aW9ucyhyZXNvdXJjZUV2ZW50LmV2ZW50Lkhvb2tJbnZvY2F0aW9uSWQpO1xuICAgICAgICBpZiAoYW5ub3RhdGlvbnMpIHtcbiAgICAgICAgICByZXNvdXJjZUV2ZW50LmV2ZW50Lkhvb2tTdGF0dXNSZWFzb24gPSBhbm5vdGF0aW9ucztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBhY3Rpdml0eTogU3RhY2tBY3Rpdml0eSA9IHtcbiAgICAgICAgZGVwbG95bWVudDogbW9uaXRvcklkLFxuICAgICAgICBldmVudDogcmVzb3VyY2VFdmVudC5ldmVudCxcbiAgICAgICAgbWV0YWRhdGE6IHRoaXMuZmluZE1ldGFkYXRhRm9yKHJlc291cmNlRXZlbnQuZXZlbnQuTG9naWNhbFJlc291cmNlSWQpLFxuICAgICAgICBwcm9ncmVzczogdGhpcy5wcm9ncmVzc01vbml0b3IucHJvZ3Jlc3MsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JNTUwMi5tc2codGhpcy5mb3JtYXRBY3Rpdml0eShhY3Rpdml0eSwgdHJ1ZSksIGFjdGl2aXR5KSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gYSBmaW5hbCBwb2xsIHRvIHRoZSBlbmQgYW5kIGZsdXNoIG91dCBhbGwgZXZlbnRzIHRvIHRoZSBwcmludGVyXG4gICAqXG4gICAqIEZpbmlzaCBhbnkgcG9sbCBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MsIHRoZW4gZG8gYSBmaW5hbCBvbmUgdW50aWwgd2UndmVcbiAgICogcmVhY2hlZCB0aGUgbGFzdCBwYWdlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmaW5hbFBvbGxUb0VuZChtb25pdG9ySWQ6IHN0cmluZykge1xuICAgIC8vIElmIHdlIHdlcmUgZG9pbmcgYSBwb2xsLCBmaW5pc2ggdGhhdCBmaXJzdC4gSXQgd2FzIHN0YXJ0ZWQgYmVmb3JlXG4gICAgLy8gdGhlIG1vbWVudCB3ZSB3ZXJlIHN1cmUgd2Ugd2VyZW4ndCBnb2luZyB0byBnZXQgYW55IG5ldyBldmVudHMgYW55bW9yZVxuICAgIC8vIHNvIHdlIG5lZWQgdG8gZG8gYSBuZXcgb25lIGFueXdheS4gTmVlZCB0byB3YWl0IGZvciB0aGlzIG9uZSB0aG91Z2hcbiAgICAvLyBiZWNhdXNlIG91ciBzdGF0ZSBpcyBzaW5nbGUtdGhyZWFkZWQuXG4gICAgaWYgKHRoaXMucmVhZFByb21pc2UpIHtcbiAgICAgIGF3YWl0IHRoaXMucmVhZFByb21pc2U7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5yZWFkTmV3RXZlbnRzKG1vbml0b3JJZCk7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0cyBhIHN0YWNrIGFjdGl2aXR5IGludG8gYSBiYXNpYyBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0QWN0aXZpdHkoYWN0aXZpdHk6IFN0YWNrQWN0aXZpdHksIHByb2dyZXNzOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBjb25zdCBldmVudCA9IGFjdGl2aXR5LmV2ZW50O1xuICAgIGNvbnN0IG1ldGFkYXRhID0gYWN0aXZpdHkubWV0YWRhdGE7XG5cbiAgICBjb25zdCByZXNvdXJjZU5hbWUgPSBtZXRhZGF0YSA/IG1ldGFkYXRhLmNvbnN0cnVjdFBhdGggOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCB8fCAnJztcbiAgICBjb25zdCBsb2dpY2FsSWQgPSByZXNvdXJjZU5hbWUgIT09IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkID8gYCgke2V2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkfSkgYCA6ICcnO1xuXG4gICAgcmV0dXJuIHV0aWwuZm9ybWF0KFxuICAgICAgJyVzIHwgJXMlcyB8ICVzIHwgJXMgfCAlcyAlcyVzJXMnLFxuICAgICAgZXZlbnQuU3RhY2tOYW1lLFxuICAgICAgcHJvZ3Jlc3MgIT09IGZhbHNlID8gYCR7YWN0aXZpdHkucHJvZ3Jlc3MuZm9ybWF0dGVkfSB8IGAgOiAnJyxcbiAgICAgIG5ldyBEYXRlKGV2ZW50LlRpbWVzdGFtcCEpLnRvTG9jYWxlVGltZVN0cmluZygpLFxuICAgICAgZXZlbnQuUmVzb3VyY2VTdGF0dXMgfHwgJycsXG4gICAgICBldmVudC5SZXNvdXJjZVR5cGUsXG4gICAgICByZXNvdXJjZU5hbWUsXG4gICAgICBsb2dpY2FsSWQsXG4gICAgICBldmVudC5SZXNvdXJjZVN0YXR1c1JlYXNvbiA/IGV2ZW50LlJlc291cmNlU3RhdHVzUmVhc29uIDogJycsXG4gICAgICBtZXRhZGF0YT8uZW50cnkudHJhY2UgPyBgXFxuXFx0JHttZXRhZGF0YS5lbnRyeS50cmFjZS5qb2luKCdcXG5cXHRcXFxcXyAnKX1gIDogJycsXG4gICAgKTtcbiAgfVxufVxuXG4iXX0=
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stYWN0aXZpdHktbW9uaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0YWNrLWFjdGl2aXR5LW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTZCO0FBRTdCLDZCQUE2QjtBQUM3Qiw2REFBbUU7QUFDbkUscUVBQWdFO0FBSWhFLDJDQUFrRDtBQUNsRCw4RUFBMEU7QUErRDFFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsb0JBQW9CO0lBQy9COztPQUVHO0lBQ2MsTUFBTSxDQUFtQjtJQUUxQzs7O09BR0c7SUFDYyxlQUFlLENBQVM7SUFFakMsU0FBUyxDQUFVO0lBRVYsZUFBZSxDQUF1QjtJQUV2RDs7T0FFRztJQUNLLFNBQVMsQ0FBaUM7SUFFbEQ7O09BRUc7SUFDSyxXQUFXLENBQWdCO0lBRWxCLFFBQVEsQ0FBVztJQUNuQixTQUFTLENBQVM7SUFDbEIsS0FBSyxDQUE4QjtJQUNuQyxHQUFHLENBQXdCO0lBQzNCLFlBQVksQ0FBd0I7SUFFckQsWUFBWSxFQUNWLEdBQUcsRUFDSCxRQUFRLEVBQ1IsS0FBSyxFQUNMLFNBQVMsRUFDVCxjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLGVBQWUsR0FBRyxLQUFLLEVBQ3ZCLFlBQVksR0FDYztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBRWpDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSw2Q0FBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUkscUNBQWdCLENBQUMsR0FB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QVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7UUFDdkYsTUFBTSxTQUFTLEdBQUcsWUFBWSxLQUFLLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsaUJBQWlCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRWxHLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FDaEIsaUNBQWlDLEVBQ2pDLEtBQUssQ0FBQyxTQUFTLEVBQ2YsUUFBUSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQzdELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFVLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxFQUMvQyxLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsRUFDMUIsS0FBSyxDQUFDLFlBQVksRUFDbEIsWUFBWSxFQUNaLFNBQVMsRUFDVCxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUM1RCxRQUFRLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUM1RSxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBcFJELG9EQW9SQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5pbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LWFwaSc7XG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgU3RhY2tFdmVudFBvbGxlciwgUG9sbFJhbmdlIH0gZnJvbSAnLi9zdGFjay1ldmVudC1wb2xsZXInO1xuaW1wb3J0IHsgU3RhY2tQcm9ncmVzc01vbml0b3IgfSBmcm9tICcuL3N0YWNrLXByb2dyZXNzLW1vbml0b3InO1xuaW1wb3J0IHR5cGUgeyBTdGFja0FjdGl2aXR5IH0gZnJvbSAnLi4vLi4vcGF5bG9hZHMvc3RhY2stYWN0aXZpdHknO1xuaW1wb3J0IHR5cGUgeyBJQ2xvdWRGb3JtYXRpb25DbGllbnQgfSBmcm9tICcuLi9hd3MtYXV0aC9wcml2YXRlJztcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnRSZXNvdXJjZXMgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBJTywgdHlwZSBJb0hlbHBlciB9IGZyb20gJy4uL2lvL3ByaXZhdGUnO1xuaW1wb3J0IHsgcmVzb3VyY2VNZXRhZGF0YSB9IGZyb20gJy4uL3Jlc291cmNlLW1ldGFkYXRhL3Jlc291cmNlLW1ldGFkYXRhJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGFja0FjdGl2aXR5TW9uaXRvclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBDbG91ZEZvcm1hdGlvbiBjbGllbnRcbiAgICovXG4gIHJlYWRvbmx5IGNmbjogSUNsb3VkRm9ybWF0aW9uQ2xpZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgSW9IZWxwZXIgdXNlZCBmb3IgbWVzc2FnaW5nXG4gICAqL1xuICByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayBhcnRpZmFjdCB0aGF0IGlzIGdldHRpbmcgZGVwbG95ZWRcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrOiBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBTdGFjayB0aGF0IGlzIGdldHRpbmcgZGVwbG95ZWRcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUb3RhbCBudW1iZXIgb2YgcmVzb3VyY2VzIHRvIHVwZGF0ZVxuICAgKlxuICAgKiBVc2VkIHRvIGNhbGN1bGF0ZSBhIHByb2dyZXNzIGJhci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBwcm9ncmVzcyByZXBvcnRpbmdcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlc1RvdGFsPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDcmVhdGlvbiB0aW1lIG9mIHRoZSBjaGFuZ2Ugc2V0XG4gICAqXG4gICAqIFRoaXMgd2lsbCBiZSB1c2VkIHRvIGZpbHRlciBldmVudHMsIG9ubHkgc2hvd2luZyB0aG9zZSBmcm9tIGFmdGVyIHRoZSBjaGFuZ2VcbiAgICogc2V0IGNyZWF0aW9uIHRpbWUuXG4gICAqXG4gICAqIEl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGlzLCBvdGhlcndpc2UgdGhlIGZpbHRlcmluZyB3aWxsIGJlIHN1YmplY3RcbiAgICogdG8gY2xvY2sgZHJpZnQgYmV0d2VlbiBsb2NhbCBhbmQgY2xvdWQgbWFjaGluZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTG9jYWwgbWFjaGluZSdzIGN1cnJlbnQgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlU2V0Q3JlYXRpb25UaW1lPzogRGF0ZTtcblxuICAvKipcbiAgICogVGltZSB0byB3YWl0IGJldHdlZW4gZmV0Y2hpbmcgbmV3IGFjdGl2aXRpZXMuXG4gICAqXG4gICAqIE11c3Qgd2FpdCBhIHJlYXNvbmFibGUgYW1vdW50IG9mIHRpbWUgYmV0d2VlbiBwb2xscywgc2luY2Ugd2UgbmVlZCB0byBjb25zaWRlciBDbG91ZEZvcm1hdGlvbiBBUEkgbGltaXRzXG4gICAqXG4gICAqIEBkZWZhdWx0IDJfMDAwXG4gICAqL1xuICByZWFkb25seSBwb2xsaW5nSW50ZXJ2YWw/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHJlc291cmNlcywgdXNlZCB0byBsb29rIHVwIHRoZSBib290c3RyYXAgdG9vbGtpdCB2ZXJzaW9uIHdoZW5cbiAgICogZGlhZ25vc2luZyBHdWFyZCBIb29rIGFubm90YXRpb24gZmV0Y2ggZmFpbHVyZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQm9vdHN0cmFwIHZlcnNpb24gaXMgbm90IHJlcG9ydGVkIGluIGVycm9yIG1lc3NhZ2VzXG4gICAqL1xuICByZWFkb25seSBlbnZSZXNvdXJjZXM/OiBFbnZpcm9ubWVudFJlc291cmNlcztcbn1cblxuLyoqXG4gKiBEcml2ZXMgdGhlIG1vbml0b3Jpbmcgb2YgYSBTdGFjayBkZXBsb3ltZW50XG4gKlxuICogYGBgXG4gKiDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgICAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgICAgICAgICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gKiDilIIgICAgICAgICBTdGFjayAgICAgICAgIOKUgiBwb2xsKCkg4pSCICAgICAgICAgU3RhY2sgICAgICAgICDilIIgIHByb2Nlc3MoZXYpIOKUgiAgICAgICAgIFN0YWNrICAgICAgICAg4pSCXG4gKiDilIIgICAgICBFdmVudFBvbGxlciAgICAgIOKUguKXgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgiAgICBBY3Rpdml0eU1vbml0b3IgICAg4pSC4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pa24pSCICAgIFByb2dyZXNzTW9uaXRvciAgICDilIJcbiAqIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgICAgICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgICAgICAgICAgICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU3RhY2tBY3Rpdml0eU1vbml0b3Ige1xuICAvKipcbiAgICogVGhlIHBvbGxlciB1c2VkIHRvIHJlYWQgc3RhY2sgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHBvbGxlcjogU3RhY2tFdmVudFBvbGxlcjtcblxuICAvKipcbiAgICogRmV0Y2ggbmV3IGFjdGl2aXR5IGV2ZXJ5IDEgc2Vjb25kXG4gICAqIFByaW50ZXJzIGNhbiBkZWNpZGUgdG8gdXBkYXRlIGEgdmlldyBsZXNzIGZyZXF1ZW50bHkgaWYgZGVzaXJlZFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwb2xsaW5nSW50ZXJ2YWw6IG51bWJlcjtcblxuICBwcml2YXRlIG1vbml0b3JJZD86IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb2dyZXNzTW9uaXRvcjogU3RhY2tQcm9ncmVzc01vbml0b3I7XG5cbiAgLyoqXG4gICAqIEN1cnJlbnQgdGljayB0aW1lclxuICAgKi9cbiAgcHJpdmF0ZSB0aWNrVGltZXI/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcblxuICAvKipcbiAgICogU2V0IHRvIHRoZSBhY3Rpdml0eSBvZiByZWFkaW5nIHRoZSBjdXJyZW50IGV2ZW50c1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkUHJvbWlzZT86IFByb21pc2U8YW55PjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGlvSGVscGVyOiBJb0hlbHBlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBzdGFja05hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzdGFjazogQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0O1xuICBwcml2YXRlIHJlYWRvbmx5IGNmbjogSUNsb3VkRm9ybWF0aW9uQ2xpZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IGVudlJlc291cmNlcz86IEVudmlyb25tZW50UmVzb3VyY2VzO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBjZm4sXG4gICAgaW9IZWxwZXIsXG4gICAgc3RhY2ssXG4gICAgc3RhY2tOYW1lLFxuICAgIHJlc291cmNlc1RvdGFsLFxuICAgIGNoYW5nZVNldENyZWF0aW9uVGltZSxcbiAgICBwb2xsaW5nSW50ZXJ2YWwgPSAyXzAwMCxcbiAgICBlbnZSZXNvdXJjZXMsXG4gIH06IFN0YWNrQWN0aXZpdHlNb25pdG9yUHJvcHMpIHtcbiAgICB0aGlzLmlvSGVscGVyID0gaW9IZWxwZXI7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuc3RhY2tOYW1lID0gc3RhY2tOYW1lO1xuICAgIHRoaXMuY2ZuID0gY2ZuO1xuICAgIHRoaXMuZW52UmVzb3VyY2VzID0gZW52UmVzb3VyY2VzO1xuXG4gICAgdGhpcy5wcm9ncmVzc01vbml0b3IgPSBuZXcgU3RhY2tQcm9ncmVzc01vbml0b3IocmVzb3VyY2VzVG90YWwpO1xuICAgIHRoaXMucG9sbGluZ0ludGVydmFsID0gcG9sbGluZ0ludGVydmFsO1xuICAgIHRoaXMucG9sbGVyID0gbmV3IFN0YWNrRXZlbnRQb2xsZXIoY2ZuLCB7XG4gICAgICBzdGFja05hbWUsXG4gICAgICBpbml0aWFsUG9sbFJhbmdlOiBQb2xsUmFuZ2Uuc2luY2VUaW1lc3RhbXAoY2hhbmdlU2V0Q3JlYXRpb25UaW1lPy5nZXRUaW1lKCkgPz8gRGF0ZS5ub3coKSksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIGVycm9ycyB0aGF0IHdlcmUgZGlzY292ZXJlZCBkdXJpbmcgbW9uaXRvcmluZyBvZiB0aGlzIHN0YWNrXG4gICAqL1xuICBwdWJsaWMgZ2V0IGVycm9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5wb2xsZXIuZXJyb3JzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0YXJ0KCkge1xuICAgIHRoaXMubW9uaXRvcklkID0gdXVpZC52NCgpO1xuICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX0k1NTAxLm1zZyhgRGVwbG95aW5nICR7dGhpcy5zdGFja05hbWV9YCwge1xuICAgICAgZGVwbG95bWVudDogdGhpcy5tb25pdG9ySWQsXG4gICAgICBzdGFjazogdGhpcy5zdGFjayxcbiAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFja05hbWUsXG4gICAgICByZXNvdXJjZXNUb3RhbDogdGhpcy5wcm9ncmVzc01vbml0b3IudG90YWwsXG4gICAgfSkpO1xuICAgIHRoaXMuc2NoZWR1bGVOZXh0VGljaygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0b3AoKSB7XG4gICAgY29uc3Qgb2xkTW9uaXRvcklkID0gdGhpcy5tb25pdG9ySWQhO1xuICAgIHRoaXMubW9uaXRvcklkID0gdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLnRpY2tUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGlja1RpbWVyKTtcbiAgICB9XG5cbiAgICAvLyBEbyBhIGZpbmFsIHBvbGwgZm9yIGFsbCBldmVudHMuIFRoaXMgaXMgdG8gaGFuZGxlIHRoZSBzaXR1YXRpb24gd2hlcmUgRGVzY3JpYmVTdGFja1N0YXR1c1xuICAgIC8vIGFscmVhZHkgcmV0dXJuZWQgYW4gZXJyb3IsIGJ1dCB0aGUgbW9uaXRvciBoYXNuJ3Qgc2VlbiBhbGwgdGhlIGV2ZW50cyB5ZXQgYW5kIHdlJ2QgZW5kXG4gICAgLy8gdXAgbm90IHByaW50aW5nIHRoZSBmYWlsdXJlIHJlYXNvbiB0byB1c2Vycy5cbiAgICBhd2FpdCB0aGlzLmZpbmFsUG9sbFRvRW5kKG9sZE1vbml0b3JJZCk7XG5cbiAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JNTUwMy5tc2coYENvbXBsZXRlZCAke3RoaXMuc3RhY2tOYW1lfWAsIHtcbiAgICAgIGRlcGxveW1lbnQ6IG9sZE1vbml0b3JJZCxcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrTmFtZSxcbiAgICAgIHJlc291cmNlc1RvdGFsOiB0aGlzLnByb2dyZXNzTW9uaXRvci50b3RhbCxcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHNjaGVkdWxlTmV4dFRpY2soKSB7XG4gICAgaWYgKCF0aGlzLm1vbml0b3JJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudGlja1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMudGljaygpLCB0aGlzLnBvbGxpbmdJbnRlcnZhbCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHRpY2soKSB7XG4gICAgaWYgKCF0aGlzLm1vbml0b3JJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICB0aGlzLnJlYWRQcm9taXNlID0gdGhpcy5yZWFkTmV3RXZlbnRzKHRoaXMubW9uaXRvcklkKTtcbiAgICAgIGF3YWl0IHRoaXMucmVhZFByb21pc2U7XG4gICAgICB0aGlzLnJlYWRQcm9taXNlID0gdW5kZWZpbmVkO1xuXG4gICAgICAvLyBXZSBtaWdodCBoYXZlIGJlZW4gc3RvcCgpcGVkIHdoaWxlIHRoZSBuZXR3b3JrIGNhbGwgd2FzIGluIHByb2dyZXNzLlxuICAgICAgaWYgKCF0aGlzLm1vbml0b3JJZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5pb0hlbHBlci5ub3RpZnkoSU8uQ0RLX1RPT0xLSVRfRTU1MDAubXNnKFxuICAgICAgICB1dGlsLmZvcm1hdCgnRXJyb3Igb2NjdXJyZWQgd2hpbGUgbW9uaXRvcmluZyBzdGFjazogJXMnLCBlKSxcbiAgICAgICAgeyBlcnJvcjogZSBhcyBhbnkgfSxcbiAgICAgICkpO1xuICAgIH1cbiAgICB0aGlzLnNjaGVkdWxlTmV4dFRpY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZE1ldGFkYXRhRm9yKGxvZ2ljYWxJZDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLnN0YWNrLm1ldGFkYXRhO1xuICAgIGlmICghbG9naWNhbElkIHx8ICFtZXRhZGF0YSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc291cmNlTWV0YWRhdGEodGhpcy5zdGFjaywgbG9naWNhbElkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmltcyBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UsIGNvbGxhcHNlcyBhbGwgaW50ZXJuYWwgd2hpdGVzcGFjZVxuICAgKiAoaW5jbHVkaW5nIG5ld2xpbmVzKSB0byBhIHNpbmdsZSBzcGFjZSwgYW5kIHRydW5jYXRlcyB0byBgbWF4Q2hhcnNgXG4gICAqIGNoYXJhY3RlcnMsIGFwcGVuZGluZyBgWy4uLnRydW5jYXRlZF1gIHdoZW4gdGhlIG9yaWdpbmFsIHdhcyBsb25nZXIuXG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZU1lc3NhZ2UobWVzc2FnZTogc3RyaW5nLCBtYXhDaGFyczogbnVtYmVyID0gNDAwKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gbWVzc2FnZS50cmltKCkucmVwbGFjZSgvXFxzKy9nLCAnICcpO1xuICAgIHJldHVybiBub3JtYWxpemVkLmxlbmd0aCA+IG1heENoYXJzXG4gICAgICA/IG5vcm1hbGl6ZWQuc3Vic3RyaW5nKDAsIG1heENoYXJzKSArICdbLi4udHJ1bmNhdGVkXSdcbiAgICAgIDogbm9ybWFsaXplZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIEd1YXJkIEhvb2sgYW5ub3RhdGlvbiBkZXRhaWxzIHZpYSBHZXRIb29rUmVzdWx0IEFQSSBhbmQgZm9ybWF0cyB0aGVtXG4gICAqIGludG8gYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcuIFJldHVybnMgdW5kZWZpbmVkIGlmIHRoZSBmZXRjaCBmYWlscyBvciB0aGVyZVxuICAgKiBhcmUgbm8gZmFpbGVkIGFubm90YXRpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaEd1YXJkSG9va0Fubm90YXRpb25zKGhvb2tJbnZvY2F0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY2ZuLmdldEhvb2tSZXN1bHQoeyBIb29rUmVzdWx0SWQ6IGhvb2tJbnZvY2F0aW9uSWQgfSk7XG4gICAgICBjb25zdCBhbm5vdGF0aW9ucyA9IHJlc3VsdC5Bbm5vdGF0aW9ucyA/PyBbXTtcbiAgICAgIGNvbnN0IGZhaWxlZEFubm90YXRpb25zID0gYW5ub3RhdGlvbnMuZmlsdGVyKChhKSA9PiBhLlN0YXR1cyA9PT0gJ0ZBSUxFRCcpO1xuICAgICAgaWYgKGZhaWxlZEFubm90YXRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbJ05vbkNvbXBsaWFudCBSdWxlczonLCAnJ107XG4gICAgICBmb3IgKGNvbnN0IGFubm90YXRpb24gb2YgZmFpbGVkQW5ub3RhdGlvbnMpIHtcbiAgICAgICAgaWYgKGFubm90YXRpb24uQW5ub3RhdGlvbk5hbWUpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKGBbJHthbm5vdGF0aW9uLkFubm90YXRpb25OYW1lfV1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYW5ub3RhdGlvbi5TdGF0dXNNZXNzYWdlKSB7XG4gICAgICAgICAgbGluZXMucHVzaChg4oCiICR7dGhpcy5ub3JtYWxpemVNZXNzYWdlKGFubm90YXRpb24uU3RhdHVzTWVzc2FnZSl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFubm90YXRpb24uUmVtZWRpYXRpb25NZXNzYWdlKSB7XG4gICAgICAgICAgbGluZXMucHVzaChgUmVtZWRpYXRpb246ICR7dGhpcy5ub3JtYWxpemVNZXNzYWdlKGFubm90YXRpb24uUmVtZWRpYXRpb25NZXNzYWdlKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKS50cmltRW5kKCk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSk7XG5cbiAgICAgIGNvbnN0IGlzUGVybWlzc2lvbnNFcnJvciA9XG4gICAgICAgIGUubmFtZSA9PT0gJ0FjY2Vzc0RlbmllZEV4Y2VwdGlvbicgfHxcbiAgICAgICAgKHR5cGVvZiBlcnJvck1lc3NhZ2UgPT09ICdzdHJpbmcnICYmIGVycm9yTWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtOiBjbG91ZGZvcm1hdGlvbjpnZXRob29rcmVzdWx0JykpO1xuXG4gICAgICBpZiAoaXNQZXJtaXNzaW9uc0Vycm9yICYmIHRoaXMuZW52UmVzb3VyY2VzKSB7XG4gICAgICAgIGxldCBjdXJyZW50VmVyc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGN1cnJlbnRWZXJzaW9uID0gKGF3YWl0IHRoaXMuZW52UmVzb3VyY2VzLmxvb2t1cFRvb2xraXQoKSkudmVyc2lvbjtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gaWdub3JlIGVycm9ycyBsb29raW5nIHVwIHRoZSBib290c3RyYXAgdmVyc2lvblxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5pb0hlbHBlci5kZWZhdWx0cy53YXJuKFxuICAgICAgICAgIHV0aWwuZm9ybWF0KFxuICAgICAgICAgICAgYEZhaWxlZCB0byBmZXRjaCByZXN1bHQgZGV0YWlscyBmb3IgSG9vayBpbnZvY2F0aW9uICR7aG9va0ludm9jYXRpb25JZH06ICR7ZXJyb3JNZXNzYWdlfS4gTWFrZSBzdXJlIHlvdSBoYXZlIHBlcm1pc3Npb25zIHRvIGNhbGwgdGhlIEdldEhvb2tSZXN1bHQgQVBJLCBvciByZS1ib290c3RyYXAgeW91ciBlbnZpcm9ubWVudCBieSBydW5uaW5nICdjZGsgYm9vdHN0cmFwJyB0byB1cGRhdGUgdGhlIEJvb3RzdHJhcCBDREsgVG9vbGtpdCBzdGFjay5cbiAgICAgICAgICAgICdCb290c3RyYXAgdG9vbGtpdCBzdGFjayB2ZXJzaW9uIDMxIG9yIGxhdGVyIGlzIG5lZWRlZDsgY3VycmVudCB2ZXJzaW9uOiAke2N1cnJlbnRWZXJzaW9uID8/ICd1bmtub3duJ30uYCxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5pb0hlbHBlci5kZWZhdWx0cy53YXJuKFxuICAgICAgICAgIHV0aWwuZm9ybWF0KCdGYWlsZWQgdG8gZmV0Y2ggR3VhcmQgSG9vayBkZXRhaWxzIGZvciBpbnZvY2F0aW9uICVzOiAlcycsIGhvb2tJbnZvY2F0aW9uSWQsIGVycm9yTWVzc2FnZSksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIGFsbCBuZXcgZXZlbnRzIGZyb20gdGhlIHN0YWNrIGhpc3RvcnlcbiAgICpcbiAgICogVGhlIGV2ZW50cyBhcmUgcmV0dXJuZWQgaW4gY2hyb25vbG9naWNhbCBvcmRlciBieSB0aGUgdW5kZXJseWluZyBwb2xsZXIuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlYWROZXdFdmVudHMobW9uaXRvcklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwb2xsRXZlbnRzID0gYXdhaXQgdGhpcy5wb2xsZXIucG9sbCgpO1xuXG4gICAgZm9yIChjb25zdCByZXNvdXJjZUV2ZW50IG9mIHBvbGxFdmVudHMpIHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NNb25pdG9yLnByb2Nlc3MocmVzb3VyY2VFdmVudCk7XG5cbiAgICAgIC8vIElmIHRoaXMgaXMgYSBmYWlsZWQgR3VhcmQgSG9vayBldmVudCB3aXRoIGFuIGludm9jYXRpb24gSUQsIGZldGNoIGFubm90YXRpb25zXG4gICAgICBpZiAocmVzb3VyY2VFdmVudC5ldmVudC5Ib29rSW52b2NhdGlvbklkKSB7XG4gICAgICAgIGNvbnN0IGFubm90YXRpb25zID0gYXdhaXQgdGhpcy5mZXRjaEd1YXJkSG9va0Fubm90YXRpb25zKHJlc291cmNlRXZlbnQuZXZlbnQuSG9va0ludm9jYXRpb25JZCk7XG4gICAgICAgIGlmIChhbm5vdGF0aW9ucykge1xuICAgICAgICAgIHJlc291cmNlRXZlbnQuZXZlbnQuSG9va1N0YXR1c1JlYXNvbiA9IGFubm90YXRpb25zO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFjdGl2aXR5OiBTdGFja0FjdGl2aXR5ID0ge1xuICAgICAgICBkZXBsb3ltZW50OiBtb25pdG9ySWQsXG4gICAgICAgIGV2ZW50OiByZXNvdXJjZUV2ZW50LmV2ZW50LFxuICAgICAgICBtZXRhZGF0YTogdGhpcy5maW5kTWV0YWRhdGFGb3IocmVzb3VyY2VFdmVudC5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCksXG4gICAgICAgIHByb2dyZXNzOiB0aGlzLnByb2dyZXNzTW9uaXRvci5wcm9ncmVzcyxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX0k1NTAyLm1zZyh0aGlzLmZvcm1hdEFjdGl2aXR5KGFjdGl2aXR5LCB0cnVlKSwgYWN0aXZpdHkpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybSBhIGZpbmFsIHBvbGwgdG8gdGhlIGVuZCBhbmQgZmx1c2ggb3V0IGFsbCBldmVudHMgdG8gdGhlIHByaW50ZXJcbiAgICpcbiAgICogRmluaXNoIGFueSBwb2xsIGN1cnJlbnRseSBpbiBwcm9ncmVzcywgdGhlbiBkbyBhIGZpbmFsIG9uZSB1bnRpbCB3ZSd2ZVxuICAgKiByZWFjaGVkIHRoZSBsYXN0IHBhZ2UuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGZpbmFsUG9sbFRvRW5kKG1vbml0b3JJZDogc3RyaW5nKSB7XG4gICAgLy8gSWYgd2Ugd2VyZSBkb2luZyBhIHBvbGwsIGZpbmlzaCB0aGF0IGZpcnN0LiBJdCB3YXMgc3RhcnRlZCBiZWZvcmVcbiAgICAvLyB0aGUgbW9tZW50IHdlIHdlcmUgc3VyZSB3ZSB3ZXJlbid0IGdvaW5nIHRvIGdldCBhbnkgbmV3IGV2ZW50cyBhbnltb3JlXG4gICAgLy8gc28gd2UgbmVlZCB0byBkbyBhIG5ldyBvbmUgYW55d2F5LiBOZWVkIHRvIHdhaXQgZm9yIHRoaXMgb25lIHRob3VnaFxuICAgIC8vIGJlY2F1c2Ugb3VyIHN0YXRlIGlzIHNpbmdsZS10aHJlYWRlZC5cbiAgICBpZiAodGhpcy5yZWFkUHJvbWlzZSkge1xuICAgICAgYXdhaXQgdGhpcy5yZWFkUHJvbWlzZTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnJlYWROZXdFdmVudHMobW9uaXRvcklkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXRzIGEgc3RhY2sgYWN0aXZpdHkgaW50byBhIGJhc2ljIHN0cmluZ1xuICAgKi9cbiAgcHJpdmF0ZSBmb3JtYXRBY3Rpdml0eShhY3Rpdml0eTogU3RhY2tBY3Rpdml0eSwgcHJvZ3Jlc3M6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIGNvbnN0IGV2ZW50ID0gYWN0aXZpdHkuZXZlbnQ7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBhY3Rpdml0eS5tZXRhZGF0YTtcblxuICAgIGNvbnN0IHJlc291cmNlTmFtZSA9IG1ldGFkYXRhID8gbWV0YWRhdGEuY29uc3RydWN0UGF0aCA6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkIHx8ICcnO1xuICAgIGNvbnN0IGxvZ2ljYWxJZCA9IHJlc291cmNlTmFtZSAhPT0gZXZlbnQuTG9naWNhbFJlc291cmNlSWQgPyBgKCR7ZXZlbnQuTG9naWNhbFJlc291cmNlSWR9KSBgIDogJyc7XG5cbiAgICByZXR1cm4gdXRpbC5mb3JtYXQoXG4gICAgICAnJXMgfCAlcyVzIHwgJXMgfCAlcyB8ICVzICVzJXMlcycsXG4gICAgICBldmVudC5TdGFja05hbWUsXG4gICAgICBwcm9ncmVzcyAhPT0gZmFsc2UgPyBgJHthY3Rpdml0eS5wcm9ncmVzcy5mb3JtYXR0ZWR9IHwgYCA6ICcnLFxuICAgICAgbmV3IERhdGUoZXZlbnQuVGltZXN0YW1wISkudG9Mb2NhbGVUaW1lU3RyaW5nKCksXG4gICAgICBldmVudC5SZXNvdXJjZVN0YXR1cyB8fCAnJyxcbiAgICAgIGV2ZW50LlJlc291cmNlVHlwZSxcbiAgICAgIHJlc291cmNlTmFtZSxcbiAgICAgIGxvZ2ljYWxJZCxcbiAgICAgIGV2ZW50LlJlc291cmNlU3RhdHVzUmVhc29uID8gZXZlbnQuUmVzb3VyY2VTdGF0dXNSZWFzb24gOiAnJyxcbiAgICAgIG1ldGFkYXRhPy5lbnRyeS50cmFjZSA/IGBcXG5cXHQke21ldGFkYXRhLmVudHJ5LnRyYWNlLmpvaW4oJ1xcblxcdFxcXFxfICcpfWAgOiAnJyxcbiAgICApO1xuICB9XG59XG5cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ResourceEvent } from './stack-event-poller';
|
|
2
2
|
import type { StackProgress } from '../../payloads/progress';
|
|
3
3
|
/**
|
|
4
4
|
* Monitors stack progress.s
|
|
@@ -44,6 +44,6 @@ export declare class StackProgressMonitor {
|
|
|
44
44
|
/**
|
|
45
45
|
* Process as stack event and update the progress state.
|
|
46
46
|
*/
|
|
47
|
-
process(
|
|
47
|
+
process(resourceEvent: ResourceEvent): void;
|
|
48
48
|
}
|
|
49
49
|
//# sourceMappingURL=stack-progress-monitor.d.ts.map
|