kwikid-agent-dashboard 0.0.39 → 0.0.41
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/kwikid-agent-dashboard.umd.js +224 -187
- package/bundles/kwikid-agent-dashboard.umd.js.map +1 -1
- package/esm2015/lib/kwikid-agent-dashboard.component.js +2 -2
- package/esm2015/lib/v1/components/customer-details/customer-details.component.js +30 -28
- package/esm2015/lib/v1/components/customer-list/customer-list.component.js +16 -15
- package/esm2015/lib/v1/components/customer-tile/customer-tile.component.js +26 -24
- package/esm2015/lib/v1/components/customer-tile/status-pill/status-pill.component.js +31 -26
- package/esm2015/lib/v1/components/customer-tile/status-pill/status-pill.constants.js +33 -0
- package/esm2015/lib/v1/kwikid-agent-dashboard.component.js +13 -10
- package/esm2015/lib/v1/services/agent.service.js +3 -11
- package/esm2015/lib/v1/services/google-maps.service.js +20 -14
- package/esm2015/lib/v1/services/open-street-maps.service.js +5 -5
- package/esm2015/lib/v2/kwikid-agent-dashboard.component.js +2 -11
- package/fesm2015/kwikid-agent-dashboard.js +166 -134
- package/fesm2015/kwikid-agent-dashboard.js.map +1 -1
- package/lib/v1/components/customer-details/customer-details.component.d.ts +1 -0
- package/lib/v1/components/customer-tile/customer-tile.component.d.ts +1 -0
- package/lib/v1/components/customer-tile/status-pill/status-pill.component.d.ts +8 -9
- package/lib/v1/components/customer-tile/status-pill/status-pill.constants.d.ts +32 -0
- package/lib/v1/kwikid-agent-dashboard.component.d.ts +3 -2
- package/lib/v1/services/agent.service.d.ts +0 -1
- package/lib/v1/services/google-maps.service.d.ts +1 -1
- package/package.json +3 -3
|
@@ -49,7 +49,7 @@ export class KwikIDAgentDashboardComponent {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
/** @nocollapse */ KwikIDAgentDashboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDAgentDashboardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
-
/** @nocollapse */ KwikIDAgentDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDAgentDashboardComponent, selector: "kwikid-agent-dashboard", inputs: { agentInfo: "agentInfo", config: "config", userConfig: "userConfig", taskList: "taskList" }, outputs: { nextStep: "nextStep", addTask: "addTask", removeTask: "removeTask", filterTaskList: "filterTaskList", onGetTaskList: "onGetTaskList", onClickPerformAction: "onClickPerformAction" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"config?.version === 2\">\n <kwikid-agent-dashboard-v2\n [agentInfo]=\"agentInfo\"\n [config]=\"config\"\n [taskList]=\"taskList\"\n [userConfig]=\"userConfig\"\n (onGetTaskList)=\"handleOnGetTaskList($event)\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></kwikid-agent-dashboard-v2>\n</div>\n\n<div *ngIf=\"config?.version !== 2\">\n <kwikid-agent-dashboard-v1\n [config]=\"config\"\n [taskList]=\"taskList\"\n (nextStep)=\"handleOnClickNext($event)\"\n (addTask)=\"handleOnClickAddTask($event)\"\n (removeTask)=\"handleOnClickRemoveTask($event)\"\n (filterTaskList)=\"handleOnFilterTaskList($event)\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></kwikid-agent-dashboard-v1>\n</div>\n", styles: ["div{height:100%}\n"], components: [{ type: i1.KwikIDAgentDashboardComponentV2, selector: "kwikid-agent-dashboard-v2", inputs: ["config", "userConfig", "agentInfo", "taskList"], outputs: ["onGetTaskList", "onClickPerformAction"] }, { type: i2.KwikIDAgentDashboardComponentV1, selector: "kwikid-agent-dashboard-v1", inputs: ["config", "taskList"], outputs: ["nextStep", "addTask", "removeTask", "filterTaskList", "onClickPerformAction"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
52
|
+
/** @nocollapse */ KwikIDAgentDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDAgentDashboardComponent, selector: "kwikid-agent-dashboard", inputs: { agentInfo: "agentInfo", config: "config", userConfig: "userConfig", taskList: "taskList" }, outputs: { nextStep: "nextStep", addTask: "addTask", removeTask: "removeTask", filterTaskList: "filterTaskList", onGetTaskList: "onGetTaskList", onClickPerformAction: "onClickPerformAction" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"config?.version === 2\">\n <kwikid-agent-dashboard-v2\n [agentInfo]=\"agentInfo\"\n [config]=\"config\"\n [taskList]=\"taskList\"\n [userConfig]=\"userConfig\"\n (onGetTaskList)=\"handleOnGetTaskList($event)\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></kwikid-agent-dashboard-v2>\n</div>\n\n<div *ngIf=\"config?.version !== 2\">\n <kwikid-agent-dashboard-v1\n [agentInfo]=\"agentInfo\"\n [config]=\"config\"\n [taskList]=\"taskList\"\n [userConfig]=\"userConfig\"\n (nextStep)=\"handleOnClickNext($event)\"\n (addTask)=\"handleOnClickAddTask($event)\"\n (removeTask)=\"handleOnClickRemoveTask($event)\"\n (filterTaskList)=\"handleOnFilterTaskList($event)\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></kwikid-agent-dashboard-v1>\n</div>\n", styles: ["div{height:100%}\n"], components: [{ type: i1.KwikIDAgentDashboardComponentV2, selector: "kwikid-agent-dashboard-v2", inputs: ["config", "userConfig", "agentInfo", "taskList"], outputs: ["onGetTaskList", "onClickPerformAction"] }, { type: i2.KwikIDAgentDashboardComponentV1, selector: "kwikid-agent-dashboard-v1", inputs: ["agentInfo", "config", "userConfig", "taskList"], outputs: ["nextStep", "addTask", "removeTask", "filterTaskList", "onClickPerformAction"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
53
53
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDAgentDashboardComponent, decorators: [{
|
|
54
54
|
type: Component,
|
|
55
55
|
args: [{
|
|
@@ -78,4 +78,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
78
78
|
}], onClickPerformAction: [{
|
|
79
79
|
type: Output
|
|
80
80
|
}] } });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIva3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIva3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQ0FBc0M7QUFDdEMsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFPdkIsTUFBTSxPQUFPLDZCQUE2QjtJQStCeEMsd0ZBQXdGO0lBQ3hGO1FBOUJBLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFHcEIsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUdqQixlQUFVLEdBQVEsRUFBRSxDQUFDO1FBR3JCLGFBQVEsR0FBZSxFQUFFLENBQUM7UUFHMUIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHOUIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHN0IsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHaEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3BDLGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHdEQseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFHOUMsQ0FBQztJQUVoQix3RkFBd0Y7SUFDeEYsUUFBUSxLQUFJLENBQUM7SUFFYixXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUNuQyxpREFBaUQ7WUFDakQsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNsRSxDQUFDLENBQUM7UUFFRixJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1NBQy9DO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQUk7UUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELHVCQUF1QixDQUFDLElBQUk7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELHNCQUFzQixDQUFDLE1BQU07UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQUs7UUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELDBCQUEwQixDQUFDLEtBQUs7UUFDOUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs4SUF0RVUsNkJBQTZCO2tJQUE3Qiw2QkFBNkIsMFhDZjFDLG8xQkF3QkE7NEZEVGEsNkJBQTZCO2tCQUx6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFdBQVcsRUFBRSx5Q0FBeUM7b0JBQ3RELFNBQVMsRUFBRSxDQUFDLHlDQUF5QyxDQUFDO2lCQUN2RDswRUFHQyxTQUFTO3NCQURSLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxNQUFNO2dCQUlQLE9BQU87c0JBRE4sTUFBTTtnQkFJUCxVQUFVO3NCQURULE1BQU07Z0JBSVAsY0FBYztzQkFEYixNQUFNO2dCQUlQLGFBQWE7c0JBRFosTUFBTTtnQkFJUCxvQkFBb0I7c0JBRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1lbXB0eS1mdW5jdGlvbiAqL1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwia3dpa2lkLWFnZW50LWRhc2hib2FyZFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2t3aWtpZC1hZ2VudC1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2t3aWtpZC1hZ2VudC1kYXNoYm9hcmQuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lEQWdlbnREYXNoYm9hcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBhZ2VudEluZm86IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpZzogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgdXNlckNvbmZpZzogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgdGFza0xpc3Q6IEFycmF5PGFueT4gPSBbXTtcblxuICBAT3V0cHV0KClcbiAgbmV4dFN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIGFkZFRhc2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIHJlbW92ZVRhc2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIGZpbHRlclRhc2tMaXN0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkdldFRhc2tMaXN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgb25DbGlja1BlcmZvcm1BY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgbmdPbkluaXQoKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCB2ZXJpZnlDaGFuZ2UgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgIHJldHVybiBjaGFuZ2VzLmhhc093blByb3BlcnR5KGtleSkgJiYgIWNoYW5nZXNba2V5XS5maXJzdENoYW5nZTtcbiAgICB9O1xuXG4gICAgaWYgKHZlcmlmeUNoYW5nZShcInRhc2tMaXN0XCIpKSB7XG4gICAgICB0aGlzLnRhc2tMaXN0ID0gY2hhbmdlcy50YXNrTGlzdC5jdXJyZW50VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlT25DbGlja05leHQoZSkge1xuICAgIHRoaXMubmV4dFN0ZXAuZW1pdChlKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2tBZGRUYXNrKHRhc2spIHtcbiAgICB0aGlzLmFkZFRhc2suZW1pdCh0YXNrKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2tSZW1vdmVUYXNrKHRhc2spIHtcbiAgICB0aGlzLnJlbW92ZVRhc2suZW1pdCh0YXNrKTtcbiAgfVxuXG4gIGhhbmRsZU9uRmlsdGVyVGFza0xpc3QoZmlsdGVyKSB7XG4gICAgdGhpcy5vbkdldFRhc2tMaXN0LmVtaXQoZmlsdGVyKTtcbiAgfVxuXG4gIGhhbmRsZU9uR2V0VGFza0xpc3QoZXZlbnQpIHtcbiAgICB0aGlzLm9uR2V0VGFza0xpc3QuZW1pdChldmVudCk7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrUGVyZm9ybUFjdGlvbihldmVudCkge1xuICAgIHRoaXMub25DbGlja1BlcmZvcm1BY3Rpb24uZW1pdChldmVudCk7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJjb25maWc/LnZlcnNpb24gPT09IDJcIj5cbiAgPGt3aWtpZC1hZ2VudC1kYXNoYm9hcmQtdjJcbiAgICBbYWdlbnRJbmZvXT1cImFnZW50SW5mb1wiXG4gICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgIFt0YXNrTGlzdF09XCJ0YXNrTGlzdFwiXG4gICAgW3VzZXJDb25maWddPVwidXNlckNvbmZpZ1wiXG4gICAgKG9uR2V0VGFza0xpc3QpPVwiaGFuZGxlT25HZXRUYXNrTGlzdCgkZXZlbnQpXCJcbiAgICAob25DbGlja1BlcmZvcm1BY3Rpb24pPVwiaGFuZGxlT25DbGlja1BlcmZvcm1BY3Rpb24oJGV2ZW50KVwiXG4gID48L2t3aWtpZC1hZ2VudC1kYXNoYm9hcmQtdjI+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImNvbmZpZz8udmVyc2lvbiAhPT0gMlwiPlxuICA8a3dpa2lkLWFnZW50LWRhc2hib2FyZC12MVxuICAgIFthZ2VudEluZm9dPVwiYWdlbnRJbmZvXCJcbiAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgW3Rhc2tMaXN0XT1cInRhc2tMaXN0XCJcbiAgICBbdXNlckNvbmZpZ109XCJ1c2VyQ29uZmlnXCJcbiAgICAobmV4dFN0ZXApPVwiaGFuZGxlT25DbGlja05leHQoJGV2ZW50KVwiXG4gICAgKGFkZFRhc2spPVwiaGFuZGxlT25DbGlja0FkZFRhc2soJGV2ZW50KVwiXG4gICAgKHJlbW92ZVRhc2spPVwiaGFuZGxlT25DbGlja1JlbW92ZVRhc2soJGV2ZW50KVwiXG4gICAgKGZpbHRlclRhc2tMaXN0KT1cImhhbmRsZU9uRmlsdGVyVGFza0xpc3QoJGV2ZW50KVwiXG4gICAgKG9uQ2xpY2tQZXJmb3JtQWN0aW9uKT1cImhhbmRsZU9uQ2xpY2tQZXJmb3JtQWN0aW9uKCRldmVudClcIlxuICA+PC9rd2lraWQtYWdlbnQtZGFzaGJvYXJkLXYxPlxuPC9kaXY+XG4iXX0=
|
|
@@ -40,45 +40,47 @@ export class CustomerDetailsComponent {
|
|
|
40
40
|
this.parseData();
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
+
getValueFromArray(paths) {
|
|
44
|
+
let data = "";
|
|
45
|
+
// eslint-disable-next-line array-callback-return
|
|
46
|
+
paths.map((path) => {
|
|
47
|
+
const value = getObjectValueFromPath(this.customer, path);
|
|
48
|
+
data = `${data} ${value}`;
|
|
49
|
+
});
|
|
50
|
+
return data;
|
|
51
|
+
}
|
|
43
52
|
parseData() {
|
|
44
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k
|
|
45
|
-
const identifier = (
|
|
53
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
54
|
+
const identifier = (_a = this.config.taskUI.details.header.taskId.path) !== null && _a !== void 0 ? _a : "user_id";
|
|
46
55
|
this.taskId = getObjectValueFromPath(this.customer, identifier);
|
|
47
56
|
let detailsConfig = [];
|
|
48
|
-
if (checkObjectPathExists(this.config, "
|
|
49
|
-
isNotEmptyArray(this.config.
|
|
50
|
-
detailsConfig = this.config.dashboard.viewTaskDetails;
|
|
51
|
-
const data = [];
|
|
52
|
-
detailsConfig.map((field) => {
|
|
53
|
-
const value = getObjectValueFromPath(this.customer, field.value);
|
|
54
|
-
data.push({ label: field.label, value });
|
|
55
|
-
return true;
|
|
56
|
-
});
|
|
57
|
-
this.labelValuePairData = data;
|
|
58
|
-
}
|
|
59
|
-
else if (checkObjectPathExists(this.config, "dashboard.taskUI.details.data") &&
|
|
60
|
-
isNotEmptyArray(this.config.dashboard.taskUI.details.data)) {
|
|
61
|
-
detailsConfig = this.config.dashboard.taskUI.details.data;
|
|
57
|
+
if (checkObjectPathExists(this.config, "taskUI.details.data") &&
|
|
58
|
+
isNotEmptyArray(this.config.taskUI.details.data)) {
|
|
62
59
|
const data = [];
|
|
60
|
+
detailsConfig = this.config.taskUI.details.data;
|
|
63
61
|
detailsConfig.map((field) => {
|
|
64
|
-
|
|
62
|
+
let value;
|
|
63
|
+
if (Array.isArray(field.path)) {
|
|
64
|
+
value = this.getValueFromArray(field.path);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
value = getObjectValueFromPath(this.customer, field.path);
|
|
68
|
+
}
|
|
65
69
|
data.push({ label: field.label, value });
|
|
66
70
|
return true;
|
|
67
71
|
});
|
|
68
72
|
this.labelValuePairData = data;
|
|
69
73
|
}
|
|
70
|
-
this.labelValuePairConfig =
|
|
71
|
-
|
|
72
|
-
this.title =
|
|
73
|
-
(_p = (_o = (_m = (_l = (_k = (_j = this.config) === null || _j === void 0 ? void 0 : _j.dashboard) === null || _k === void 0 ? void 0 : _k.taskUI) === null || _l === void 0 ? void 0 : _l.details) === null || _m === void 0 ? void 0 : _m.header) === null || _o === void 0 ? void 0 : _o.title) !== null && _p !== void 0 ? _p : this.title;
|
|
74
|
+
this.labelValuePairConfig = (_e = (_d = (_c = (_b = this.config) === null || _b === void 0 ? void 0 : _b.taskUI) === null || _c === void 0 ? void 0 : _c.details) === null || _d === void 0 ? void 0 : _d.config) !== null && _e !== void 0 ? _e : {};
|
|
75
|
+
this.title = (_k = (_j = (_h = (_g = (_f = this.config) === null || _f === void 0 ? void 0 : _f.taskUI) === null || _g === void 0 ? void 0 : _g.details) === null || _h === void 0 ? void 0 : _h.header) === null || _j === void 0 ? void 0 : _j.title) !== null && _k !== void 0 ? _k : this.title;
|
|
74
76
|
}
|
|
75
77
|
getTaskCreationTime(task) {
|
|
76
|
-
var _a;
|
|
77
|
-
if (
|
|
78
|
-
const time = getObjectValueFromPath(task, this.
|
|
78
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
79
|
+
if ((_d = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.taskUI) === null || _b === void 0 ? void 0 : _b.details) === null || _c === void 0 ? void 0 : _c.time) === null || _d === void 0 ? void 0 : _d.path) {
|
|
80
|
+
const time = getObjectValueFromPath(task, (_h = (_g = (_f = (_e = this.config) === null || _e === void 0 ? void 0 : _e.taskUI) === null || _f === void 0 ? void 0 : _f.details) === null || _g === void 0 ? void 0 : _g.time) === null || _h === void 0 ? void 0 : _h.path);
|
|
79
81
|
return this.convertEpochToDate(time);
|
|
80
82
|
}
|
|
81
|
-
return this.convertEpochToDate((
|
|
83
|
+
return this.convertEpochToDate((_j = task === null || task === void 0 ? void 0 : task.task_creation_time) !== null && _j !== void 0 ? _j : task === null || task === void 0 ? void 0 : task.start_time);
|
|
82
84
|
}
|
|
83
85
|
convertEpochToDate(epochTime) {
|
|
84
86
|
if (typeof epochTime === "string")
|
|
@@ -101,7 +103,7 @@ export class CustomerDetailsComponent {
|
|
|
101
103
|
close() {
|
|
102
104
|
var _a, _b;
|
|
103
105
|
this.agentService.currentTaskDetails = undefined;
|
|
104
|
-
if (((_b = (_a = this.
|
|
106
|
+
if (((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.maps) === null || _b === void 0 ? void 0 : _b.mapType) === "google-maps") {
|
|
105
107
|
this.googleMapsService.plotDirectionsForSelectedTask(null);
|
|
106
108
|
}
|
|
107
109
|
else {
|
|
@@ -116,7 +118,7 @@ export class CustomerDetailsComponent {
|
|
|
116
118
|
}
|
|
117
119
|
}
|
|
118
120
|
/** @nocollapse */ CustomerDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomerDetailsComponent, deps: [{ token: i1.AgentService }, { token: i2.GoogleMapsService }, { token: i3.OpenStreetMapsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
119
|
-
/** @nocollapse */ CustomerDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomerDetailsComponent, selector: "customer-details", inputs: { customer: "customer", config: "config" }, outputs: { nextStep: "nextStep", removeTask: "removeTask", onClickPerformAction: "onClickPerformAction" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"customer-details-wrapper\">\n <div>\n <kwikui-button\n icon=\"tuiIconChevronLeft\"\n label=\"Back\"\n shape=\"rounded\"\n size=\"s\"\n (onClick)=\"close()\"\n ></kwikui-button>\n </div>\n <div class=\"customer-details-heading\">{{ title }}</div>\n <div class=\"customer-details-body\">\n <div class=\"customer-details-user-id\">\n {{ taskId }}\n\n <status-pill\n *ngIf=\"config?.
|
|
121
|
+
/** @nocollapse */ CustomerDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomerDetailsComponent, selector: "customer-details", inputs: { customer: "customer", config: "config" }, outputs: { nextStep: "nextStep", removeTask: "removeTask", onClickPerformAction: "onClickPerformAction" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"customer-details-wrapper\">\n <div>\n <kwikui-button\n icon=\"tuiIconChevronLeft\"\n label=\"Back\"\n shape=\"rounded\"\n size=\"s\"\n (onClick)=\"close()\"\n ></kwikui-button>\n </div>\n <div class=\"customer-details-heading\">{{ title }}</div>\n <div class=\"customer-details-body\">\n <div class=\"customer-details-user-id\">\n {{ taskId }}\n\n <status-pill\n *ngIf=\"config?.utilityFlags?.isShowTaskStatus\"\n [config]=\"config?.taskUI?.details?.header?.taskStatus\"\n [status]=\"\n customer[\n config?.taskUI?.details?.header?.taskStatus?.path ??\n 'session_status'\n ]\n \"\n ></status-pill>\n </div>\n\n <div class=\"customer-details-table\">\n <kwikui-label-value-pair\n [config]=\"labelValuePairConfig\"\n [data]=\"labelValuePairData\"\n ></kwikui-label-value-pair>\n </div>\n\n <div\n class=\"customer-details-actions\"\n *ngIf=\"\n config?.taskUI?.details?.action &&\n config?.taskUI?.details?.action?.length > 0\n \"\n >\n <ng-container *ngFor=\"let action of config?.taskUI?.details?.action\">\n <kwikid-action-button\n [action]=\"action\"\n [config]=\"config\"\n [customer]=\"customer\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></kwikid-action-button>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [".customer-details-wrapper{display:flex;flex-direction:column;align-items:stretch;overflow:auto;grid-gap:.5rem;gap:.5rem;padding:1.5rem;height:100%;width:100%}.customer-details-wrapper .customer-details-heading{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:1rem 0;font-size:1.5rem;font-weight:600}.customer-details-wrapper .customer-details-body{display:flex;flex-direction:column;font-size:1rem}.customer-details-wrapper .customer-details-body .customer-details-user-id{display:flex;flex-direction:row;grid-gap:.6rem;gap:.6rem;align-items:center;font-size:1.25rem;font-weight:500;padding:.5rem 0}.customer-details-wrapper .customer-details-body .customer-details-table{display:flex;grid-gap:.5rem;gap:.5rem;flex-direction:column}.customer-details-wrapper .customer-details-body .customer-details-table .customer-details-table-data .customer-details-table-detail-name{font-weight:500}.customer-details-wrapper .customer-details-body .customer-details-table .customer-details-table-data .customer-details-table-detail-value{word-wrap:break-word}.customer-details-wrapper .customer-details-body .customer-details-date{padding-top:1rem}.customer-details-wrapper .customer-details-body .customer-details-actions{padding:.5rem 0;display:flex;flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:flex-start;grid-gap:.5rem;gap:.5rem}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}\n"], components: [{ type: i4.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }, { type: i5.StatusPillComponent, selector: "status-pill", inputs: ["config", "status"] }, { type: i4.KwikUILabelValuePairComponent, selector: "kwikui-label-value-pair", inputs: ["config", "data", "id"] }, { type: i6.ActionButtonComponent, selector: "kwikid-action-button", inputs: ["action", "config", "customer"], outputs: ["onClickPerformAction"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
120
122
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomerDetailsComponent, decorators: [{
|
|
121
123
|
type: Component,
|
|
122
124
|
args: [{
|
|
@@ -136,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
136
138
|
}], onClickPerformAction: [{
|
|
137
139
|
type: Output
|
|
138
140
|
}] } });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvdjEvY29tcG9uZW50cy9jdXN0b21lci1kZXRhaWxzL2N1c3RvbWVyLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3YxL2NvbXBvbmVudHMvY3VzdG9tZXItZGV0YWlscy9jdXN0b21lci1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0QyxxQ0FBcUM7QUFDckMsMkNBQTJDO0FBQzNDLDBDQUEwQztBQUMxQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLHVCQUF1QixFQUV4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixlQUFlLEVBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQVd4QixNQUFNLE9BQU8sd0JBQXdCO0lBMEJuQyxZQUNTLFlBQTBCLEVBQzFCLGlCQUFvQyxFQUNwQyxxQkFBNEMsRUFDM0MsR0FBc0I7UUFIdkIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzNDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBNUJoQyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBS25CLFVBQUssR0FBRyxpQkFBaUIsQ0FBQztRQUUxQixvQkFBZSxHQUFrQixFQUFFLENBQUM7UUFFcEMsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUVqQix5QkFBb0IsR0FBUSxFQUFFLENBQUM7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b0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7eUlBOUlVLHdCQUF3Qjs2SEFBeEIsd0JBQXdCLDRPQzlCckMseTFDQWdEQTs0RkRsQmEsd0JBQXdCO2tCQU5wQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFdBQVcsRUFBRSxtQ0FBbUM7b0JBQ2hELFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO29CQUNoRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsT0FBTztpQkFDakQ7dU1BR0MsUUFBUTtzQkFEUCxLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFjTixRQUFRO3NCQURQLE1BQU07Z0JBSVAsVUFBVTtzQkFEVCxNQUFNO2dCQUlQLG9CQUFvQjtzQkFEbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWVtcHR5LWZ1bmN0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1tYWdpYy1udW1iZXJzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBjaGVja09iamVjdFBhdGhFeGlzdHMsXG4gIGdldE9iamVjdFZhbHVlRnJvbVBhdGgsXG4gIGlzTm90RW1wdHlBcnJheVxufSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IEFnZW50U2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hZ2VudC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBHb29nbGVNYXBzU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9nb29nbGUtbWFwcy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBPcGVuU3RyZWV0TWFwc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvb3Blbi1zdHJlZXQtbWFwcy5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjdXN0b21lci1kZXRhaWxzXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vY3VzdG9tZXItZGV0YWlscy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vY3VzdG9tZXItZGV0YWlscy5jb21wb25lbnQuc2Nzc1wiXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0XG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbWVyRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgY3VzdG9tZXI6IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpZzogYW55O1xuXG4gIHRpdGxlID0gXCJTZXNzaW9uIERldGFpbHNcIjtcblxuICB2aWV3VGFza0RldGFpbHM6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICB0YXNrSWQ6IGFueSA9IFwiXCI7XG5cbiAgbGFiZWxWYWx1ZVBhaXJDb25maWc6IGFueSA9IHt9O1xuXG4gIGxhYmVsVmFsdWVQYWlyRGF0YTogYW55ID0gW107XG5cbiAgQE91dHB1dCgpXG4gIG5leHRTdGVwID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICByZW1vdmVUYXNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrUGVyZm9ybUFjdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYWdlbnRTZXJ2aWNlOiBBZ2VudFNlcnZpY2UsXG4gICAgcHVibGljIGdvb2dsZU1hcHNTZXJ2aWNlOiBHb29nbGVNYXBzU2VydmljZSxcbiAgICBwdWJsaWMgb3BlblN0cmVldE1hcHNTZXJ2aWNlOiBPcGVuU3RyZWV0TWFwc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcnNlRGF0YSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHZlcmlmeUNoYW5nZSA9IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGNoYW5nZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhY2hhbmdlc1trZXldLmZpcnN0Q2hhbmdlO1xuICAgIH07XG5cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiY3VzdG9tZXJcIikpIHtcbiAgICAgIHRoaXMuY3VzdG9tZXIgPSBjaGFuZ2VzLmN1c3RvbWVyLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMucGFyc2VEYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VEYXRhKCkge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLmNvbmZpZz8uZGFzaGJvYXJkPy50YXNrSWRlbnRpZmllciA/PyBcInVzZXJfaWRcIjtcbiAgICB0aGlzLnRhc2tJZCA9IGdldE9iamVjdFZhbHVlRnJvbVBhdGgodGhpcy5jdXN0b21lciwgaWRlbnRpZmllcik7XG5cbiAgICBsZXQgZGV0YWlsc0NvbmZpZyA9IFtdO1xuICAgIGlmIChcbiAgICAgIGNoZWNrT2JqZWN0UGF0aEV4aXN0cyh0aGlzLmNvbmZpZywgXCJkYXNoYm9hcmQudmlld1Rhc2tEZXRhaWxzXCIpICYmXG4gICAgICBpc05vdEVtcHR5QXJyYXkodGhpcy5jb25maWcuZGFzaGJvYXJkLnZpZXdUYXNrRGV0YWlscylcbiAgICApIHtcbiAgICAgIGRldGFpbHNDb25maWcgPSB0aGlzLmNvbmZpZy5kYXNoYm9hcmQudmlld1Rhc2tEZXRhaWxzO1xuXG4gICAgICBjb25zdCBkYXRhID0gW107XG4gICAgICBkZXRhaWxzQ29uZmlnLm1hcCgoZmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRPYmplY3RWYWx1ZUZyb21QYXRoKHRoaXMuY3VzdG9tZXIsIGZpZWxkLnZhbHVlKTtcbiAgICAgICAgZGF0YS5wdXNoKHsgbGFiZWw6IGZpZWxkLmxhYmVsLCB2YWx1ZSB9KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICAgIHRoaXMubGFiZWxWYWx1ZVBhaXJEYXRhID0gZGF0YTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgY2hlY2tPYmplY3RQYXRoRXhpc3RzKHRoaXMuY29uZmlnLCBcImRhc2hib2FyZC50YXNrVUkuZGV0YWlscy5kYXRhXCIpICYmXG4gICAgICBpc05vdEVtcHR5QXJyYXkodGhpcy5jb25maWcuZGFzaGJvYXJkLnRhc2tVSS5kZXRhaWxzLmRhdGEpXG4gICAgKSB7XG4gICAgICBkZXRhaWxzQ29uZmlnID0gdGhpcy5jb25maWcuZGFzaGJvYXJkLnRhc2tVSS5kZXRhaWxzLmRhdGE7XG5cbiAgICAgIGNvbnN0IGRhdGEgPSBbXTtcbiAgICAgIGRldGFpbHNDb25maWcubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGdldE9iamVjdFZhbHVlRnJvbVBhdGgodGhpcy5jdXN0b21lciwgZmllbGQucGF0aCk7XG4gICAgICAgIGRhdGEucHVzaCh7IGxhYmVsOiBmaWVsZC5sYWJlbCwgdmFsdWUgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmxhYmVsVmFsdWVQYWlyRGF0YSA9IGRhdGE7XG4gICAgfVxuICAgIHRoaXMubGFiZWxWYWx1ZVBhaXJDb25maWcgPVxuICAgICAgdGhpcy5jb25maWc/LmRhc2hib2FyZD8udGFza1VJPy5kZXRhaWxzPy5jb25maWcgPz8ge307XG4gICAgdGhpcy50aXRsZSA9XG4gICAgICB0aGlzLmNvbmZpZz8uZGFzaGJvYXJkPy50YXNrVUk/LmRldGFpbHM/LmhlYWRlcj8udGl0bGUgPz8gdGhpcy50aXRsZTtcbiAgfVxuXG4gIGdldFRhc2tDcmVhdGlvblRpbWUodGFzaykge1xuICAgIGlmIChcbiAgICAgIGNoZWNrT2JqZWN0UGF0aEV4aXN0cyhcbiAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuY29uZmlnLFxuICAgICAgICBcImRhc2hib2FyZC50YXNrQ3JlYXRpb25UaW1lUGF0aFwiXG4gICAgICApXG4gICAgKSB7XG4gICAgICBjb25zdCB0aW1lID0gZ2V0T2JqZWN0VmFsdWVGcm9tUGF0aChcbiAgICAgICAgdGFzayxcbiAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuY29uZmlnLmRhc2hib2FyZC50YXNrQ3JlYXRpb25UaW1lUGF0aFxuICAgICAgKTtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRFcG9jaFRvRGF0ZSh0aW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29udmVydEVwb2NoVG9EYXRlKFxuICAgICAgdGFzaz8udGFza19jcmVhdGlvbl90aW1lID8/IHRhc2s/LnN0YXJ0X3RpbWVcbiAgICApO1xuICB9XG5cbiAgY29udmVydEVwb2NoVG9EYXRlKGVwb2NoVGltZSkge1xuICAgIGlmICh0eXBlb2YgZXBvY2hUaW1lID09PSBcInN0cmluZ1wiKSBlcG9jaFRpbWUgPSBOdW1iZXIoZXBvY2hUaW1lKTtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZXBvY2hUaW1lICogMTAwMCk7IC8vIENvbnZlcnQgdG8gbWlsbGlzZWNvbmRzXG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIik7XG4gICAgY29uc3QgbW9udGggPSAoZGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIik7IC8vIE1vbnRocyBhcmUgemVyby1iYXNlZFxuICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcblxuICAgIHJldHVybiBgJHtkYXl9LSR7bW9udGh9LSR7eWVhcn1gO1xuICB9XG5cbiAgZ2V0VGFza0RldGFpbHModGFza0RhdGEpIHtcbiAgICByZXR1cm4gZ2V0T2JqZWN0VmFsdWVGcm9tUGF0aCh0aGlzLmN1c3RvbWVyLCB0YXNrRGF0YSk7XG4gIH1cblxuICBnb1RvTWFwcyhsb2NhdGlvbikge1xuICAgIHdpbmRvdy5vcGVuKGAke2xvY2F0aW9ufWAsIFwiX2JsYW5rXCIpO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja05leHQoZSkge1xuICAgIHRoaXMubmV4dFN0ZXAuZW1pdChlKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscyA9IHVuZGVmaW5lZDtcblxuICAgIGlmICh0aGlzLmFnZW50U2VydmljZS5jb25maWc/LmRhc2hib2FyZD8ubWFwVHlwZSA9PT0gXCJnb29nbGUtbWFwc1wiKSB7XG4gICAgICB0aGlzLmdvb2dsZU1hcHNTZXJ2aWNlLnBsb3REaXJlY3Rpb25zRm9yU2VsZWN0ZWRUYXNrKG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5TdHJlZXRNYXBzU2VydmljZS5wbG90RGlyZWN0aW9uc0ZvclNlbGVjdGVkVGFzayhudWxsKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrUmVtb3ZlVGFzayh0YXNrKSB7XG4gICAgdGhpcy5yZW1vdmVUYXNrLmVtaXQodGFzayk7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrUGVyZm9ybUFjdGlvbihldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNsaWNrUGVyZm9ybUFjdGlvbi5lbWl0KGV2ZW50KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImN1c3RvbWVyLWRldGFpbHMtd3JhcHBlclwiPlxuICA8ZGl2PlxuICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICBpY29uPVwidHVpSWNvbkNoZXZyb25MZWZ0XCJcbiAgICAgIGxhYmVsPVwiQmFja1wiXG4gICAgICBzaGFwZT1cInJvdW5kZWRcIlxuICAgICAgc2l6ZT1cInNcIlxuICAgICAgKG9uQ2xpY2spPVwiY2xvc2UoKVwiXG4gICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjdXN0b21lci1kZXRhaWxzLWhlYWRpbmdcIj57eyB0aXRsZSB9fTwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tZXItZGV0YWlscy1ib2R5XCI+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLWRldGFpbHMtdXNlci1pZFwiPlxuICAgICAge3sgdGFza0lkIH19XG5cbiAgICAgIDxzdGF0dXMtcGlsbFxuICAgICAgICAqbmdJZj1cImNvbmZpZz8uZGFzaGJvYXJkPy5pc1Nob3dUYXNrU3RhdHVzXCJcbiAgICAgICAgW3N0YXR1c109XCJjdXN0b21lci5zZXNzaW9uX3N0YXR1c1wiXG4gICAgICA+PC9zdGF0dXMtcGlsbD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b21lci1kZXRhaWxzLXRhYmxlXCI+XG4gICAgICA8a3dpa3VpLWxhYmVsLXZhbHVlLXBhaXJcbiAgICAgICAgW2NvbmZpZ109XCJsYWJlbFZhbHVlUGFpckNvbmZpZ1wiXG4gICAgICAgIFtkYXRhXT1cImxhYmVsVmFsdWVQYWlyRGF0YVwiXG4gICAgICA+PC9rd2lrdWktbGFiZWwtdmFsdWUtcGFpcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY3VzdG9tZXItZGV0YWlscy1hY3Rpb25zXCJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIGNvbmZpZz8uZGFzaGJvYXJkPy50YXNrVUk/LmRldGFpbHM/LmFjdGlvbiAmJlxuICAgICAgICBjb25maWc/LmRhc2hib2FyZD8udGFza1VJPy5kZXRhaWxzPy5hY3Rpb24/Lmxlbmd0aCA+IDBcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGNvbmZpZz8uZGFzaGJvYXJkPy50YXNrVUk/LmRldGFpbHM/LmFjdGlvblwiXG4gICAgICA+XG4gICAgICAgIDxrd2lraWQtYWN0aW9uLWJ1dHRvblxuICAgICAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgW2N1c3RvbWVyXT1cImN1c3RvbWVyXCJcbiAgICAgICAgICAob25DbGlja1BlcmZvcm1BY3Rpb24pPVwiaGFuZGxlT25DbGlja1BlcmZvcm1BY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgID48L2t3aWtpZC1hY3Rpb24tYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvdjEvY29tcG9uZW50cy9jdXN0b21lci1kZXRhaWxzL2N1c3RvbWVyLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3YxL2NvbXBvbmVudHMvY3VzdG9tZXItZGV0YWlscy9jdXN0b21lci1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0QyxxQ0FBcUM7QUFDckMsMkNBQTJDO0FBQzNDLDBDQUEwQztBQUMxQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLHVCQUF1QixFQUV4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixlQUFlLEVBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQVd4QixNQUFNLE9BQU8sd0JBQXdCO0lBMEJuQyxZQUNTLFlBQTBCLEVBQzFCLGlCQUFvQyxFQUNwQyxxQkFBNEMsRUFDM0MsR0FBc0I7UUFIdkIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzNDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBNUJoQyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBS25CLFVBQUssR0FBRyxpQkFBaUIsQ0FBQztRQUUxQixvQkFBZSxHQUFrQixFQUFFLENBQUM7UUFFcEMsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUVqQix5QkFBb0IsR0FBUSxFQUFFLENBQUM7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QkFBd0I7NkhBQXhCLHdCQUF3Qiw0T0M5QnJDLG0rQ0FvREE7NEZEdEJhLHdCQUF3QjtrQkFOcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixXQUFXLEVBQUUsbUNBQW1DO29CQUNoRCxTQUFTLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQztvQkFDaEQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE9BQU87aUJBQ2pEO3VNQUdDLFFBQVE7c0JBRFAsS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBY04sUUFBUTtzQkFEUCxNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxvQkFBb0I7c0JBRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1lbXB0eS1mdW5jdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbWFnaWMtbnVtYmVycyAqL1xuLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgY2hlY2tPYmplY3RQYXRoRXhpc3RzLFxuICBnZXRPYmplY3RWYWx1ZUZyb21QYXRoLFxuICBpc05vdEVtcHR5QXJyYXlcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5pbXBvcnQgeyBBZ2VudFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYWdlbnQuc2VydmljZVwiO1xuaW1wb3J0IHsgR29vZ2xlTWFwc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZ29vZ2xlLW1hcHMuc2VydmljZVwiO1xuaW1wb3J0IHsgT3BlblN0cmVldE1hcHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL29wZW4tc3RyZWV0LW1hcHMuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY3VzdG9tZXItZGV0YWlsc1wiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2N1c3RvbWVyLWRldGFpbHMuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2N1c3RvbWVyLWRldGFpbHMuY29tcG9uZW50LnNjc3NcIl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdFxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21lckRldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIGN1c3RvbWVyOiBhbnkgPSB7fTtcblxuICBASW5wdXQoKVxuICBjb25maWc6IGFueTtcblxuICB0aXRsZSA9IFwiU2Vzc2lvbiBEZXRhaWxzXCI7XG5cbiAgdmlld1Rhc2tEZXRhaWxzOiBBcnJheTxzdHJpbmc+ID0gW107XG5cbiAgdGFza0lkOiBhbnkgPSBcIlwiO1xuXG4gIGxhYmVsVmFsdWVQYWlyQ29uZmlnOiBhbnkgPSB7fTtcblxuICBsYWJlbFZhbHVlUGFpckRhdGE6IGFueSA9IFtdO1xuXG4gIEBPdXRwdXQoKVxuICBuZXh0U3RlcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcmVtb3ZlVGFzayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgb25DbGlja1BlcmZvcm1BY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBnb29nbGVNYXBzU2VydmljZTogR29vZ2xlTWFwc1NlcnZpY2UsXG4gICAgcHVibGljIG9wZW5TdHJlZXRNYXBzU2VydmljZTogT3BlblN0cmVldE1hcHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wYXJzZURhdGEoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB2ZXJpZnlDaGFuZ2UgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBjaGFuZ2VzLmhhc093blByb3BlcnR5KGtleSkgJiYgIWNoYW5nZXNba2V5XS5maXJzdENoYW5nZTtcbiAgICB9O1xuXG4gICAgaWYgKHZlcmlmeUNoYW5nZShcImN1c3RvbWVyXCIpKSB7XG4gICAgICB0aGlzLmN1c3RvbWVyID0gY2hhbmdlcy5jdXN0b21lci5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLnBhcnNlRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldFZhbHVlRnJvbUFycmF5KHBhdGhzKSB7XG4gICAgbGV0IGRhdGEgPSBcIlwiO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBhcnJheS1jYWxsYmFjay1yZXR1cm5cbiAgICBwYXRocy5tYXAoKHBhdGgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZ2V0T2JqZWN0VmFsdWVGcm9tUGF0aCh0aGlzLmN1c3RvbWVyLCBwYXRoKTtcbiAgICAgIGRhdGEgPSBgJHtkYXRhfSAke3ZhbHVlfWA7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHBhcnNlRGF0YSgpIHtcbiAgICBjb25zdCBpZGVudGlmaWVyID1cbiAgICAgIHRoaXMuY29uZmlnLnRhc2tVSS5kZXRhaWxzLmhlYWRlci50YXNrSWQucGF0aCA/PyBcInVzZXJfaWRcIjtcbiAgICB0aGlzLnRhc2tJZCA9IGdldE9iamVjdFZhbHVlRnJvbVBhdGgodGhpcy5jdXN0b21lciwgaWRlbnRpZmllcik7XG5cbiAgICBsZXQgZGV0YWlsc0NvbmZpZyA9IFtdO1xuICAgIGlmIChcbiAgICAgIGNoZWNrT2JqZWN0UGF0aEV4aXN0cyh0aGlzLmNvbmZpZywgXCJ0YXNrVUkuZGV0YWlscy5kYXRhXCIpICYmXG4gICAgICBpc05vdEVtcHR5QXJyYXkodGhpcy5jb25maWcudGFza1VJLmRldGFpbHMuZGF0YSlcbiAgICApIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBbXTtcbiAgICAgIGRldGFpbHNDb25maWcgPSB0aGlzLmNvbmZpZy50YXNrVUkuZGV0YWlscy5kYXRhO1xuICAgICAgZGV0YWlsc0NvbmZpZy5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQucGF0aCkpIHtcbiAgICAgICAgICB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tQXJyYXkoZmllbGQucGF0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsdWUgPSBnZXRPYmplY3RWYWx1ZUZyb21QYXRoKHRoaXMuY3VzdG9tZXIsIGZpZWxkLnBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGRhdGEucHVzaCh7IGxhYmVsOiBmaWVsZC5sYWJlbCwgdmFsdWUgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmxhYmVsVmFsdWVQYWlyRGF0YSA9IGRhdGE7XG4gICAgfVxuICAgIHRoaXMubGFiZWxWYWx1ZVBhaXJDb25maWcgPSB0aGlzLmNvbmZpZz8udGFza1VJPy5kZXRhaWxzPy5jb25maWcgPz8ge307XG4gICAgdGhpcy50aXRsZSA9IHRoaXMuY29uZmlnPy50YXNrVUk/LmRldGFpbHM/LmhlYWRlcj8udGl0bGUgPz8gdGhpcy50aXRsZTtcbiAgfVxuXG4gIGdldFRhc2tDcmVhdGlvblRpbWUodGFzaykge1xuICAgIGlmICh0aGlzLmNvbmZpZz8udGFza1VJPy5kZXRhaWxzPy50aW1lPy5wYXRoKSB7XG4gICAgICBjb25zdCB0aW1lID0gZ2V0T2JqZWN0VmFsdWVGcm9tUGF0aChcbiAgICAgICAgdGFzayxcbiAgICAgICAgdGhpcy5jb25maWc/LnRhc2tVST8uZGV0YWlscz8udGltZT8ucGF0aFxuICAgICAgKTtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRFcG9jaFRvRGF0ZSh0aW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29udmVydEVwb2NoVG9EYXRlKFxuICAgICAgdGFzaz8udGFza19jcmVhdGlvbl90aW1lID8/IHRhc2s/LnN0YXJ0X3RpbWVcbiAgICApO1xuICB9XG5cbiAgY29udmVydEVwb2NoVG9EYXRlKGVwb2NoVGltZSkge1xuICAgIGlmICh0eXBlb2YgZXBvY2hUaW1lID09PSBcInN0cmluZ1wiKSBlcG9jaFRpbWUgPSBOdW1iZXIoZXBvY2hUaW1lKTtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZXBvY2hUaW1lICogMTAwMCk7IC8vIENvbnZlcnQgdG8gbWlsbGlzZWNvbmRzXG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIik7XG4gICAgY29uc3QgbW9udGggPSAoZGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIik7IC8vIE1vbnRocyBhcmUgemVyby1iYXNlZFxuICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcblxuICAgIHJldHVybiBgJHtkYXl9LSR7bW9udGh9LSR7eWVhcn1gO1xuICB9XG5cbiAgZ2V0VGFza0RldGFpbHModGFza0RhdGEpIHtcbiAgICByZXR1cm4gZ2V0T2JqZWN0VmFsdWVGcm9tUGF0aCh0aGlzLmN1c3RvbWVyLCB0YXNrRGF0YSk7XG4gIH1cblxuICBnb1RvTWFwcyhsb2NhdGlvbikge1xuICAgIHdpbmRvdy5vcGVuKGAke2xvY2F0aW9ufWAsIFwiX2JsYW5rXCIpO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja05leHQoZSkge1xuICAgIHRoaXMubmV4dFN0ZXAuZW1pdChlKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscyA9IHVuZGVmaW5lZDtcblxuICAgIGlmICh0aGlzLmNvbmZpZz8ubWFwcz8ubWFwVHlwZSA9PT0gXCJnb29nbGUtbWFwc1wiKSB7XG4gICAgICB0aGlzLmdvb2dsZU1hcHNTZXJ2aWNlLnBsb3REaXJlY3Rpb25zRm9yU2VsZWN0ZWRUYXNrKG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5TdHJlZXRNYXBzU2VydmljZS5wbG90RGlyZWN0aW9uc0ZvclNlbGVjdGVkVGFzayhudWxsKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrUmVtb3ZlVGFzayh0YXNrKSB7XG4gICAgdGhpcy5yZW1vdmVUYXNrLmVtaXQodGFzayk7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrUGVyZm9ybUFjdGlvbihldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNsaWNrUGVyZm9ybUFjdGlvbi5lbWl0KGV2ZW50KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImN1c3RvbWVyLWRldGFpbHMtd3JhcHBlclwiPlxuICA8ZGl2PlxuICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICBpY29uPVwidHVpSWNvbkNoZXZyb25MZWZ0XCJcbiAgICAgIGxhYmVsPVwiQmFja1wiXG4gICAgICBzaGFwZT1cInJvdW5kZWRcIlxuICAgICAgc2l6ZT1cInNcIlxuICAgICAgKG9uQ2xpY2spPVwiY2xvc2UoKVwiXG4gICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjdXN0b21lci1kZXRhaWxzLWhlYWRpbmdcIj57eyB0aXRsZSB9fTwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tZXItZGV0YWlscy1ib2R5XCI+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLWRldGFpbHMtdXNlci1pZFwiPlxuICAgICAge3sgdGFza0lkIH19XG5cbiAgICAgIDxzdGF0dXMtcGlsbFxuICAgICAgICAqbmdJZj1cImNvbmZpZz8udXRpbGl0eUZsYWdzPy5pc1Nob3dUYXNrU3RhdHVzXCJcbiAgICAgICAgW2NvbmZpZ109XCJjb25maWc/LnRhc2tVST8uZGV0YWlscz8uaGVhZGVyPy50YXNrU3RhdHVzXCJcbiAgICAgICAgW3N0YXR1c109XCJcbiAgICAgICAgICBjdXN0b21lcltcbiAgICAgICAgICAgIGNvbmZpZz8udGFza1VJPy5kZXRhaWxzPy5oZWFkZXI/LnRhc2tTdGF0dXM/LnBhdGggPz9cbiAgICAgICAgICAgICAgJ3Nlc3Npb25fc3RhdHVzJ1xuICAgICAgICAgIF1cbiAgICAgICAgXCJcbiAgICAgID48L3N0YXR1cy1waWxsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLWRldGFpbHMtdGFibGVcIj5cbiAgICAgIDxrd2lrdWktbGFiZWwtdmFsdWUtcGFpclxuICAgICAgICBbY29uZmlnXT1cImxhYmVsVmFsdWVQYWlyQ29uZmlnXCJcbiAgICAgICAgW2RhdGFdPVwibGFiZWxWYWx1ZVBhaXJEYXRhXCJcbiAgICAgID48L2t3aWt1aS1sYWJlbC12YWx1ZS1wYWlyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjdXN0b21lci1kZXRhaWxzLWFjdGlvbnNcIlxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgY29uZmlnPy50YXNrVUk/LmRldGFpbHM/LmFjdGlvbiAmJlxuICAgICAgICBjb25maWc/LnRhc2tVST8uZGV0YWlscz8uYWN0aW9uPy5sZW5ndGggPiAwXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb25maWc/LnRhc2tVST8uZGV0YWlscz8uYWN0aW9uXCI+XG4gICAgICAgIDxrd2lraWQtYWN0aW9uLWJ1dHRvblxuICAgICAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgW2N1c3RvbWVyXT1cImN1c3RvbWVyXCJcbiAgICAgICAgICAob25DbGlja1BlcmZvcm1BY3Rpb24pPVwiaGFuZGxlT25DbGlja1BlcmZvcm1BY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgID48L2t3aWtpZC1hY3Rpb24tYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -51,14 +51,14 @@ export class CustomerListComponent {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
handleInitialDateRange() {
|
|
54
|
-
var _a, _b, _c, _d, _e;
|
|
55
|
-
const
|
|
54
|
+
var _a, _b, _c, _d, _e, _f;
|
|
55
|
+
const searchFilterStartPoint = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.extendedFlags) === null || _b === void 0 ? void 0 : _b.searchFilterStartPoint) !== null && _c !== void 0 ? _c : {
|
|
56
56
|
day: 0,
|
|
57
57
|
month: 0,
|
|
58
58
|
year: 0
|
|
59
59
|
};
|
|
60
60
|
const currentDate = new Date();
|
|
61
|
-
const startDate = new Date((
|
|
61
|
+
const startDate = new Date((_d = currentDate.getFullYear() - (searchFilterStartPoint === null || searchFilterStartPoint === void 0 ? void 0 : searchFilterStartPoint.year)) !== null && _d !== void 0 ? _d : 0, (_e = currentDate.getMonth() - (searchFilterStartPoint === null || searchFilterStartPoint === void 0 ? void 0 : searchFilterStartPoint.month)) !== null && _e !== void 0 ? _e : 0, (_f = currentDate.getDate() - (searchFilterStartPoint === null || searchFilterStartPoint === void 0 ? void 0 : searchFilterStartPoint.day)) !== null && _f !== void 0 ? _f : 0);
|
|
62
62
|
this.fromDate = convertNormalDateToStringFormat(startDate);
|
|
63
63
|
this.toDate = convertNormalDateToStringFormat(null);
|
|
64
64
|
this.searchDateFormControl = new FormControl({
|
|
@@ -77,10 +77,10 @@ export class CustomerListComponent {
|
|
|
77
77
|
(_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.extendedFlags) === null || _b === void 0 ? void 0 : _b.sortFilterKeys) !== null && _c !== void 0 ? _c : this.sortFilterOptions;
|
|
78
78
|
}
|
|
79
79
|
setUpMaps() {
|
|
80
|
-
var _a, _b;
|
|
80
|
+
var _a, _b, _c, _d;
|
|
81
81
|
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
-
if ((_a = this.config
|
|
83
|
-
if (((
|
|
82
|
+
if ((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.maps) === null || _b === void 0 ? void 0 : _b.isShowMaps) {
|
|
83
|
+
if (((_d = (_c = this.config) === null || _c === void 0 ? void 0 : _c.maps) === null || _d === void 0 ? void 0 : _d.mapType) === "open-street") {
|
|
84
84
|
yield this.openStreetMapsService.initializeMap();
|
|
85
85
|
}
|
|
86
86
|
else {
|
|
@@ -90,9 +90,9 @@ export class CustomerListComponent {
|
|
|
90
90
|
});
|
|
91
91
|
}
|
|
92
92
|
setCustomersList() {
|
|
93
|
-
var _a;
|
|
93
|
+
var _a, _b;
|
|
94
94
|
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
-
if ((_a = this.config
|
|
95
|
+
if ((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.maps) === null || _b === void 0 ? void 0 : _b.isShowMaps) {
|
|
96
96
|
this.filteredData = yield this.plotMarkers(this.customers);
|
|
97
97
|
}
|
|
98
98
|
else {
|
|
@@ -101,8 +101,9 @@ export class CustomerListComponent {
|
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
103
|
ngAfterViewInit() {
|
|
104
|
-
var _a, _b;
|
|
105
|
-
this.maxLength =
|
|
104
|
+
var _a, _b, _c;
|
|
105
|
+
this.maxLength =
|
|
106
|
+
(_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.extendedFlags) === null || _b === void 0 ? void 0 : _b.searchFilterThreshold) !== null && _c !== void 0 ? _c : this.maxLength;
|
|
106
107
|
setTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
107
108
|
yield this.setUpMaps();
|
|
108
109
|
yield this.setCustomersList();
|
|
@@ -117,14 +118,14 @@ export class CustomerListComponent {
|
|
|
117
118
|
this.nextStep.emit(e);
|
|
118
119
|
}
|
|
119
120
|
plotMarkers(customers) {
|
|
120
|
-
var _a, _b;
|
|
121
|
+
var _a, _b, _c, _d;
|
|
121
122
|
return __awaiter(this, void 0, void 0, function* () {
|
|
122
|
-
if (!((_a = this.config
|
|
123
|
+
if (!((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.utilityFlags) === null || _b === void 0 ? void 0 : _b.isPlotCompletedTaskMarkers)) {
|
|
123
124
|
customers = customers.filter((customer) => {
|
|
124
125
|
return this.agentService.canPlotMarkers(customer.session_status);
|
|
125
126
|
});
|
|
126
127
|
}
|
|
127
|
-
if (((
|
|
128
|
+
if (((_d = (_c = this.config) === null || _c === void 0 ? void 0 : _c.maps) === null || _d === void 0 ? void 0 : _d.mapType) === "open-street") {
|
|
128
129
|
customers =
|
|
129
130
|
yield this.openStreetMapsService.plotDirectionsForAllTasks(customers);
|
|
130
131
|
}
|
|
@@ -177,7 +178,7 @@ export class CustomerListComponent {
|
|
|
177
178
|
}
|
|
178
179
|
}
|
|
179
180
|
/** @nocollapse */ CustomerListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomerListComponent, deps: [{ token: i1.GoogleMapsService }, { token: i2.OpenStreetMapsService }, { token: i3.AgentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
180
|
-
/** @nocollapse */ CustomerListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomerListComponent, selector: "customer-list", inputs: { customers: "customers", config: "config" }, outputs: { nextStep: "nextStep", removeTask: "removeTask", filterTaskList: "filterTaskList", onClickPerformAction: "onClickPerformAction" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"customer-list-wrapper\">\n <div\n class=\"customer-list-filter\"\n [formGroup]=\"formGroup\"\n >\n <div class=\"task-list-search-icons\">\n <kwikui-button\n appearance=\"mono\"\n icon=\"tuiIconSearchLarge\"\n size=\"s\"\n type=\"button\"\n (onClick)=\"handleOnClickSearchType('search-text')\"\n ></kwikui-button>\n <kwikui-button\n appearance=\"mono\"\n icon=\"tuiIconCalendarLarge\"\n size=\"s\"\n type=\"button\"\n (onClick)=\"handleOnClickSearchType('search-date')\"\n ></kwikui-button>\n <kwikui-button\n appearance=\"mono\"\n icon=\"tuiIconFilterLarge\"\n size=\"s\"\n type=\"button\"\n (onClick)=\"handleOnClickSearchType('sort-filter')\"\n ></kwikui-button>\n </div>\n\n <div\n class=\"task-list-search-action\"\n *ngIf=\"activeSearchAction\"\n >\n <kwikui-input-date-range\n *ngIf=\"activeSearchAction == 'search-date'\"\n class=\"task-list-date-box\"\n label=\"Search by Date Range\"\n id=\"dateRange\"\n size=\"m\"\n [max]=\"max\"\n [maxLength]=\"maxLength\"\n formControlName=\"search-date\"\n [formControl]=\"searchDateFormControl\"\n (getKeyValue)=\"handleOnChangeDateRange($event)\"\n ></kwikui-input-date-range>\n\n <kwikui-input\n *ngIf=\"activeSearchAction == 'search-text'\"\n label=\"Search\"\n id=\"search\"\n icon=\"tuiIconSearch\"\n placeholder=\"Search any task from here\"\n size=\"m\"\n [formControl]=\"searchTextFormControl\"\n formControlName=\"search-text\"\n (getKeyValue)=\"handleOnChangeSearchText($event)\"\n ></kwikui-input>\n\n <div\n *ngIf=\"activeSearchAction == 'sort-filter'\"\n class=\"task-list-sort-action\"\n >\n <kwikui-button\n appearance=\"outline\"\n [icon]=\"\n sortInAscendingOrder\n ? 'tuiIconChevronsUpLarge'\n : 'tuiIconChevronsDownLarge'\n \"\n size=\"m\"\n type=\"button\"\n (onClick)=\"handleOnClickChangeSortOrder()\"\n ></kwikui-button>\n <kwikui-input-select\n class=\"task-list-sort-key\"\n formControlName=\"sort-filter\"\n label=\"Sort By Key\"\n size=\"m\"\n [formControl]=\"sortFilterKeyFormControl\"\n [options]=\"sortFilterOptions\"\n [searchable]=\"false\"\n (getKeyValue)=\"handleOnChangeSortFilter($event)\"\n ></kwikui-input-select>\n </div>\n </div>\n </div>\n\n <div class=\"customer-task-list\">\n <cdk-virtual-scroll-viewport\n itemSize=\"1\"\n class=\"customer-task-list-scroll\"\n >\n <div\n *cdkVirtualFor=\"\n let customer of filteredData | filter: searchText;\n index as index\n \"\n >\n <customer-tile\n class=\"example-item\"\n [customer]=\"customer\"\n [config]=\"config\"\n [index]=\"index\"\n (nextStep)=\"handleOnClickNext($event)\"\n (removeTask)=\"handleOnClickRemoveTask($event)\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></customer-tile>\n </div>\n </cdk-virtual-scroll-viewport>\n </div>\n\n <div\n class=\"customer-list-empty\"\n *ngIf=\"filteredData.length === 0\"\n >\n
|
|
181
|
+
/** @nocollapse */ CustomerListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomerListComponent, selector: "customer-list", inputs: { customers: "customers", config: "config" }, outputs: { nextStep: "nextStep", removeTask: "removeTask", filterTaskList: "filterTaskList", onClickPerformAction: "onClickPerformAction" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"customer-list-wrapper\">\n <div\n class=\"customer-list-filter\"\n [formGroup]=\"formGroup\"\n >\n <div class=\"task-list-search-icons\">\n <kwikui-button\n appearance=\"mono\"\n icon=\"tuiIconSearchLarge\"\n size=\"s\"\n type=\"button\"\n (onClick)=\"handleOnClickSearchType('search-text')\"\n ></kwikui-button>\n <kwikui-button\n appearance=\"mono\"\n icon=\"tuiIconCalendarLarge\"\n size=\"s\"\n type=\"button\"\n (onClick)=\"handleOnClickSearchType('search-date')\"\n ></kwikui-button>\n <kwikui-button\n appearance=\"mono\"\n icon=\"tuiIconFilterLarge\"\n size=\"s\"\n type=\"button\"\n (onClick)=\"handleOnClickSearchType('sort-filter')\"\n ></kwikui-button>\n </div>\n\n <div\n class=\"task-list-search-action\"\n *ngIf=\"activeSearchAction\"\n >\n <kwikui-input-date-range\n *ngIf=\"activeSearchAction == 'search-date'\"\n class=\"task-list-date-box\"\n label=\"Search by Date Range\"\n id=\"dateRange\"\n size=\"m\"\n [max]=\"max\"\n [maxLength]=\"maxLength\"\n formControlName=\"search-date\"\n [formControl]=\"searchDateFormControl\"\n (getKeyValue)=\"handleOnChangeDateRange($event)\"\n ></kwikui-input-date-range>\n\n <kwikui-input\n *ngIf=\"activeSearchAction == 'search-text'\"\n label=\"Search\"\n id=\"search\"\n icon=\"tuiIconSearch\"\n placeholder=\"Search any task from here\"\n size=\"m\"\n [formControl]=\"searchTextFormControl\"\n formControlName=\"search-text\"\n (getKeyValue)=\"handleOnChangeSearchText($event)\"\n ></kwikui-input>\n\n <div\n *ngIf=\"activeSearchAction == 'sort-filter'\"\n class=\"task-list-sort-action\"\n >\n <kwikui-button\n appearance=\"outline\"\n [icon]=\"\n sortInAscendingOrder\n ? 'tuiIconChevronsUpLarge'\n : 'tuiIconChevronsDownLarge'\n \"\n size=\"m\"\n type=\"button\"\n (onClick)=\"handleOnClickChangeSortOrder()\"\n ></kwikui-button>\n <kwikui-input-select\n class=\"task-list-sort-key\"\n formControlName=\"sort-filter\"\n label=\"Sort By Key\"\n size=\"m\"\n [formControl]=\"sortFilterKeyFormControl\"\n [options]=\"sortFilterOptions\"\n [searchable]=\"false\"\n (getKeyValue)=\"handleOnChangeSortFilter($event)\"\n ></kwikui-input-select>\n </div>\n </div>\n </div>\n\n <div class=\"customer-task-list\">\n <cdk-virtual-scroll-viewport\n itemSize=\"1\"\n class=\"customer-task-list-scroll\"\n >\n <div\n *cdkVirtualFor=\"\n let customer of filteredData | filter: searchText;\n index as index\n \"\n >\n <customer-tile\n class=\"example-item\"\n [customer]=\"customer\"\n [config]=\"config\"\n [index]=\"index\"\n (nextStep)=\"handleOnClickNext($event)\"\n (removeTask)=\"handleOnClickRemoveTask($event)\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></customer-tile>\n </div>\n </cdk-virtual-scroll-viewport>\n </div>\n\n <div\n class=\"customer-list-empty\"\n *ngIf=\"filteredData.length === 0\"\n >\n No Tasks for the given Date.\n </div>\n</div>\n", styles: [".customer-list-wrapper{width:100%;height:100%;display:flex;flex-direction:column}.customer-list-filter{height:-moz-fit-content;height:fit-content;width:100%;display:flex;flex-direction:column;padding:1rem;grid-gap:.8rem;gap:.8rem;border-bottom:.5px solid #ddd}.customer-list-filter .task-list-search-icons{display:flex;justify-content:flex-end;align-items:center;flex-direction:row;grid-gap:.5rem;gap:.5rem}.customer-list-filter .task-list-search-action{margin-top:.5rem}.customer-list-filter .task-list-search-action .task-list-sort-action{display:flex;flex-direction:row;grid-gap:.5rem;gap:.5rem}.customer-list-filter .task-list-search-action .task-list-sort-action .task-list-sort-key{flex:1}.customer-list-empty{height:100%;width:100%;margin-top:.5rem;font-size:1rem;text-align:center}.customer-task-list{height:100%}.customer-task-list-scroll{height:100%;width:100%}.cdk-virtual-scroll-spacer{height:0!important}.example-item{height:50px}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}\n"], components: [{ type: i4.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }, { type: i4.KwikUIInputDateRangeComponent, selector: "kwikui-input-date-range", inputs: ["disabled", "focus", "formControl", "formControlName", "hintContent", "icon", "id", "invalid", "label", "max", "maxLength", "min", "minLength", "placeholder", "postfix", "prefix", "properties", "size", "validators"], outputs: ["getKeyValue"] }, { type: i4.KwikUIInputComponent, selector: "kwikui-input", inputs: ["case", "disabled", "focus", "formControl", "formControlName", "hintContent", "icon", "id", "invalid", "label", "placeholder", "postfix", "prefix", "properties", "size", "type", "validators"], outputs: ["getKeyValue"] }, { type: i4.KwikUIInputSelectComponent, selector: "kwikui-input-select", inputs: ["disabled", "focus", "formControl", "formControlName", "hintContent", "icon", "id", "invalid", "label", "options", "placeholder", "properties", "searchable", "size", "validators"], outputs: ["getKeyValue"] }, { type: i5.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: i6.CustomerTileComponent, selector: "customer-tile", inputs: ["customer", "index", "config"], outputs: ["onClickPerformAction", "nextStep", "removeTask"] }], directives: [{ type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i7.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i5.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i5.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], pipes: { "filter": i9.Ng2SearchPipe } });
|
|
181
182
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomerListComponent, decorators: [{
|
|
182
183
|
type: Component,
|
|
183
184
|
args: [{
|
|
@@ -198,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
198
199
|
}], onClickPerformAction: [{
|
|
199
200
|
type: Output
|
|
200
201
|
}] } });
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvdjEvY29tcG9uZW50cy9jdXN0b21lci1saXN0L2N1c3RvbWVyLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3YxL2NvbXBvbmVudHMvY3VzdG9tZXItbGlzdC9jdXN0b21lci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQ0FBcUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlwRCxPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLCtCQUErQixFQUNoQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7QUFPN0QsTUFBTSxPQUFPLHFCQUFxQjtJQXNEaEMsWUFDUyxpQkFBb0MsRUFDcEMscUJBQTRDLEVBQzVDLFlBQTBCO0lBQ2pDLDZDQUE2Qzs7UUFIdEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBakRuQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUc5QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUdoQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFNcEMsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFFbEIsY0FBUyxHQUFjLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBUXpDLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQU01QixRQUFHLEdBQVcsSUFBSSxNQUFNLENBQ3RCLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQ3hCLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQ3JCLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQ3JCLENBQUM7UUFJRixvQkFBb0I7UUFDcEIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkIsc0JBQWlCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUVsRCx1QkFBa0IsR0FBVyxTQUFTLENBQUM7UUFHdkMseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFPL0QsQ0FBQztJQUVFLFFBQVE7O1lBQ1osSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7UUFDekMsQ0FBQztLQUFBO0lBRUQsdUJBQXVCLENBQUMsSUFBSTtRQUMxQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxJQUFJLEVBQUU7WUFDcEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztTQUNoQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztTQUNyQztJQUNILENBQUM7SUFFRCxzQkFBc0I7O1FBQ3BCLE1BQU0sZUFBZSxHQUFHLE1BQUEsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsMENBQUUsZUFBZSxtQ0FBSTtZQUNoRSxHQUFHLEVBQUUsQ0FBQztZQUNOLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxFQUFFLENBQUM7U0FDUixDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUMvQixNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FDeEIsTUFBQSxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUcsZUFBZSxhQUFmLGVBQWUsdUJBQWYsZUFBZSxDQUFFLElBQUksQ0FBQSxtQ0FBSSxDQUFDLEVBQ3RELE1BQUEsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFHLGVBQWUsYUFBZixlQUFlLHVCQUFmLGVBQWUsQ0FBRSxLQUFLLENBQUEsbUNBQUksQ0FBQyxFQUNwRCxNQUFBLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBRyxlQUFlLGFBQWYsZUFBZSx1QkFBZixlQUFlLENBQUUsR0FBRyxDQUFBLG1DQUFJLENBQUMsQ0FDbEQsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsK0JBQStCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLE1BQU0sR0FBRywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDM0MsS0FBSyxFQUFFLElBQUksV0FBVyxDQUNwQixJQUFJLE1BQU0sQ0FDUixTQUFTLENBQUMsV0FBVyxFQUFFLEVBQ3ZCLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFDcEIsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUNwQixFQUNELElBQUksQ0FBQyxHQUFHLENBQ1Q7WUFDRCxRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELCtCQUErQjs7UUFDN0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUVyRSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxpQkFBaUI7WUFDcEIsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsYUFBYSwwQ0FBRSxjQUFjLG1DQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUN6RSxDQUFDO0lBRUssU0FBUzs7O1lBQ2IsSUFBSSxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUywwQ0FBRSxVQUFVLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQSxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUywwQ0FBRSxPQUFPLE1BQUssYUFBYSxFQUFFO29CQUNwRCxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztpQkFDbEQ7cUJBQU07b0JBQ0wsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQzlDO2FBQ0Y7O0tBQ0Y7SUFFSyxnQkFBZ0I7OztZQUNwQixJQUFJLE1BQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLDBDQUFFLFVBQVUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzVEO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUNwQzs7S0FDRjtJQUVELGVBQWU7O1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFBLE1BQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLDBDQUFFLGVBQWUsbUNBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMxRSxVQUFVLENBQUMsR0FBUSxFQUFFO1lBQ25CLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFBLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUssV0FBVzs7WUFDZixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2hDLENBQUM7S0FBQTtJQUVELGlCQUFpQixDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVLLFdBQVcsQ0FBQyxTQUFTOzs7WUFDekIsSUFBSSxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsMENBQUUsMEJBQTBCLENBQUEsRUFBRTtnQkFDdEQsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtvQkFDeEMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ25FLENBQUMsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxJQUFJLENBQUEsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsMENBQUUsT0FBTyxNQUFLLGFBQWEsRUFBRTtnQkFDcEQsU0FBUztvQkFDUCxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUN6RTtpQkFBTTtnQkFDTCxTQUFTO29CQUNQLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3JFO1lBRUQsT0FBTyxTQUFTLENBQUM7O0tBQ2xCO0lBRUQsdUJBQXVCLENBQUMsS0FBSztRQUMzQixJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBQzFCLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN4QixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDRCQUE0QjtRQUMxQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFDdkQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxLQUFVO1FBQ2pDLElBQUksS0FBSyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQzNFO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLEdBQUcsRUFBRSxLQUFLO1FBQzlCLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsWUFBWSxHQUFHLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxLQUFVOztRQUNwQyxJQUFJLENBQUEsTUFBQSxLQUFLLENBQUMsS0FBSywwQ0FBRSxJQUFJLE1BQUksTUFBQSxLQUFLLENBQUMsS0FBSywwQ0FBRSxFQUFFLENBQUEsRUFBRTtZQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLCtCQUErQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLE1BQU0sR0FBRywrQkFBK0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQztJQUVELHdCQUF3QixDQUFDLEtBQUs7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxJQUFJO1FBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxNQUFNO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxLQUFVO1FBQ25DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7c0lBcE5VLHFCQUFxQjswSEFBckIscUJBQXFCLDZRQ25CbEMsNGhIQXdIQTs0RkRyR2EscUJBQXFCO2tCQUxqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixXQUFXLEVBQUUsZ0NBQWdDO29CQUM3QyxTQUFTLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztpQkFDOUM7dUtBR0MsU0FBUztzQkFEUixLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixRQUFRO3NCQURQLE1BQU07Z0JBSVAsVUFBVTtzQkFEVCxNQUFNO2dCQUlQLGNBQWM7c0JBRGIsTUFBTTtnQkF1Q1Asb0JBQW9CO3NCQURuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tbWFnaWMtbnVtYmVycyAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBnZXRPYmplY3REZWVwQ29weSwgaXNOb3RFbXB0eVZhbHVlIH0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5pbXBvcnQgeyBUdWlEYXksIFR1aURheVJhbmdlIH0gZnJvbSBcIkB0YWlnYS11aS9jZGtcIjtcbmltcG9ydCB7IEdvb2dsZU1hcHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2dvb2dsZS1tYXBzLnNlcnZpY2VcIjtcbmltcG9ydCB7IEFnZW50U2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hZ2VudC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBPcGVuU3RyZWV0TWFwc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvb3Blbi1zdHJlZXQtbWFwcy5zZXJ2aWNlXCI7XG5pbXBvcnQge1xuICBjb252ZXJ0S3dpa1VJRGF0ZVRvU3RyaW5nRm9ybWF0LFxuICBjb252ZXJ0Tm9ybWFsRGF0ZVRvU3RyaW5nRm9ybWF0XG59IGZyb20gXCIuLi8uLi8uLi92Mi9oZWxwZXJzL2RhdGUuaGVscGxlcnNcIjtcbmltcG9ydCB7IHNvcnRJdGVtcyB9IGZyb20gXCIuLi8uLi8uLi92Mi9oZWxwZXJzL2FycmF5LmhlbHBlclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY3VzdG9tZXItbGlzdFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2N1c3RvbWVyLWxpc3QuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2N1c3RvbWVyLWxpc3QuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgY3VzdG9tZXJzOiBhbnk7XG5cbiAgQElucHV0KClcbiAgY29uZmlnOiBhbnk7XG5cbiAgQE91dHB1dCgpXG4gIG5leHRTdGVwID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICByZW1vdmVUYXNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBmaWx0ZXJUYXNrTGlzdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBzZWFyY2hUZXh0O1xuXG4gIGxhc3RJbmZvV2luZG93T3BlbmVkOiBhbnk7XG5cbiAgZmlsdGVyZWREYXRhID0gW107XG5cbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcblxuICBzZWFyY2hUZXh0Rm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xuXG4gIHNlYXJjaERhdGVGb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG5cbiAgc29ydEZpbHRlcktleUZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcblxuICBzb3J0SW5Bc2NlbmRpbmdPcmRlciA9IHRydWU7XG5cbiAgZnJvbURhdGU6IHN0cmluZyB8IERhdGU7XG5cbiAgdG9EYXRlOiBzdHJpbmcgfCBEYXRlO1xuXG4gIG1heDogVHVpRGF5ID0gbmV3IFR1aURheShcbiAgICBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksXG4gICAgbmV3IERhdGUoKS5nZXRNb250aCgpLFxuICAgIG5ldyBEYXRlKCkuZ2V0RGF0ZSgpXG4gICk7XG5cbiAgbWF4TGVuZ3RoOiBhbnk7XG5cbiAgLy8gU29ydGluZyBWYXJpYWJsZXNcbiAgc29ydEZpbHRlcktleSA9IFwiXCI7XG5cbiAgc29ydEZpbHRlck9wdGlvbnMgPSBbXCJ1c2VyX2lkXCIsIFwic2Vzc2lvbl9zdGF0dXNcIl07XG5cbiAgYWN0aXZlU2VhcmNoQWN0aW9uOiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2tQZXJmb3JtQWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBnb29nbGVNYXBzU2VydmljZTogR29vZ2xlTWFwc1NlcnZpY2UsXG4gICAgcHVibGljIG9wZW5TdHJlZXRNYXBzU2VydmljZTogT3BlblN0cmVldE1hcHNTZXJ2aWNlLFxuICAgIHB1YmxpYyBhZ2VudFNlcnZpY2U6IEFnZW50U2VydmljZVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvblxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5oYW5kbGVJbml0aWFsRGF0ZVJhbmdlKCk7XG4gICAgdGhpcy5oYW5kbGVTZWFyY2hBbmRTb3J0Rm9ybUNvbnRyb2xzKCk7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrU2VhcmNoVHlwZSh0eXBlKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlU2VhcmNoQWN0aW9uICE9PSB0eXBlKSB7XG4gICAgICB0aGlzLmFjdGl2ZVNlYXJjaEFjdGlvbiA9IHR5cGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlU2VhcmNoQWN0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUluaXRpYWxEYXRlUmFuZ2UoKSB7XG4gICAgY29uc3Qgc2VhcmNoRGF0ZVN0YXJ0ID0gdGhpcy5jb25maWcuZGFzaGJvYXJkPy5zZWFyY2hEYXRlU3RhcnQgPz8ge1xuICAgICAgZGF5OiAwLFxuICAgICAgbW9udGg6IDAsXG4gICAgICB5ZWFyOiAwXG4gICAgfTtcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoXG4gICAgICBjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpIC0gc2VhcmNoRGF0ZVN0YXJ0Py55ZWFyID8/IDAsXG4gICAgICBjdXJyZW50RGF0ZS5nZXRNb250aCgpIC0gc2VhcmNoRGF0ZVN0YXJ0Py5tb250aCA/PyAwLFxuICAgICAgY3VycmVudERhdGUuZ2V0RGF0ZSgpIC0gc2VhcmNoRGF0ZVN0YXJ0Py5kYXkgPz8gMFxuICAgICk7XG5cbiAgICB0aGlzLmZyb21EYXRlID0gY29udmVydE5vcm1hbERhdGVUb1N0cmluZ0Zvcm1hdChzdGFydERhdGUpO1xuICAgIHRoaXMudG9EYXRlID0gY29udmVydE5vcm1hbERhdGVUb1N0cmluZ0Zvcm1hdChudWxsKTtcblxuICAgIHRoaXMuc2VhcmNoRGF0ZUZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKHtcbiAgICAgIHZhbHVlOiBuZXcgVHVpRGF5UmFuZ2UoXG4gICAgICAgIG5ldyBUdWlEYXkoXG4gICAgICAgICAgc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgc3RhcnREYXRlLmdldE1vbnRoKCksXG4gICAgICAgICAgc3RhcnREYXRlLmdldERhdGUoKVxuICAgICAgICApLFxuICAgICAgICB0aGlzLm1heFxuICAgICAgKSxcbiAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgIH0pO1xuICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woXCJzZWFyY2gtZGF0ZVwiLCB0aGlzLnNlYXJjaERhdGVGb3JtQ29udHJvbCk7XG4gIH1cblxuICBoYW5kbGVTZWFyY2hBbmRTb3J0Rm9ybUNvbnRyb2xzKCkge1xuICAgIHRoaXMuc2VhcmNoVGV4dEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKFwiXCIpO1xuICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woXCJzZWFyY2gtdGV4dFwiLCB0aGlzLnNlYXJjaFRleHRGb3JtQ29udHJvbCk7XG5cbiAgICB0aGlzLnNvcnRGaWx0ZXJLZXlGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChcIlwiKTtcbiAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKFwic29ydC1maWx0ZXJcIiwgdGhpcy5zb3J0RmlsdGVyS2V5Rm9ybUNvbnRyb2wpO1xuICAgIHRoaXMuc29ydEZpbHRlck9wdGlvbnMgPVxuICAgICAgdGhpcy5jb25maWc/LmV4dGVuZGVkRmxhZ3M/LnNvcnRGaWx0ZXJLZXlzID8/IHRoaXMuc29ydEZpbHRlck9wdGlvbnM7XG4gIH1cblxuICBhc3luYyBzZXRVcE1hcHMoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmRhc2hib2FyZD8uaXNTaG93TWFwcykge1xuICAgICAgaWYgKHRoaXMuY29uZmlnLmRhc2hib2FyZD8ubWFwVHlwZSA9PT0gXCJvcGVuLXN0cmVldFwiKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub3BlblN0cmVldE1hcHNTZXJ2aWNlLmluaXRpYWxpemVNYXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZ29vZ2xlTWFwc1NlcnZpY2UuaW5pdGlhbGl6ZU1hcCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNldEN1c3RvbWVyc0xpc3QoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmRhc2hib2FyZD8uaXNTaG93TWFwcykge1xuICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSBhd2FpdCB0aGlzLnBsb3RNYXJrZXJzKHRoaXMuY3VzdG9tZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSB0aGlzLmN1c3RvbWVycztcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tYXhMZW5ndGggPSB0aGlzLmNvbmZpZy5kYXNoYm9hcmQ/LnNlYXJjaERhdGVSYW5nZSA/PyB0aGlzLm1heExlbmd0aDtcbiAgICBzZXRUaW1lb3V0KGFzeW5jKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5zZXRVcE1hcHMoKTtcbiAgICAgIGF3YWl0IHRoaXMuc2V0Q3VzdG9tZXJzTGlzdCgpO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgYXN5bmMgbmdPbkNoYW5nZXMoKSB7XG4gICAgYXdhaXQgdGhpcy5zZXRDdXN0b21lcnNMaXN0KCk7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrTmV4dChlKSB7XG4gICAgdGhpcy5uZXh0U3RlcC5lbWl0KGUpO1xuICB9XG5cbiAgYXN5bmMgcGxvdE1hcmtlcnMoY3VzdG9tZXJzKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5kYXNoYm9hcmQ/LmlzUGxvdENvbXBsZXRlZFRhc2tNYXJrZXJzKSB7XG4gICAgICBjdXN0b21lcnMgPSBjdXN0b21lcnMuZmlsdGVyKChjdXN0b21lcikgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hZ2VudFNlcnZpY2UuY2FuUGxvdE1hcmtlcnMoY3VzdG9tZXIuc2Vzc2lvbl9zdGF0dXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLmRhc2hib2FyZD8ubWFwVHlwZSA9PT0gXCJvcGVuLXN0cmVldFwiKSB7XG4gICAgICBjdXN0b21lcnMgPVxuICAgICAgICBhd2FpdCB0aGlzLm9wZW5TdHJlZXRNYXBzU2VydmljZS5wbG90RGlyZWN0aW9uc0ZvckFsbFRhc2tzKGN1c3RvbWVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1c3RvbWVycyA9XG4gICAgICAgIGF3YWl0IHRoaXMuZ29vZ2xlTWFwc1NlcnZpY2UucGxvdERpcmVjdGlvbnNGb3JBbGxUYXNrcyhjdXN0b21lcnMpO1xuICAgIH1cblxuICAgIHJldHVybiBjdXN0b21lcnM7XG4gIH1cblxuICBoYW5kbGVPbkNoYW5nZURhdGVSYW5nZShldmVudCkge1xuICAgIHRoaXMuaGFuZGxlQ2hhbmdlRGF0ZVJhbmdlRm9ybWF0KGV2ZW50KTtcbiAgICB0aGlzLmhhbmRsZU9uRmlsdGVyVGFza0xpc3Qoe1xuICAgICAgZnJvbV9kYXRlOiB0aGlzLmZyb21EYXRlLFxuICAgICAgdG9fZGF0ZTogdGhpcy50b0RhdGVcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2tDaGFuZ2VTb3J0T3JkZXIoKSB7XG4gICAgdGhpcy5zb3J0SW5Bc2NlbmRpbmdPcmRlciA9ICF0aGlzLnNvcnRJbkFzY2VuZGluZ09yZGVyO1xuICAgIHRoaXMuaGFuZGxlT25DaGFuZ2VTb3J0RmlsdGVyKGZhbHNlKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2hhbmdlU29ydEZpbHRlcihldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50ICYmIGlzTm90RW1wdHlWYWx1ZShldmVudC52YWx1ZSkpIHtcbiAgICAgIHRoaXMuc29ydEZpbHRlcktleSA9IGV2ZW50LnZhbHVlO1xuICAgICAgdGhpcy5oYW5kbGVPblNvcnRUYXNrSXRlbXModGhpcy5zb3J0RmlsdGVyS2V5LCB0aGlzLnNvcnRJbkFzY2VuZGluZ09yZGVyKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVPblNvcnRUYXNrSXRlbXMoa2V5LCBvcmRlcikge1xuICAgIGNvbnN0IHNvcnRlZFRhc2tJdGVtcyA9IHNvcnRJdGVtcyh0aGlzLmZpbHRlcmVkRGF0YSwga2V5LCBvcmRlcik7XG4gICAgdGhpcy5maWx0ZXJlZERhdGEgPSBnZXRPYmplY3REZWVwQ29weShzb3J0ZWRUYXNrSXRlbXMpO1xuICB9XG5cbiAgaGFuZGxlQ2hhbmdlRGF0ZVJhbmdlRm9ybWF0KGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQudmFsdWU/LmZyb20gJiYgZXZlbnQudmFsdWU/LnRvKSB7XG4gICAgICB0aGlzLmZyb21EYXRlID0gY29udmVydEt3aWtVSURhdGVUb1N0cmluZ0Zvcm1hdChldmVudC52YWx1ZS5mcm9tKTtcbiAgICAgIHRoaXMudG9EYXRlID0gY29udmVydEt3aWtVSURhdGVUb1N0cmluZ0Zvcm1hdChldmVudC52YWx1ZS50byk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlT25DaGFuZ2VTZWFyY2hUZXh0KGV2ZW50KSB7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gZXZlbnQudmFsdWU7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrUmVtb3ZlVGFzayh0YXNrKSB7XG4gICAgdGhpcy5yZW1vdmVUYXNrLmVtaXQodGFzayk7XG4gIH1cblxuICBoYW5kbGVPbkZpbHRlclRhc2tMaXN0KGZpbHRlcikge1xuICAgIHRoaXMuZmlsdGVyVGFza0xpc3QuZW1pdChmaWx0ZXIpO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja1BlcmZvcm1BY3Rpb24oZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DbGlja1BlcmZvcm1BY3Rpb24uZW1pdChldmVudCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjdXN0b21lci1saXN0LXdyYXBwZXJcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3VzdG9tZXItbGlzdC1maWx0ZXJcIlxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJ0YXNrLWxpc3Qtc2VhcmNoLWljb25zXCI+XG4gICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICBhcHBlYXJhbmNlPVwibW9ub1wiXG4gICAgICAgIGljb249XCJ0dWlJY29uU2VhcmNoTGFyZ2VcIlxuICAgICAgICBzaXplPVwic1wiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVPbkNsaWNrU2VhcmNoVHlwZSgnc2VhcmNoLXRleHQnKVwiXG4gICAgICA+PC9rd2lrdWktYnV0dG9uPlxuICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgYXBwZWFyYW5jZT1cIm1vbm9cIlxuICAgICAgICBpY29uPVwidHVpSWNvbkNhbGVuZGFyTGFyZ2VcIlxuICAgICAgICBzaXplPVwic1wiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVPbkNsaWNrU2VhcmNoVHlwZSgnc2VhcmNoLWRhdGUnKVwiXG4gICAgICA+PC9rd2lrdWktYnV0dG9uPlxuICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgYXBwZWFyYW5jZT1cIm1vbm9cIlxuICAgICAgICBpY29uPVwidHVpSWNvbkZpbHRlckxhcmdlXCJcbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlT25DbGlja1NlYXJjaFR5cGUoJ3NvcnQtZmlsdGVyJylcIlxuICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwidGFzay1saXN0LXNlYXJjaC1hY3Rpb25cIlxuICAgICAgKm5nSWY9XCJhY3RpdmVTZWFyY2hBY3Rpb25cIlxuICAgID5cbiAgICAgIDxrd2lrdWktaW5wdXQtZGF0ZS1yYW5nZVxuICAgICAgICAqbmdJZj1cImFjdGl2ZVNlYXJjaEFjdGlvbiA9PSAnc2VhcmNoLWRhdGUnXCJcbiAgICAgICAgY2xhc3M9XCJ0YXNrLWxpc3QtZGF0ZS1ib3hcIlxuICAgICAgICBsYWJlbD1cIlNlYXJjaCBieSBEYXRlIFJhbmdlXCJcbiAgICAgICAgaWQ9XCJkYXRlUmFuZ2VcIlxuICAgICAgICBzaXplPVwibVwiXG4gICAgICAgIFttYXhdPVwibWF4XCJcbiAgICAgICAgW21heExlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2gtZGF0ZVwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hEYXRlRm9ybUNvbnRyb2xcIlxuICAgICAgICAoZ2V0S2V5VmFsdWUpPVwiaGFuZGxlT25DaGFuZ2VEYXRlUmFuZ2UoJGV2ZW50KVwiXG4gICAgICA+PC9rd2lrdWktaW5wdXQtZGF0ZS1yYW5nZT5cblxuICAgICAgPGt3aWt1aS1pbnB1dFxuICAgICAgICAqbmdJZj1cImFjdGl2ZVNlYXJjaEFjdGlvbiA9PSAnc2VhcmNoLXRleHQnXCJcbiAgICAgICAgbGFiZWw9XCJTZWFyY2hcIlxuICAgICAgICBpZD1cInNlYXJjaFwiXG4gICAgICAgIGljb249XCJ0dWlJY29uU2VhcmNoXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggYW55IHRhc2sgZnJvbSBoZXJlXCJcbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoVGV4dEZvcm1Db250cm9sXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoLXRleHRcIlxuICAgICAgICAoZ2V0S2V5VmFsdWUpPVwiaGFuZGxlT25DaGFuZ2VTZWFyY2hUZXh0KCRldmVudClcIlxuICAgICAgPjwva3dpa3VpLWlucHV0PlxuXG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiYWN0aXZlU2VhcmNoQWN0aW9uID09ICdzb3J0LWZpbHRlcidcIlxuICAgICAgICBjbGFzcz1cInRhc2stbGlzdC1zb3J0LWFjdGlvblwiXG4gICAgICA+XG4gICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxuICAgICAgICAgIFtpY29uXT1cIlxuICAgICAgICAgICAgc29ydEluQXNjZW5kaW5nT3JkZXJcbiAgICAgICAgICAgICAgPyAndHVpSWNvbkNoZXZyb25zVXBMYXJnZSdcbiAgICAgICAgICAgICAgOiAndHVpSWNvbkNoZXZyb25zRG93bkxhcmdlJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZU9uQ2xpY2tDaGFuZ2VTb3J0T3JkZXIoKVwiXG4gICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICAgIDxrd2lrdWktaW5wdXQtc2VsZWN0XG4gICAgICAgICAgY2xhc3M9XCJ0YXNrLWxpc3Qtc29ydC1rZXlcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNvcnQtZmlsdGVyXCJcbiAgICAgICAgICBsYWJlbD1cIlNvcnQgQnkgS2V5XCJcbiAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cInNvcnRGaWx0ZXJLZXlGb3JtQ29udHJvbFwiXG4gICAgICAgICAgW29wdGlvbnNdPVwic29ydEZpbHRlck9wdGlvbnNcIlxuICAgICAgICAgIFtzZWFyY2hhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAoZ2V0S2V5VmFsdWUpPVwiaGFuZGxlT25DaGFuZ2VTb3J0RmlsdGVyKCRldmVudClcIlxuICAgICAgICA+PC9rd2lrdWktaW5wdXQtc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjdXN0b21lci10YXNrLWxpc3RcIj5cbiAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgICBpdGVtU2l6ZT1cIjFcIlxuICAgICAgY2xhc3M9XCJjdXN0b21lci10YXNrLWxpc3Qtc2Nyb2xsXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgICpjZGtWaXJ0dWFsRm9yPVwiXG4gICAgICAgICAgbGV0IGN1c3RvbWVyIG9mIGZpbHRlcmVkRGF0YSB8IGZpbHRlcjogc2VhcmNoVGV4dDtcbiAgICAgICAgICBpbmRleCBhcyBpbmRleFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8Y3VzdG9tZXItdGlsZVxuICAgICAgICAgIGNsYXNzPVwiZXhhbXBsZS1pdGVtXCJcbiAgICAgICAgICBbY3VzdG9tZXJdPVwiY3VzdG9tZXJcIlxuICAgICAgICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgIChuZXh0U3RlcCk9XCJoYW5kbGVPbkNsaWNrTmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAocmVtb3ZlVGFzayk9XCJoYW5kbGVPbkNsaWNrUmVtb3ZlVGFzaygkZXZlbnQpXCJcbiAgICAgICAgICAob25DbGlja1BlcmZvcm1BY3Rpb24pPVwiaGFuZGxlT25DbGlja1BlcmZvcm1BY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgID48L2N1c3RvbWVyLXRpbGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3VzdG9tZXItbGlzdC1lbXB0eVwiXG4gICAgKm5nSWY9XCJmaWx0ZXJlZERhdGEubGVuZ3RoID09PSAwXCJcbiAgPlxuICAgIHt7XG4gICAgICBjb25maWc/LmRhc2hib2FyZD8uZW1wdHlUYXNrTGlzdE1lc3NhZ2UgPz8gXCIwIFRhc2tzIGZvciB0aGUgZ2l2ZW4gRGF0ZS5cIlxuICAgIH19XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvdjEvY29tcG9uZW50cy9jdXN0b21lci1saXN0L2N1c3RvbWVyLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3YxL2NvbXBvbmVudHMvY3VzdG9tZXItbGlzdC9jdXN0b21lci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQ0FBcUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlwRCxPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLCtCQUErQixFQUNoQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7QUFPN0QsTUFBTSxPQUFPLHFCQUFxQjtJQXNEaEMsWUFDUyxpQkFBb0MsRUFDcEMscUJBQTRDLEVBQzVDLFlBQTBCO0lBQ2pDLDZDQUE2Qzs7UUFIdEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBakRuQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FB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RCx3QkFBd0IsQ0FBQyxLQUFLO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsSUFBSTtRQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsc0JBQXNCLENBQUMsTUFBTTtRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsMEJBQTBCLENBQUMsS0FBVTtRQUNuQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7O3NJQXROVSxxQkFBcUI7MEhBQXJCLHFCQUFxQiw2UUNuQmxDLDQ5R0FzSEE7NEZEbkdhLHFCQUFxQjtrQkFMakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsV0FBVyxFQUFFLGdDQUFnQztvQkFDN0MsU0FBUyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7aUJBQzlDO3VLQUdDLFNBQVM7c0JBRFIsS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxjQUFjO3NCQURiLE1BQU07Z0JBdUNQLG9CQUFvQjtzQkFEbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLW1hZ2ljLW51bWJlcnMgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgZ2V0T2JqZWN0RGVlcENvcHksIGlzTm90RW1wdHlWYWx1ZSB9IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHsgVHVpRGF5LCBUdWlEYXlSYW5nZSB9IGZyb20gXCJAdGFpZ2EtdWkvY2RrXCI7XG5pbXBvcnQgeyBHb29nbGVNYXBzU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9nb29nbGUtbWFwcy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBZ2VudFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYWdlbnQuc2VydmljZVwiO1xuaW1wb3J0IHsgT3BlblN0cmVldE1hcHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL29wZW4tc3RyZWV0LW1hcHMuc2VydmljZVwiO1xuaW1wb3J0IHtcbiAgY29udmVydEt3aWtVSURhdGVUb1N0cmluZ0Zvcm1hdCxcbiAgY29udmVydE5vcm1hbERhdGVUb1N0cmluZ0Zvcm1hdFxufSBmcm9tIFwiLi4vLi4vLi4vdjIvaGVscGVycy9kYXRlLmhlbHBsZXJzXCI7XG5pbXBvcnQgeyBzb3J0SXRlbXMgfSBmcm9tIFwiLi4vLi4vLi4vdjIvaGVscGVycy9hcnJheS5oZWxwZXJcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImN1c3RvbWVyLWxpc3RcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9jdXN0b21lci1saXN0LmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9jdXN0b21lci1saXN0LmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbWVyTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIGN1c3RvbWVyczogYW55O1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpZzogYW55O1xuXG4gIEBPdXRwdXQoKVxuICBuZXh0U3RlcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcmVtb3ZlVGFzayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgZmlsdGVyVGFza0xpc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgc2VhcmNoVGV4dDtcblxuICBsYXN0SW5mb1dpbmRvd09wZW5lZDogYW55O1xuXG4gIGZpbHRlcmVkRGF0YSA9IFtdO1xuXG4gIGZvcm1Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG5cbiAgc2VhcmNoVGV4dEZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcblxuICBzZWFyY2hEYXRlRm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xuXG4gIHNvcnRGaWx0ZXJLZXlGb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG5cbiAgc29ydEluQXNjZW5kaW5nT3JkZXIgPSB0cnVlO1xuXG4gIGZyb21EYXRlOiBzdHJpbmcgfCBEYXRlO1xuXG4gIHRvRGF0ZTogc3RyaW5nIHwgRGF0ZTtcblxuICBtYXg6IFR1aURheSA9IG5ldyBUdWlEYXkoXG4gICAgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLFxuICAgIG5ldyBEYXRlKCkuZ2V0TW9udGgoKSxcbiAgICBuZXcgRGF0ZSgpLmdldERhdGUoKVxuICApO1xuXG4gIG1heExlbmd0aDogYW55O1xuXG4gIC8vIFNvcnRpbmcgVmFyaWFibGVzXG4gIHNvcnRGaWx0ZXJLZXkgPSBcIlwiO1xuXG4gIHNvcnRGaWx0ZXJPcHRpb25zID0gW1widXNlcl9pZFwiLCBcInNlc3Npb25fc3RhdHVzXCJdO1xuXG4gIGFjdGl2ZVNlYXJjaEFjdGlvbjogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrUGVyZm9ybUFjdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZ29vZ2xlTWFwc1NlcnZpY2U6IEdvb2dsZU1hcHNTZXJ2aWNlLFxuICAgIHB1YmxpYyBvcGVuU3RyZWV0TWFwc1NlcnZpY2U6IE9wZW5TdHJlZXRNYXBzU2VydmljZSxcbiAgICBwdWJsaWMgYWdlbnRTZXJ2aWNlOiBBZ2VudFNlcnZpY2VcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHktZnVuY3Rpb25cbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaGFuZGxlSW5pdGlhbERhdGVSYW5nZSgpO1xuICAgIHRoaXMuaGFuZGxlU2VhcmNoQW5kU29ydEZvcm1Db250cm9scygpO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja1NlYXJjaFR5cGUodHlwZSkge1xuICAgIGlmICh0aGlzLmFjdGl2ZVNlYXJjaEFjdGlvbiAhPT0gdHlwZSkge1xuICAgICAgdGhpcy5hY3RpdmVTZWFyY2hBY3Rpb24gPSB0eXBlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjdGl2ZVNlYXJjaEFjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVJbml0aWFsRGF0ZVJhbmdlKCkge1xuICAgIGNvbnN0IHNlYXJjaEZpbHRlclN0YXJ0UG9pbnQgPSB0aGlzLmNvbmZpZz8uZXh0ZW5kZWRGbGFnc1xuICAgICAgPy5zZWFyY2hGaWx0ZXJTdGFydFBvaW50ID8/IHtcbiAgICAgIGRheTogMCxcbiAgICAgIG1vbnRoOiAwLFxuICAgICAgeWVhcjogMFxuICAgIH07XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSAtIHNlYXJjaEZpbHRlclN0YXJ0UG9pbnQ/LnllYXIgPz8gMCxcbiAgICAgIGN1cnJlbnREYXRlLmdldE1vbnRoKCkgLSBzZWFyY2hGaWx0ZXJTdGFydFBvaW50Py5tb250aCA/PyAwLFxuICAgICAgY3VycmVudERhdGUuZ2V0RGF0ZSgpIC0gc2VhcmNoRmlsdGVyU3RhcnRQb2ludD8uZGF5ID8/IDBcbiAgICApO1xuXG4gICAgdGhpcy5mcm9tRGF0ZSA9IGNvbnZlcnROb3JtYWxEYXRlVG9TdHJpbmdGb3JtYXQoc3RhcnREYXRlKTtcbiAgICB0aGlzLnRvRGF0ZSA9IGNvbnZlcnROb3JtYWxEYXRlVG9TdHJpbmdGb3JtYXQobnVsbCk7XG5cbiAgICB0aGlzLnNlYXJjaERhdGVGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCh7XG4gICAgICB2YWx1ZTogbmV3IFR1aURheVJhbmdlKFxuICAgICAgICBuZXcgVHVpRGF5KFxuICAgICAgICAgIHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgIHN0YXJ0RGF0ZS5nZXRNb250aCgpLFxuICAgICAgICAgIHN0YXJ0RGF0ZS5nZXREYXRlKClcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy5tYXhcbiAgICAgICksXG4gICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICB9KTtcbiAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKFwic2VhcmNoLWRhdGVcIiwgdGhpcy5zZWFyY2hEYXRlRm9ybUNvbnRyb2wpO1xuICB9XG5cbiAgaGFuZGxlU2VhcmNoQW5kU29ydEZvcm1Db250cm9scygpIHtcbiAgICB0aGlzLnNlYXJjaFRleHRGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChcIlwiKTtcbiAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKFwic2VhcmNoLXRleHRcIiwgdGhpcy5zZWFyY2hUZXh0Rm9ybUNvbnRyb2wpO1xuXG4gICAgdGhpcy5zb3J0RmlsdGVyS2V5Rm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woXCJcIik7XG4gICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChcInNvcnQtZmlsdGVyXCIsIHRoaXMuc29ydEZpbHRlcktleUZvcm1Db250cm9sKTtcbiAgICB0aGlzLnNvcnRGaWx0ZXJPcHRpb25zID1cbiAgICAgIHRoaXMuY29uZmlnPy5leHRlbmRlZEZsYWdzPy5zb3J0RmlsdGVyS2V5cyA/PyB0aGlzLnNvcnRGaWx0ZXJPcHRpb25zO1xuICB9XG5cbiAgYXN5bmMgc2V0VXBNYXBzKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZz8ubWFwcz8uaXNTaG93TWFwcykge1xuICAgICAgaWYgKHRoaXMuY29uZmlnPy5tYXBzPy5tYXBUeXBlID09PSBcIm9wZW4tc3RyZWV0XCIpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5vcGVuU3RyZWV0TWFwc1NlcnZpY2UuaW5pdGlhbGl6ZU1hcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5nb29nbGVNYXBzU2VydmljZS5pbml0aWFsaXplTWFwKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2V0Q3VzdG9tZXJzTGlzdCgpIHtcbiAgICBpZiAodGhpcy5jb25maWc/Lm1hcHM/LmlzU2hvd01hcHMpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gYXdhaXQgdGhpcy5wbG90TWFya2Vycyh0aGlzLmN1c3RvbWVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gdGhpcy5jdXN0b21lcnM7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMubWF4TGVuZ3RoID1cbiAgICAgIHRoaXMuY29uZmlnPy5leHRlbmRlZEZsYWdzPy5zZWFyY2hGaWx0ZXJUaHJlc2hvbGQgPz8gdGhpcy5tYXhMZW5ndGg7XG4gICAgc2V0VGltZW91dChhc3luYygpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0VXBNYXBzKCk7XG4gICAgICBhd2FpdCB0aGlzLnNldEN1c3RvbWVyc0xpc3QoKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25DaGFuZ2VzKCkge1xuICAgIGF3YWl0IHRoaXMuc2V0Q3VzdG9tZXJzTGlzdCgpO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja05leHQoZSkge1xuICAgIHRoaXMubmV4dFN0ZXAuZW1pdChlKTtcbiAgfVxuXG4gIGFzeW5jIHBsb3RNYXJrZXJzKGN1c3RvbWVycykge1xuICAgIGlmICghdGhpcy5jb25maWc/LnV0aWxpdHlGbGFncz8uaXNQbG90Q29tcGxldGVkVGFza01hcmtlcnMpIHtcbiAgICAgIGN1c3RvbWVycyA9IGN1c3RvbWVycy5maWx0ZXIoKGN1c3RvbWVyKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFnZW50U2VydmljZS5jYW5QbG90TWFya2VycyhjdXN0b21lci5zZXNzaW9uX3N0YXR1cyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWc/Lm1hcHM/Lm1hcFR5cGUgPT09IFwib3Blbi1zdHJlZXRcIikge1xuICAgICAgY3VzdG9tZXJzID1cbiAgICAgICAgYXdhaXQgdGhpcy5vcGVuU3RyZWV0TWFwc1NlcnZpY2UucGxvdERpcmVjdGlvbnNGb3JBbGxUYXNrcyhjdXN0b21lcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXN0b21lcnMgPVxuICAgICAgICBhd2FpdCB0aGlzLmdvb2dsZU1hcHNTZXJ2aWNlLnBsb3REaXJlY3Rpb25zRm9yQWxsVGFza3MoY3VzdG9tZXJzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VzdG9tZXJzO1xuICB9XG5cbiAgaGFuZGxlT25DaGFuZ2VEYXRlUmFuZ2UoZXZlbnQpIHtcbiAgICB0aGlzLmhhbmRsZUNoYW5nZURhdGVSYW5nZUZvcm1hdChldmVudCk7XG4gICAgdGhpcy5oYW5kbGVPbkZpbHRlclRhc2tMaXN0KHtcbiAgICAgIGZyb21fZGF0ZTogdGhpcy5mcm9tRGF0ZSxcbiAgICAgIHRvX2RhdGU6IHRoaXMudG9EYXRlXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrQ2hhbmdlU29ydE9yZGVyKCkge1xuICAgIHRoaXMuc29ydEluQXNjZW5kaW5nT3JkZXIgPSAhdGhpcy5zb3J0SW5Bc2NlbmRpbmdPcmRlcjtcbiAgICB0aGlzLmhhbmRsZU9uQ2hhbmdlU29ydEZpbHRlcihmYWxzZSk7XG4gIH1cblxuICBoYW5kbGVPbkNoYW5nZVNvcnRGaWx0ZXIoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCAmJiBpc05vdEVtcHR5VmFsdWUoZXZlbnQudmFsdWUpKSB7XG4gICAgICB0aGlzLnNvcnRGaWx0ZXJLZXkgPSBldmVudC52YWx1ZTtcbiAgICAgIHRoaXMuaGFuZGxlT25Tb3J0VGFza0l0ZW1zKHRoaXMuc29ydEZpbHRlcktleSwgdGhpcy5zb3J0SW5Bc2NlbmRpbmdPcmRlcik7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlT25Tb3J0VGFza0l0ZW1zKGtleSwgb3JkZXIpIHtcbiAgICBjb25zdCBzb3J0ZWRUYXNrSXRlbXMgPSBzb3J0SXRlbXModGhpcy5maWx0ZXJlZERhdGEsIGtleSwgb3JkZXIpO1xuICAgIHRoaXMuZmlsdGVyZWREYXRhID0gZ2V0T2JqZWN0RGVlcENvcHkoc29ydGVkVGFza0l0ZW1zKTtcbiAgfVxuXG4gIGhhbmRsZUNoYW5nZURhdGVSYW5nZUZvcm1hdChldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50LnZhbHVlPy5mcm9tICYmIGV2ZW50LnZhbHVlPy50bykge1xuICAgICAgdGhpcy5mcm9tRGF0ZSA9IGNvbnZlcnRLd2lrVUlEYXRlVG9TdHJpbmdGb3JtYXQoZXZlbnQudmFsdWUuZnJvbSk7XG4gICAgICB0aGlzLnRvRGF0ZSA9IGNvbnZlcnRLd2lrVUlEYXRlVG9TdHJpbmdGb3JtYXQoZXZlbnQudmFsdWUudG8pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU9uQ2hhbmdlU2VhcmNoVGV4dChldmVudCkge1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9IGV2ZW50LnZhbHVlO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja1JlbW92ZVRhc2sodGFzaykge1xuICAgIHRoaXMucmVtb3ZlVGFzay5lbWl0KHRhc2spO1xuICB9XG5cbiAgaGFuZGxlT25GaWx0ZXJUYXNrTGlzdChmaWx0ZXIpIHtcbiAgICB0aGlzLmZpbHRlclRhc2tMaXN0LmVtaXQoZmlsdGVyKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2tQZXJmb3JtQWN0aW9uKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2xpY2tQZXJmb3JtQWN0aW9uLmVtaXQoZXZlbnQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3VzdG9tZXItbGlzdC13cmFwcGVyXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImN1c3RvbWVyLWxpc3QtZmlsdGVyXCJcbiAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwidGFzay1saXN0LXNlYXJjaC1pY29uc1wiPlxuICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgYXBwZWFyYW5jZT1cIm1vbm9cIlxuICAgICAgICBpY29uPVwidHVpSWNvblNlYXJjaExhcmdlXCJcbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlT25DbGlja1NlYXJjaFR5cGUoJ3NlYXJjaC10ZXh0JylcIlxuICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgIGFwcGVhcmFuY2U9XCJtb25vXCJcbiAgICAgICAgaWNvbj1cInR1aUljb25DYWxlbmRhckxhcmdlXCJcbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlT25DbGlja1NlYXJjaFR5cGUoJ3NlYXJjaC1kYXRlJylcIlxuICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgIGFwcGVhcmFuY2U9XCJtb25vXCJcbiAgICAgICAgaWNvbj1cInR1aUljb25GaWx0ZXJMYXJnZVwiXG4gICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChvbkNsaWNrKT1cImhhbmRsZU9uQ2xpY2tTZWFyY2hUeXBlKCdzb3J0LWZpbHRlcicpXCJcbiAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInRhc2stbGlzdC1zZWFyY2gtYWN0aW9uXCJcbiAgICAgICpuZ0lmPVwiYWN0aXZlU2VhcmNoQWN0aW9uXCJcbiAgICA+XG4gICAgICA8a3dpa3VpLWlucHV0LWRhdGUtcmFuZ2VcbiAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWFyY2hBY3Rpb24gPT0gJ3NlYXJjaC1kYXRlJ1wiXG4gICAgICAgIGNsYXNzPVwidGFzay1saXN0LWRhdGUtYm94XCJcbiAgICAgICAgbGFiZWw9XCJTZWFyY2ggYnkgRGF0ZSBSYW5nZVwiXG4gICAgICAgIGlkPVwiZGF0ZVJhbmdlXCJcbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgIFttYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoLWRhdGVcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoRGF0ZUZvcm1Db250cm9sXCJcbiAgICAgICAgKGdldEtleVZhbHVlKT1cImhhbmRsZU9uQ2hhbmdlRGF0ZVJhbmdlKCRldmVudClcIlxuICAgICAgPjwva3dpa3VpLWlucHV0LWRhdGUtcmFuZ2U+XG5cbiAgICAgIDxrd2lrdWktaW5wdXRcbiAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWFyY2hBY3Rpb24gPT0gJ3NlYXJjaC10ZXh0J1wiXG4gICAgICAgIGxhYmVsPVwiU2VhcmNoXCJcbiAgICAgICAgaWQ9XCJzZWFyY2hcIlxuICAgICAgICBpY29uPVwidHVpSWNvblNlYXJjaFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGFueSB0YXNrIGZyb20gaGVyZVwiXG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaFRleHRGb3JtQ29udHJvbFwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaC10ZXh0XCJcbiAgICAgICAgKGdldEtleVZhbHVlKT1cImhhbmRsZU9uQ2hhbmdlU2VhcmNoVGV4dCgkZXZlbnQpXCJcbiAgICAgID48L2t3aWt1aS1pbnB1dD5cblxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImFjdGl2ZVNlYXJjaEFjdGlvbiA9PSAnc29ydC1maWx0ZXInXCJcbiAgICAgICAgY2xhc3M9XCJ0YXNrLWxpc3Qtc29ydC1hY3Rpb25cIlxuICAgICAgPlxuICAgICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCJcbiAgICAgICAgICBbaWNvbl09XCJcbiAgICAgICAgICAgIHNvcnRJbkFzY2VuZGluZ09yZGVyXG4gICAgICAgICAgICAgID8gJ3R1aUljb25DaGV2cm9uc1VwTGFyZ2UnXG4gICAgICAgICAgICAgIDogJ3R1aUljb25DaGV2cm9uc0Rvd25MYXJnZSdcbiAgICAgICAgICBcIlxuICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVPbkNsaWNrQ2hhbmdlU29ydE9yZGVyKClcIlxuICAgICAgICA+PC9rd2lrdWktYnV0dG9uPlxuICAgICAgICA8a3dpa3VpLWlucHV0LXNlbGVjdFxuICAgICAgICAgIGNsYXNzPVwidGFzay1saXN0LXNvcnQta2V5XCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzb3J0LWZpbHRlclwiXG4gICAgICAgICAgbGFiZWw9XCJTb3J0IEJ5IEtleVwiXG4gICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzb3J0RmlsdGVyS2V5Rm9ybUNvbnRyb2xcIlxuICAgICAgICAgIFtvcHRpb25zXT1cInNvcnRGaWx0ZXJPcHRpb25zXCJcbiAgICAgICAgICBbc2VhcmNoYWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgKGdldEtleVZhbHVlKT1cImhhbmRsZU9uQ2hhbmdlU29ydEZpbHRlcigkZXZlbnQpXCJcbiAgICAgICAgPjwva3dpa3VpLWlucHV0LXNlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tZXItdGFzay1saXN0XCI+XG4gICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxuICAgICAgaXRlbVNpemU9XCIxXCJcbiAgICAgIGNsYXNzPVwiY3VzdG9tZXItdGFzay1saXN0LXNjcm9sbFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICAqY2RrVmlydHVhbEZvcj1cIlxuICAgICAgICAgIGxldCBjdXN0b21lciBvZiBmaWx0ZXJlZERhdGEgfCBmaWx0ZXI6IHNlYXJjaFRleHQ7XG4gICAgICAgICAgaW5kZXggYXMgaW5kZXhcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGN1c3RvbWVyLXRpbGVcbiAgICAgICAgICBjbGFzcz1cImV4YW1wbGUtaXRlbVwiXG4gICAgICAgICAgW2N1c3RvbWVyXT1cImN1c3RvbWVyXCJcbiAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgW2luZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAobmV4dFN0ZXApPVwiaGFuZGxlT25DbGlja05leHQoJGV2ZW50KVwiXG4gICAgICAgICAgKHJlbW92ZVRhc2spPVwiaGFuZGxlT25DbGlja1JlbW92ZVRhc2soJGV2ZW50KVwiXG4gICAgICAgICAgKG9uQ2xpY2tQZXJmb3JtQWN0aW9uKT1cImhhbmRsZU9uQ2xpY2tQZXJmb3JtQWN0aW9uKCRldmVudClcIlxuICAgICAgICA+PC9jdXN0b21lci10aWxlPlxuICAgICAgPC9kaXY+XG4gICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cImN1c3RvbWVyLWxpc3QtZW1wdHlcIlxuICAgICpuZ0lmPVwiZmlsdGVyZWREYXRhLmxlbmd0aCA9PT0gMFwiXG4gID5cbiAgICBObyBUYXNrcyBmb3IgdGhlIGdpdmVuIERhdGUuXG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|