@sunbird-cb/utils 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sunbird-cb-utils.umd.js +192 -21
- package/bundles/sunbird-cb-utils.umd.js.map +1 -1
- package/bundles/sunbird-cb-utils.umd.min.js +15 -1
- package/bundles/sunbird-cb-utils.umd.min.js.map +1 -1
- package/esm2015/lib/services/event.model.js +55 -1
- package/esm2015/lib/services/event.service.js +58 -6
- package/esm2015/lib/services/telemetry.service.js +25 -9
- package/esm2015/lib/services/utility.service.js +49 -4
- package/esm5/lib/services/event.model.js +55 -1
- package/esm5/lib/services/event.service.js +58 -6
- package/esm5/lib/services/telemetry.service.js +28 -9
- package/esm5/lib/services/utility.service.js +54 -4
- package/fesm2015/sunbird-cb-utils.js +180 -18
- package/fesm2015/sunbird-cb-utils.js.map +1 -1
- package/fesm5/sunbird-cb-utils.js +188 -18
- package/fesm5/sunbird-cb-utils.js.map +1 -1
- package/lib/services/event.model.d.ts +47 -1
- package/lib/services/event.service.d.ts +7 -2
- package/lib/services/telemetry.service.d.ts +2 -1
- package/lib/services/utility.service.d.ts +9 -1
- package/package.json +1 -1
- package/sunbird-cb-utils.metadata.json +1 -1
|
@@ -21,10 +21,10 @@ var TelemetryService = (function () {
|
|
|
21
21
|
this.externalApps = {
|
|
22
22
|
RBCP: 'rbcp-web-ui',
|
|
23
23
|
};
|
|
24
|
+
this.environment = environment;
|
|
24
25
|
var instanceConfig = this.configSvc.instanceConfig;
|
|
25
26
|
if (instanceConfig) {
|
|
26
27
|
this.telemetryConfig = instanceConfig.telemetryConfig;
|
|
27
|
-
this.environment = environment;
|
|
28
28
|
this.telemetryConfig = tslib_1.__assign({}, this.telemetryConfig, { pdata: tslib_1.__assign({}, this.telemetryConfig.pdata, { id: environment.name + "." + this.telemetryConfig.pdata.id }), uid: this.configSvc.userProfile && this.configSvc.userProfile.userId, channel: this.rootOrgId || this.telemetryConfig.channel, sid: this.getTelemetrySessionId });
|
|
29
29
|
this.pData = this.telemetryConfig.pdata;
|
|
30
30
|
this.addPlayerListener();
|
|
@@ -33,6 +33,7 @@ var TelemetryService = (function () {
|
|
|
33
33
|
this.addTimeSpentListener();
|
|
34
34
|
this.addSearchListener();
|
|
35
35
|
this.addHearbeatListener();
|
|
36
|
+
this.addCustomImpressionListener();
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
39
|
Object.defineProperty(TelemetryService.prototype, "getTelemetrySessionId", {
|
|
@@ -59,9 +60,11 @@ var TelemetryService = (function () {
|
|
|
59
60
|
type: type,
|
|
60
61
|
mode: mode,
|
|
61
62
|
pageid: id,
|
|
63
|
+
duration: 1,
|
|
62
64
|
}, {
|
|
63
65
|
context: {
|
|
64
66
|
pdata: tslib_1.__assign({}, this.pData, { id: this.pData.id }),
|
|
67
|
+
env: 'home',
|
|
65
68
|
},
|
|
66
69
|
object: tslib_1.__assign({}, (data) && data),
|
|
67
70
|
});
|
|
@@ -125,7 +128,7 @@ var TelemetryService = (function () {
|
|
|
125
128
|
var page = this.getPageDetails();
|
|
126
129
|
if (data) {
|
|
127
130
|
page.pageid = data.pageId;
|
|
128
|
-
page.module = data.
|
|
131
|
+
page.module = data.module;
|
|
129
132
|
}
|
|
130
133
|
var edata = {
|
|
131
134
|
pageid: page.pageid,
|
|
@@ -148,7 +151,7 @@ var TelemetryService = (function () {
|
|
|
148
151
|
$t.impression(edata, {
|
|
149
152
|
context: {
|
|
150
153
|
pdata: tslib_1.__assign({}, this.pData, { id: this.pData.id }),
|
|
151
|
-
env: page.module,
|
|
154
|
+
env: page.module || '',
|
|
152
155
|
},
|
|
153
156
|
});
|
|
154
157
|
}
|
|
@@ -260,11 +263,9 @@ var TelemetryService = (function () {
|
|
|
260
263
|
type: event.data.type,
|
|
261
264
|
subtype: event.data.subType,
|
|
262
265
|
id: (event.data.object) ? event.data.object.contentId || event.data.object.id || interactid || '' : '',
|
|
263
|
-
pageid: page.pageid,
|
|
266
|
+
pageid: event.data.context && event.data.context.pageId || page.pageid,
|
|
264
267
|
}, {
|
|
265
|
-
context: {
|
|
266
|
-
pdata: tslib_1.__assign({}, _this.pData, { id: _this.pData.id }),
|
|
267
|
-
},
|
|
268
|
+
context: tslib_1.__assign({ pdata: tslib_1.__assign({}, _this.pData, { id: _this.pData.id }) }, (event.data.context && event.data.context.module ? { env: event.data.context.module } : null)),
|
|
268
269
|
object: tslib_1.__assign({}, event.data.object),
|
|
269
270
|
});
|
|
270
271
|
}
|
|
@@ -308,6 +309,24 @@ var TelemetryService = (function () {
|
|
|
308
309
|
}
|
|
309
310
|
}));
|
|
310
311
|
};
|
|
312
|
+
TelemetryService.prototype.addCustomImpressionListener = function () {
|
|
313
|
+
var _this = this;
|
|
314
|
+
this.eventsSvc.events$
|
|
315
|
+
.pipe(filter((function (event) {
|
|
316
|
+
return event &&
|
|
317
|
+
event.data &&
|
|
318
|
+
event.eventType === WsEvents.WsEventType.Telemetry &&
|
|
319
|
+
event.data.eventSubType === WsEvents.EnumTelemetrySubType.Impression;
|
|
320
|
+
})))
|
|
321
|
+
.subscribe((function (event) {
|
|
322
|
+
try {
|
|
323
|
+
_this.impression(event.data.context);
|
|
324
|
+
}
|
|
325
|
+
catch (e) {
|
|
326
|
+
console.log('Error in telemetry impression', e);
|
|
327
|
+
}
|
|
328
|
+
}));
|
|
329
|
+
};
|
|
311
330
|
TelemetryService.prototype.addHearbeatListener = function () {
|
|
312
331
|
var _this = this;
|
|
313
332
|
this.eventsSvc.events$
|
|
@@ -419,11 +438,11 @@ if (false) {
|
|
|
419
438
|
TelemetryService.prototype.previousUrl;
|
|
420
439
|
TelemetryService.prototype.telemetryConfig;
|
|
421
440
|
TelemetryService.prototype.pData;
|
|
441
|
+
TelemetryService.prototype.environment;
|
|
422
442
|
TelemetryService.prototype.contextCdata;
|
|
423
443
|
TelemetryService.prototype.externalApps;
|
|
424
|
-
TelemetryService.prototype.environment;
|
|
425
444
|
TelemetryService.prototype.configSvc;
|
|
426
445
|
TelemetryService.prototype.eventsSvc;
|
|
427
446
|
TelemetryService.prototype.logger;
|
|
428
447
|
}
|
|
429
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3VuYmlyZC1jYi91dGlscy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy90ZWxlbWV0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBR3ZDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTs7Ozs7QUFLaEQ7SUFhRSwwQkFDeUIsV0FBZ0IsRUFDL0IsU0FBZ0MsRUFDaEMsU0FBdUIsRUFFdkIsTUFBcUI7UUFIckIsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDaEMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUV2QixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBZC9CLGdCQUFXLEdBQWtCLElBQUksQ0FBQTtRQUNqQyxvQkFBZSxHQUE2QyxJQUFJLENBQUE7UUFDaEUsVUFBSyxHQUFRLElBQUksQ0FBQTtRQUNqQixpQkFBWSxHQUFHLEVBQUUsQ0FBQTtRQUVqQixpQkFBWSxHQUFRO1lBQ2xCLElBQUksRUFBRSxhQUFhO1NBQ3BCLENBQUE7WUFVTyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjO1FBQ3BELElBQUksY0FBYyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDLGVBQWUsQ0FBQTtZQUNyRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtZQUM5QixJQUFJLENBQUMsZUFBZSx3QkFDZixJQUFJLENBQUMs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QWhoQkQsSUFnaEJDO1NBN2dCWSxnQkFBZ0I7O0lBQzNCLHVDQUFpQztJQUNqQywyQ0FBZ0U7SUFDaEUsaUNBQWlCO0lBQ2pCLHdDQUFpQjtJQUVqQix3Q0FFQztJQUNELHVDQUFnQjtJQUdkLHFDQUF3QztJQUN4QyxxQ0FBK0I7SUFFL0Isa0NBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcbi8vIGltcG9ydCB7IEF1dGhLZXljbG9ha1NlcnZpY2UgfSBmcm9tICcuL2F1dGgta2V5Y2xvYWsuc2VydmljZSdcclxuaW1wb3J0IHsgTnNJbnN0YW5jZUNvbmZpZyB9IGZyb20gJy4vY29uZmlndXJhdGlvbnMubW9kZWwnXHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zU2VydmljZSB9IGZyb20gJy4vY29uZmlndXJhdGlvbnMuc2VydmljZSdcclxuaW1wb3J0IHsgV3NFdmVudHMgfSBmcm9tICcuL2V2ZW50Lm1vZGVsJ1xyXG5pbXBvcnQgeyBFdmVudFNlcnZpY2UgfSBmcm9tICcuL2V2ZW50LnNlcnZpY2UnXHJcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuL2xvZ2dlci5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBOc0NvbnRlbnQgfSBmcm9tICcuL3dpZGdldC1jb250ZW50Lm1vZGVsJ1xyXG5cclxuZGVjbGFyZSB2YXIgJHQ6IGFueVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRlbGVtZXRyeVNlcnZpY2Uge1xyXG4gIHByZXZpb3VzVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbFxyXG4gIHRlbGVtZXRyeUNvbmZpZzogTnNJbnN0YW5jZUNvbmZpZy5JVGVsZW1ldHJ5Q29uZmlnIHwgbnVsbCA9IG51bGxcclxuICBwRGF0YTogYW55ID0gbnVsbFxyXG4gIGNvbnRleHRDZGF0YSA9IFtdXHJcblxyXG4gIGV4dGVybmFsQXBwczogYW55ID0ge1xyXG4gICAgUkJDUDogJ3JiY3Atd2ViLXVpJyxcclxuICB9XHJcbiAgZW52aXJvbm1lbnQ6IGFueVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBlbnZpcm9ubWVudDogYW55LFxyXG4gICAgcHJpdmF0ZSBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgZXZlbnRzU3ZjOiBFdmVudFNlcnZpY2UsXHJcbiAgICAvLyBwcml2YXRlIGF1dGhTdmM6IEF1dGhLZXljbG9ha1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSxcclxuXHJcbiAgKSB7XHJcbiAgICBjb25zdCBpbnN0YW5jZUNvbmZpZyA9IHRoaXMuY29uZmlnU3ZjLmluc3RhbmNlQ29uZmlnXHJcbiAgICBpZiAoaW5zdGFuY2VDb25maWcpIHtcclxuICAgICAgdGhpcy50ZWxlbWV0cnlDb25maWcgPSBpbnN0YW5jZUNvbmZpZy50ZWxlbWV0cnlDb25maWdcclxuICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50XHJcbiAgICAgIHRoaXMudGVsZW1ldHJ5Q29uZmlnID0ge1xyXG4gICAgICAgIC4uLnRoaXMudGVsZW1ldHJ5Q29uZmlnLFxyXG4gICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAuLi50aGlzLnRlbGVtZXRyeUNvbmZpZy5wZGF0YSxcclxuICAgICAgICAgIC8vIHBpZDogbmF2aWdhdG9yLnVzZXJBZ2VudCxcclxuICAgICAgICAgIGlkOiBgJHtlbnZpcm9ubWVudC5uYW1lfS4ke3RoaXMudGVsZW1ldHJ5Q29uZmlnLnBkYXRhLmlkfWAsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB1aWQ6IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlICYmIHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJJZCxcclxuICAgICAgICAvLyBhdXRodG9rZW46IHRoaXMuYXV0aFN2Yy50b2tlbixcclxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgICAgIGNoYW5uZWw6IHRoaXMucm9vdE9yZ0lkIHx8IHRoaXMudGVsZW1ldHJ5Q29uZmlnLmNoYW5uZWwsXHJcbiAgICAgICAgc2lkOiB0aGlzLmdldFRlbGVtZXRyeVNlc3Npb25JZCxcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBEYXRhID0gdGhpcy50ZWxlbWV0cnlDb25maWcucGRhdGFcclxuICAgICAgdGhpcy5hZGRQbGF5ZXJMaXN0ZW5lcigpXHJcbiAgICAgIHRoaXMuYWRkSW50ZXJhY3RMaXN0ZW5lcigpXHJcbiAgICAgIHRoaXMuYWRkRmVlZGJhY2tMaXN0ZW5lcigpXHJcbiAgICAgIHRoaXMuYWRkVGltZVNwZW50TGlzdGVuZXIoKVxyXG4gICAgICB0aGlzLmFkZFNlYXJjaExpc3RlbmVyKClcclxuICAgICAgdGhpcy5hZGRIZWFyYmVhdExpc3RlbmVyKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBnZXRUZWxlbWV0cnlTZXNzaW9uSWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGVsZW1ldHJ5U2Vzc2lvbklkJykgfHwgJydcclxuICB9XHJcblxyXG4gIGdldCByb290T3JnSWQoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ1N2YyAmJiB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZSAmJiB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS5yb290T3JnSWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnJvb3RPcmdJZFxyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnXHJcbiAgfVxyXG5cclxuICBzdGFydCh0eXBlOiBzdHJpbmcsIG1vZGU6IHN0cmluZywgaWQ6IHN0cmluZywgZGF0YT86IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMudGVsZW1ldHJ5Q29uZmlnKSB7XHJcbiAgICAgICAgJHQuc3RhcnQoXHJcbiAgICAgICAgICB0aGlzLnRlbGVtZXRyeUNvbmZpZyxcclxuICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgJzEuMCcsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIC8vIGlkLFxyXG4gICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICBtb2RlLFxyXG4gICAgICAgICAgICBwYWdlaWQ6IGlkLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb2JqZWN0OiB7XHJcbiAgICAgICAgICAgICAgLi4uKGRhdGEpICYmIGRhdGEsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdFcnJvciBJbml0aWFsaXppbmcgVGVsZW1ldHJ5LiBDb25maWcgbWlzc2luZy4nKVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IHN0YXJ0JywgZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVuZCh0eXBlOiBzdHJpbmcsIG1vZGU6IHN0cmluZywgaWQ6IHN0cmluZywgZGF0YT86IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgJHQuZW5kKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICBtb2RlLFxyXG4gICAgICAgICAgcGFnZWlkOiBpZCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgIGlkOiB0aGlzLnBEYXRhLmlkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9iamVjdDoge1xyXG4gICAgICAgICAgICAuLi4oZGF0YSkgJiYgZGF0YSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgKVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBlbmQnLCBlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXVkaXQodHlwZTogc3RyaW5nLCBwcm9wczogc3RyaW5nLCBkYXRhOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgICR0LmF1ZGl0KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICBwcm9wcyxcclxuICAgICAgICAgIC8vIGRhdGEsXHJcbiAgICAgICAgICBzdGF0ZTogZGF0YSwgLy8gT3B0aW9uYWwuIEN1cnJlbnQgU3RhdGVcclxuICAgICAgICAgIHByZXZzdGF0ZTogJycsIC8vIE9wdGlvbmFsLiBQcmV2aW91cyBTdGF0ZVxyXG4gICAgICAgICAgZHVyYXRpb246ICcnLCAvLyBPcHRpb25hbC5cclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgIGlkOiB0aGlzLnBEYXRhLmlkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICApXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IGF1ZGl0JywgZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhlYXJ0YmVhdCh0eXBlOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgICR0LmhlYXJ0YmVhdCh7XHJcbiAgICAgICAgaWQsXHJcbiAgICAgICAgLy8gbW9kZSxcclxuICAgICAgICB0eXBlLFxyXG4gICAgICB9KVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBoZWFydGJlYXQnLCBlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW1wcmVzc2lvbihkYXRhPzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBwYWdlID0gdGhpcy5nZXRQYWdlRGV0YWlscygpXHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgcGFnZS5wYWdlaWQgPSBkYXRhLnBhZ2VJZFxyXG4gICAgICAgIHBhZ2UubW9kdWxlID0gZGF0YS5wYWdlTW9kdWxlXHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZWRhdGEgPSB7XHJcbiAgICAgICAgcGFnZWlkOiBwYWdlLnBhZ2VpZCwgLy8gUmVxdWlyZWQuIFVuaXF1ZSBwYWdlIGlkXHJcbiAgICAgICAgdHlwZTogcGFnZS5wYWdlVXJsUGFydHNbMF0sIC8vIFJlcXVpcmVkLiBJbXByZXNzaW9uIHR5cGUgKGxpc3QsIGRldGFpbCwgdmlldywgZWRpdCwgd29ya2Zsb3csIHNlYXJjaClcclxuICAgICAgICB1cmk6IHBhZ2UucGFnZVVybCxcclxuICAgICAgfVxyXG4gICAgICBpZiAocGFnZS5vYmplY3RJZCkge1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHtcclxuICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgIGlkOiB0aGlzLnBEYXRhLmlkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlbnY6IHBhZ2UubW9kdWxlIHx8ICh0aGlzLnRlbGVtZXRyeUNvbmZpZyAmJiB0aGlzLnRlbGVtZXRyeUNvbmZpZy5lbnYpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9iamVjdDoge1xyXG4gICAgICAgICAgICBpZDogcGFnZS5vYmplY3RJZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfVxyXG4gICAgICAgICR0LmltcHJlc3Npb24oZWRhdGEsIGNvbmZpZylcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAkdC5pbXByZXNzaW9uKGVkYXRhLCB7XHJcbiAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICBpZDogdGhpcy5wRGF0YS5pZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZW52OiBwYWdlLm1vZHVsZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnByZXZpb3VzVXJsID0gcGFnZS5wYWdlVXJsXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IGltcHJlc3Npb24nLCBlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXh0ZXJuYWxJbXByZXNzaW9uKGltcHJlc3Npb25EYXRhOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmdldFBhZ2VEZXRhaWxzKClcclxuICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxBcHBzW2ltcHJlc3Npb25EYXRhLnN1YkFwcGxpY2F0aW9uTmFtZV0pIHtcclxuICAgICAgICBjb25zdCBleHRlcm5hbENvbmZpZyA9IHBhZ2Uub2JqZWN0SWQgPyB7XHJcbiAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICBpZDogdGhpcy5leHRlcm5hbEFwcHNbaW1wcmVzc2lvbkRhdGEuc3ViQXBwbGljYXRpb25OYW1lXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvYmplY3Q6IHtcclxuICAgICAgICAgICAgaWQ6IHBhZ2Uub2JqZWN0SWQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0gOiB7XHJcbiAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICBpZDogdGhpcy5leHRlcm5hbEFwcHNbaW1wcmVzc2lvbkRhdGEuc3ViQXBwbGljYXRpb25OYW1lXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfVxyXG4gICAgICAgICR0LmltcHJlc3Npb24oaW1wcmVzc2lvbkRhdGEuZGF0YSwgZXh0ZXJuYWxDb25maWcpXHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgZXh0ZXJuYWxJbXByZXNzaW9uJywgZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZFRpbWVTcGVudExpc3RlbmVyKCkge1xyXG4gICAgdGhpcy5ldmVudHNTdmMuZXZlbnRzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoXHJcbiAgICAgICAgICBldmVudCA9PlxyXG4gICAgICAgICAgICBldmVudCAmJlxyXG4gICAgICAgICAgICBldmVudC5ldmVudFR5cGUgPT09IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLnR5cGUgPT09IFdzRXZlbnRzLldzVGltZVNwZW50VHlwZS5QYWdlICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEubW9kZSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEuc3RhdGUgPT09IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkxvYWRlZCkge1xyXG4gICAgICAgICAgdGhpcy5zdGFydChcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS50eXBlIHx8IFdzRXZlbnRzLldzVGltZVNwZW50VHlwZS5QYWdlLFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLm1vZGUgfHwgV3NFdmVudHMuV3NUaW1lU3BlbnRNb2RlLlZpZXcsXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEucGFnZUlkLFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXZlbnQuZGF0YS5zdGF0ZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuVW5sb2FkZWQpIHtcclxuICAgICAgICAgIHRoaXMuZW5kKFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLnR5cGUgfHwgV3NFdmVudHMuV3NUaW1lU3BlbnRUeXBlLlBhZ2UsXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEubW9kZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudE1vZGUuVmlldyxcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5wYWdlSWQsXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuICBhZGRQbGF5ZXJMaXN0ZW5lcigpIHtcclxuICAgIHRoaXMuZXZlbnRzU3ZjLmV2ZW50cyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgZXZlbnQgPT5cclxuICAgICAgICAgICAgZXZlbnQgJiZcclxuICAgICAgICAgICAgZXZlbnQuZXZlbnRUeXBlID09PSBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnkgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS50eXBlID09PSBXc0V2ZW50cy5Xc1RpbWVTcGVudFR5cGUuUGxheWVyICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEubW9kZSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udGVudDogTnNDb250ZW50LklDb250ZW50IHwgbnVsbCA9IGV2ZW50LmRhdGEuY29udGVudFxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGV2ZW50LmRhdGEuc3RhdGUgPT09IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkxvYWRlZCAmJlxyXG4gICAgICAgICAgKCFjb250ZW50IHx8XHJcbiAgICAgICAgICAgIChjb250ZW50LmlzSWZyYW1lU3VwcG9ydGVkIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnbWF5YmUnIHx8XHJcbiAgICAgICAgICAgIChjb250ZW50LmlzSWZyYW1lU3VwcG9ydGVkIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAneWVzJylcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuc3RhcnQoXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEudHlwZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudFR5cGUuUGxheWVyLFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLm1vZGUgfHwgV3NFdmVudHMuV3NUaW1lU3BlbnRNb2RlLlBsYXksXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEuaWRlbnRpZmllcixcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5vYmplY3RcclxuICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZXZlbnQuZGF0YS5zdGF0ZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuVW5sb2FkZWQgJiZcclxuICAgICAgICAgICghY29udGVudCB8fFxyXG4gICAgICAgICAgICAoY29udGVudC5pc0lmcmFtZVN1cHBvcnRlZCB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ21heWJlJyB8fFxyXG4gICAgICAgICAgICAoY29udGVudC5pc0lmcmFtZVN1cHBvcnRlZCB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ3llcycpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmVuZChcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS50eXBlIHx8IFdzRXZlbnRzLldzVGltZVNwZW50VHlwZS5QbGF5ZXIsXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEubW9kZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudE1vZGUuUGxheSxcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5pZGVudGlmaWVyLFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLm9iamVjdFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGFkZEludGVyYWN0TGlzdGVuZXIoKSB7XHJcbiAgICB0aGlzLmV2ZW50c1N2Yy5ldmVudHMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIChldmVudDogV3NFdmVudHMuV3NFdmVudFRlbGVtZXRyeUludGVyYWN0KSA9PlxyXG4gICAgICAgICAgICBldmVudCAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmV2ZW50VHlwZSA9PT0gV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEuZXZlbnRTdWJUeXBlID09PSBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5JbnRlcmFjdCxcclxuICAgICAgICApLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmdldFBhZ2VEZXRhaWxzKClcclxuICAgICAgICBpZiAodHlwZW9mIGV2ZW50LmZyb20gPT09ICdzdHJpbmcnICYmIHRoaXMuZXh0ZXJuYWxBcHBzW2V2ZW50LmZyb21dKSB7XHJcbiAgICAgICAgICBjb25zdCBleHRlcm5hbENvbmZpZyA9IHtcclxuICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuZXh0ZXJuYWxBcHBzW2V2ZW50LmZyb21dLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAkdC5pbnRlcmFjdChldmVudC5kYXRhLCBleHRlcm5hbENvbmZpZylcclxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgaW50ZXJhY3QnLCBlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgaW50ZXJhY3RpZFxyXG4gICAgICAgICAgaWYgKGV2ZW50LmRhdGEudHlwZSA9PT0gJ2dvYWwnKSB7XHJcbiAgICAgICAgICAgIGludGVyYWN0aWQgPSBwYWdlLnBhZ2VVcmxQYXJ0c1s0XVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgJHQuaW50ZXJhY3QoXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogZXZlbnQuZGF0YS50eXBlLFxyXG4gICAgICAgICAgICAgICAgc3VidHlwZTogZXZlbnQuZGF0YS5zdWJUeXBlLFxyXG4gICAgICAgICAgICAgICAgLy8gb2JqZWN0OiBldmVudC5kYXRhLm9iamVjdCxcclxuICAgICAgICAgICAgICAgIGlkOiAoZXZlbnQuZGF0YS5vYmplY3QpID8gZXZlbnQuZGF0YS5vYmplY3QuY29udGVudElkIHx8IGV2ZW50LmRhdGEub2JqZWN0LmlkIHx8IGludGVyYWN0aWQgfHwgJycgOiAnJyxcclxuICAgICAgICAgICAgICAgIHBhZ2VpZDogcGFnZS5wYWdlaWQsXHJcbiAgICAgICAgICAgICAgICAvLyB0YXJnZXQ6IHsgcGFnZSB9LFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgb2JqZWN0OiB7XHJcbiAgICAgICAgICAgICAgICAgIC4uLmV2ZW50LmRhdGEub2JqZWN0LFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBpbnRlcmFjdCcsIGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgYWRkRmVlZGJhY2tMaXN0ZW5lcigpIHtcclxuICAgIHRoaXMuZXZlbnRzU3ZjLmV2ZW50cyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgKGV2ZW50OiBXc0V2ZW50cy5Xc0V2ZW50VGVsZW1ldHJ5RmVlZGJhY2spID0+XHJcbiAgICAgICAgICAgIGV2ZW50ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEgJiZcclxuICAgICAgICAgICAgZXZlbnQuZXZlbnRUeXBlID09PSBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnkgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5ldmVudFN1YlR5cGUgPT09IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkZlZWRiYWNrLFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMuZ2V0UGFnZURldGFpbHMoKVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAkdC5mZWVkYmFjayhcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHJhdGluZzogZXZlbnQuZGF0YS5vYmplY3QucmF0aW5nIHx8IDAsXHJcbiAgICAgICAgICAgICAgY29tbWVudGlkOiBldmVudC5kYXRhLm9iamVjdC5jb21tZW50aWQgfHwgJycsXHJcbiAgICAgICAgICAgICAgY29tbWVudHR4dDogZXZlbnQuZGF0YS5vYmplY3QuY29tbWVudHR4dCB8fCAnJyxcclxuICAgICAgICAgICAgICBwYWdlaWQ6IHBhZ2UucGFnZWlkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgb2JqZWN0OiB7XHJcbiAgICAgICAgICAgICAgICBpZDogZXZlbnQuZGF0YS5vYmplY3QuY29udGVudElkIHx8IGV2ZW50LmRhdGEub2JqZWN0LmlkIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogZXZlbnQuZGF0YS50eXBlIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgdmVyOiBgJHsoZXZlbnQuZGF0YS5vYmplY3QudmVyc2lvbiB8fCAnMScpfSR7Jyd9YCxcclxuICAgICAgICAgICAgICAgIHJvbGx1cDoge30sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgaW50ZXJhY3QnLCBlKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGFkZEhlYXJiZWF0TGlzdGVuZXIoKSB7XHJcbiAgICB0aGlzLmV2ZW50c1N2Yy5ldmVudHMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIChldmVudDogV3NFdmVudHMuV3NFdmVudFRlbGVtZXRyeUhlYXJ0QmVhdCkgPT5cclxuICAgICAgICAgICAgZXZlbnQgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YSAmJlxyXG4gICAgICAgICAgICBldmVudC5ldmVudFR5cGUgPT09IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLmV2ZW50U3ViVHlwZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuSGVhcnRCZWF0LFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBldmVudC5mcm9tID09PSAnc3RyaW5nJyAmJiB0aGlzLmV4dGVybmFsQXBwc1tldmVudC5mcm9tXSkge1xyXG4gICAgICAgICAgY29uc3QgZXh0ZXJuYWxDb25maWcgPSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmV4dGVybmFsQXBwc1tldmVudC5mcm9tXSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgJHQuaGVhcnRiZWF0KGV2ZW50LmRhdGEsIGV4dGVybmFsQ29uZmlnKVxyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBoZWFydGJlYXQnLCBlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAkdC5oZWFydGJlYXQoXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogZXZlbnQuZGF0YS50eXBlLFxyXG4gICAgICAgICAgICAgICAgLy8gc3VidHlwZTogZXZlbnQuZGF0YS5ldmVudFN1YlR5cGUsXHJcbiAgICAgICAgICAgICAgICBpZDogZXZlbnQuZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgIC8vIG1pbWVUeXBlOiBldmVudC5kYXRhLm1pbWVUeXBlLFxyXG4gICAgICAgICAgICAgICAgLy8gbW9kZTogZXZlbnQuZGF0YS5tb2RlLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IGhlYXJ0YmVhdCcsIGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgYWRkU2VhcmNoTGlzdGVuZXIoKSB7XHJcbiAgICB0aGlzLmV2ZW50c1N2Yy5ldmVudHMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIChldmVudDogV3NFdmVudHMuV3NFdmVudFRlbGVtZXRyeVNlYXJjaCkgPT5cclxuICAgICAgICAgICAgZXZlbnQgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YSAmJlxyXG4gICAgICAgICAgICBldmVudC5ldmVudFR5cGUgPT09IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLmV2ZW50U3ViVHlwZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuU2VhcmNoLFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICR0LnNlYXJjaChcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHF1ZXJ5OiBldmVudC5kYXRhLnF1ZXJ5LFxyXG4gICAgICAgICAgICAgIGZpbHRlcnM6IGV2ZW50LmRhdGEuZmlsdGVycyxcclxuICAgICAgICAgICAgICBzaXplOiBldmVudC5kYXRhLnNpemUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgICAgICBpZDogdGhpcy5wRGF0YS5pZCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIClcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgc2VhcmNoJywgZSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRQYWdlRGV0YWlscygpIHtcclxuICAgIGNvbnN0IHBhdGggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgnLycsICcnKVxyXG4gICAgY29uc3QgdXJsID0gcGF0aCArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2hcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHBhZ2VpZDogcGF0aCxcclxuICAgICAgcGFnZVVybDogdXJsLFxyXG4gICAgICBwYWdlVXJsUGFydHM6IHBhdGguc3BsaXQoJy8nKSxcclxuICAgICAgcmVmZmVyVXJsOiB0aGlzLnByZXZpb3VzVXJsLFxyXG4gICAgICBvYmplY3RJZDogdGhpcy5leHRyYWN0Q29udGVudElkRnJvbVVybFBhcnRzKHBhdGguc3BsaXQoJy8nKSksXHJcbiAgICAgIG1vZHVsZTogJycsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHRyYWN0Q29udGVudElkRnJvbVVybFBhcnRzKHVybFBhcnRzOiBzdHJpbmdbXSkge1xyXG4gICAgLy8gVE9ETzogcGljayB0b2MgYW5kIHZpZXdlciB1cmwgZnJvbSBzb21lIGNvbmZpZ3VyYXRpb25cclxuICAgIGNvbnN0IHRvY0lkeCA9IHVybFBhcnRzLmluZGV4T2YoJ3RvYycpXHJcbiAgICBjb25zdCB2aWV3ZXJJZHggPSB1cmxQYXJ0cy5pbmRleE9mKCd2aWV3ZXInKVxyXG5cclxuICAgIGlmICh0b2NJZHggPT09IC0xICYmIHZpZXdlcklkeCA9PT0gLTEpIHtcclxuICAgICAgcmV0dXJuIG51bGxcclxuICAgIH1cclxuXHJcbiAgICBpZiAodG9jSWR4ICE9PSAtMSAmJiB0b2NJZHggPCB1cmxQYXJ0cy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIHJldHVybiB1cmxQYXJ0c1t0b2NJZHggKyAxXSAvLyBlLmcuIHVybCAvYXBwL3RvYy88Y29udGVudF9pZD5cclxuICAgIH1cclxuXHJcbiAgICBpZiAodmlld2VySWR4ICE9PSAtMSAmJiB2aWV3ZXJJZHggPCB1cmxQYXJ0cy5sZW5ndGggLSAyKSB7XHJcbiAgICAgIHJldHVybiB1cmxQYXJ0c1t2aWV3ZXJJZHggKyAyXSAvLyBlLmcuIHVybCAvYXBwL3ZpZXdlci88Y29udGVudF90eXBlPi88Y29udGVudF9pZD5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxufVxyXG4iXX0=
|
|
448
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3VuYmlyZC1jYi91dGlscy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy90ZWxlbWV0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBR3ZDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTs7Ozs7QUFLaEQ7SUFhRSwwQkFDeUIsV0FBZ0IsRUFDL0IsU0FBZ0MsRUFDaEMsU0FBdUIsRUFFdkIsTUFBcUI7UUFIckIsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDaEMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUV2QixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBZC9CLGdCQUFXLEdBQWtCLElBQUksQ0FBQTtRQUNqQyxvQkFBZSxHQUE2QyxJQUFJLENBQUE7UUFDaEUsVUFBSyxHQUFRLElBQUksQ0FBQTtRQUVqQixpQkFBWSxHQUFHLEVBQUUsQ0FBQTtRQUVqQixpQkFBWSxHQUFRO1lBQ2xCLElBQUksRUFBRSxhQUFhO1NBQ3BCLENBQUE7UUFRQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtZQUN4QixjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjO1FBQ3BELElBQUksY0FBYyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDLGVBQWUsQ0FBQTtZQUNyRCxJQUFJLENBQUMsZUFBZSx3QkFDZixJQUFJLENBQUMsZUFBZSxJQUN2QixLQUFLLHVCQUNBLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxJQUU3QixFQUFFLEVBQUssV0FBVyxDQUFDLElBQUksU0FBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFJLEtBRTVELEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBR3BFLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUN2RCxHQUFHLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixHQUVoQyxDQUFBO1lBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQTtZQUN2QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtZQUN4QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtZQUMxQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtZQUMxQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtZQUMzQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtZQUN4QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtZQUMxQixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQTtTQUNuQztJQUNILENBQUM7SUFFRCxzQkFBSSxtREFBcUI7YUFBekI7WUFDRSxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDekQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSx1Q0FBUzthQUFiO1lBQ0UsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRTtnQkFDeEYsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUE7YUFDNUM7WUFDRCxPQUFPLEVBQUUsQ0FBQTtRQUNYLENBQUM7OztPQUFBO0lBRUQsZ0NBQUssR0FBTCxVQUFNLElBQVksRUFBRSxJQUFZLEVBQUUsRUFBVSxFQUFFLElBQVU7UUFDdEQsSUFBSTtZQUNGLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDeEIsRUFBRSxDQUFDLEtBQUssQ0FDTixJQUFJLENBQUMsZUFBZSxFQUNwQixFQUFFLEVBQ0YsS0FBSyxFQUNMO29CQUVFLElBQUksTUFBQTtvQkFDSixJQUFJLE1BQUE7b0JBQ0osTUFBTSxFQUFFLEVBQUU7b0JBQ1YsUUFBUSxFQUFFLENBQUM7aUJBQ1osRUFDRDtvQkFDRSxPQUFPLEVBQUU7d0JBQ1AsS0FBSyx1QkFDQSxJQUFJLENBQUMsS0FBSyxJQUNiLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FDbEI7d0JBQ0QsR0FBRyxFQUFFLE1BQU07cUJBQ1o7b0JBQ0QsTUFBTSx1QkFDRCxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FDbEI7aUJBQ0YsQ0FDRixDQUFBO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQTthQUNuRTtTQUNGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFFVixPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQyxDQUFBO1NBQzNDO0lBQ0gsQ0FBQztJQUVELDhCQUFHLEdBQUgsVUFBSSxJQUFZLEVBQUUsSUFBWSxFQUFFLEVBQVUsRUFBRSxJQUFVO1FBQ3BELElBQUk7WUFDRixFQUFFLENBQUMsR0FBRyxDQUNKO2dCQUNFLElBQUksTUFBQTtnQkFDSixJQUFJLE1BQUE7Z0JBQ0osTUFBTSxFQUFFLEVBQUU7YUFDWCxFQUNEO2dCQUNFLE9BQU8sRUFBRTtvQkFDUCxLQUFLLHVCQUNBLElBQUksQ0FBQyxLQUFLLElBQ2IsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUNsQjtpQkFDRjtnQkFDRCxNQUFNLHVCQUNELENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUNsQjthQUNGLENBQ0YsQ0FBQTtTQUNGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFFVixPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQyxDQUFBO1NBQ3pDO0lBQ0gsQ0FBQztJQUVELGdDQUFLLEdBQUwsVUFBTSxJQUFZLEVBQUUsS0FBYSxFQUFFLElBQVM7UUFDMUMsSUFBSTtZQUNGLEVBQUUsQ0FBQyxLQUFLLENBQ047Z0JBQ0UsSUFBSSxNQUFBO2dCQUNKLEtBQUssT0FBQTtnQkFFTCxLQUFLLEVBQUUsSUFBSTtnQkFDWCxTQUFTLEVBQUUsRUFBRTtnQkFDYixRQUFRLEVBQUUsRUFBRTthQUNiLEVBQ0Q7Z0JBQ0UsT0FBTyxFQUFFO29CQUNQLEtBQUssdUJBQ0EsSUFBSSxDQUFDLEtBQUssSUFDYixFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQ2xCO2lCQUNGO2FBQ0YsQ0FDRixDQUFBO1NBQ0Y7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUVWLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDLENBQUE7U0FDM0M7SUFDSCxDQUFDO0lBRUQsb0NBQVMsR0FBVCxVQUFVLElBQVksRUFBRSxFQUFVO1FBQ2hDLElBQUk7WUFDRixFQUFFLENBQUMsU0FBUyxDQUFDO2dCQUNYLEVBQUUsSUFBQTtnQkFFRixJQUFJLE1BQUE7YUFDTCxDQUFDLENBQUE7U0FDSDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBRVYsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDLENBQUMsQ0FBQTtTQUMvQztJQUNILENBQUM7SUFFRCxxQ0FBVSxHQUFWLFVBQVcsSUFBVTtRQUNuQixJQUFJO2dCQUNJLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2xDLElBQUksSUFBSSxFQUFFO2dCQUNSLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtnQkFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFBO2FBQzFCO2dCQUNLLEtBQUssR0FBRztnQkFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDMUIsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPO2FBQ2xCO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUNYLE1BQU0sR0FBRztvQkFDYixPQUFPLEVBQUU7d0JBQ1AsS0FBSyx1QkFDQSxJQUFJLENBQUMsS0FBSyxJQUNiLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FDbEI7d0JBQ0QsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDO3FCQUN2RTtvQkFDRCxNQUFNLEVBQUU7d0JBQ04sRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRO3FCQUNsQjtpQkFDRjtnQkFDRCxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTthQUM3QjtpQkFBTTtnQkFDTCxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRTtvQkFDbkIsT0FBTyxFQUFFO3dCQUNQLEtBQUssdUJBQ0EsSUFBSSxDQUFDLEtBQUssSUFDYixFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQ2xCO3dCQUNELEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUU7cUJBQ3ZCO2lCQUNGLENBQUMsQ0FBQTthQUNIO1lBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFBO1NBQ2hDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFFVixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLENBQUMsQ0FBQyxDQUFBO1NBQ2hEO0lBQ0gsQ0FBQztJQUVELDZDQUFrQixHQUFsQixVQUFtQixjQUFtQjtRQUNwQyxJQUFJO2dCQUNJLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2xDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsRUFBRTtvQkFDbEQsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO29CQUNyQyxPQUFPLEVBQUU7d0JBQ1AsS0FBSyx1QkFDQSxJQUFJLENBQUMsS0FBSyxJQUNiLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUN6RDtxQkFDRjtvQkFDRCxNQUFNLEVBQUU7d0JBQ04sRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRO3FCQUNsQjtpQkFDRixDQUFDLENBQUMsQ0FBQztvQkFDRixPQUFPLEVBQUU7d0JBQ1AsS0FBSyx1QkFDQSxJQUFJLENBQUMsS0FBSyxJQUNiLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUN6RDtxQkFDRjtpQkFDRjtnQkFDRCxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUE7YUFDbkQ7U0FDRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBRVYsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtTQUN4RDtJQUNILENBQUM7SUFFRCwrQ0FBb0IsR0FBcEI7UUFBQSxpQkE0QkM7UUEzQkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO2FBQ25CLElBQUksQ0FDSCxNQUFNLEVBQ0osVUFBQSxLQUFLO1lBQ0gsT0FBQSxLQUFLO2dCQUNMLEtBQUssQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTO2dCQUNsRCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUk7Z0JBQ2pELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSTtnQkFDZixLQUFLLENBQUMsSUFBSTtRQUpWLENBSVUsRUFDYixDQUNGO2FBQ0EsU0FBUyxFQUFDLFVBQUEsS0FBSztZQUNkLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRTtnQkFDN0QsS0FBSSxDQUFDLEtBQUssQ0FDUixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksRUFDaEQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQ2hELEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUNsQixDQUFBO2FBQ0Y7WUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUU7Z0JBQy9ELEtBQUksQ0FBQyxHQUFHLENBQ04sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQ2hELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUNoRCxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FDbEIsQ0FBQTthQUNGO1FBQ0gsQ0FBQyxFQUFDLENBQUE7SUFDTixDQUFDO0lBQ0QsNENBQWlCLEdBQWpCO1FBQUEsaUJBeUNDO1FBeENDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTzthQUNuQixJQUFJLENBQ0gsTUFBTSxFQUNKLFVBQUEsS0FBSztZQUNILE9BQUEsS0FBSztnQkFDTCxLQUFLLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUztnQkFDbEQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNO2dCQUNuRCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsS0FBSyxDQUFDLElBQUk7UUFKVixDQUlVLEVBQ2IsQ0FDRjthQUNBLFNBQVMsRUFBQyxVQUFBLEtBQUs7Z0JBQ1IsT0FBTyxHQUE4QixLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDN0QsSUFDRSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTTtnQkFDekQsQ0FBQyxDQUFDLE9BQU87b0JBQ1AsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTztvQkFDM0QsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQzVEO2dCQUNBLEtBQUksQ0FBQyxLQUFLLENBQ1IsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQ2xELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUNoRCxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFDckIsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQ2xCLENBQUE7YUFDRjtZQUNELElBQ0UsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLG9CQUFvQixDQUFDLFFBQVE7Z0JBQzNELENBQUMsQ0FBQyxPQUFPO29CQUNQLENBQUMsT0FBTyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU87b0JBQzNELENBQUMsT0FBTyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUM1RDtnQkFDQSxLQUFJLENBQUMsR0FBRyxDQUNOLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUNsRCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksRUFDaEQsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQ3JCLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUNsQixDQUFBO2FBQ0Y7UUFDSCxDQUFDLEVBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCw4Q0FBbUIsR0FBbkI7UUFBQSxpQkE2REM7UUE1REMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO2FBQ25CLElBQUksQ0FDSCxNQUFNLEVBQ0osVUFBQyxLQUF3QztZQUN2QyxPQUFBLEtBQUs7Z0JBQ0wsS0FBSyxDQUFDLElBQUk7Z0JBQ1YsS0FBSyxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVM7Z0JBQ2xELEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRO1FBSGxFLENBR2tFLEVBQ3JFLENBQ0Y7YUFDQSxTQUFTLEVBQUMsVUFBQSxLQUFLO2dCQUNSLElBQUksR0FBRyxLQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2xDLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxLQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDN0QsY0FBYyxHQUFHO29CQUNyQixPQUFPLEVBQUU7d0JBQ1AsS0FBSyx1QkFDQSxLQUFJLENBQUMsS0FBSyxJQUNiLEVBQUUsRUFBRSxLQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FDbEM7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsSUFBSTtvQkFDRixFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUE7aUJBQ3hDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUVWLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDLENBQUE7aUJBQzlDO2FBQ0Y7aUJBQU07b0JBQ0QsVUFBVSxTQUFBO2dCQUNkLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO29CQUM5QixVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQTtpQkFDbEM7Z0JBQ0QsSUFBSTtvQkFDRixFQUFFLENBQUMsUUFBUSxDQUNUO3dCQUNFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUk7d0JBQ3JCLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU87d0JBRTNCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDdEcsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSyxJQUFJLENBQUMsTUFBTTtxQkFFeEUsRUFDRDt3QkFDRSxPQUFPLHFCQUNMLEtBQUssdUJBQ0EsS0FBSSxDQUFDLEtBQUssSUFDYixFQUFFLEVBQUUsS0FBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BRWhCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ2pHO3dCQUNELE1BQU0sdUJBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQ3JCO3FCQUNGLENBQUMsQ0FBQTtpQkFDTDtnQkFBQyxPQUFPLENBQUMsRUFBRTtvQkFFVixPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixFQUFFLENBQUMsQ0FBQyxDQUFBO2lCQUM5QzthQUNGO1FBQ0gsQ0FBQyxFQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsOENBQW1CLEdBQW5CO1FBQUEsaUJBd0NDO1FBdkNDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTzthQUNuQixJQUFJLENBQ0gsTUFBTSxFQUNKLFVBQUMsS0FBd0M7WUFDdkMsT0FBQSxLQUFLO2dCQUNMLEtBQUssQ0FBQyxJQUFJO2dCQUNWLEtBQUssQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTO2dCQUNsRCxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxRQUFRLENBQUMsb0JBQW9CLENBQUMsUUFBUTtRQUhsRSxDQUdrRSxFQUNyRSxDQUNGO2FBQ0EsU0FBUyxFQUFDLFVBQUEsS0FBSztnQkFDUixJQUFJLEdBQUcsS0FBSSxDQUFDLGNBQWMsRUFBRTtZQUNsQyxJQUFJO2dCQUNGLEVBQUUsQ0FBQyxRQUFRLENBQ1Q7b0JBQ0UsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDO29CQUNyQyxTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLEVBQUU7b0JBQzVDLFVBQVUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRTtvQkFDOUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2lCQUNwQixFQUNEO29CQUNFLE9BQU8sRUFBRTt3QkFDUCxLQUFLLHVCQUNBLEtBQUksQ0FBQyxLQUFLLElBQ2IsRUFBRSxFQUFFLEtBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUNsQjtxQkFDRjtvQkFDRCxNQUFNLEVBQUU7d0JBQ04sRUFBRSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRTt3QkFDN0QsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUU7d0JBQzNCLEdBQUcsRUFBRSxLQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUk7d0JBQ2pELE1BQU0sRUFBRSxFQUFFO3FCQUNYO2lCQUNGLENBQUMsQ0FBQTthQUNMO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBRVYsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLENBQUMsQ0FBQTthQUM5QztRQUNILENBQUMsRUFBQyxDQUFBO0lBQ04sQ0FBQztJQUVELHNEQUEyQixHQUEzQjtRQUFBLGlCQW9CQztRQW5CQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU87YUFDbkIsSUFBSSxDQUNILE1BQU0sRUFDSixVQUFDLEtBQTBDO1lBQ3pDLE9BQUEsS0FBSztnQkFDTCxLQUFLLENBQUMsSUFBSTtnQkFDVixLQUFLLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUztnQkFDbEQsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssUUFBUSxDQUFDLG9CQUFvQixDQUFDLFVBQVU7UUFIcEUsQ0FHb0UsRUFDdkUsQ0FDRjthQUNBLFNBQVMsRUFBQyxVQUFBLEtBQUs7WUFDZCxJQUFJO2dCQUVGLEtBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTthQUNwQztZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUVWLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUE7YUFDaEQ7UUFDSCxDQUFDLEVBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCw4Q0FBbUIsR0FBbkI7UUFBQSxpQkFtREM7UUFsREMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO2FBQ25CLElBQUksQ0FDSCxNQUFNLEVBQ0osVUFBQyxLQUF5QztZQUN4QyxPQUFBLEtBQUs7Z0JBQ0wsS0FBSyxDQUFDLElBQUk7Z0JBQ1YsS0FBSyxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVM7Z0JBQ2xELEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTO1FBSG5FLENBR21FLEVBQ3RFLENBQ0Y7YUFDQSxTQUFTLEVBQUMsVUFBQSxLQUFLO1lBQ2QsSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLEtBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUM3RCxjQUFjLEdBQUc7b0JBQ3JCLE9BQU8sRUFBRTt3QkFDUCxLQUFLLHVCQUNBLEtBQUksQ0FBQyxLQUFLLElBQ2IsRUFBRSxFQUFFLEtBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUNsQztxQkFDRjtpQkFDRjtnQkFDRCxJQUFJO29CQUNGLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQTtpQkFDekM7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBRVYsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDLENBQUMsQ0FBQTtpQkFDL0M7YUFDRjtpQkFBTTtnQkFDTCxJQUFJO29CQUNGLEVBQUUsQ0FBQyxTQUFTLENBQ1Y7d0JBQ0UsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSTt3QkFFckIsRUFBRSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtxQkFHbEIsRUFDRDt3QkFDRSxPQUFPLEVBQUU7NEJBQ1AsS0FBSyx1QkFDQSxLQUFJLENBQUMsS0FBSyxJQUNiLEVBQUUsRUFBRSxLQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FDbEI7eUJBQ0Y7cUJBQ0YsQ0FBQyxDQUFBO2lCQUNMO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUVWLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxDQUFDLENBQUE7aUJBQy9DO2FBQ0Y7UUFDSCxDQUFDLEVBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCw0Q0FBaUIsR0FBakI7UUFBQSxpQkFpQ0M7UUFoQ0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO2FBQ25CLElBQUksQ0FDSCxNQUFNLEVBQ0osVUFBQyxLQUFzQztZQUNyQyxPQUFBLEtBQUs7Z0JBQ0wsS0FBSyxDQUFDLElBQUk7Z0JBQ1YsS0FBSyxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVM7Z0JBQ2xELEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNO1FBSGhFLENBR2dFLEVBQ25FLENBQ0Y7YUFDQSxTQUFTLEVBQUMsVUFBQSxLQUFLO1lBQ2QsSUFBSTtnQkFDRixFQUFFLENBQUMsTUFBTSxDQUNQO29CQUNFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUs7b0JBQ3ZCLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU87b0JBQzNCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUk7aUJBQ3RCLEVBQ0Q7b0JBQ0UsT0FBTyxFQUFFO3dCQUNQLEtBQUssdUJBQ0EsS0FBSSxDQUFDLEtBQUssSUFDYixFQUFFLEVBQUUsS0FBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQ2xCO3FCQUNGO2lCQUNGLENBQ0YsQ0FBQTthQUNGO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBRVYsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsRUFBRSxDQUFDLENBQUMsQ0FBQTthQUM1QztRQUNILENBQUMsRUFBQyxDQUFBO0lBQ04sQ0FBQztJQUVELHlDQUFjLEdBQWQ7WUFDUSxJQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDaEQsR0FBRyxHQUFHLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU07UUFDekMsT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJO1lBQ1osT0FBTyxFQUFFLEdBQUc7WUFDWixZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDN0IsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzNCLFFBQVEsRUFBRSxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1RCxNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUE7SUFDSCxDQUFDO0lBRUQsdURBQTRCLEdBQTVCLFVBQTZCLFFBQWtCO1lBRXZDLE1BQU0sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNoQyxTQUFTLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFFNUMsSUFBSSxNQUFNLEtBQUssQ0FBQyxDQUFDLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3JDLE9BQU8sSUFBSSxDQUFBO1NBQ1o7UUFFRCxJQUFJLE1BQU0sS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakQsT0FBTyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFBO1NBQzVCO1FBRUQsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZELE9BQU8sUUFBUSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQTtTQUMvQjtRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQzs7Z0JBemlCRixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7Z0RBWUksTUFBTSxTQUFDLGFBQWE7Z0JBdEJoQixxQkFBcUI7Z0JBRXJCLFlBQVk7Z0JBQ1osYUFBYTs7OzJCQVB0QjtDQXNqQkMsQUExaUJELElBMGlCQztTQXZpQlksZ0JBQWdCOztJQUMzQix1Q0FBaUM7SUFDakMsMkNBQWdFO0lBQ2hFLGlDQUFpQjtJQUNqQix1Q0FBZ0I7SUFDaEIsd0NBQWlCO0lBRWpCLHdDQUVDO0lBR0MscUNBQXdDO0lBQ3hDLHFDQUErQjtJQUUvQixrQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuLy8gaW1wb3J0IHsgQXV0aEtleWNsb2FrU2VydmljZSB9IGZyb20gJy4vYXV0aC1rZXljbG9hay5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBOc0luc3RhbmNlQ29uZmlnIH0gZnJvbSAnLi9jb25maWd1cmF0aW9ucy5tb2RlbCdcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWd1cmF0aW9ucy5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBXc0V2ZW50cyB9IGZyb20gJy4vZXZlbnQubW9kZWwnXHJcbmltcG9ydCB7IEV2ZW50U2VydmljZSB9IGZyb20gJy4vZXZlbnQuc2VydmljZSdcclxuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4vbG9nZ2VyLnNlcnZpY2UnXHJcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4vd2lkZ2V0LWNvbnRlbnQubW9kZWwnXHJcblxyXG5kZWNsYXJlIHZhciAkdDogYW55XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVsZW1ldHJ5U2VydmljZSB7XHJcbiAgcHJldmlvdXNVcmw6IHN0cmluZyB8IG51bGwgPSBudWxsXHJcbiAgdGVsZW1ldHJ5Q29uZmlnOiBOc0luc3RhbmNlQ29uZmlnLklUZWxlbWV0cnlDb25maWcgfCBudWxsID0gbnVsbFxyXG4gIHBEYXRhOiBhbnkgPSBudWxsXHJcbiAgZW52aXJvbm1lbnQ6IGFueVxyXG4gIGNvbnRleHRDZGF0YSA9IFtdXHJcblxyXG4gIGV4dGVybmFsQXBwczogYW55ID0ge1xyXG4gICAgUkJDUDogJ3JiY3Atd2ViLXVpJyxcclxuICB9XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIGVudmlyb25tZW50OiBhbnksXHJcbiAgICBwcml2YXRlIGNvbmZpZ1N2YzogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudHNTdmM6IEV2ZW50U2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgYXV0aFN2YzogQXV0aEtleWNsb2FrU2VydmljZSxcclxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50XHJcbiAgICBjb25zdCBpbnN0YW5jZUNvbmZpZyA9IHRoaXMuY29uZmlnU3ZjLmluc3RhbmNlQ29uZmlnXHJcbiAgICBpZiAoaW5zdGFuY2VDb25maWcpIHtcclxuICAgICAgdGhpcy50ZWxlbWV0cnlDb25maWcgPSBpbnN0YW5jZUNvbmZpZy50ZWxlbWV0cnlDb25maWdcclxuICAgICAgdGhpcy50ZWxlbWV0cnlDb25maWcgPSB7XHJcbiAgICAgICAgLi4udGhpcy50ZWxlbWV0cnlDb25maWcsXHJcbiAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgIC4uLnRoaXMudGVsZW1ldHJ5Q29uZmlnLnBkYXRhLFxyXG4gICAgICAgICAgLy8gcGlkOiBuYXZpZ2F0b3IudXNlckFnZW50LFxyXG4gICAgICAgICAgaWQ6IGAke2Vudmlyb25tZW50Lm5hbWV9LiR7dGhpcy50ZWxlbWV0cnlDb25maWcucGRhdGEuaWR9YCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHVpZDogdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUgJiYgdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlcklkLFxyXG4gICAgICAgIC8vIGF1dGh0b2tlbjogdGhpcy5hdXRoU3ZjLnRva2VuLFxyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgY2hhbm5lbDogdGhpcy5yb290T3JnSWQgfHwgdGhpcy50ZWxlbWV0cnlDb25maWcuY2hhbm5lbCxcclxuICAgICAgICBzaWQ6IHRoaXMuZ2V0VGVsZW1ldHJ5U2Vzc2lvbklkLFxyXG5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBEYXRhID0gdGhpcy50ZWxlbWV0cnlDb25maWcucGRhdGFcclxuICAgICAgdGhpcy5hZGRQbGF5ZXJMaXN0ZW5lcigpXHJcbiAgICAgIHRoaXMuYWRkSW50ZXJhY3RMaXN0ZW5lcigpXHJcbiAgICAgIHRoaXMuYWRkRmVlZGJhY2tMaXN0ZW5lcigpXHJcbiAgICAgIHRoaXMuYWRkVGltZVNwZW50TGlzdGVuZXIoKVxyXG4gICAgICB0aGlzLmFkZFNlYXJjaExpc3RlbmVyKClcclxuICAgICAgdGhpcy5hZGRIZWFyYmVhdExpc3RlbmVyKClcclxuICAgICAgdGhpcy5hZGRDdXN0b21JbXByZXNzaW9uTGlzdGVuZXIoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGdldFRlbGVtZXRyeVNlc3Npb25JZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0ZWxlbWV0cnlTZXNzaW9uSWQnKSB8fCAnJ1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJvb3RPcmdJZCgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnU3ZjICYmIHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlICYmIHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnJvb3RPcmdJZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUucm9vdE9yZ0lkXHJcbiAgICB9XHJcbiAgICByZXR1cm4gJydcclxuICB9XHJcblxyXG4gIHN0YXJ0KHR5cGU6IHN0cmluZywgbW9kZTogc3RyaW5nLCBpZDogc3RyaW5nLCBkYXRhPzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy50ZWxlbWV0cnlDb25maWcpIHtcclxuICAgICAgICAkdC5zdGFydChcclxuICAgICAgICAgIHRoaXMudGVsZW1ldHJ5Q29uZmlnLFxyXG4gICAgICAgICAgaWQsXHJcbiAgICAgICAgICAnMS4wJyxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgLy8gaWQsXHJcbiAgICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICAgIG1vZGUsXHJcbiAgICAgICAgICAgIHBhZ2VpZDogaWQsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiAxLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBlbnY6ICdob21lJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb2JqZWN0OiB7XHJcbiAgICAgICAgICAgICAgLi4uKGRhdGEpICYmIGRhdGEsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdFcnJvciBJbml0aWFsaXppbmcgVGVsZW1ldHJ5LiBDb25maWcgbWlzc2luZy4nKVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IHN0YXJ0JywgZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVuZCh0eXBlOiBzdHJpbmcsIG1vZGU6IHN0cmluZywgaWQ6IHN0cmluZywgZGF0YT86IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgJHQuZW5kKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICBtb2RlLFxyXG4gICAgICAgICAgcGFnZWlkOiBpZCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgIGlkOiB0aGlzLnBEYXRhLmlkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9iamVjdDoge1xyXG4gICAgICAgICAgICAuLi4oZGF0YSkgJiYgZGF0YSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgKVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBlbmQnLCBlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXVkaXQodHlwZTogc3RyaW5nLCBwcm9wczogc3RyaW5nLCBkYXRhOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgICR0LmF1ZGl0KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICBwcm9wcyxcclxuICAgICAgICAgIC8vIGRhdGEsXHJcbiAgICAgICAgICBzdGF0ZTogZGF0YSwgLy8gT3B0aW9uYWwuIEN1cnJlbnQgU3RhdGVcclxuICAgICAgICAgIHByZXZzdGF0ZTogJycsIC8vIE9wdGlvbmFsLiBQcmV2aW91cyBTdGF0ZVxyXG4gICAgICAgICAgZHVyYXRpb246ICcnLCAvLyBPcHRpb25hbC5cclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgIGlkOiB0aGlzLnBEYXRhLmlkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICApXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IGF1ZGl0JywgZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhlYXJ0YmVhdCh0eXBlOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgICR0LmhlYXJ0YmVhdCh7XHJcbiAgICAgICAgaWQsXHJcbiAgICAgICAgLy8gbW9kZSxcclxuICAgICAgICB0eXBlLFxyXG4gICAgICB9KVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBoZWFydGJlYXQnLCBlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW1wcmVzc2lvbihkYXRhPzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBwYWdlID0gdGhpcy5nZXRQYWdlRGV0YWlscygpXHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgcGFnZS5wYWdlaWQgPSBkYXRhLnBhZ2VJZFxyXG4gICAgICAgIHBhZ2UubW9kdWxlID0gZGF0YS5tb2R1bGVcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBlZGF0YSA9IHtcclxuICAgICAgICBwYWdlaWQ6IHBhZ2UucGFnZWlkLCAvLyBSZXF1aXJlZC4gVW5pcXVlIHBhZ2UgaWRcclxuICAgICAgICB0eXBlOiBwYWdlLnBhZ2VVcmxQYXJ0c1swXSwgLy8gUmVxdWlyZWQuIEltcHJlc3Npb24gdHlwZSAobGlzdCwgZGV0YWlsLCB2aWV3LCBlZGl0LCB3b3JrZmxvdywgc2VhcmNoKVxyXG4gICAgICAgIHVyaTogcGFnZS5wYWdlVXJsLFxyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYWdlLm9iamVjdElkKSB7XHJcbiAgICAgICAgY29uc3QgY29uZmlnID0ge1xyXG4gICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVudjogcGFnZS5tb2R1bGUgfHwgKHRoaXMudGVsZW1ldHJ5Q29uZmlnICYmIHRoaXMudGVsZW1ldHJ5Q29uZmlnLmVudiksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb2JqZWN0OiB7XHJcbiAgICAgICAgICAgIGlkOiBwYWdlLm9iamVjdElkLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9XHJcbiAgICAgICAgJHQuaW1wcmVzc2lvbihlZGF0YSwgY29uZmlnKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICR0LmltcHJlc3Npb24oZWRhdGEsIHtcclxuICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgIGlkOiB0aGlzLnBEYXRhLmlkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlbnY6IHBhZ2UubW9kdWxlIHx8ICcnLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucHJldmlvdXNVcmwgPSBwYWdlLnBhZ2VVcmxcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgaW1wcmVzc2lvbicsIGUpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHRlcm5hbEltcHJlc3Npb24oaW1wcmVzc2lvbkRhdGE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcGFnZSA9IHRoaXMuZ2V0UGFnZURldGFpbHMoKVxyXG4gICAgICBpZiAodGhpcy5leHRlcm5hbEFwcHNbaW1wcmVzc2lvbkRhdGEuc3ViQXBwbGljYXRpb25OYW1lXSkge1xyXG4gICAgICAgIGNvbnN0IGV4dGVybmFsQ29uZmlnID0gcGFnZS5vYmplY3RJZCA/IHtcclxuICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgIGlkOiB0aGlzLmV4dGVybmFsQXBwc1tpbXByZXNzaW9uRGF0YS5zdWJBcHBsaWNhdGlvbk5hbWVdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9iamVjdDoge1xyXG4gICAgICAgICAgICBpZDogcGFnZS5vYmplY3RJZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSA6IHtcclxuICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgIGlkOiB0aGlzLmV4dGVybmFsQXBwc1tpbXByZXNzaW9uRGF0YS5zdWJBcHBsaWNhdGlvbk5hbWVdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9XHJcbiAgICAgICAgJHQuaW1wcmVzc2lvbihpbXByZXNzaW9uRGF0YS5kYXRhLCBleHRlcm5hbENvbmZpZylcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBleHRlcm5hbEltcHJlc3Npb24nLCBlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkVGltZVNwZW50TGlzdGVuZXIoKSB7XHJcbiAgICB0aGlzLmV2ZW50c1N2Yy5ldmVudHMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIGV2ZW50ID0+XHJcbiAgICAgICAgICAgIGV2ZW50ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmV2ZW50VHlwZSA9PT0gV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEudHlwZSA9PT0gV3NFdmVudHMuV3NUaW1lU3BlbnRUeXBlLlBhZ2UgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5tb2RlICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEsXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQuZGF0YS5zdGF0ZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuTG9hZGVkKSB7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0KFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLnR5cGUgfHwgV3NFdmVudHMuV3NUaW1lU3BlbnRUeXBlLlBhZ2UsXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEubW9kZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudE1vZGUuVmlldyxcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5wYWdlSWQsXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChldmVudC5kYXRhLnN0YXRlID09PSBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5VbmxvYWRlZCkge1xyXG4gICAgICAgICAgdGhpcy5lbmQoXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEudHlwZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudFR5cGUuUGFnZSxcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5tb2RlIHx8IFdzRXZlbnRzLldzVGltZVNwZW50TW9kZS5WaWV3LFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLnBhZ2VJZCxcclxuICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIGFkZFBsYXllckxpc3RlbmVyKCkge1xyXG4gICAgdGhpcy5ldmVudHNTdmMuZXZlbnRzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoXHJcbiAgICAgICAgICBldmVudCA9PlxyXG4gICAgICAgICAgICBldmVudCAmJlxyXG4gICAgICAgICAgICBldmVudC5ldmVudFR5cGUgPT09IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLnR5cGUgPT09IFdzRXZlbnRzLldzVGltZVNwZW50VHlwZS5QbGF5ZXIgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5tb2RlICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEsXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBjb25zdCBjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQgfCBudWxsID0gZXZlbnQuZGF0YS5jb250ZW50XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZXZlbnQuZGF0YS5zdGF0ZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuTG9hZGVkICYmXHJcbiAgICAgICAgICAoIWNvbnRlbnQgfHxcclxuICAgICAgICAgICAgKGNvbnRlbnQuaXNJZnJhbWVTdXBwb3J0ZWQgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdtYXliZScgfHxcclxuICAgICAgICAgICAgKGNvbnRlbnQuaXNJZnJhbWVTdXBwb3J0ZWQgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICd5ZXMnKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5zdGFydChcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS50eXBlIHx8IFdzRXZlbnRzLldzVGltZVNwZW50VHlwZS5QbGF5ZXIsXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEubW9kZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudE1vZGUuUGxheSxcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5pZGVudGlmaWVyLFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLm9iamVjdFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBldmVudC5kYXRhLnN0YXRlID09PSBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5VbmxvYWRlZCAmJlxyXG4gICAgICAgICAgKCFjb250ZW50IHx8XHJcbiAgICAgICAgICAgIChjb250ZW50LmlzSWZyYW1lU3VwcG9ydGVkIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnbWF5YmUnIHx8XHJcbiAgICAgICAgICAgIChjb250ZW50LmlzSWZyYW1lU3VwcG9ydGVkIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAneWVzJylcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZW5kKFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLnR5cGUgfHwgV3NFdmVudHMuV3NUaW1lU3BlbnRUeXBlLlBsYXllcixcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5tb2RlIHx8IFdzRXZlbnRzLldzVGltZVNwZW50TW9kZS5QbGF5LFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLmlkZW50aWZpZXIsXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEub2JqZWN0XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgYWRkSW50ZXJhY3RMaXN0ZW5lcigpIHtcclxuICAgIHRoaXMuZXZlbnRzU3ZjLmV2ZW50cyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgKGV2ZW50OiBXc0V2ZW50cy5Xc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3QpID0+XHJcbiAgICAgICAgICAgIGV2ZW50ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEgJiZcclxuICAgICAgICAgICAgZXZlbnQuZXZlbnRUeXBlID09PSBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnkgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5ldmVudFN1YlR5cGUgPT09IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkludGVyYWN0LFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMuZ2V0UGFnZURldGFpbHMoKVxyXG4gICAgICAgIGlmICh0eXBlb2YgZXZlbnQuZnJvbSA9PT0gJ3N0cmluZycgJiYgdGhpcy5leHRlcm5hbEFwcHNbZXZlbnQuZnJvbV0pIHtcclxuICAgICAgICAgIGNvbnN0IGV4dGVybmFsQ29uZmlnID0ge1xyXG4gICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5leHRlcm5hbEFwcHNbZXZlbnQuZnJvbV0sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICR0LmludGVyYWN0KGV2ZW50LmRhdGEsIGV4dGVybmFsQ29uZmlnKVxyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBpbnRlcmFjdCcsIGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBpbnRlcmFjdGlkXHJcbiAgICAgICAgICBpZiAoZXZlbnQuZGF0YS50eXBlID09PSAnZ29hbCcpIHtcclxuICAgICAgICAgICAgaW50ZXJhY3RpZCA9IHBhZ2UucGFnZVVybFBhcnRzWzRdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAkdC5pbnRlcmFjdChcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBldmVudC5kYXRhLnR5cGUsXHJcbiAgICAgICAgICAgICAgICBzdWJ0eXBlOiBldmVudC5kYXRhLnN1YlR5cGUsXHJcbiAgICAgICAgICAgICAgICAvLyBvYmplY3Q6IGV2ZW50LmRhdGEub2JqZWN0LFxyXG4gICAgICAgICAgICAgICAgaWQ6IChldmVudC5kYXRhLm9iamVjdCkgPyBldmVudC5kYXRhLm9iamVjdC5jb250ZW50SWQgfHwgZXZlbnQuZGF0YS5vYmplY3QuaWQgfHwgaW50ZXJhY3RpZCB8fCAnJyA6ICcnLFxyXG4gICAgICAgICAgICAgICAgcGFnZWlkOiBldmVudC5kYXRhLmNvbnRleHQgJiYgZXZlbnQuZGF0YS5jb250ZXh0LnBhZ2VJZCB8fCAgcGFnZS5wYWdlaWQsXHJcbiAgICAgICAgICAgICAgICAvLyB0YXJnZXQ6IHsgcGFnZSB9LFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIC4uLihldmVudC5kYXRhLmNvbnRleHQgJiYgZXZlbnQuZGF0YS5jb250ZXh0Lm1vZHVsZSA/IHsgZW52OiBldmVudC5kYXRhLmNvbnRleHQubW9kdWxlIH0gOiBudWxsKSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBvYmplY3Q6IHtcclxuICAgICAgICAgICAgICAgICAgLi4uZXZlbnQuZGF0YS5vYmplY3QsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IGludGVyYWN0JywgZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBhZGRGZWVkYmFja0xpc3RlbmVyKCkge1xyXG4gICAgdGhpcy5ldmVudHNTdmMuZXZlbnRzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoXHJcbiAgICAgICAgICAoZXZlbnQ6IFdzRXZlbnRzLldzRXZlbnRUZWxlbWV0cnlGZWVkYmFjaykgPT5cclxuICAgICAgICAgICAgZXZlbnQgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YSAmJlxyXG4gICAgICAgICAgICBldmVudC5ldmVudFR5cGUgPT09IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLmV2ZW50U3ViVHlwZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuRmVlZGJhY2ssXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBjb25zdCBwYWdlID0gdGhpcy5nZXRQYWdlRGV0YWlscygpXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICR0LmZlZWRiYWNrKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcmF0aW5nOiBldmVudC5kYXRhLm9iamVjdC5yYXRpbmcgfHwgMCxcclxuICAgICAgICAgICAgICBjb21tZW50aWQ6IGV2ZW50LmRhdGEub2JqZWN0LmNvbW1lbnRpZCB8fCAnJyxcclxuICAgICAgICAgICAgICBjb21tZW50dHh0OiBldmVudC5kYXRhLm9iamVjdC5jb21tZW50dHh0IHx8ICcnLFxyXG4gICAgICAgICAgICAgIHBhZ2VpZDogcGFnZS5wYWdlaWQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgICAgICBpZDogdGhpcy5wRGF0YS5pZCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBvYmplY3Q6IHtcclxuICAgICAgICAgICAgICAgIGlkOiBldmVudC5kYXRhLm9iamVjdC5jb250ZW50SWQgfHwgZXZlbnQuZGF0YS5vYmplY3QuaWQgfHwgJycsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBldmVudC5kYXRhLnR5cGUgfHwgJycsXHJcbiAgICAgICAgICAgICAgICB2ZXI6IGAkeyhldmVudC5kYXRhLm9iamVjdC52ZXJzaW9uIHx8ICcxJyl9JHsnJ31gLFxyXG4gICAgICAgICAgICAgICAgcm9sbHVwOiB7fSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBpbnRlcmFjdCcsIGUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgYWRkQ3VzdG9tSW1wcmVzc2lvbkxpc3RlbmVyKCkge1xyXG4gICAgdGhpcy5ldmVudHNTdmMuZXZlbnRzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoXHJcbiAgICAgICAgICAoZXZlbnQ6IFdzRXZlbnRzLldzRXZlbnRUZWxlbWV0cnlJbXByZXNzaW9uKSA9PlxyXG4gICAgICAgICAgICBldmVudCAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmV2ZW50VHlwZSA9PT0gV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEuZXZlbnRTdWJUeXBlID09PSBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5JbXByZXNzaW9uLFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdldmVudC5kYXRhOjonLCBldmVudC5kYXRhKVxyXG4gICAgICAgICAgdGhpcy5pbXByZXNzaW9uKGV2ZW50LmRhdGEuY29udGV4dClcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgaW1wcmVzc2lvbicsIGUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgYWRkSGVhcmJlYXRMaXN0ZW5lcigpIHtcclxuICAgIHRoaXMuZXZlbnRzU3ZjLmV2ZW50cyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgKGV2ZW50OiBXc0V2ZW50cy5Xc0V2ZW50VGVsZW1ldHJ5SGVhcnRCZWF0KSA9PlxyXG4gICAgICAgICAgICBldmVudCAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmV2ZW50VHlwZSA9PT0gV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEuZXZlbnRTdWJUeXBlID09PSBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5IZWFydEJlYXQsXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIGV2ZW50LmZyb20gPT09ICdzdHJpbmcnICYmIHRoaXMuZXh0ZXJuYWxBcHBzW2V2ZW50LmZyb21dKSB7XHJcbiAgICAgICAgICBjb25zdCBleHRlcm5hbENvbmZpZyA9IHtcclxuICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuZXh0ZXJuYWxBcHBzW2V2ZW50LmZyb21dLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAkdC5oZWFydGJlYXQoZXZlbnQuZGF0YSwgZXh0ZXJuYWxDb25maWcpXHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IGhlYXJ0YmVhdCcsIGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICR0LmhlYXJ0YmVhdChcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBldmVudC5kYXRhLnR5cGUsXHJcbiAgICAgICAgICAgICAgICAvLyBzdWJ0eXBlOiBldmVudC5kYXRhLmV2ZW50U3ViVHlwZSxcclxuICAgICAgICAgICAgICAgIGlkOiBldmVudC5kYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgLy8gbWltZVR5cGU6IGV2ZW50LmRhdGEubWltZVR5cGUsXHJcbiAgICAgICAgICAgICAgICAvLyBtb2RlOiBldmVudC5kYXRhLm1vZGUsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICAgICAgICBpZDogdGhpcy5wRGF0YS5pZCxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgaGVhcnRiZWF0JywgZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBhZGRTZWFyY2hMaXN0ZW5lcigpIHtcclxuICAgIHRoaXMuZXZlbnRzU3ZjLmV2ZW50cyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgKGV2ZW50OiBXc0V2ZW50cy5Xc0V2ZW50VGVsZW1ldHJ5U2VhcmNoKSA9PlxyXG4gICAgICAgICAgICBldmVudCAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmV2ZW50VHlwZSA9PT0gV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEuZXZlbnRTdWJUeXBlID09PSBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5TZWFyY2gsXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgJHQuc2VhcmNoKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcXVlcnk6IGV2ZW50LmRhdGEucXVlcnksXHJcbiAgICAgICAgICAgICAgZmlsdGVyczogZXZlbnQuZGF0YS5maWx0ZXJzLFxyXG4gICAgICAgICAgICAgIHNpemU6IGV2ZW50LmRhdGEuc2l6ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLnBEYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBzZWFyY2gnLCBlKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldFBhZ2VEZXRhaWxzKCkge1xyXG4gICAgY29uc3QgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKCcvJywgJycpXHJcbiAgICBjb25zdCB1cmwgPSBwYXRoICsgd2luZG93LmxvY2F0aW9uLnNlYXJjaFxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcGFnZWlkOiBwYXRoLFxyXG4gICAgICBwYWdlVXJsOiB1cmwsXHJcbiAgICAgIHBhZ2VVcmxQYXJ0czogcGF0aC5zcGxpdCgnLycpLFxyXG4gICAgICByZWZmZXJVcmw6IHRoaXMucHJldmlvdXNVcmwsXHJcbiAgICAgIG9iamVjdElkOiB0aGlzLmV4dHJhY3RDb250ZW50SWRGcm9tVXJsUGFydHMocGF0aC5zcGxpdCgnLycpKSxcclxuICAgICAgbW9kdWxlOiAnJyxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4dHJhY3RDb250ZW50SWRGcm9tVXJsUGFydHModXJsUGFydHM6IHN0cmluZ1tdKSB7XHJcbiAgICAvLyBUT0RPOiBwaWNrIHRvYyBhbmQgdmlld2VyIHVybCBmcm9tIHNvbWUgY29uZmlndXJhdGlvblxyXG4gICAgY29uc3QgdG9jSWR4ID0gdXJsUGFydHMuaW5kZXhPZigndG9jJylcclxuICAgIGNvbnN0IHZpZXdlcklkeCA9IHVybFBhcnRzLmluZGV4T2YoJ3ZpZXdlcicpXHJcblxyXG4gICAgaWYgKHRvY0lkeCA9PT0gLTEgJiYgdmlld2VySWR4ID09PSAtMSkge1xyXG4gICAgICByZXR1cm4gbnVsbFxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0b2NJZHggIT09IC0xICYmIHRvY0lkeCA8IHVybFBhcnRzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgcmV0dXJuIHVybFBhcnRzW3RvY0lkeCArIDFdIC8vIGUuZy4gdXJsIC9hcHAvdG9jLzxjb250ZW50X2lkPlxyXG4gICAgfVxyXG5cclxuICAgIGlmICh2aWV3ZXJJZHggIT09IC0xICYmIHZpZXdlcklkeCA8IHVybFBhcnRzLmxlbmd0aCAtIDIpIHtcclxuICAgICAgcmV0dXJuIHVybFBhcnRzW3ZpZXdlcklkeCArIDJdIC8vIGUuZy4gdXJsIC9hcHAvdmlld2VyLzxjb250ZW50X3R5cGU+Lzxjb250ZW50X2lkPlxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { Platform } from '@angular/cdk/platform';
|
|
2
2
|
import { HttpClient } from '@angular/common/http';
|
|
3
3
|
import { Injectable } from '@angular/core';
|
|
4
|
+
import { Router, NavigationEnd, ActivatedRoute } from '@angular/router';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@angular/common/http";
|
|
6
7
|
import * as i2 from "@angular/cdk/platform";
|
|
8
|
+
import * as i3 from "@angular/router";
|
|
7
9
|
function IWindowMobileAppModified() { }
|
|
8
10
|
if (false) {
|
|
9
11
|
IWindowMobileAppModified.prototype.appRef;
|
|
@@ -16,10 +18,31 @@ if (false) {
|
|
|
16
18
|
IRecursiveData.prototype.children;
|
|
17
19
|
}
|
|
18
20
|
var UtilityService = (function () {
|
|
19
|
-
function UtilityService(http, platform) {
|
|
21
|
+
function UtilityService(http, platform, router, route) {
|
|
22
|
+
var _this = this;
|
|
20
23
|
this.http = http;
|
|
21
24
|
this.platform = platform;
|
|
25
|
+
this.router = router;
|
|
26
|
+
this.route = route;
|
|
27
|
+
this.currentRouteData = [];
|
|
28
|
+
this.router.events.subscribe((function (event) {
|
|
29
|
+
if (event instanceof NavigationEnd) {
|
|
30
|
+
var snapshot = _this.route.snapshot;
|
|
31
|
+
var firstChild = snapshot.root.firstChild;
|
|
32
|
+
_this.getChildRouteData(snapshot, firstChild);
|
|
33
|
+
}
|
|
34
|
+
}));
|
|
22
35
|
}
|
|
36
|
+
UtilityService.prototype.getChildRouteData = function (snapshot, firstChild) {
|
|
37
|
+
if (firstChild) {
|
|
38
|
+
if (firstChild.data) {
|
|
39
|
+
this.currentRouteData.push(firstChild.data);
|
|
40
|
+
}
|
|
41
|
+
if (firstChild.firstChild) {
|
|
42
|
+
this.getChildRouteData(snapshot, firstChild.firstChild);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
23
46
|
Object.defineProperty(UtilityService.prototype, "randomId", {
|
|
24
47
|
get: function () {
|
|
25
48
|
return RANDOM_ID_PER_USER + 1;
|
|
@@ -108,6 +131,28 @@ var UtilityService = (function () {
|
|
|
108
131
|
enumerable: true,
|
|
109
132
|
configurable: true
|
|
110
133
|
});
|
|
134
|
+
UtilityService.prototype.setRouteData = function (data) {
|
|
135
|
+
this.currentRouteData = data;
|
|
136
|
+
};
|
|
137
|
+
Object.defineProperty(UtilityService.prototype, "routeData", {
|
|
138
|
+
get: function () {
|
|
139
|
+
var data = {
|
|
140
|
+
module: '',
|
|
141
|
+
pageId: '',
|
|
142
|
+
};
|
|
143
|
+
this.currentRouteData.map((function (rd) {
|
|
144
|
+
if (rd.pageId) {
|
|
145
|
+
data.pageId = data.pageId + "/" + rd.pageId;
|
|
146
|
+
}
|
|
147
|
+
if (rd.module) {
|
|
148
|
+
data.module = rd.module;
|
|
149
|
+
}
|
|
150
|
+
}));
|
|
151
|
+
return data;
|
|
152
|
+
},
|
|
153
|
+
enumerable: true,
|
|
154
|
+
configurable: true
|
|
155
|
+
});
|
|
111
156
|
UtilityService.decorators = [
|
|
112
157
|
{ type: Injectable, args: [{
|
|
113
158
|
providedIn: 'root',
|
|
@@ -115,14 +160,19 @@ var UtilityService = (function () {
|
|
|
115
160
|
];
|
|
116
161
|
UtilityService.ctorParameters = function () { return [
|
|
117
162
|
{ type: HttpClient },
|
|
118
|
-
{ type: Platform }
|
|
163
|
+
{ type: Platform },
|
|
164
|
+
{ type: Router },
|
|
165
|
+
{ type: ActivatedRoute }
|
|
119
166
|
]; };
|
|
120
|
-
/** @nocollapse */ UtilityService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function UtilityService_Factory() { return new UtilityService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.Platform)); }, token: UtilityService, providedIn: "root" });
|
|
167
|
+
/** @nocollapse */ UtilityService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function UtilityService_Factory() { return new UtilityService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.Platform), i0.ɵɵinject(i3.Router), i0.ɵɵinject(i3.ActivatedRoute)); }, token: UtilityService, providedIn: "root" });
|
|
121
168
|
return UtilityService;
|
|
122
169
|
}());
|
|
123
170
|
export { UtilityService };
|
|
124
171
|
if (false) {
|
|
172
|
+
UtilityService.prototype.currentRouteData;
|
|
125
173
|
UtilityService.prototype.http;
|
|
126
174
|
UtilityService.prototype.platform;
|
|
175
|
+
UtilityService.prototype.router;
|
|
176
|
+
UtilityService.prototype.route;
|
|
127
177
|
}
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHN1bmJpcmQtY2IvdXRpbHMvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTs7OztBQUUxQyx1Q0FHQzs7SUFGQywwQ0FBWTtJQUNaLDBDQUFZOztJQUlSLGtCQUFrQixHQUFHLENBQUM7QUFDNUIsNkJBR0M7O0lBRkMsb0NBQWtCO0lBQ2xCLGtDQUFpQzs7QUFHbkM7SUFJRSx3QkFDVSxJQUFnQixFQUNoQixRQUFrQjtRQURsQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDeEIsQ0FBQztJQUVMLHNCQUFJLG9DQUFRO2FBQVo7WUFDRSxPQUFPLGtCQUFrQixHQUFHLENBQUMsQ0FBQTtRQUMvQixDQUFDOzs7T0FBQTtJQUVELGdDQUFPLEdBQVAsVUFBVyxHQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUksR0FBRyxDQUFDLENBQUE7SUFDOUIsQ0FBQztJQUVELHFDQUFZLEdBQVosVUFBdUMsSUFBTyxFQUFFLEtBQVU7UUFBMUQsaUJBV0M7UUFWQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FDakI7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUMsVUFBQSxLQUFLO29CQUN6QixLQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQTtnQkFDakMsQ0FBQyxFQUFDLENBQUE7YUFDSDtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBQ0QsZ0NBQU8sR0FBUCxVQUFrQyxJQUFPLEVBQUUsRUFBVTtZQUM3QyxJQUFJLEdBQVEsRUFBRTtRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDNUIsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRU8sZ0NBQU8sR0FBZixVQUEwQyxJQUFPLEVBQUUsT0FBWSxFQUFFLEVBQVU7UUFBM0UsaUJBY0M7UUFiQyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDaEIsT0FBTyxLQUFLLENBQUE7U0FDYjtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbEIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEVBQUUsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQTtTQUNaO1lBQ0ssUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRTtRQUNwQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQTVCLENBQTRCLEVBQUMsRUFBRTtZQUNwRCxPQUFPLElBQUksQ0FBQTtTQUNaO1FBQ0QsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQ2IsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQsc0JBQUksb0NBQVE7YUFBWjtZQUNFLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNoQyxPQUFPLElBQUksQ0FBQTthQUNaO1lBQ0QsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLGlDQUFLO2FBQVQ7WUFDRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFBO1FBQzFCLENBQUM7OztPQUFBO0lBRUQsc0JBQUkscUNBQVM7YUFBYjtZQUNFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUE7UUFDOUIsQ0FBQzs7O09BQUE7SUFDRCxzQkFBSSx3Q0FBWTthQUFoQjtZQUNFLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMvQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHFDQUFTO2FBQWI7WUFDRSxJQUNFLE1BQU0sQ0FBQyxNQUFNO2dCQUNiLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZTtnQkFDN0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUNwQztnQkFDQSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQTthQUM1QztZQUNELE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQzs7O09BQUE7O2dCQTlFRixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7Z0JBakJRLFVBQVU7Z0JBRFYsUUFBUTs7O3lCQUFqQjtDQStGQyxBQS9FRCxJQStFQztTQTVFWSxjQUFjOztJQUV2Qiw4QkFBd0I7SUFDeEIsa0NBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nXHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xyXG5pbnRlcmZhY2UgSVdpbmRvd01vYmlsZUFwcE1vZGlmaWVkIGV4dGVuZHMgV2luZG93IHtcclxuICBhcHBSZWY/OiBhbnlcclxuICB3ZWJraXQ/OiBhbnlcclxufVxyXG5kZWNsYXJlIHZhciB3aW5kb3c6IElXaW5kb3dNb2JpbGVBcHBNb2RpZmllZFxyXG5cclxuY29uc3QgUkFORE9NX0lEX1BFUl9VU0VSID0gMFxyXG5pbnRlcmZhY2UgSVJlY3Vyc2l2ZURhdGEge1xyXG4gIGlkZW50aWZpZXI6IHN0cmluZ1xyXG4gIGNoaWxkcmVuOiBudWxsIHwgSVJlY3Vyc2l2ZURhdGFbXVxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXRpbGl0eVNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sXHJcbiAgKSB7IH1cclxuXHJcbiAgZ2V0IHJhbmRvbUlkKCkge1xyXG4gICAgcmV0dXJuIFJBTkRPTV9JRF9QRVJfVVNFUiArIDFcclxuICB9XHJcblxyXG4gIGdldEpzb248VD4odXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFQ+KHVybClcclxuICB9XHJcblxyXG4gIGdldExlYWZOb2RlczxUIGV4dGVuZHMgSVJlY3Vyc2l2ZURhdGE+KG5vZGU6IFQsIG5vZGVzOiBUW10pOiBUW10ge1xyXG4gICAgaWYgKChub2RlLmNoaWxkcmVuIHx8IFtdKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgbm9kZXMucHVzaChub2RlKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXRMZWFmTm9kZXMoY2hpbGQsIG5vZGVzKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBub2Rlc1xyXG4gIH1cclxuICBnZXRQYXRoPFQgZXh0ZW5kcyBJUmVjdXJzaXZlRGF0YT4obm9kZTogVCwgaWQ6IHN0cmluZyk6IFRbXSB7XHJcbiAgICBjb25zdCBwYXRoOiBUW10gPSBbXVxyXG4gICAgdGhpcy5oYXNQYXRoKG5vZGUsIHBhdGgsIGlkKVxyXG4gICAgcmV0dXJuIHBhdGhcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzUGF0aDxUIGV4dGVuZHMgSVJlY3Vyc2l2ZURhdGE+KG5vZGU6IFQsIHBhdGhBcnI6IFRbXSwgaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKG5vZGUgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuICAgIHBhdGhBcnIucHVzaChub2RlKVxyXG4gICAgaWYgKG5vZGUuaWRlbnRpZmllciA9PT0gaWQpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIGNvbnN0IGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbiB8fCBbXVxyXG4gICAgaWYgKGNoaWxkcmVuLnNvbWUodSA9PiB0aGlzLmhhc1BhdGgodSwgcGF0aEFyciwgaWQpKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcGF0aEFyci5wb3AoKVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG5cclxuICBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5pc0lvcyB8fCB0aGlzLmlzQW5kcm9pZCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG5cclxuICBnZXQgaXNJb3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybS5JT1NcclxuICB9XHJcblxyXG4gIGdldCBpc0FuZHJvaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybS5BTkRST0lEXHJcbiAgfVxyXG4gIGdldCBpc0FuZHJvaWRBcHAoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gQm9vbGVhbih3aW5kb3cuYXBwUmVmKVxyXG4gIH1cclxuXHJcbiAgZ2V0IGlPc0FwcFJlZigpIHtcclxuICAgIGlmIChcclxuICAgICAgd2luZG93LndlYmtpdCAmJlxyXG4gICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycyAmJlxyXG4gICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5hcHBSZWZcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuYXBwUmVmXHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxufVxyXG4iXX0=
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHN1bmJpcmQtY2IvdXRpbHMvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQTBCLE1BQU0saUJBQWlCLENBQUE7Ozs7O0FBRS9GLHVDQUdDOztJQUZDLDBDQUFZO0lBQ1osMENBQVk7O0lBSVIsa0JBQWtCLEdBQUcsQ0FBQztBQUM1Qiw2QkFHQzs7SUFGQyxvQ0FBa0I7SUFDbEIsa0NBQWlDOztBQUduQztJQUtFLHdCQUNVLElBQWdCLEVBQ2hCLFFBQWtCLEVBQ2xCLE1BQWMsRUFDZCxLQUFxQjtRQUovQixpQkFrQkM7UUFqQlMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUwvQixxQkFBZ0IsR0FBVSxFQUFFLENBQUE7UUFRMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFDLFVBQUMsS0FBVTtZQUN0QyxJQUFJLEtBQUssWUFBWSxhQUFhLEVBQUU7b0JBRzVCLFFBQVEsR0FBRyxLQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7b0JBRzlCLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVU7Z0JBQzNDLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUE7YUFDN0M7UUFDSCxDQUFDLEVBQUMsQ0FBQTtJQUNKLENB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dCI6WyJpbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSdcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvbkVuZCwgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXHJcbmltcG9ydCB7IFdzRXZlbnRzIH0gZnJvbSAnLi9ldmVudC5tb2RlbCdcclxuaW50ZXJmYWNlIElXaW5kb3dNb2JpbGVBcHBNb2RpZmllZCBleHRlbmRzIFdpbmRvdyB7XHJcbiAgYXBwUmVmPzogYW55XHJcbiAgd2Via2l0PzogYW55XHJcbn1cclxuZGVjbGFyZSB2YXIgd2luZG93OiBJV2luZG93TW9iaWxlQXBwTW9kaWZpZWRcclxuXHJcbmNvbnN0IFJBTkRPTV9JRF9QRVJfVVNFUiA9IDBcclxuaW50ZXJmYWNlIElSZWN1cnNpdmVEYXRhIHtcclxuICBpZGVudGlmaWVyOiBzdHJpbmdcclxuICBjaGlsZHJlbjogbnVsbCB8IElSZWN1cnNpdmVEYXRhW11cclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFV0aWxpdHlTZXJ2aWNlIHtcclxuICBjdXJyZW50Um91dGVEYXRhOiBhbnlbXSA9IFtdXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIC8vIHByaXZhdGUgZXZlbnRzOiBFdmVudFNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICAvLyBsZXQgc25hcHNob3QgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5maXJzdENoaWxkKHRoaXMuYWN0aXZhdGVkUm91dGUpLnNuYXBzaG90XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3RoaXMucm91dGUuc25hcHNob3QgOjogJywgdGhpcy5yb3V0ZS5zbmFwc2hvdClcclxuICAgICAgICBjb25zdCBzbmFwc2hvdCA9IHRoaXMucm91dGUuc25hcHNob3RcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygncm9vdC5zbmFwc2hvdC5yb290LmZpcnN0Q2hpbGQgJywgc25hcHNob3Qucm9vdC5maXJzdENoaWxkKVxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdmaXJzdENoaWxkICcsIHNuYXBzaG90LmZpcnN0Q2hpbGQpXHJcbiAgICAgICAgY29uc3QgZmlyc3RDaGlsZCA9IHNuYXBzaG90LnJvb3QuZmlyc3RDaGlsZFxyXG4gICAgICAgIHRoaXMuZ2V0Q2hpbGRSb3V0ZURhdGEoc25hcHNob3QsIGZpcnN0Q2hpbGQpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENoaWxkUm91dGVEYXRhKHNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBmaXJzdENoaWxkOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCkge1xyXG4gICAgaWYgKGZpcnN0Q2hpbGQpIHtcclxuICAgICAgaWYgKGZpcnN0Q2hpbGQuZGF0YSkge1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdmaXJzdENoaWxkLmRhdGEnLCBmaXJzdENoaWxkLmRhdGEpXHJcbiAgICAgICAgdGhpcy5jdXJyZW50Um91dGVEYXRhLnB1c2goZmlyc3RDaGlsZC5kYXRhKVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChmaXJzdENoaWxkLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICB0aGlzLmdldENoaWxkUm91dGVEYXRhKHNuYXBzaG90LCBmaXJzdENoaWxkLmZpcnN0Q2hpbGQpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCByYW5kb21JZCgpIHtcclxuICAgIHJldHVybiBSQU5ET01fSURfUEVSX1VTRVIgKyAxXHJcbiAgfVxyXG5cclxuICBnZXRKc29uPFQ+KHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPih1cmwpXHJcbiAgfVxyXG5cclxuICBnZXRMZWFmTm9kZXM8VCBleHRlbmRzIElSZWN1cnNpdmVEYXRhPihub2RlOiBULCBub2RlczogVFtdKTogVFtdIHtcclxuICAgIGlmICgobm9kZS5jaGlsZHJlbiB8fCBbXSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIG5vZGVzLnB1c2gobm9kZSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcclxuICAgICAgICAgIHRoaXMuZ2V0TGVhZk5vZGVzKGNoaWxkLCBub2RlcylcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9kZXNcclxuICB9XHJcbiAgZ2V0UGF0aDxUIGV4dGVuZHMgSVJlY3Vyc2l2ZURhdGE+KG5vZGU6IFQsIGlkOiBzdHJpbmcpOiBUW10ge1xyXG4gICAgY29uc3QgcGF0aDogVFtdID0gW11cclxuICAgIHRoaXMuaGFzUGF0aChub2RlLCBwYXRoLCBpZClcclxuICAgIHJldHVybiBwYXRoXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1BhdGg8VCBleHRlbmRzIElSZWN1cnNpdmVEYXRhPihub2RlOiBULCBwYXRoQXJyOiBUW10sIGlkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmIChub2RlID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgICBwYXRoQXJyLnB1c2gobm9kZSlcclxuICAgIGlmIChub2RlLmlkZW50aWZpZXIgPT09IGlkKSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgICBjb25zdCBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4gfHwgW11cclxuICAgIGlmIChjaGlsZHJlbi5zb21lKHUgPT4gdGhpcy5oYXNQYXRoKHUsIHBhdGhBcnIsIGlkKSkpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHBhdGhBcnIucG9wKClcclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuaXNJb3MgfHwgdGhpcy5pc0FuZHJvaWQpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgZ2V0IGlzSW9zKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGxhdGZvcm0uSU9TXHJcbiAgfVxyXG5cclxuICBnZXQgaXNBbmRyb2lkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGxhdGZvcm0uQU5EUk9JRFxyXG4gIH1cclxuICBnZXQgaXNBbmRyb2lkQXBwKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEJvb2xlYW4od2luZG93LmFwcFJlZilcclxuICB9XHJcblxyXG4gIGdldCBpT3NBcHBSZWYoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHdpbmRvdy53ZWJraXQgJiZcclxuICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMgJiZcclxuICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuYXBwUmVmXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmFwcFJlZlxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGxcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRSb3V0ZURhdGEoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRSb3V0ZURhdGEgPSBkYXRhXHJcbiAgfVxyXG5cclxuICBnZXQgcm91dGVEYXRhKCk6IFdzRXZlbnRzLklUZWxlbWV0cnlDb250ZXh0IHtcclxuICAgIGNvbnN0IGRhdGE6IFdzRXZlbnRzLklUZWxlbWV0cnlDb250ZXh0ID0ge1xyXG4gICAgICBtb2R1bGU6ICcnLFxyXG4gICAgICBwYWdlSWQ6ICcnLFxyXG4gICAgfVxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAvLyBjb25zb2xlLmxvZygnRmluYWwgY3VycmVudERhdGFSb3V0ZSBnZXQgcm91dGVEYXRhKCknLCB0aGlzLmN1cnJlbnRSb3V0ZURhdGEpXHJcbiAgICB0aGlzLmN1cnJlbnRSb3V0ZURhdGEubWFwKChyZDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZC5wYWdlSWQpIHtcclxuICAgICAgICBkYXRhLnBhZ2VJZCA9IGAke2RhdGEucGFnZUlkfS8ke3JkLnBhZ2VJZH1gXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJkLm1vZHVsZSkge1xyXG4gICAgICAgIGRhdGEubW9kdWxlID0gcmQubW9kdWxlXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gZGF0YVxyXG4gIH1cclxufVxyXG4iXX0=
|