tnx-shared 5.1.26 → 5.1.30
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/tnx-shared.umd.js +1999 -249
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/classes/base/data-list-base.d.ts +2 -0
- package/classes/base/data-list-base.d.ts.map +1 -1
- package/classes/form-schema.d.ts +3 -0
- package/classes/form-schema.d.ts.map +1 -1
- package/components/chat/chat-box/chat-box.component.d.ts +102 -0
- package/components/chat/chat-box/chat-box.component.d.ts.map +1 -0
- package/components/chat/chat-box/chat-box.component.ngfactory.d.ts.map +1 -0
- package/components/chat/chat-box/chat-box.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/components/chat/chat-send-message-box/chat-send-message-box.component.d.ts +37 -0
- package/components/chat/chat-send-message-box/chat-send-message-box.component.d.ts.map +1 -0
- package/components/chat/chat-send-message-box/chat-send-message-box.component.ngfactory.d.ts.map +1 -0
- package/components/chat/chat-send-message-box/chat-send-message-box.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/components/chat/common-style.scss.shim.ngstyle.d.ts.map +1 -0
- package/components/chat/models/enums.d.ts +11 -0
- package/components/chat/models/enums.d.ts.map +1 -0
- package/components/chat/models/models.d.ts +10 -0
- package/components/chat/models/models.d.ts.map +1 -0
- package/components/chat/services/chat.service.d.ts +34 -0
- package/components/chat/services/chat.service.d.ts.map +1 -0
- package/components/chat/services/chat.service.ngfactory.d.ts.map +1 -0
- package/components/chat/services/content.service.d.ts +20 -0
- package/components/chat/services/content.service.d.ts.map +1 -0
- package/components/chat/services/content.service.ngfactory.d.ts.map +1 -0
- package/components/chat/services/message-board.service.d.ts +15 -0
- package/components/chat/services/message-board.service.d.ts.map +1 -0
- package/components/chat/services/message-board.service.ngfactory.d.ts.map +1 -0
- package/components/chat/services/status.service.d.ts +14 -0
- package/components/chat/services/status.service.d.ts.map +1 -0
- package/components/chat/services/status.service.ngfactory.d.ts.map +1 -0
- package/components/crud/crud-list/crud-list.component.d.ts +6 -0
- package/components/crud/crud-list/crud-list.component.d.ts.map +1 -1
- package/components/file-explorer/file-manager/file-manager.component.d.ts +6 -0
- package/components/file-explorer/file-manager/file-manager.component.d.ts.map +1 -1
- package/components/file-explorer/models/service-request-model.d.ts +1 -0
- package/components/file-explorer/models/service-request-model.d.ts.map +1 -1
- package/components/statemachines/models/enums.d.ts +4 -0
- package/components/statemachines/models/enums.d.ts.map +1 -1
- package/components/statemachines/statemachines-designer/statemachines-designer.component.d.ts +1 -1
- package/components/statemachines/statemachines-designer/statemachines-designer.component.d.ts.map +1 -1
- package/components/tn-custom-scrollbar/tn-custom-scrollbar.component.d.ts +1 -0
- package/components/tn-custom-scrollbar/tn-custom-scrollbar.component.d.ts.map +1 -1
- package/components/tn-dialog/tn-dialog.component.d.ts +1 -0
- package/components/tn-dialog/tn-dialog.component.d.ts.map +1 -1
- package/components/user-picker/user-picker-dialog/user-picker-dialog.component.d.ts +23 -0
- package/components/user-picker/user-picker-dialog/user-picker-dialog.component.d.ts.map +1 -0
- package/components/user-picker/user-picker-dialog/user-picker-dialog.component.ngfactory.d.ts.map +1 -0
- package/components/user-picker/user-picker-dialog/user-picker-dialog.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/components/workflow/permission-sharing/permission-sharing.component.d.ts +21 -0
- package/components/workflow/permission-sharing/permission-sharing.component.d.ts.map +1 -0
- package/components/workflow/permission-sharing/permission-sharing.component.ngfactory.d.ts.map +1 -0
- package/components/workflow/permission-sharing/permission-sharing.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/components/workflow/services/workflow-permission.service.d.ts +10 -0
- package/components/workflow/services/workflow-permission.service.d.ts.map +1 -0
- package/components/workflow/services/workflow-permission.service.ngfactory.d.ts.map +1 -0
- package/components/workflow/workflow-history-new/workflow-history-new.component.d.ts.map +1 -1
- package/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.d.ts +6 -2
- package/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.d.ts.map +1 -1
- package/congviec/congviec/congviec-form/congviec-form.component.d.ts +9 -1
- package/congviec/congviec/congviec-form/congviec-form.component.d.ts.map +1 -1
- package/esm2015/classes/base/data-form-base.js +3 -3
- package/esm2015/classes/base/data-list-base.js +41 -6
- package/esm2015/classes/form-schema.js +1 -1
- package/esm2015/components/chat/chat-box/chat-box.component.js +626 -0
- package/esm2015/components/chat/chat-send-message-box/chat-send-message-box.component.js +245 -0
- package/esm2015/components/chat/models/enums.js +13 -0
- package/esm2015/components/chat/models/models.js +12 -0
- package/esm2015/components/chat/services/chat.service.js +113 -0
- package/esm2015/components/chat/services/content.service.js +57 -0
- package/esm2015/components/chat/services/message-board.service.js +40 -0
- package/esm2015/components/chat/services/status.service.js +36 -0
- package/esm2015/components/crud/crud-list/crud-list.component.js +55 -4
- package/esm2015/components/file-explorer/file-manager/file-manager.component.js +69 -16
- package/esm2015/components/file-explorer/file-viewer/file-viewer.component.js +2 -2
- package/esm2015/components/file-explorer/models/service-request-model.js +5 -2
- package/esm2015/components/statemachines/models/enums.js +6 -1
- package/esm2015/components/tn-custom-scrollbar/tn-custom-scrollbar.component.js +26 -11
- package/esm2015/components/tn-dialog/tn-dialog.component.js +4 -2
- package/esm2015/components/user-picker/user-picker-dialog/user-picker-dialog.component.js +52 -0
- package/esm2015/components/workflow/permission-sharing/permission-sharing.component.js +123 -0
- package/esm2015/components/workflow/services/workflow-permission.service.js +27 -0
- package/esm2015/components/workflow/workflow-history-new/workflow-history-new.component.js +4 -1
- package/esm2015/congviec/cauhinh-workflow/cauhinh-workflow-detail/cauhinh-workflow-detail.component.js +2 -2
- package/esm2015/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.js +38 -14
- package/esm2015/congviec/congviec/congviec-form/congviec-form.component.js +25 -4
- package/esm2015/congviec/congviec/congviec.component.js +3 -3
- package/esm2015/models/basic-user-info.js +6 -1
- package/esm2015/public-api.js +4 -1
- package/esm2015/services/base.service.js +33 -9
- package/esm2015/services/common.service.js +3 -18
- package/esm2015/services/crud.service.js +56 -41
- package/esm2015/services/notifier.service.js +2 -2
- package/esm2015/services/user.service.js +37 -23
- package/esm2015/tnx-shared.js +49 -43
- package/esm2015/tnx-shared.module.js +10 -2
- package/fesm2015/tnx-shared.js +1705 -202
- package/fesm2015/tnx-shared.js.map +1 -1
- package/models/basic-user-info.d.ts +2 -3
- package/models/basic-user-info.d.ts.map +1 -1
- package/package.json +2 -2
- package/public-api.d.ts +3 -0
- package/public-api.d.ts.map +1 -1
- package/services/base.service.d.ts +5 -1
- package/services/base.service.d.ts.map +1 -1
- package/services/common.service.d.ts +3 -3
- package/services/common.service.d.ts.map +1 -1
- package/services/crud.service.d.ts.map +1 -1
- package/services/notifier.service.d.ts +1 -1
- package/services/notifier.service.d.ts.map +1 -1
- package/services/user.service.d.ts +14 -2
- package/services/user.service.d.ts.map +1 -1
- package/tnx-shared.d.ts +48 -42
- package/tnx-shared.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
- package/tnx-shared.module.d.ts +5 -1
- package/tnx-shared.module.d.ts.map +1 -1
- package/tnx-shared.module.ngfactory.d.ts.map +1 -1
|
@@ -15,8 +15,10 @@ export class BaseCongviecDinhkemComponent extends DataListBase {
|
|
|
15
15
|
this.fileDataService = fileDataService;
|
|
16
16
|
this.formState = FormState.VIEW;
|
|
17
17
|
this.layoutFile = EnumFileLayout;
|
|
18
|
-
this.formModel = {};
|
|
19
18
|
this.enumFormState = FormState;
|
|
19
|
+
this.formModel = {};
|
|
20
|
+
this.showAttachLinkBox = false;
|
|
21
|
+
this.typedLink = '';
|
|
20
22
|
}
|
|
21
23
|
ngOnInit() {
|
|
22
24
|
this.setting.objectName = 'mục đính kèm';
|
|
@@ -96,37 +98,59 @@ export class BaseCongviecDinhkemComponent extends DataListBase {
|
|
|
96
98
|
return __awaiter(this, void 0, void 0, function* () {
|
|
97
99
|
const content = this._commonService.pasteByStorage();
|
|
98
100
|
if (content) {
|
|
99
|
-
const obj = this.
|
|
100
|
-
console.log('obj parsed', obj);
|
|
101
|
+
const obj = this.parseAttachLink(content);
|
|
101
102
|
if (obj.length > 0) {
|
|
102
|
-
this._notifierService.showSuccess('Đang thêm mục đính kèm');
|
|
103
103
|
this._congViecDinhKemService.themDinhKemNghiepVu(this.taskId, obj).then(rs => {
|
|
104
104
|
if (rs.success) {
|
|
105
|
-
this._notifierService.showSuccess('Thêm mục đính kèm thành công');
|
|
105
|
+
this._notifierService.showSuccess('Thêm mục đính kèm thành công!');
|
|
106
106
|
this.reload();
|
|
107
107
|
this._commonService.clearClipboardStorage();
|
|
108
108
|
}
|
|
109
109
|
else {
|
|
110
|
-
this.
|
|
110
|
+
this.showAttachLinkBox = true;
|
|
111
111
|
}
|
|
112
112
|
}).catch(err => {
|
|
113
|
-
|
|
114
|
-
this._notifierService.showWarning('Thêm mục đính kèm không thành công');
|
|
113
|
+
this.showAttachLinkBox = true;
|
|
115
114
|
});
|
|
116
115
|
}
|
|
117
116
|
else {
|
|
118
|
-
this.
|
|
117
|
+
this.showAttachLinkBox = true;
|
|
119
118
|
}
|
|
120
119
|
}
|
|
121
120
|
else {
|
|
122
|
-
this.
|
|
121
|
+
this.showAttachLinkBox = true;
|
|
123
122
|
}
|
|
124
123
|
});
|
|
125
124
|
}
|
|
125
|
+
addAttachLink() {
|
|
126
|
+
if (this.typedLink && this.typedLink.length > 0) {
|
|
127
|
+
const obj = this.parseAttachLink(this.typedLink);
|
|
128
|
+
if (obj.length > 0) {
|
|
129
|
+
this._congViecDinhKemService.themDinhKemNghiepVu(this.taskId, obj).then(rs => {
|
|
130
|
+
if (rs.success) {
|
|
131
|
+
this._notifierService.showSuccess('Thêm mục đính kèm thành công!');
|
|
132
|
+
this.showAttachLinkBox = false;
|
|
133
|
+
this.typedLink = '';
|
|
134
|
+
this.reload();
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
this._notifierService.showWarning('Liên kết không hợp lệ!');
|
|
138
|
+
}
|
|
139
|
+
}).catch(err => {
|
|
140
|
+
this._notifierService.showWarning('Liên kết không hợp lệ!');
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
this._notifierService.showWarning('Liên kết không hợp lệ!');
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
focusInput(input) {
|
|
149
|
+
input.focus();
|
|
150
|
+
}
|
|
126
151
|
// http://localhost:27230/universal-link?serviceCode=congviec&entity=DM_Priority&entityKey=0911f3e7-3db0-4b68-87cd-07d425741e9e&state=&sourcePath=http://localhost:27230/dm-priority
|
|
127
|
-
|
|
152
|
+
parseAttachLink(content) {
|
|
128
153
|
const links = content.split('\r\n');
|
|
129
|
-
console.log('links', links);
|
|
130
154
|
const op = [];
|
|
131
155
|
for (const link of links) {
|
|
132
156
|
const temp = link.split('universal-link')[1];
|
|
@@ -170,7 +194,7 @@ export class BaseCongviecDinhkemComponent extends DataListBase {
|
|
|
170
194
|
BaseCongviecDinhkemComponent.decorators = [
|
|
171
195
|
{ type: Component, args: [{
|
|
172
196
|
selector: 'base-congviec-dinhkem',
|
|
173
|
-
template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\" [hiddenAdd]=\"true\"\r\n
|
|
197
|
+
template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\" [hiddenAdd]=\"true\"\r\n [hiddenEdit]=\"true\" [hiddenDelete]=\"true\" [hiddenCopyLink]=\"true\" (onReload)=\"_triggerProcessData($event)\"\r\n (onView)=\"viewLinkItem($event)\" (onDelete)=\"deleteLinkItem($event)\"\r\n (onDeleteMultiple)=\"deleteLinkItemMultiple($event)\" (onReloaded)=\"_unmarkLoading()\">\r\n <ng-template #tieuDe let-rowData=\"rowData\">\r\n {{rowData.tenHienThiDoiTuong}}: [{{rowData.tieuDe}}]\r\n </ng-template>\r\n <ng-template #buttonAfterToolbar>\r\n <button *ngIf=\"formState == enumFormState.EDIT || formState == enumFormState.ADD\" type=\"button\" pButton pRipple\r\n label=\"Th\u00EAm m\u1EDBi\" icon=\"pi pi-plus\" class=\"p-button-text p-button-primary\" (click)=\"themDinhKem()\"></button>\r\n <button type=\"button\"\r\n *ngIf=\"(formState == enumFormState.EDIT || formState == enumFormState.ADD) && model.selectedItems.length > 0\"\r\n pButton pRipple label=\"X\u00F3a\" icon=\"pi pi-trash\" class=\"p-button-rounded p-button-text p-button-danger\"\r\n (click)=\"deleteLinkItemMultiple($event)\"></button>\r\n </ng-template>\r\n <ng-template #function let-rowData=\"rowData\">\r\n <button *ngIf=\"formState == enumFormState.EDIT || formState == enumFormState.ADD\" type=\"button\" pButton pRipple\r\n icon=\"pi pi-trash\" class=\"p-button-rounded p-button-text p-button-danger\" pTooltip=\"H\u1EE7y \u0111\u00EDnh k\u00E8m\"\r\n tooltipPosition=\"top\" (click)=\"deleteLinkItem(rowData)\"></button>\r\n </ng-template>\r\n <ng-template #fileDinhKem let-rowData=\"rowData\">\r\n <file-manager [readonly]=\"true\" [serviceCode]=\"rowData.serviceCode\" [entity]=\"rowData.entity\"\r\n [entityKey]=\"rowData.entityKey\" [layout]=\"layoutFile.SIMPLE\" [fileDataService]=\"fileDataService\">\r\n </file-manager>\r\n </ng-template>\r\n</crud-list>\r\n\r\n<tn-dialog *ngIf=\"showDetailForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"\r\n [header]=\"setting.popupHeader | translate\" [popupSize]=\"setting.popupSize\" (onHide)=\"showDetailForm = false\">\r\n <base-congviec-dinhkem-form #formBase [taskId]=\"taskId\" [parentModel]=\"model\" [parentContext]=\"context\"\r\n [model]=\"formModel\" (onSaved)=\"showDetailForm = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"\r\n (onAfterSaved)=\"onAfterSaved($event)\">\r\n </base-congviec-dinhkem-form>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showAttachLinkBox\" #dialog2 [maximizable]=\"false\" [header]=\"'Nh\u1EADp li\u00EAn k\u1EBFt' | translate\"\r\n [popupSize]=\"{ width: 600, height: 50}\" (onHide)=\"showAttachLinkBox = false; typedLink=''\">\r\n <div class=\"p-col-12\">\r\n <div class=\"p-grid\">\r\n <div class=\"p-md-10\">\r\n <input #input type=\"text\" placeholder=\"Nh\u1EADp li\u00EAn k\u1EBFt sao ch\u00E9p t\u1EEB ph\u00E2n h\u1EC7 kh\u00E1c...\" pInputText\r\n class=\"p-col-12\" [(ngModel)]=\"typedLink\" (keyup.enter)=\"addAttachLink()\" />\r\n </div>\r\n <div class=\"p-md-2\">\r\n <button type=\"button\" pButton class=\"p-button-primary p-col-12\" label=\"Ok\"\r\n [disabled]=\"typedLink != ''? null : true\" (click)=\"addAttachLink()\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <after-view-checked (loaded)=\"focusInput(input)\"></after-view-checked>\r\n</tn-dialog>",
|
|
174
198
|
providers: [ComponentContextService],
|
|
175
199
|
styles: [""]
|
|
176
200
|
},] }
|
|
@@ -185,4 +209,4 @@ BaseCongviecDinhkemComponent.propDecorators = {
|
|
|
185
209
|
formState: [{ type: Input }],
|
|
186
210
|
taskId: [{ type: Input }]
|
|
187
211
|
};
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMtZGluaGtlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29uZ3ZpZWMvY29uZ3ZpZWMvY29uZ3ZpZWMtZGluaGtlbS9jb25ndmllYy1kaW5oa2VtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRS9GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQVE5RSxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsWUFBWTtJQVExRCxZQUNJLFFBQWtCLEVBQ1YsbUJBQXVDLEVBQ3ZDLHVCQUErQyxFQUNoRCxlQUFnQztRQUV2QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKUix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBd0I7UUFDaEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBWGxDLGNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBRzdCLGVBQVUsR0FBRyxjQUFjLENBQUM7UUFFbkMsY0FB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b21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFMaXN0QmFzZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvYmFzZS9kYXRhLWxpc3QtYmFzZSc7XHJcbmltcG9ydCB7IENvbHVtblNjaGVtYUJhc2UsIEVudW1GaWxlTGF5b3V0LCBIZWlnaHRUeXBlLCBNb2RlbFNjaGVtYSwgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgRmlsZURhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9maWxlLWV4cGxvcmVyL3NlcnZpY2VzL2ZpbGUtZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR3JpZEluZm8gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgRm9ybVN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBWaXJ0dWFsQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy92aXJ0dWFsLWJhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmd2aWVjRGluaGtlbVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25ndmllYy1kaW5oa2VtLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2Jhc2UtY29uZ3ZpZWMtZGluaGtlbScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29uZ3ZpZWMtZGluaGtlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jb25ndmllYy1kaW5oa2VtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VDb25ndmllY0RpbmhrZW1Db21wb25lbnQgZXh0ZW5kcyBEYXRhTGlzdEJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgZm9ybVN0YXRlID0gRm9ybVN0YXRlLlZJRVc7XHJcbiAgICBASW5wdXQoKSB0YXNrSWQ6IGFueTtcclxuXHJcbiAgICBwdWJsaWMgbGF5b3V0RmlsZSA9IEVudW1GaWxlTGF5b3V0O1xyXG5cclxuICAgIGZvcm1Nb2RlbDogYW55ID0ge307XHJcbiAgICBwdWJsaWMgZW51bUZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIF92aXJ0dWFsQmFzZVNlcnZpY2U6IFZpcnR1YWxCYXNlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9jb25nVmllY0RpbmhLZW1TZXJ2aWNlOiBDb25ndmllY0RpbmhrZW1TZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBmaWxlRGF0YVNlcnZpY2U6IEZpbGVEYXRhU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5vYmplY3ROYW1lID0gJ23hu6VjIMSRw61uaCBrw6htJztcclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl9jb25nVmllY0RpbmhLZW1TZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1Blcm1pc3Npb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nV29ya2Zsb3cgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nV29ya2Zsb3dOZXcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5QYWdlU2V0dGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkFkdmFuY2VTZWFyY2ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5GaWx0ZXJSb3cgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5DaGVja2JveCA9IHRoaXMuZm9ybVN0YXRlID09IEZvcm1TdGF0ZS5WSUVXO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5GdW5jdGlvbkNvbHVtbiA9IHRoaXMuZm9ybVN0YXRlID09IEZvcm1TdGF0ZS5WSUVXO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5maXhIZWlnaHRUeXBlSW5EaWFsb2cgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGVpZ2h0VHlwZSA9IEhlaWdodFR5cGUuZHluYW1pYztcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNob3dFeHBvcnRTZWxlY3RlZEl0ZW1zID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0dGluZy5tb2RlbFNjaGVtYXMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndGVuSGllblRoaURvaVR1b25nJywgbmFtZTogJ8SQ4buRaSB0xrDhu6NuZycsIGZ1bGxOYW1lOiAnxJDhu5FpIHTGsOG7o25nJywgZGVzY3JpcHRpb246ICfEkOG7kWkgdMaw4bujbmcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ3RpZXVEZScsIG5hbWU6ICdUacOqdSDEkeG7gScsIGZ1bGxOYW1lOiAnVGnDqnUgxJHhu4EnLCBkZXNjcmlwdGlvbjogJ1Rpw6p1IMSR4buBJyB9KSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5jb2xzID0gW1xyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3RpZXVEZScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1Rpw6p1IMSR4buBJyxcclxuICAgICAgICAgICAgICAgIHNob3dFZGl0TGluazogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAndGlldURlJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdmaWxlRGluaEtlbScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0ZpbGUgxJHDrW5oIGvDqG0nLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdmaWxlRGluaEtlbSdcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG1vZGlmeUdyaWRJbmZvKGdyaWRJbmZvPzogR3JpZEluZm8pIHtcclxuICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZENvbmdWaWVjJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMudGFza0lkKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgYWZ0ZXJHZXREYXRhKCkge1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLm1vZGVsLmRhdGFTb3VyY2UpIHtcclxuICAgICAgICAgICAgY29uc3QgZGV0YWlsID0gKGF3YWl0IHRoaXMuX2NvbmdWaWVjRGluaEtlbVNlcnZpY2UuZ2V0RGV0YWlsSXRlbShpdGVtLnNlcnZpY2VDb2RlLCBpdGVtLmVudGl0eSwgaXRlbS5lbnRpdHlLZXksIGl0ZW0uZmllbGRIaWVuVGhpKSkuZGF0YTtcclxuICAgICAgICAgICAgaWYgKGRldGFpbC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnRpZXVEZSA9IGRldGFpbFswXVtpdGVtLmZpZWxkSGllblRoaV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnRpZXVEZSA9ICdLaMO0bmcgdMOsbSB0aOG6pXkgYuG6o24gZ2hpJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaXRlbS50ZW5IaWVuVGhpRG9pVHVvbmcgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS50ZW5IaWVuVGhpRG9pVHVvbmcgPSBpdGVtLnRlbkhpZW5UaGlEb2lUdW9uZy50cmltKCk7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnRlbkhpZW5UaGlEb2lUdW9uZyA9IGl0ZW0udGVuSGllblRoaURvaVR1b25nLnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpICsgaXRlbS50ZW5IaWVuVGhpRG9pVHVvbmcuc3Vic3RyaW5nKDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZpZXdMaW5rSXRlbShldnQpIHtcclxuICAgICAgICB0aGlzLnZpZXdSYXdMaW5rKGV2dCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlTGlua0l0ZW0oZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dDb25maXJtKCdC4bqhbiBjw7MgY2jhuq9jIGNo4bqvbiBtdeG7kW4gaOG7p3kgxJHDrW5oIGvDqG0gYuG6o24gZ2hpIG7DoHk/JykudGhlbihhc3luYyBycyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChycykge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fY29uZ1ZpZWNEaW5oS2VtU2VydmljZS5kZWxldGUoZXZ0LmlkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVMaW5rSXRlbU11bHRpcGxlKGV2dCkge1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93Q29uZmlybSgnQuG6oW4gY8OzIGNo4bqvYyBjaOG6r24gbXXhu5FuIGjhu6d5IMSRw61uaCBrw6htIGLhuqNuIGdoaSBuw6B5PycpLnRoZW4oYXN5bmMgcnMgPT4ge1xyXG4gICAgICAgICAgICBpZiAocnMpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2NvbmdWaWVjRGluaEtlbVNlcnZpY2UuZGVsZXRlTWFueSh0aGlzLm1vZGVsLnNlbGVjdGVkSXRlbXMubWFwKHggPT4geC5pZCkuam9pbignLCcpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB0aGVtRGluaEtlbSgpIHtcclxuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5fY29tbW9uU2VydmljZS5wYXN0ZUJ5U3RvcmFnZSgpO1xyXG4gICAgICAgIGlmIChjb250ZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9iaiA9IHRoaXMucGFyc2VGcm9tQ2xpcGJvYXJkKGNvbnRlbnQpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnb2JqIHBhcnNlZCcsIG9iaik7XHJcbiAgICAgICAgICAgIGlmIChvYmoubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dTdWNjZXNzKCfEkGFuZyB0aMOqbSBt4bulYyDEkcOtbmgga8OobScpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY29uZ1ZpZWNEaW5oS2VtU2VydmljZS50aGVtRGluaEtlbU5naGllcFZ1KHRoaXMudGFza0lkLCBvYmopLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93U3VjY2VzcygnVGjDqm0gbeG7pWMgxJHDrW5oIGvDqG0gdGjDoG5oIGPDtG5nJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbW1vblNlcnZpY2UuY2xlYXJDbGlwYm9hcmRTdG9yYWdlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ1Row6ptIG3hu6VjIMSRw61uaCBrw6htIGtow7RuZyB0aMOgbmggY8O0bmcnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ1Row6ptIG3hu6VjIMSRw61uaCBrw6htIGtow7RuZyB0aMOgbmggY8O0bmcnKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKCdLaMO0bmcgdMOsbSB0aOG6pXkgbeG7pWMgxJHDrW5oIGvDqG0gdHJvbmcgYuG7mSBuaOG7myB04bqhbSwgdnVpIGzDsm5nIHNhbyBjaMOpcCBt4bulYyDEkcOtbmgga8OobSB2w6BvIGLhu5kgbmjhu5sgdOG6oW0gdHLGsOG7m2Mga2hpIHRow6ptJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZygnS2jDtG5nIHTDrG0gdGjhuqV5IG3hu6VjIMSRw61uaCBrw6htIHRyb25nIGLhu5kgbmjhu5sgdOG6oW0sIHZ1aSBsw7JuZyBzYW8gY2jDqXAgbeG7pWMgxJHDrW5oIGvDqG0gdsOgbyBi4buZIG5o4bubIHThuqFtIHRyxrDhu5tjIGtoaSB0aMOqbScpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGh0dHA6Ly9sb2NhbGhvc3Q6MjcyMzAvdW5pdmVyc2FsLWxpbms/c2VydmljZUNvZGU9Y29uZ3ZpZWMmZW50aXR5PURNX1ByaW9yaXR5JmVudGl0eUtleT0wOTExZjNlNy0zZGIwLTRiNjgtODdjZC0wN2Q0MjU3NDFlOWUmc3RhdGU9JnNvdXJjZVBhdGg9aHR0cDovL2xvY2FsaG9zdDoyNzIzMC9kbS1wcmlvcml0eVxyXG4gICAgcGFyc2VGcm9tQ2xpcGJvYXJkKGNvbnRlbnQpIHtcclxuICAgICAgICBjb25zdCBsaW5rcyA9IGNvbnRlbnQuc3BsaXQoJ1xcclxcbicpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdsaW5rcycsIGxpbmtzKTtcclxuICAgICAgICBjb25zdCBvcCA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rcykge1xyXG4gICAgICAgICAgICBjb25zdCB0ZW1wID0gbGluay5zcGxpdCgndW5pdmVyc2FsLWxpbmsnKVsxXTtcclxuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSB0aGlzLnBhcnNlUXVlcnlTdHJpbmcodGVtcCk7XHJcbiAgICAgICAgICAgIGlmIChxdWVyeSAmJiBxdWVyeS5zZXJ2aWNlQ29kZSAmJiBxdWVyeS5lbnRpdHkgJiYgcXVlcnkuZW50aXR5S2V5KSB7XHJcbiAgICAgICAgICAgICAgICBxdWVyeS5yYXdMaW5rID0gbGluaztcclxuICAgICAgICAgICAgICAgIG9wLnB1c2gocXVlcnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBsaW5rICR7bGlua30gaW52YWxpZCB0byBwYXJzZWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvcDtcclxuICAgIH1cclxuXHJcbiAgICBvbkFmdGVyU2F2ZWQoZXZ0KSB7XHJcbiAgICAgICAgLy8gdGhpcy5zaG93RGV0YWlsRm9ybSA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdhZnRlciBzYXZlZCcsIGV2dCk7XHJcbiAgICB9XHJcblxyXG4gICAgcGFyc2VRdWVyeVN0cmluZyhxdWVyeTogc3RyaW5nKTogYW55IHtcclxuICAgICAgICBpZiAoIXF1ZXJ5KSByZXR1cm4gbnVsbDtcclxuICAgICAgICBpZiAocXVlcnkuc3RhcnRzV2l0aCgnPycpKSBxdWVyeSA9IHF1ZXJ5LnN1YnN0cmluZygxKTtcclxuICAgICAgICBjb25zdCBhcnIgPSBxdWVyeS5zcGxpdCgnJicpO1xyXG4gICAgICAgIGNvbnN0IG9iaiA9IHt9O1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnIpIHtcclxuICAgICAgICAgICAgY29uc3QgdGVtcCA9IGl0ZW0uc3BsaXQoJz0nKTtcclxuICAgICAgICAgICAgaWYgKHRlbXBbMV0pIHtcclxuICAgICAgICAgICAgICAgIG9ialt0ZW1wWzBdXSA9IGRlY29kZVVSSUNvbXBvbmVudCh0ZW1wWzFdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG9ialt0ZW1wWzBdXSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9iajtcclxuICAgIH1cclxuXHJcbiAgICB2aWV3UmF3TGluayhyb3dEYXRhOiBhbnkpIHtcclxuICAgICAgICB3aW5kb3cub3Blbihyb3dEYXRhLmxpbmtHb2MpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMtZGluaGtlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29uZ3ZpZWMvY29uZ3ZpZWMvY29uZ3ZpZWMtZGluaGtlbS9jb25ndmllYy1kaW5oa2VtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRS9GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQVM5RSxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsWUFBWTtJQVcxRCxZQUNJLFFBQWtCLEVBQ1YsbUJBQXVDLEVBQ3ZDLHVCQUErQyxFQUNoRCxlQUFnQztRQUV2QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKUix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBd0I7UUFDaEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBZGxDLGNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBRzdCLGVBQVUsR0FBRyxjQUFjLENBQUM7UUFDNUIsa0JB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QUFDO1FBQ2YsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDVCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUM7aUJBQ0k7Z0JBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQzthQUN2QjtTQUNKO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQVk7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7O1lBM01KLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxzaUhBQWdEO2dCQUVoRCxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQWhCK0IsUUFBUTtZQU8vQixrQkFBa0I7WUFDbEIsc0JBQXNCO1lBSnRCLGVBQWU7Ozt3QkFjbkIsS0FBSztxQkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhTGlzdEJhc2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvZGF0YS1saXN0LWJhc2UnO1xyXG5pbXBvcnQgeyBDb2x1bW5TY2hlbWFCYXNlLCBFbnVtRmlsZUxheW91dCwgSGVpZ2h0VHlwZSwgTW9kZWxTY2hlbWEsIE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IEZpbGVEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEdyaWRJbmZvIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IEZvcm1TdGF0ZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgVmlydHVhbEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdmlydHVhbC1iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25ndmllY0RpbmhrZW1TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZ3ZpZWMtZGluaGtlbS5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmFzZS1jb25ndmllYy1kaW5oa2VtJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb25ndmllYy1kaW5oa2VtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Nvbmd2aWVjLWRpbmhrZW0uY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZUNvbmd2aWVjRGluaGtlbUNvbXBvbmVudCBleHRlbmRzIERhdGFMaXN0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSBmb3JtU3RhdGUgPSBGb3JtU3RhdGUuVklFVztcclxuICAgIEBJbnB1dCgpIHRhc2tJZDogYW55O1xyXG5cclxuICAgIHB1YmxpYyBsYXlvdXRGaWxlID0gRW51bUZpbGVMYXlvdXQ7XHJcbiAgICBwdWJsaWMgZW51bUZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTtcclxuXHJcbiAgICBmb3JtTW9kZWw6IGFueSA9IHt9O1xyXG4gICAgc2hvd0F0dGFjaExpbmtCb3ggPSBmYWxzZTtcclxuICAgIHR5cGVkTGluazogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgX3ZpcnR1YWxCYXNlU2VydmljZTogVmlydHVhbEJhc2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NvbmdWaWVjRGluaEtlbVNlcnZpY2U6IENvbmd2aWVjRGluaGtlbVNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGZpbGVEYXRhU2VydmljZTogRmlsZURhdGFTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLm9iamVjdE5hbWUgPSAnbeG7pWMgxJHDrW5oIGvDqG0nO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX2NvbmdWaWVjRGluaEtlbVNlcnZpY2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblNldHRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nUGVybWlzc2lvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblNldHRpbmdXb3JrZmxvdyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblNldHRpbmdXb3JrZmxvd05ldyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblBhZ2VTZXR0aW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuQWR2YW5jZVNlYXJjaCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkZpbHRlclJvdyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkNoZWNrYm94ID0gdGhpcy5mb3JtU3RhdGUgPT0gRm9ybVN0YXRlLlZJRVc7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkZ1bmN0aW9uQ29sdW1uID0gdGhpcy5mb3JtU3RhdGUgPT0gRm9ybVN0YXRlLlZJRVc7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmZpeEhlaWdodFR5cGVJbkRpYWxvZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oZWlnaHRUeXBlID0gSGVpZ2h0VHlwZS5keW5hbWljO1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmcuc2hvd0V4cG9ydFNlbGVjdGVkSXRlbXMgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLm1vZGVsU2NoZW1hcyA9IFtcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICd0ZW5IaWVuVGhpRG9pVHVvbmcnLCBuYW1lOiAnxJDhu5FpIHTGsOG7o25nJywgZnVsbE5hbWU6ICfEkOG7kWkgdMaw4bujbmcnLCBkZXNjcmlwdGlvbjogJ8SQ4buRaSB0xrDhu6NuZycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndGlldURlJywgbmFtZTogJ1Rpw6p1IMSR4buBJywgZnVsbE5hbWU6ICdUacOqdSDEkeG7gScsIGRlc2NyaXB0aW9uOiAnVGnDqnUgxJHhu4EnIH0pLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmNvbHMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndGlldURlJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVGnDqnUgxJHhu4EnLFxyXG4gICAgICAgICAgICAgICAgc2hvd0VkaXRMaW5rOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICd0aWV1RGUnXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2ZpbGVEaW5oS2VtJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnRmlsZSDEkcOtbmgga8OobScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2ZpbGVEaW5oS2VtJ1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbW9kaWZ5R3JpZEluZm8oZ3JpZEluZm8/OiBHcmlkSW5mbykge1xyXG4gICAgICAgIGdyaWRJbmZvLmZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2lkQ29uZ1ZpZWMnLCBPcGVyYXRvci5lcXVhbCwgdGhpcy50YXNrSWQpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBhZnRlckdldERhdGEoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMubW9kZWwuZGF0YVNvdXJjZSkge1xyXG4gICAgICAgICAgICBjb25zdCBkZXRhaWwgPSAoYXdhaXQgdGhpcy5fY29uZ1ZpZWNEaW5oS2VtU2VydmljZS5nZXREZXRhaWxJdGVtKGl0ZW0uc2VydmljZUNvZGUsIGl0ZW0uZW50aXR5LCBpdGVtLmVudGl0eUtleSwgaXRlbS5maWVsZEhpZW5UaGkpKS5kYXRhO1xyXG4gICAgICAgICAgICBpZiAoZGV0YWlsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0udGlldURlID0gZGV0YWlsWzBdW2l0ZW0uZmllbGRIaWVuVGhpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0udGlldURlID0gJ0tow7RuZyB0w6xtIHRo4bqleSBi4bqjbiBnaGknO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnRlbkhpZW5UaGlEb2lUdW9uZyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnRlbkhpZW5UaGlEb2lUdW9uZyA9IGl0ZW0udGVuSGllblRoaURvaVR1b25nLnRyaW0oKTtcclxuICAgICAgICAgICAgICAgIGl0ZW0udGVuSGllblRoaURvaVR1b25nID0gaXRlbS50ZW5IaWVuVGhpRG9pVHVvbmcuc3Vic3RyaW5nKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBpdGVtLnRlbkhpZW5UaGlEb2lUdW9uZy5zdWJzdHJpbmcoMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmlld0xpbmtJdGVtKGV2dCkge1xyXG4gICAgICAgIHRoaXMudmlld1Jhd0xpbmsoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVMaW5rSXRlbShldnQpIHtcclxuICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0NvbmZpcm0oJ0LhuqFuIGPDsyBjaOG6r2MgY2jhuq9uIG114buRbiBo4buneSDEkcOtbmgga8OobSBi4bqjbiBnaGkgbsOgeT8nKS50aGVuKGFzeW5jIHJzID0+IHtcclxuICAgICAgICAgICAgaWYgKHJzKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9jb25nVmllY0RpbmhLZW1TZXJ2aWNlLmRlbGV0ZShldnQuaWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUxpbmtJdGVtTXVsdGlwbGUoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dDb25maXJtKCdC4bqhbiBjw7MgY2jhuq9jIGNo4bqvbiBtdeG7kW4gaOG7p3kgxJHDrW5oIGvDqG0gYuG6o24gZ2hpIG7DoHk/JykudGhlbihhc3luYyBycyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChycykge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fY29uZ1ZpZWNEaW5oS2VtU2VydmljZS5kZWxldGVNYW55KHRoaXMubW9kZWwuc2VsZWN0ZWRJdGVtcy5tYXAoeCA9PiB4LmlkKS5qb2luKCcsJykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHRoZW1EaW5oS2VtKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLl9jb21tb25TZXJ2aWNlLnBhc3RlQnlTdG9yYWdlKCk7XHJcbiAgICAgICAgaWYgKGNvbnRlbnQpIHtcclxuICAgICAgICAgICAgY29uc3Qgb2JqID0gdGhpcy5wYXJzZUF0dGFjaExpbmsoY29udGVudCk7XHJcbiAgICAgICAgICAgIGlmIChvYmoubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY29uZ1ZpZWNEaW5oS2VtU2VydmljZS50aGVtRGluaEtlbU5naGllcFZ1KHRoaXMudGFza0lkLCBvYmopLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93U3VjY2VzcygnVGjDqm0gbeG7pWMgxJHDrW5oIGvDqG0gdGjDoG5oIGPDtG5nIScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlLmNsZWFyQ2xpcGJvYXJkU3RvcmFnZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93QXR0YWNoTGlua0JveCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dBdHRhY2hMaW5rQm94ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93QXR0YWNoTGlua0JveCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0F0dGFjaExpbmtCb3ggPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhZGRBdHRhY2hMaW5rKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGVkTGluayAmJiB0aGlzLnR5cGVkTGluay5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9iaiA9IHRoaXMucGFyc2VBdHRhY2hMaW5rKHRoaXMudHlwZWRMaW5rKTtcclxuICAgICAgICAgICAgaWYgKG9iai5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb25nVmllY0RpbmhLZW1TZXJ2aWNlLnRoZW1EaW5oS2VtTmdoaWVwVnUodGhpcy50YXNrSWQsIG9iaikudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dTdWNjZXNzKCdUaMOqbSBt4bulYyDEkcOtbmgga8OobSB0aMOgbmggY8O0bmchJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0F0dGFjaExpbmtCb3ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50eXBlZExpbmsgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZygnTGnDqm4ga+G6v3Qga2jDtG5nIGjhu6NwIGzhu4chJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ0xpw6puIGvhur90IGtow7RuZyBo4bujcCBs4buHIScpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ0xpw6puIGvhur90IGtow7RuZyBo4bujcCBs4buHIScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvY3VzSW5wdXQoaW5wdXQ6IGFueSkge1xyXG4gICAgICAgIGlucHV0LmZvY3VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaHR0cDovL2xvY2FsaG9zdDoyNzIzMC91bml2ZXJzYWwtbGluaz9zZXJ2aWNlQ29kZT1jb25ndmllYyZlbnRpdHk9RE1fUHJpb3JpdHkmZW50aXR5S2V5PTA5MTFmM2U3LTNkYjAtNGI2OC04N2NkLTA3ZDQyNTc0MWU5ZSZzdGF0ZT0mc291cmNlUGF0aD1odHRwOi8vbG9jYWxob3N0OjI3MjMwL2RtLXByaW9yaXR5XHJcbiAgICBwYXJzZUF0dGFjaExpbmsoY29udGVudCkge1xyXG4gICAgICAgIGNvbnN0IGxpbmtzID0gY29udGVudC5zcGxpdCgnXFxyXFxuJyk7XHJcbiAgICAgICAgY29uc3Qgb3AgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcclxuICAgICAgICAgICAgY29uc3QgdGVtcCA9IGxpbmsuc3BsaXQoJ3VuaXZlcnNhbC1saW5rJylbMV07XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5wYXJzZVF1ZXJ5U3RyaW5nKHRlbXApO1xyXG4gICAgICAgICAgICBpZiAocXVlcnkgJiYgcXVlcnkuc2VydmljZUNvZGUgJiYgcXVlcnkuZW50aXR5ICYmIHF1ZXJ5LmVudGl0eUtleSkge1xyXG4gICAgICAgICAgICAgICAgcXVlcnkucmF3TGluayA9IGxpbms7XHJcbiAgICAgICAgICAgICAgICBvcC5wdXNoKHF1ZXJ5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgbGluayAke2xpbmt9IGludmFsaWQgdG8gcGFyc2VgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb3A7XHJcbiAgICB9XHJcblxyXG4gICAgb25BZnRlclNhdmVkKGV2dCkge1xyXG4gICAgICAgIC8vIHRoaXMuc2hvd0RldGFpbEZvcm0gPSBmYWxzZTtcclxuICAgICAgICBjb25zb2xlLmxvZygnYWZ0ZXIgc2F2ZWQnLCBldnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHBhcnNlUXVlcnlTdHJpbmcocXVlcnk6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgaWYgKCFxdWVyeSkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgaWYgKHF1ZXJ5LnN0YXJ0c1dpdGgoJz8nKSkgcXVlcnkgPSBxdWVyeS5zdWJzdHJpbmcoMSk7XHJcbiAgICAgICAgY29uc3QgYXJyID0gcXVlcnkuc3BsaXQoJyYnKTtcclxuICAgICAgICBjb25zdCBvYmogPSB7fTtcclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXJyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlbXAgPSBpdGVtLnNwbGl0KCc9Jyk7XHJcbiAgICAgICAgICAgIGlmICh0ZW1wWzFdKSB7XHJcbiAgICAgICAgICAgICAgICBvYmpbdGVtcFswXV0gPSBkZWNvZGVVUklDb21wb25lbnQodGVtcFsxXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBvYmpbdGVtcFswXV0gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9XHJcblxyXG4gICAgdmlld1Jhd0xpbmsocm93RGF0YTogYW55KSB7XHJcbiAgICAgICAgd2luZG93Lm9wZW4ocm93RGF0YS5saW5rR29jKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -9,6 +9,7 @@ import { DmLoaiCongViecService } from '../../dm-loai-congviec/services/dm-loai-c
|
|
|
9
9
|
import { DmPriorityService } from '../../dm-priority/services/dm-priority.service';
|
|
10
10
|
import { EnumLoaiDanhSachCongViec } from '../../models/enums';
|
|
11
11
|
import { CongViecService } from '../services/congviec.service';
|
|
12
|
+
import { ComCtxConstants } from '../../../configs/component-context.constant';
|
|
12
13
|
export class BaseCongViecFormComponent extends DataFormBase {
|
|
13
14
|
constructor(_injector, _congViecService, _dmLoaiCongViecService, _dmPriorityService) {
|
|
14
15
|
super(_injector);
|
|
@@ -20,6 +21,12 @@ export class BaseCongViecFormComponent extends DataFormBase {
|
|
|
20
21
|
this.autoFocus = true;
|
|
21
22
|
this.enumFormState = FormState;
|
|
22
23
|
this.enumLoaiDanhSachCongViec = EnumLoaiDanhSachCongViec;
|
|
24
|
+
this.users = {
|
|
25
|
+
taskName: '',
|
|
26
|
+
assigner: 0,
|
|
27
|
+
assignee: 0,
|
|
28
|
+
relatedUsers: [],
|
|
29
|
+
};
|
|
23
30
|
this.tabDataChild = [
|
|
24
31
|
{
|
|
25
32
|
code: 'fileDinhKem',
|
|
@@ -35,6 +42,11 @@ export class BaseCongViecFormComponent extends DataFormBase {
|
|
|
35
42
|
code: 'taskLienQuan',
|
|
36
43
|
icon: 'pi pi-share-alt',
|
|
37
44
|
label: 'Công việc liên quan'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
code: 'traoDoiCongViec',
|
|
48
|
+
icon: 'pi pi-comment',
|
|
49
|
+
label: 'Trao đổi công việc',
|
|
38
50
|
}
|
|
39
51
|
];
|
|
40
52
|
this.handleChangeLoaiCongViecWhenAdd = (evt) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -42,6 +54,9 @@ export class BaseCongViecFormComponent extends DataFormBase {
|
|
|
42
54
|
yield this.loadWorkflowByLoaiCongViec(evt, evt.model.id);
|
|
43
55
|
}
|
|
44
56
|
});
|
|
57
|
+
this.users.assigner = 0;
|
|
58
|
+
this.users.assignee = 0;
|
|
59
|
+
this.users.relatedUsers = [];
|
|
45
60
|
}
|
|
46
61
|
set tenCongViec(value) {
|
|
47
62
|
this._tenCongViec = value;
|
|
@@ -136,18 +151,24 @@ export class BaseCongViecFormComponent extends DataFormBase {
|
|
|
136
151
|
this.setWorkflowDatasource(evt, workflowSetting);
|
|
137
152
|
});
|
|
138
153
|
}
|
|
139
|
-
onBeforeSave() {
|
|
140
|
-
}
|
|
141
154
|
onAfterSave(res) {
|
|
142
155
|
if (this.model.formState == FormState.ADD && res && res.success && res.data) {
|
|
143
156
|
this.onAfterSaved.emit(res.data);
|
|
144
157
|
}
|
|
145
158
|
}
|
|
159
|
+
onTabChange(evt) {
|
|
160
|
+
this.currentTabIndex = evt.index;
|
|
161
|
+
this.users.taskName = this.model.data.ten;
|
|
162
|
+
}
|
|
163
|
+
forcusToFirstInputControl(event) {
|
|
164
|
+
event.preventDefault();
|
|
165
|
+
this.context.fireEvent(ComCtxConstants.COMMON.FOCUS_TO_FIRST_INPUT_CONTROL);
|
|
166
|
+
}
|
|
146
167
|
}
|
|
147
168
|
BaseCongViecFormComponent.decorators = [
|
|
148
169
|
{ type: Component, args: [{
|
|
149
170
|
selector: 'base-congviec-form',
|
|
150
|
-
template: "<crud-form #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\"\r\n
|
|
171
|
+
template: "<crud-form #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\"\r\n [autoFocus]=\"autoFocus\" (onFormReady)=\"_handleFormReady($event)\">\r\n</crud-form>\r\n<base-congviec-dinhkem [loadDetailFromQueryParam]=\"false\" [formState]=\"model.formState\" [taskId]=\"model.data.id\">\r\n</base-congviec-dinhkem>\r\n<div class=\"tab-child\">\r\n <tn-tabview [data]=\"tabDataChild\" (onTabChange)=\"onTabChange($event)\">\r\n <ng-template #fileDinhKem>\r\n <file-manager [loadDetailFromQueryParam]=\"false\" [serviceCode]=\"setting.baseService.serviceCode\"\r\n [entity]=\"setting.baseService.entityName\" [entityKey]=\"model.data.id\"\r\n [readonly]=\"model.formState == enumFormState.VIEW\">\r\n </file-manager>\r\n </ng-template>\r\n <ng-template #taskChild>\r\n <div style=\"height: 100%\">\r\n <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"model.formState\"\r\n [loaiDanhSach]=\"enumLoaiDanhSachCongViec.CongViecCon\" [idCongViec]=\"model.data.id\">\r\n </base-congviec>\r\n </div>\r\n </ng-template>\r\n <ng-template #taskLienQuan>\r\n <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"model.formState\"\r\n [loaiDanhSach]=\"enumLoaiDanhSachCongViec.CongViecLienQuan\" [idCongViec]=\"model.data.id\">\r\n </base-congviec>\r\n </ng-template>\r\n <ng-template #traoDoiCongViec>\r\n <div style=\"height: 350px;\">\r\n <chat-box [showSendMessageBox]=\"false\" [serviceCode]=\"'congviec'\" [entity]=\"'congviec'\"\r\n [taskId]=\"model.data.id\" [parentModel]=\"model\" [parentContext]=\"context\"\r\n [users]=\"users\"\r\n ></chat-box>\r\n </div>\r\n <chat-send-message-box [parentContext]=\"context\">\r\n </chat-send-message-box>\r\n </ng-template>\r\n </tn-tabview>\r\n</div>\r\n<ng-template #buttonTemplate>\r\n <button *ngIf=\"!model.data.__disableEdit && !__isFormView\" type=\"button\" pButton icon=\"pi pi-save\"\r\n class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\" (click)=\"_handleSave($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"_handleCancel($event)\"></button>\r\n</ng-template>\r\n",
|
|
151
172
|
providers: [ComponentContextService],
|
|
152
173
|
styles: [".tab-child{padding:1em}"]
|
|
153
174
|
},] }
|
|
@@ -163,4 +184,4 @@ BaseCongViecFormComponent.propDecorators = {
|
|
|
163
184
|
tenCongViec: [{ type: Input }],
|
|
164
185
|
onAfterSaved: [{ type: Output }]
|
|
165
186
|
};
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29uZ3ZpZWMvY29uZ3ZpZWMvY29uZ3ZpZWMtZm9ybS9jb25ndmllYy1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQThCLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXJOLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQU8vRCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsWUFBWTtJQTZCdkQsWUFDYyxTQUFtQixFQUNyQixnQkFBaUMsRUFDakMsc0JBQTZDLEVBQzdDLGtCQUFxQztRQUU3QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFMUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FB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QUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxHQUFFLENBQUM7SUFDckUsQ0FBQztJQUVLLGdCQUFnQixDQUFDLElBQUk7O1lBQ3ZCLHFDQUFxQztRQUN6QyxDQUFDO0tBQUE7SUFRSywwQkFBMEIsQ0FBQyxHQUFjLEVBQUUsY0FBc0I7O1lBQ25FLE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGtDQUFrQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0csSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNyRCxDQUFDO0tBQUE7SUFFRCxZQUFZO0lBRVosQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFtQjtRQUMzQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksRUFBRTtZQUN6RSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEM7SUFDTCxDQUFDOzs7WUFsSkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLG1oRUFBNkM7Z0JBRTdDLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixDQUFDOzthQUN2Qzs7O1lBaEJpQyxRQUFRO1lBVWpDLGVBQWU7WUFIZixxQkFBcUI7WUFDckIsaUJBQWlCOzs7c0JBVXJCLEtBQUs7MEJBRUwsS0FBSzsyQkFJTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFGb3JtQmFzZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvYmFzZS9kYXRhLWZvcm0tYmFzZSc7XHJcbmltcG9ydCB7IERhdGVDb21wYXJlVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL3ZhbGlkYXRvcnMnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdGUgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEN1c3RvbUNvbnRyb2xTY2hlbWEsIERhdGVUaW1lQ29udHJvbFNjaGVtYSwgRHJvcGRvd25Db250cm9sU2NoZW1hLCBFZGl0b3JDb250cm9sU2NoZW1hLCBFdmVudERhdGEsIEZvcm1Db250cm9sQmFzZSwgT3BlcmF0b3IsIFBlcmNlbnRDb250cm9sU2NoZW1hLCBUZXh0Q29udHJvbFNjaGVtYSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZXNwb25zZS1yZXN1bHQnO1xyXG5pbXBvcnQgeyBEbUxvYWlDb25nVmllY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9kbS1sb2FpLWNvbmd2aWVjL3NlcnZpY2VzL2RtLWxvYWktY29uZ3ZpZWMuc2VydmljZSc7XHJcbmltcG9ydCB7IERtUHJpb3JpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZG0tcHJpb3JpdHkvc2VydmljZXMvZG0tcHJpb3JpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYyB9IGZyb20gJy4uLy4uL21vZGVscy9lbnVtcyc7XHJcbmltcG9ydCB7IENvbmdWaWVjU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Nvbmd2aWVjLnNlcnZpY2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmFzZS1jb25ndmllYy1mb3JtJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb25ndmllYy1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Nvbmd2aWVjLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VDb25nVmllY0Zvcm1Db21wb25lbnQgZXh0ZW5kcyBEYXRhRm9ybUJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgY29udHJvbDogQ3VzdG9tQ29udHJvbFNjaGVtYTtcclxuICAgIF90ZW5Db25nVmllYzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgc2V0IHRlbkNvbmdWaWVjKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl90ZW5Db25nVmllYyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuc2V0VGVuQ29uZ1ZpZWMoKTtcclxuICAgIH1cclxuICAgIEBPdXRwdXQoKSBvbkFmdGVyU2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIGF1dG9Gb2N1cyA9IHRydWU7XHJcbiAgICBwdWJsaWMgZW51bUZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTtcclxuICAgIGVudW1Mb2FpRGFuaFNhY2hDb25nVmllYyA9IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYztcclxuICAgIHRhYkRhdGFDaGlsZDogYW55W10gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2RlOiAnZmlsZURpbmhLZW0nLFxyXG4gICAgICAgICAgICBpY29uOiAncGkgcGktcGFwZXJjbGlwJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdGaWxlIMSRw61uaCBrw6htJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2RlOiAndGFza0NoaWxkJyxcclxuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLWNoZWNrLXNxdWFyZScsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnQ8O0bmcgdmnhu4djIGNvbidcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29kZTogJ3Rhc2tMaWVuUXVhbicsXHJcbiAgICAgICAgICAgIGljb246ICdwaSBwaS1zaGFyZS1hbHQnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ0PDtG5nIHZp4buHYyBsacOqbiBxdWFuJ1xyXG4gICAgICAgIH1cclxuICAgIF07XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfY29uZ1ZpZWNTZXJ2aWNlOiBDb25nVmllY1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfZG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlOiBEbUxvYWlDb25nVmllY1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfZG1Qcmlvcml0eVNlcnZpY2U6IERtUHJpb3JpdHlTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sLl9jb21wb25lbnQgPSB0aGlzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuYXV0b0ZvY3VzID0gIXRoaXMuY29udHJvbDtcclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl9jb25nVmllY1NlcnZpY2U7XHJcbiAgICAgICAgbGV0IG9uQ2hhbmdlTG9haUNvbmdWaWVjID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5faXNGb3JtQWRkTmV3KCkpIHtcclxuICAgICAgICAgICAgb25DaGFuZ2VMb2FpQ29uZ1ZpZWMgPSB0aGlzLmhhbmRsZUNoYW5nZUxvYWlDb25nVmllY1doZW5BZGQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsLmZvcm1TdGF0ZSA9PSBGb3JtU3RhdGUuQUREKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuZGF0YS5pZCA9IHRoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldHRpbmcuc2NoZW1hID0gPEZvcm1Db250cm9sQmFzZVtdPltcclxuICAgICAgICAgICAgbmV3IFRleHRDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndGVuJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVMOqbiBjw7RuZyB2aeG7h2MnLFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiAxMlxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEVkaXRvckNvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdtb1RhJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTuG7mWkgZHVuZyBjw7RuZyB2aeG7h2MnLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogMTJcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBEcm9wZG93bkNvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpZExvYWlDb25nVmllYycsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0zEqW5oIHbhu7FjJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbUxvYWlDb25nVmllY1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBpc1RyZWU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBmaWVsZFRyZWU6ICdpZFBhcmVudCcsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZVBhcmVudFJvb3Q6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZWQ6IG9uQ2hhbmdlTG9haUNvbmdWaWVjXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRQcmlvcml0eScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ8SQ4buZIMawdSB0acOqbicsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fZG1Qcmlvcml0eVNlcnZpY2VcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBEYXRlVGltZUNvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICduZ2F5QmF0RGF1JyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfDoHkgYuG6r3QgxJHhuqd1JyxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDNcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBEYXRlVGltZUNvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICduZ2F5S2V0VGh1YycsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ05nw6B5IGvhur90IHRow7pjJyxcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtcclxuICAgICAgICAgICAgICAgICAgICBuZXcgRGF0ZUNvbXBhcmVWYWxpZGF0b3IoT3BlcmF0b3IuZ3JlYXRlclRoYW5FcXVhbCwgJ25nYXlCYXREYXUnKVxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDNcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBQZXJjZW50Q29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3BoYW5UcmFtJyxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDYsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1Rp4bq/biDEkeG7mSdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLmFkZFNjaGVtYUJhc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvbkZvcm1Jbml0aWFsaXplZChldnQ6IEV2ZW50RGF0YSkge1xyXG4gICAgICAgIGlmICh0aGlzLl9pc0Zvcm1BZGROZXcoKSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb250cm9sICYmIHRoaXMuY29udHJvbC5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGV2dC5tb2RlbCwgdGhpcy5jb250cm9sLmRhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChldnQubW9kZWwuaWRMb2FpQ29uZ1ZpZWMpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZFdvcmtmbG93QnlMb2FpQ29uZ1ZpZWMoZXZ0LCBldnQubW9kZWwuaWRMb2FpQ29uZ1ZpZWMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRUZW5Db25nVmllYygpIHtcclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGEgPSB7IC4uLnRoaXMubW9kZWwuZGF0YSwgdGVuOiB0aGlzLl90ZW5Db25nVmllYyB9O1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG1vZGlmeURldGFpbERhdGEoZGF0YSkge1xyXG4gICAgICAgIC8vIHjhu60gbMO9IGThu68gbGnhu4d1IGzhuqV5IHThu6sgZ2V0IGRldGFpbCB24buBXHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlQ2hhbmdlTG9haUNvbmdWaWVjV2hlbkFkZCA9IGFzeW5jIChldnQ6IEV2ZW50RGF0YSkgPT4ge1xyXG4gICAgICAgIGlmIChldnQuZXZlbnRUeXBlID09ICdjaGFuZ2UnKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZFdvcmtmbG93QnlMb2FpQ29uZ1ZpZWMoZXZ0LCBldnQubW9kZWwuaWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBsb2FkV29ya2Zsb3dCeUxvYWlDb25nVmllYyhldnQ6IEV2ZW50RGF0YSwgaWRMb2FpQ29uZ1ZpZWM6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHdvcmtmbG93U2V0dGluZyA9IGF3YWl0IHRoaXMuX2RtTG9haUNvbmdWaWVjU2VydmljZS5nZXRXb3JrZmxvd1NldHRpbmdCeUlkTG9haUNvbmdWaWVjKGV2dC5tb2RlbC5pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRXb3JrZmxvd0RhdGFzb3VyY2UoZXZ0LCB3b3JrZmxvd1NldHRpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQmVmb3JlU2F2ZSgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgb25BZnRlclNhdmUocmVzOiBSZXNwb25zZVJlc3VsdCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsLmZvcm1TdGF0ZSA9PSBGb3JtU3RhdGUuQUREICYmIHJlcyAmJiByZXMuc3VjY2VzcyAmJiByZXMuZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uQWZ0ZXJTYXZlZC5lbWl0KHJlcy5kYXRhKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29uZ3ZpZWMvY29uZ3ZpZWMvY29uZ3ZpZWMtZm9ybS9jb25ndmllYy1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIsbUJBQW1CLEVBR25CLFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ3BCLE1BQU0sOEJBQThCLENBQUM7QUFFdEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDakcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQVM5RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsWUFBWTtJQWlEdkQsWUFDYyxTQUFtQixFQUNyQixnQkFBaUMsRUFDakMsc0JBQTZDLEVBQzdDLGtCQUFxQztRQUU3QyxLQUFL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O1FBQ1gsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUM5QyxDQUFDO0lBRUQseUJBQXlCLENBQUMsS0FBSztRQUMzQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7OztZQS9LSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIscXBGQUE2QztnQkFFN0MsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7O2FBQ3ZDOzs7WUE5QmlDLFFBQVE7WUFxQmpDLGVBQWU7WUFIZixxQkFBcUI7WUFDckIsaUJBQWlCOzs7c0JBYXJCLEtBQUs7MEJBRUwsS0FBSzsyQkFLTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFGb3JtQmFzZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvYmFzZS9kYXRhLWZvcm0tYmFzZSc7XHJcbmltcG9ydCB7IERhdGVDb21wYXJlVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL3ZhbGlkYXRvcnMnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdGUgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7XHJcbiAgICBDdXN0b21Db250cm9sU2NoZW1hLFxyXG4gICAgRGF0ZVRpbWVDb250cm9sU2NoZW1hLFxyXG4gICAgRHJvcGRvd25Db250cm9sU2NoZW1hLFxyXG4gICAgRWRpdG9yQ29udHJvbFNjaGVtYSxcclxuICAgIEV2ZW50RGF0YSxcclxuICAgIEZvcm1Db250cm9sQmFzZSxcclxuICAgIE9wZXJhdG9yLFxyXG4gICAgUGVyY2VudENvbnRyb2xTY2hlbWEsXHJcbiAgICBUZXh0Q29udHJvbFNjaGVtYVxyXG59IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZXNwb25zZS1yZXN1bHQnO1xyXG5pbXBvcnQgeyBEbUxvYWlDb25nVmllY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9kbS1sb2FpLWNvbmd2aWVjL3NlcnZpY2VzL2RtLWxvYWktY29uZ3ZpZWMuc2VydmljZSc7XHJcbmltcG9ydCB7IERtUHJpb3JpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZG0tcHJpb3JpdHkvc2VydmljZXMvZG0tcHJpb3JpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYyB9IGZyb20gJy4uLy4uL21vZGVscy9lbnVtcyc7XHJcbmltcG9ydCB7IENvbmdWaWVjU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Nvbmd2aWVjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21DdHhDb25zdGFudHMgfSBmcm9tICcuLi8uLi8uLi9jb25maWdzL2NvbXBvbmVudC1jb250ZXh0LmNvbnN0YW50JztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmFzZS1jb25ndmllYy1mb3JtJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb25ndmllYy1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Nvbmd2aWVjLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VDb25nVmllY0Zvcm1Db21wb25lbnQgZXh0ZW5kcyBEYXRhRm9ybUJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgY29udHJvbDogQ3VzdG9tQ29udHJvbFNjaGVtYTtcclxuICAgIF90ZW5Db25nVmllYzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgc2V0IHRlbkNvbmdWaWVjKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl90ZW5Db25nVmllYyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuc2V0VGVuQ29uZ1ZpZWMoKTtcclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KCkgb25BZnRlclNhdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBhdXRvRm9jdXMgPSB0cnVlO1xyXG4gICAgcHVibGljIGVudW1Gb3JtU3RhdGUgPSBGb3JtU3RhdGU7XHJcbiAgICBlbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMgPSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWM7XHJcbiAgICBjdXJyZW50VGFiSW5kZXg6IG51bWJlcjtcclxuICAgIHVzZXJzOiB7XHJcbiAgICAgICAgdGFza05hbWU6IHN0cmluZyxcclxuICAgICAgICBhc3NpZ25lZTogYW55LFxyXG4gICAgICAgIGFzc2lnbmVyOiBhbnksXHJcbiAgICAgICAgcmVsYXRlZFVzZXJzOiBhbnlbXVxyXG4gICAgfSA9IHtcclxuICAgICAgICB0YXNrTmFtZTogJycsXHJcbiAgICAgICAgYXNzaWduZXI6IDAsXHJcbiAgICAgICAgYXNzaWduZWU6IDAsXHJcbiAgICAgICAgcmVsYXRlZFVzZXJzOiBbXSxcclxuICAgIH07XHJcblxyXG5cclxuICAgIHRhYkRhdGFDaGlsZDogYW55W10gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2RlOiAnZmlsZURpbmhLZW0nLFxyXG4gICAgICAgICAgICBpY29uOiAncGkgcGktcGFwZXJjbGlwJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdGaWxlIMSRw61uaCBrw6htJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2RlOiAndGFza0NoaWxkJyxcclxuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLWNoZWNrLXNxdWFyZScsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnQ8O0bmcgdmnhu4djIGNvbidcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29kZTogJ3Rhc2tMaWVuUXVhbicsXHJcbiAgICAgICAgICAgIGljb246ICdwaSBwaS1zaGFyZS1hbHQnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ0PDtG5nIHZp4buHYyBsacOqbiBxdWFuJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2RlOiAndHJhb0RvaUNvbmdWaWVjJyxcclxuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLWNvbW1lbnQnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ1RyYW8gxJHhu5VpIGPDtG5nIHZp4buHYycsXHJcbiAgICAgICAgfVxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIF9jb25nVmllY1NlcnZpY2U6IENvbmdWaWVjU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9kbUxvYWlDb25nVmllY1NlcnZpY2U6IERtTG9haUNvbmdWaWVjU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9kbVByaW9yaXR5U2VydmljZTogRG1Qcmlvcml0eVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XHJcbiAgICAgICAgdGhpcy51c2Vycy5hc3NpZ25lciA9IDA7XHJcbiAgICAgICAgdGhpcy51c2Vycy5hc3NpZ25lZSA9IDA7XHJcbiAgICAgICAgdGhpcy51c2Vycy5yZWxhdGVkVXNlcnMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC5fY29tcG9uZW50ID0gdGhpcztcclxuICAgICAgICB9XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLmF1dG9Gb2N1cyA9ICF0aGlzLmNvbnRyb2w7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmJhc2VTZXJ2aWNlID0gdGhpcy5fY29uZ1ZpZWNTZXJ2aWNlO1xyXG4gICAgICAgIGxldCBvbkNoYW5nZUxvYWlDb25nVmllYyA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuX2lzRm9ybUFkZE5ldygpKSB7XHJcbiAgICAgICAgICAgIG9uQ2hhbmdlTG9haUNvbmdWaWVjID0gdGhpcy5oYW5kbGVDaGFuZ2VMb2FpQ29uZ1ZpZWNXaGVuQWRkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5mb3JtU3RhdGUgPT0gRm9ybVN0YXRlLkFERCkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLmRhdGEuaWQgPSB0aGlzLl9jb21tb25TZXJ2aWNlLmd1aWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNjaGVtYSA9IDxGb3JtQ29udHJvbEJhc2VbXT5bXHJcbiAgICAgICAgICAgIG5ldyBUZXh0Q29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3RlbicsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1TDqm4gY8O0bmcgdmnhu4djJyxcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogMTJcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBFZGl0b3JDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbW9UYScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ07hu5lpIGR1bmcgY8O0bmcgdmnhu4djJyxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDEyXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRMb2FpQ29uZ1ZpZWMnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdMxKluaCB24buxYycsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fZG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgaXNUcmVlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZmllbGRUcmVlOiAnaWRQYXJlbnQnLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVQYXJlbnRSb290OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgb25DaGFuZ2VkOiBvbkNoYW5nZUxvYWlDb25nVmllY1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IERyb3Bkb3duQ29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkUHJpb3JpdHknLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICfEkOG7mSDGsHUgdGnDqm4nLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtUHJpb3JpdHlTZXJ2aWNlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRGF0ZVRpbWVDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheUJhdERhdScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ05nw6B5IGLhuq90IMSR4bqndScsXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiAzXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRGF0ZVRpbWVDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheUtldFRodWMnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdOZ8OgeSBr4bq/dCB0aMO6YycsXHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3IERhdGVDb21wYXJlVmFsaWRhdG9yKE9wZXJhdG9yLmdyZWF0ZXJUaGFuRXF1YWwsICduZ2F5QmF0RGF1JylcclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiAzXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgUGVyY2VudENvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdwaGFuVHJhbScsXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiA2LFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUaeG6v24gxJHhu5knXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5hZGRTY2hlbWFCYXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25Gb3JtSW5pdGlhbGl6ZWQoZXZ0OiBFdmVudERhdGEpIHtcclxuICAgICAgICBpZiAodGhpcy5faXNGb3JtQWRkTmV3KCkpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbCAmJiB0aGlzLmNvbnRyb2wuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihldnQubW9kZWwsIHRoaXMuY29udHJvbC5kYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZXZ0Lm1vZGVsLmlkTG9haUNvbmdWaWVjKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRXb3JrZmxvd0J5TG9haUNvbmdWaWVjKGV2dCwgZXZ0Lm1vZGVsLmlkTG9haUNvbmdWaWVjKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGVuQ29uZ1ZpZWMoKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXRhID0geyAuLi50aGlzLm1vZGVsLmRhdGEsIHRlbjogdGhpcy5fdGVuQ29uZ1ZpZWMgfTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBtb2RpZnlEZXRhaWxEYXRhKGRhdGEpIHtcclxuICAgICAgICAvLyB44butIGzDvSBk4buvIGxp4buHdSBs4bqleSB04burIGdldCBkZXRhaWwgduG7gVxyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUNoYW5nZUxvYWlDb25nVmllY1doZW5BZGQgPSBhc3luYyAoZXZ0OiBFdmVudERhdGEpID0+IHtcclxuICAgICAgICBpZiAoZXZ0LmV2ZW50VHlwZSA9PSAnY2hhbmdlJykge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRXb3JrZmxvd0J5TG9haUNvbmdWaWVjKGV2dCwgZXZ0Lm1vZGVsLmlkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGFzeW5jIGxvYWRXb3JrZmxvd0J5TG9haUNvbmdWaWVjKGV2dDogRXZlbnREYXRhLCBpZExvYWlDb25nVmllYzogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3Qgd29ya2Zsb3dTZXR0aW5nID0gYXdhaXQgdGhpcy5fZG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlLmdldFdvcmtmbG93U2V0dGluZ0J5SWRMb2FpQ29uZ1ZpZWMoZXZ0Lm1vZGVsLmlkKTtcclxuICAgICAgICB0aGlzLnNldFdvcmtmbG93RGF0YXNvdXJjZShldnQsIHdvcmtmbG93U2V0dGluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgb25BZnRlclNhdmUocmVzOiBSZXNwb25zZVJlc3VsdCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsLmZvcm1TdGF0ZSA9PSBGb3JtU3RhdGUuQUREICYmIHJlcyAmJiByZXMuc3VjY2VzcyAmJiByZXMuZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uQWZ0ZXJTYXZlZC5lbWl0KHJlcy5kYXRhKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25UYWJDaGFuZ2UoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiSW5kZXggPSBldnQuaW5kZXg7XHJcbiAgICAgICAgdGhpcy51c2Vycy50YXNrTmFtZSA9IHRoaXMubW9kZWwuZGF0YS50ZW47XHJcbiAgICB9XHJcblxyXG4gICAgZm9yY3VzVG9GaXJzdElucHV0Q29udHJvbChldmVudCkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudChDb21DdHhDb25zdGFudHMuQ09NTU9OLkZPQ1VTX1RPX0ZJUlNUX0lOUFVUX0NPTlRST0wpO1xyXG4gICAgfVxyXG5cclxuXHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -287,7 +287,7 @@ export class BaseCongViecComponent extends DataListBase {
|
|
|
287
287
|
this.reload();
|
|
288
288
|
}
|
|
289
289
|
else {
|
|
290
|
-
this._notifierService.
|
|
290
|
+
this._notifierService.showWarningByResponse(response);
|
|
291
291
|
}
|
|
292
292
|
}, error => {
|
|
293
293
|
this._notifierService.showDeleteDataError();
|
|
@@ -301,7 +301,7 @@ export class BaseCongViecComponent extends DataListBase {
|
|
|
301
301
|
this.reload();
|
|
302
302
|
}
|
|
303
303
|
else {
|
|
304
|
-
this._notifierService.
|
|
304
|
+
this._notifierService.showWarningByResponse(response);
|
|
305
305
|
}
|
|
306
306
|
}, error => {
|
|
307
307
|
this._notifierService.showDeleteDataError();
|
|
@@ -362,4 +362,4 @@ BaseCongViecComponent.propDecorators = {
|
|
|
362
362
|
formState: [{ type: Input }],
|
|
363
363
|
isChildView: [{ type: Input }]
|
|
364
364
|
};
|
|
365
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbmd2aWVjL2Nvbmd2aWVjL2Nvbmd2aWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFekYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBTzlFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxZQUFZO0lBdUJuRCxZQUNjLFNBQW1CLEVBQ25CLGdCQUFp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LHVCQUF1QixDQUFDOzthQUN2Qzs7O1lBbkJrQyxRQUFRO1lBWWxDLGVBQWU7WUFKZixxQkFBcUI7WUFDckIsaUJBQWlCO1lBRmpCLHNCQUFzQjtZQU10Qix1QkFBdUI7OzsyQkFRM0IsU0FBUyxTQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7NkJBQzNDLFNBQVMsU0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7d0JBQzdDLEtBQUs7dUJBQ0wsS0FBSzsyQkFDTCxLQUFLO3lCQUNMLEtBQUs7OEJBQ0wsS0FBSzt3QkFDTCxLQUFLOzBCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhTGlzdEJhc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvZGF0YS1saXN0LWJhc2UnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IENvbHVtblNjaGVtYUJhc2UsIERpYWxvZ01vZGVsLCBNb2RlbFNjaGVtYSwgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgS2V5RmlsdGVyU3RhdGVCeU1lbnVDb25nVmllYywgVG9waWNSZWxvYWRDb25nVmllY1Y1IH0gZnJvbSAnLi4vLi4vY29uc3QvY29tbW9uJztcclxuaW1wb3J0IHsgR3JpZEluZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgQ2F1SGluaFdvcmtmbG93U2VydmljZSB9IGZyb20gJy4uL2NhdWhpbmgtd29ya2Zsb3cvc2VydmljZXMvY2F1aGluaC13b3JrZmxvdy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlIH0gZnJvbSAnLi4vZG0tbG9haS1jb25ndmllYy9zZXJ2aWNlcy9kbS1sb2FpLWNvbmd2aWVjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEbVByaW9yaXR5U2VydmljZSB9IGZyb20gJy4uL2RtLXByaW9yaXR5L3NlcnZpY2VzL2RtLXByaW9yaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMsIEVudW1TdGF0ZUJ5TWVudUNvbmdWaWVjIH0gZnJvbSAnLi4vbW9kZWxzL2VudW1zJztcclxuaW1wb3J0IHsgQmFzZUNvbmdWaWVjRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY29uZ3ZpZWMtZm9ybS9jb25ndmllYy1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbmdWaWVjU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29uZ3ZpZWMuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmdWaWVjTGllblF1YW5TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb25ndmllY2xpZW5xdWFuLnNlcnZpY2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmFzZS1jb25ndmllYycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29uZ3ZpZWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY29uZ3ZpZWMuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VDb25nVmllY0NvbXBvbmVudCBleHRlbmRzIERhdGFMaXN0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2NvbmdWaWVjRm9ybScsIHsgc3RhdGljOiBmYWxzZSB9KSBjb25nVmllY0Zvcm06IEJhc2VDb25nVmllY0Zvcm1Db21wb25lbnQ7XHJcbiAgICBAVmlld0NoaWxkKCdjb25nVmllY1BpY2tlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBjb25nVmllY1BpY2tlcjogQmFzZUNvbmdWaWVjQ29tcG9uZW50O1xyXG4gICAgQElucHV0KCkgc3RhdGVDb2RlOiBFbnVtU3RhdGVCeU1lbnVDb25nVmllYztcclxuICAgIEBJbnB1dCgpIGlzUGlja2VyOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgbG9haURhbmhTYWNoOiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBpZENvbmdWaWVjOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpc0Zyb21EYXNoYm9hcmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZS5WSUVXO1xyXG4gICAgQElucHV0KCkgaXNDaGlsZFZpZXcgPSBmYWxzZTtcclxuXHJcbiAgICBzZWFyY2hTY2hlbWE6IGFueSA9IHt9O1xyXG4gICAgc2VhcmNoRGF0YTogYW55ID0ge307XHJcbiAgICBkaWNXb3JrZmxvd0J5TG9haUNvbmdWaWVjID0ge307XHJcbiAgICBkaWNMb2FpQ29uZ1ZpZWMgPSB7fTtcclxuICAgIGNvbmdWaWVjVmlld01vZGVsID0gbmV3IERpYWxvZ01vZGVsKHtcclxuICAgICAgICBoZWFkZXI6ICdYZW0gY2hpIHRp4bq/dCBjw7RuZyB2aeG7h2MnXHJcbiAgICB9KTtcclxuICAgIHNob3dQaWNrZXJGb3JtOiBib29sZWFuO1xyXG4gICAgaGlkZGVuQWRkOiBib29sZWFuO1xyXG4gICAgaGlkZGVuRWRpdDogYm9vbGVhbjtcclxuICAgIGhpZGRlbkRlbGV0ZTogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcm90ZWN0ZWQgX2NvbmdWaWVjU2VydmljZTogQ29uZ1ZpZWNTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlOiBEbUxvYWlDb25nVmllY1NlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9kbVByaW9yaXR5U2VydmljZTogRG1Qcmlvcml0eVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jYXVIaW5oV29ya2Zsb3dTZXJ2aWNlOiBDYXVIaW5oV29ya2Zsb3dTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NvbmdWaWVjTGllblF1YW5TZXJ2aWNlOiBDb25nVmllY0xpZW5RdWFuU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgICAgICBpZiAodGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QuZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlQ29kZSA9IHRoaXMuX2FjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmRhdGEuc3RhdGU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5wb3B1cFNpemUud2lkdGggPSAxMzYwO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5wb3B1cFNpemUuaGVpZ2h0ID0gNzYwO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX2NvbmdWaWVjU2VydmljZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1dvcmtmbG93ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1dvcmtmbG93TmV3ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcudXNlV29ya2Zsb3dOZXcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5pc1dvcmtmbG93VHJlZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmRpc3BsYXlGaWVsZCA9IChpdGVtKSA9PiBpdGVtLnRlbjtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuUGFnZVRpdGxlID0gdGhpcy5pc0Zyb21EYXNoYm9hcmQ7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLndvcmtmbG93Q29uZmlnQWR2YW5jZSA9IHtcclxuICAgICAgICAgICAgZ2V0V29ya2Zsb3dTZXR0aW5nOiB0aGlzLmdldFdvcmtmbG93Q29uZmlnLmJpbmQodGhpcylcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UudXNlV29ya2Zsb3cgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZGVuRWRpdCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5IZWFkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1BpY2tlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRkZW5BZGQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkZ1bmN0aW9uQ29sdW1uID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5BZHZhbmNlU2VhcmNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybVN0YXRlID09IEZvcm1TdGF0ZS5WSUVXICYmIHRoaXMuaXNDaGlsZFZpZXcpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblRvb2xiYXIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLm1vZGVsU2NoZW1hcyA9IFtcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICd0ZW4nLCBuYW1lOiAnVMOqbicsIGZ1bGxOYW1lOiAnVMOqbicsIGRlc2NyaXB0aW9uOiAnVMOqbicgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnbW9UYScsIG5hbWU6ICdNw7QgdOG6oycsIGZ1bGxOYW1lOiAnTcO0IHThuqMnLCBkZXNjcmlwdGlvbjogJ03DtCB04bqjJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICduZ2F5QmF0RGF1JywgZGF0YVR5cGU6ICdkYXRlJywgbmFtZTogJ05nw6B5IGLhuq90IMSR4bqndScsIGZ1bGxOYW1lOiAnTmfDoHkgYuG6r3QgxJHhuqd1JywgZGVzY3JpcHRpb246ICdOZ8OgeSBi4bqvdCDEkeG6p3UnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ25nYXlLZXRUaHVjJywgZGF0YVR5cGU6ICdkYXRlJywgbmFtZTogJ05nw6B5IGvhur90IHRow7pjJywgZnVsbE5hbWU6ICdOZ8OgeSBr4bq/dCB0aMO6YycsIGRlc2NyaXB0aW9uOiAnTmfDoHkga+G6v3QgdGjDumMnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2lkUHJpb3JpdHknLCBuYW1lOiAnxJDhu5kgxrB1IHRpw6puJywgZnVsbE5hbWU6ICfEkOG7mSDGsHUgdGnDqm4nLCBkZXNjcmlwdGlvbjogJ8SQ4buZIMawdSB0acOqbicgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnaWRMb2FpQ29uZ1ZpZWMnLCBuYW1lOiAnTG/huqFpIGPDtG5nIHZp4buHYycsIGZ1bGxOYW1lOiAnTG/huqFpIGPDtG5nIHZp4buHYycsIGRlc2NyaXB0aW9uOiAnTG/huqFpIGPDtG5nIHZp4buHYycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAncGhhblRyYW0nLCBkYXRhVHlwZTogJ2ludCcsIG5hbWU6ICdQaOG6p24gdHLEg20nLCBmdWxsTmFtZTogJ1Bo4bqnbiB0csSDbScsIGRlc2NyaXB0aW9uOiAnUGjhuqduIHRyxINtJyB9KVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmNvbHMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndGVuJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnY29uZ1ZpZWNJbmZvJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICduZ2F5QmF0RGF1JyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTEwcHgnLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICduZ2F5S2V0VGh1YycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzExNXB4JyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRMb2FpQ29uZ1ZpZWMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMCUnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtTG9haUNvbmdWaWVjU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGlzVHJlZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGZpZWxkVHJlZTogJ2lkUGFyZW50JyxcclxuICAgICAgICAgICAgICAgIHNlbGVjdENoaWxkSXRlbTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpZFByaW9yaXR5JyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnaWRQcmlvcml0eScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZVJlZkZpZWxkOiAnaWRQcmlvcml0eScsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwJScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fZG1Qcmlvcml0eVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBmaWVsZFBsdXM6ICdiYWNrZ3JvdW5kLGNvbG9yJyxcclxuICAgICAgICAgICAgICAgIGZ1bmNTZXRWYWx1ZVJvdzogKHJvd0l0ZW0sIGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByb3dJdGVtLnByaW9yaXR5Q29sb3IgPSBkYXRhLmNvbG9yO1xyXG4gICAgICAgICAgICAgICAgICAgIHJvd0l0ZW0ucHJpb3JpdHlCYWNrZ3JvdW5kID0gZGF0YS5iYWNrZ3JvdW5kO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5yb290Q29udGV4dC5zdWJzY3JpYmUoVG9waWNSZWxvYWRDb25nVmllY1Y1LCBkYXRhID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuZmllbGRTZWFyY2hUZXh0ID0gWyd0ZW4nLCAnbW9UYSddO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5vYmplY3ROYW1lID0gJyBjw7RuZyB2aeG7h2MnO1xyXG5cclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMucm9vdENvbnRleHQudW5TdWJzY3JpYmUoVG9waWNSZWxvYWRDb25nVmllY1Y1KTtcclxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG1vZGlmeUdyaWRJbmZvKGdyaWRJbmZvPzogR3JpZEluZm8pIHtcclxuICAgICAgICBpZiAoIWdyaWRJbmZvLnNvcnRzIHx8ICFncmlkSW5mby5zb3J0cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZ3JpZEluZm8uc29ydHMgPSBbeyBmaWVsZDogJ2NyZWF0ZWQnLCBkaXI6IC0xIH1dO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzRnJvbURhc2hib2FyZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZUNvZGUpIHtcclxuICAgICAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcihLZXlGaWx0ZXJTdGF0ZUJ5TWVudUNvbmdWaWVjLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5zdGF0ZUNvZGUpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjTGllblF1YW4pIHtcclxuICAgICAgICAgICAgLy8gQ8O0bmcgdmnhu4djIGxpw6puIHF1YW5cclxuICAgICAgICAgICAgY29uc3QgaWRzQ29uZ1ZpZWNMaWVuUXVhbiA9IGF3YWl0IHRoaXMuZ2V0SWRzQ29uZ1ZpZWNMaWVuUXVhbigpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1BpY2tlcikge1xyXG4gICAgICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLm5vdEVxdWFsLCB0aGlzLmlkQ29uZ1ZpZWMpKTtcclxuICAgICAgICAgICAgICAgIGlmIChpZHNDb25nVmllY0xpZW5RdWFuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3Iubm90SW4sIGlkc0NvbmdWaWVjTGllblF1YW4pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpZHNDb25nVmllY0xpZW5RdWFuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3IuaW4sIGlkc0NvbmdWaWVjTGllblF1YW4pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNDb24pIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNQaWNrZXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2lkQ2hhJywgT3BlcmF0b3IuaXNOdWxsLCB0cnVlKSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignaWQnLCBPcGVyYXRvci5ub3RFcXVhbCwgdGhpcy5pZENvbmdWaWVjKVxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJzID0gYXdhaXQgdGhpcy5fY29uZ1ZpZWNTZXJ2aWNlLmdldERldGFpbCh0aGlzLmlkQ29uZ1ZpZWMpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJzLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAocnMuZGF0YS5pZENoYSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3Iubm90RXF1YWwsIHJzLmRhdGEuaWRDaGEpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2goLi4uZmlsdGVycyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkQ2hhJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaWRDb25nVmllYykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGJlZm9yZVJlbmRlckRhdGFTb3VyY2UoZGF0YVNvdXJjZSkge1xyXG4gICAgICAgIGRhdGFTb3VyY2UuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgaWYgKCFpdGVtLnBoYW5UcmFtKSBpdGVtLnBoYW5UcmFtID0gNTtcclxuICAgICAgICAgICAgaXRlbS5wZXJjZW50V2lkdGggPSBgJHtpdGVtLnBoYW5UcmFtfSVgO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb21pc2VHZXREYXRhKGdyaWRJbmZvOiBHcmlkSW5mbykge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRnJvbURhc2hib2FyZCkge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0geyAuLi50aGlzLnBhcmVudE1vZGVsLnNlbGVjdGVkSXRlbS5maWx0ZXIsIHN0YXRlQ29kZTogdGhpcy5wYXJlbnRNb2RlbC5zZWxlY3RlZEl0ZW0uc3RhdGVDb2RlLCBncmlkSW5mbyB9O1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29uZ1ZpZWNTZXJ2aWNlLmdldExpc3RUYXNrc0Rhc2hib2FyZChmaWx0ZXJzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UuZ2V0QnlHcmlkUmVxdWVzdChncmlkSW5mbywgdGhpcy5wbHVzVXJsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBnZXREYXRhU291cmNlVHJhbmdUaGFpV29ya2Zsb3coKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RtTG9haUNvbmdWaWVjU2VydmljZS5nZXREYXRhc291cmNlV29ya2Zsb3dDb25nVmllYygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogb3ZlcnJpZGUgZnJvbSBkYXRhLWxpc3QtYmFzZVxyXG4gICAgICogQHBhcmFtIHJvd0RhdGEgQuG6o24gZ2hpIGNsaWNrXHJcbiAgICAgKiBAcmV0dXJucyBD4bqldSBow6xuaCB3b3JrZmxvdyB0aGVvIGlkIGxv4bqhaSBjw7RuZyB2aeG7h2MgY+G7p2EgYuG6o24gZ2hpXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGdldFdvcmtmbG93Q29uZmlnKHJvd0RhdGEpIHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5fZG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlLmdldFdvcmtmbG93U2V0dGluZ0J5SWRMb2FpQ29uZ1ZpZWMocm93RGF0YS5pZExvYWlDb25nVmllYyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0SWRzQ29uZ1ZpZWNMaWVuUXVhbigpIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gW3RoaXMubmV3RmlsdGVyQ29udGFpbmVyKCdvcicsXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZENvbmdWaWVjJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaWRDb25nVmllYyksXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZENvbmdWaWVjTGllblF1YW4nLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5pZENvbmdWaWVjKSldO1xyXG4gICAgICAgIGNvbnN0IHJzID0gYXdhaXQgdGhpcy5fY29uZ1ZpZWNMaWVuUXVhblNlcnZpY2UuZ2V0QWxsKGZpbHRlcnMsICdpZENvbmdWaWVjLGlkQ29uZ1ZpZWNMaWVuUXVhbicpO1xyXG4gICAgICAgIGNvbnN0IGlkc0NvbmdWaWVjTGllblF1YW4gPSBbXTtcclxuICAgICAgICBpZiAocnMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBycy5kYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pZENvbmdWaWVjID09IGVsZW1lbnQuaWRDb25nVmllYykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkc0NvbmdWaWVjTGllblF1YW4ucHVzaChlbGVtZW50LmlkQ29uZ1ZpZWNMaWVuUXVhbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmlkQ29uZ1ZpZWMgPT0gZWxlbWVudC5pZENvbmdWaWVjTGllblF1YW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZHNDb25nVmllY0xpZW5RdWFuLnB1c2goZWxlbWVudC5pZENvbmdWaWVjKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpZHNDb25nVmllY0xpZW5RdWFuO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUNoYW5nZWRTdGF0dXNXb3JrZmxvdyhpdGVtSWQpIHtcclxuICAgICAgICBpZiAodGhpcy5jb25nVmllY0Zvcm1cclxuICAgICAgICAgICAgJiYgdGhpcy5jb25nVmllY1ZpZXdNb2RlbC5kYXRhXHJcbiAgICAgICAgICAgICYmIHRoaXMuY29uZ1ZpZWNWaWV3TW9kZWwuZGF0YS5kYXRhXHJcbiAgICAgICAgICAgICYmIHRoaXMuY29uZ1ZpZWNWaWV3TW9kZWwuZGF0YS5kYXRhLmlkID09IGl0ZW1JZFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmdWaWVjRm9ybS5fdHJpZ2dlckdldERldGFpbCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkNob25Db25nVmllYygpIHtcclxuICAgICAgICB0aGlzLnNob3dQaWNrZXJGb3JtID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBvbkFmdGVyU2F2ZWQoaWQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNMaWVuUXVhbikge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IFt7XHJcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5fY29tbW9uU2VydmljZS5ndWlkKCksXHJcbiAgICAgICAgICAgICAgICBpZENvbmdWaWVjOiB0aGlzLmlkQ29uZ1ZpZWMsXHJcbiAgICAgICAgICAgICAgICBpZENvbmdWaWVjTGllblF1YW46IGlkXHJcbiAgICAgICAgICAgIH1dO1xyXG4gICAgICAgICAgICB0aGlzLmluc2VydENvbmdWaWVjTGllblF1YW4oaXRlbXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNDb24pIHtcclxuICAgICAgICAgICAgY29uc3QgbW9kZWwgPSB7XHJcbiAgICAgICAgICAgICAgICBpZENoYTogdGhpcy5pZENvbmdWaWVjLFxyXG4gICAgICAgICAgICAgICAgaWRzQ29uZ1ZpZWM6IFtpZF1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5pbnNlcnRDb25nVmllY0Nvbihtb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2hvd0RldGFpbEZvcm0gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNydWRMaXN0LnJlbG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9kZWxldGUocm93RGF0YSkge1xyXG4gICAgICAgIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dEZWxldGVDb25maXJtKCkudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzRGVsZXRlKFtyb3dEYXRhLmlkXSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgc3VwZXIuX2RlbGV0ZShyb3dEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgX2RlbGV0ZU11bHRpcGxlKGl0ZW1zKSB7XHJcbiAgICAgICAgY29uc3QgaWRzID0gaXRlbXMubWFwKHggPT4geC5pZCk7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzRGVsZXRlKGlkcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvY2Vzc0RlbGV0ZShpZHMgPSBbXSkge1xyXG4gICAgICAgIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNMaWVuUXVhbikge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RlbCA9IHtcclxuICAgICAgICAgICAgICAgIGlkQ29uZ1ZpZWM6IHRoaXMuaWRDb25nVmllYyxcclxuICAgICAgICAgICAgICAgIGlkc0NvbmdWaWVjOiBpZHNcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5fY29uZ1ZpZWNMaWVuUXVhblNlcnZpY2UuZGVsZXRlQnVsa0NvbmdWaWVjTGllblF1YW4obW9kZWwpXHJcbiAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dEZWxldGVEYXRhU3VjY2VzcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nQnlSZXBvbnNlKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dEZWxldGVEYXRhRXJyb3IoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNDb24pIHtcclxuICAgICAgICAgICAgdGhpcy5fY29uZ1ZpZWNTZXJ2aWNlLmRlbGV0ZUJ1bGtDb25nVmllY0NvbihpZHMpXHJcbiAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dEZWxldGVEYXRhU3VjY2VzcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nQnlSZXBvbnNlKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dEZWxldGVEYXRhRXJyb3IoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblNlbGVjdENvbmdWaWVjKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbmdWaWVjUGlja2VyLm1vZGVsLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjTGllblF1YW4pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5jb25nVmllY1BpY2tlci5tb2RlbC5zZWxlY3RlZEl0ZW1zLm1hcCgoaXRlbSkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogdGhpcy5fY29tbW9uU2VydmljZS5ndWlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgaWRDb25nVmllYzogdGhpcy5pZENvbmdWaWVjLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkQ29uZ1ZpZWNMaWVuUXVhbjogaXRlbS5pZFxyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRDb25nVmllY0xpZW5RdWFuKGl0ZW1zKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNDb24pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkQ2hhOiB0aGlzLmlkQ29uZ1ZpZWMsXHJcbiAgICAgICAgICAgICAgICAgICAgaWRzQ29uZ1ZpZWM6IHRoaXMuY29uZ1ZpZWNQaWNrZXIubW9kZWwuc2VsZWN0ZWRJdGVtcy5tYXAoeCA9PiB4LmlkKVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q29uZ1ZpZWNDb24obW9kZWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2hvd1BpY2tlckZvcm0gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpbnNlcnRDb25nVmllY0xpZW5RdWFuKGl0ZW1zID0gW10pIHtcclxuICAgICAgICB0aGlzLl9jb25nVmllY0xpZW5RdWFuU2VydmljZS5pbnNlcnRCdWxrQXN5bmMoaXRlbXMpLnRoZW4ocmVzcG9uc2UgPT4gdGhpcy5oYW5kbGVSZXNwb25zZShyZXNwb25zZSwgJycsIGYgPT4gdGhpcy5yZWxvYWQoKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGluc2VydENvbmdWaWVjQ29uKG1vZGVsKSB7XHJcbiAgICAgICAgdGhpcy5fY29uZ1ZpZWNTZXJ2aWNlLnVwZGF0ZUJ1bGtJZENoYShtb2RlbCkudGhlbihyZXNwb25zZSA9PiB0aGlzLmhhbmRsZVJlc3BvbnNlKHJlc3BvbnNlLCAnJywgZiA9PiB0aGlzLnJlbG9hZCgpKSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==
|
|
365
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbmd2aWVjL2Nvbmd2aWVjL2Nvbmd2aWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFekYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBTzlFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxZQUFZO0lBdUJuRCxZQUNjLFNBQW1CLEVBQ25CLGdCQUFp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LHVCQUF1QixDQUFDOzthQUN2Qzs7O1lBbkJrQyxRQUFRO1lBWWxDLGVBQWU7WUFKZixxQkFBcUI7WUFDckIsaUJBQWlCO1lBRmpCLHNCQUFzQjtZQU10Qix1QkFBdUI7OzsyQkFRM0IsU0FBUyxTQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7NkJBQzNDLFNBQVMsU0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7d0JBQzdDLEtBQUs7dUJBQ0wsS0FBSzsyQkFDTCxLQUFLO3lCQUNMLEtBQUs7OEJBQ0wsS0FBSzt3QkFDTCxLQUFLOzBCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhTGlzdEJhc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvZGF0YS1saXN0LWJhc2UnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IENvbHVtblNjaGVtYUJhc2UsIERpYWxvZ01vZGVsLCBNb2RlbFNjaGVtYSwgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgS2V5RmlsdGVyU3RhdGVCeU1lbnVDb25nVmllYywgVG9waWNSZWxvYWRDb25nVmllY1Y1IH0gZnJvbSAnLi4vLi4vY29uc3QvY29tbW9uJztcclxuaW1wb3J0IHsgR3JpZEluZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgQ2F1SGluaFdvcmtmbG93U2VydmljZSB9IGZyb20gJy4uL2NhdWhpbmgtd29ya2Zsb3cvc2VydmljZXMvY2F1aGluaC13b3JrZmxvdy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlIH0gZnJvbSAnLi4vZG0tbG9haS1jb25ndmllYy9zZXJ2aWNlcy9kbS1sb2FpLWNvbmd2aWVjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEbVByaW9yaXR5U2VydmljZSB9IGZyb20gJy4uL2RtLXByaW9yaXR5L3NlcnZpY2VzL2RtLXByaW9yaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMsIEVudW1TdGF0ZUJ5TWVudUNvbmdWaWVjIH0gZnJvbSAnLi4vbW9kZWxzL2VudW1zJztcclxuaW1wb3J0IHsgQmFzZUNvbmdWaWVjRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY29uZ3ZpZWMtZm9ybS9jb25ndmllYy1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbmdWaWVjU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29uZ3ZpZWMuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmdWaWVjTGllblF1YW5TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb25ndmllY2xpZW5xdWFuLnNlcnZpY2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmFzZS1jb25ndmllYycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29uZ3ZpZWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY29uZ3ZpZWMuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VDb25nVmllY0NvbXBvbmVudCBleHRlbmRzIERhdGFMaXN0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2NvbmdWaWVjRm9ybScsIHsgc3RhdGljOiBmYWxzZSB9KSBjb25nVmllY0Zvcm06IEJhc2VDb25nVmllY0Zvcm1Db21wb25lbnQ7XHJcbiAgICBAVmlld0NoaWxkKCdjb25nVmllY1BpY2tlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBjb25nVmllY1BpY2tlcjogQmFzZUNvbmdWaWVjQ29tcG9uZW50O1xyXG4gICAgQElucHV0KCkgc3RhdGVDb2RlOiBFbnVtU3RhdGVCeU1lbnVDb25nVmllYztcclxuICAgIEBJbnB1dCgpIGlzUGlja2VyOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgbG9haURhbmhTYWNoOiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBpZENvbmdWaWVjOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpc0Zyb21EYXNoYm9hcmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZS5WSUVXO1xyXG4gICAgQElucHV0KCkgaXNDaGlsZFZpZXcgPSBmYWxzZTtcclxuXHJcbiAgICBzZWFyY2hTY2hlbWE6IGFueSA9IHt9O1xyXG4gICAgc2VhcmNoRGF0YTogYW55ID0ge307XHJcbiAgICBkaWNXb3JrZmxvd0J5TG9haUNvbmdWaWVjID0ge307XHJcbiAgICBkaWNMb2FpQ29uZ1ZpZWMgPSB7fTtcclxuICAgIGNvbmdWaWVjVmlld01vZGVsID0gbmV3IERpYWxvZ01vZGVsKHtcclxuICAgICAgICBoZWFkZXI6ICdYZW0gY2hpIHRp4bq/dCBjw7RuZyB2aeG7h2MnXHJcbiAgICB9KTtcclxuICAgIHNob3dQaWNrZXJGb3JtOiBib29sZWFuO1xyXG4gICAgaGlkZGVuQWRkOiBib29sZWFuO1xyXG4gICAgaGlkZGVuRWRpdDogYm9vbGVhbjtcclxuICAgIGhpZGRlbkRlbGV0ZTogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcm90ZWN0ZWQgX2NvbmdWaWVjU2VydmljZTogQ29uZ1ZpZWNTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlOiBEbUxvYWlDb25nVmllY1NlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9kbVByaW9yaXR5U2VydmljZTogRG1Qcmlvcml0eVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jYXVIaW5oV29ya2Zsb3dTZXJ2aWNlOiBDYXVIaW5oV29ya2Zsb3dTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NvbmdWaWVjTGllblF1YW5TZXJ2aWNlOiBDb25nVmllY0xpZW5RdWFuU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgICAgICBpZiAodGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QuZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlQ29kZSA9IHRoaXMuX2FjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmRhdGEuc3RhdGU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5wb3B1cFNpemUud2lkdGggPSAxMzYwO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5wb3B1cFNpemUuaGVpZ2h0ID0gNzYwO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX2NvbmdWaWVjU2VydmljZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1dvcmtmbG93ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1dvcmtmbG93TmV3ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcudXNlV29ya2Zsb3dOZXcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5pc1dvcmtmbG93VHJlZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmRpc3BsYXlGaWVsZCA9IChpdGVtKSA9PiBpdGVtLnRlbjtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuUGFnZVRpdGxlID0gdGhpcy5pc0Zyb21EYXNoYm9hcmQ7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLndvcmtmbG93Q29uZmlnQWR2YW5jZSA9IHtcclxuICAgICAgICAgICAgZ2V0V29ya2Zsb3dTZXR0aW5nOiB0aGlzLmdldFdvcmtmbG93Q29uZmlnLmJpbmQodGhpcylcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UudXNlV29ya2Zsb3cgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZGVuRWRpdCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5IZWFkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1BpY2tlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRkZW5BZGQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkZ1bmN0aW9uQ29sdW1uID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5BZHZhbmNlU2VhcmNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybVN0YXRlID09IEZvcm1TdGF0ZS5WSUVXICYmIHRoaXMuaXNDaGlsZFZpZXcpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblRvb2xiYXIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLm1vZGVsU2NoZW1hcyA9IFtcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICd0ZW4nLCBuYW1lOiAnVMOqbicsIGZ1bGxOYW1lOiAnVMOqbicsIGRlc2NyaXB0aW9uOiAnVMOqbicgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnbW9UYScsIG5hbWU6ICdNw7QgdOG6oycsIGZ1bGxOYW1lOiAnTcO0IHThuqMnLCBkZXNjcmlwdGlvbjogJ03DtCB04bqjJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICduZ2F5QmF0RGF1JywgZGF0YVR5cGU6ICdkYXRlJywgbmFtZTogJ05nw6B5IGLhuq90IMSR4bqndScsIGZ1bGxOYW1lOiAnTmfDoHkgYuG6r3QgxJHhuqd1JywgZGVzY3JpcHRpb246ICdOZ8OgeSBi4bqvdCDEkeG6p3UnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ25nYXlLZXRUaHVjJywgZGF0YVR5cGU6ICdkYXRlJywgbmFtZTogJ05nw6B5IGvhur90IHRow7pjJywgZnVsbE5hbWU6ICdOZ8OgeSBr4bq/dCB0aMO6YycsIGRlc2NyaXB0aW9uOiAnTmfDoHkga+G6v3QgdGjDumMnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2lkUHJpb3JpdHknLCBuYW1lOiAnxJDhu5kgxrB1IHRpw6puJywgZnVsbE5hbWU6ICfEkOG7mSDGsHUgdGnDqm4nLCBkZXNjcmlwdGlvbjogJ8SQ4buZIMawdSB0acOqbicgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnaWRMb2FpQ29uZ1ZpZWMnLCBuYW1lOiAnTG/huqFpIGPDtG5nIHZp4buHYycsIGZ1bGxOYW1lOiAnTG/huqFpIGPDtG5nIHZp4buHYycsIGRlc2NyaXB0aW9uOiAnTG/huqFpIGPDtG5nIHZp4buHYycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAncGhhblRyYW0nLCBkYXRhVHlwZTogJ2ludCcsIG5hbWU6ICdQaOG6p24gdHLEg20nLCBmdWxsTmFtZTogJ1Bo4bqnbiB0csSDbScsIGRlc2NyaXB0aW9uOiAnUGjhuqduIHRyxINtJyB9KVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmNvbHMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndGVuJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnY29uZ1ZpZWNJbmZvJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICduZ2F5QmF0RGF1JyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTEwcHgnLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICduZ2F5S2V0VGh1YycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzExNXB4JyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRMb2FpQ29uZ1ZpZWMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMCUnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtTG9haUNvbmdWaWVjU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGlzVHJlZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGZpZWxkVHJlZTogJ2lkUGFyZW50JyxcclxuICAgICAgICAgICAgICAgIHNlbGVjdENoaWxkSXRlbTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpZFByaW9yaXR5JyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnaWRQcmlvcml0eScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZVJlZkZpZWxkOiAnaWRQcmlvcml0eScsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwJScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fZG1Qcmlvcml0eVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBmaWVsZFBsdXM6ICdiYWNrZ3JvdW5kLGNvbG9yJyxcclxuICAgICAgICAgICAgICAgIGZ1bmNTZXRWYWx1ZVJvdzogKHJvd0l0ZW0sIGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByb3dJdGVtLnByaW9yaXR5Q29sb3IgPSBkYXRhLmNvbG9yO1xyXG4gICAgICAgICAgICAgICAgICAgIHJvd0l0ZW0ucHJpb3JpdHlCYWNrZ3JvdW5kID0gZGF0YS5iYWNrZ3JvdW5kO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5yb290Q29udGV4dC5zdWJzY3JpYmUoVG9waWNSZWxvYWRDb25nVmllY1Y1LCBkYXRhID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuZmllbGRTZWFyY2hUZXh0ID0gWyd0ZW4nLCAnbW9UYSddO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5vYmplY3ROYW1lID0gJyBjw7RuZyB2aeG7h2MnO1xyXG5cclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMucm9vdENvbnRleHQudW5TdWJzY3JpYmUoVG9waWNSZWxvYWRDb25nVmllY1Y1KTtcclxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG1vZGlmeUdyaWRJbmZvKGdyaWRJbmZvPzogR3JpZEluZm8pIHtcclxuICAgICAgICBpZiAoIWdyaWRJbmZvLnNvcnRzIHx8ICFncmlkSW5mby5zb3J0cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZ3JpZEluZm8uc29ydHMgPSBbeyBmaWVsZDogJ2NyZWF0ZWQnLCBkaXI6IC0xIH1dO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzRnJvbURhc2hib2FyZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZUNvZGUpIHtcclxuICAgICAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcihLZXlGaWx0ZXJTdGF0ZUJ5TWVudUNvbmdWaWVjLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5zdGF0ZUNvZGUpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjTGllblF1YW4pIHtcclxuICAgICAgICAgICAgLy8gQ8O0bmcgdmnhu4djIGxpw6puIHF1YW5cclxuICAgICAgICAgICAgY29uc3QgaWRzQ29uZ1ZpZWNMaWVuUXVhbiA9IGF3YWl0IHRoaXMuZ2V0SWRzQ29uZ1ZpZWNMaWVuUXVhbigpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1BpY2tlcikge1xyXG4gICAgICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLm5vdEVxdWFsLCB0aGlzLmlkQ29uZ1ZpZWMpKTtcclxuICAgICAgICAgICAgICAgIGlmIChpZHNDb25nVmllY0xpZW5RdWFuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3Iubm90SW4sIGlkc0NvbmdWaWVjTGllblF1YW4pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpZHNDb25nVmllY0xpZW5RdWFuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3IuaW4sIGlkc0NvbmdWaWVjTGllblF1YW4pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNDb24pIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNQaWNrZXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2lkQ2hhJywgT3BlcmF0b3IuaXNOdWxsLCB0cnVlKSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignaWQnLCBPcGVyYXRvci5ub3RFcXVhbCwgdGhpcy5pZENvbmdWaWVjKVxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJzID0gYXdhaXQgdGhpcy5fY29uZ1ZpZWNTZXJ2aWNlLmdldERldGFpbCh0aGlzLmlkQ29uZ1ZpZWMpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJzLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAocnMuZGF0YS5pZENoYSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3Iubm90RXF1YWwsIHJzLmRhdGEuaWRDaGEpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2goLi4uZmlsdGVycyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkQ2hhJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaWRDb25nVmllYykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGJlZm9yZVJlbmRlckRhdGFTb3VyY2UoZGF0YVNvdXJjZSkge1xyXG4gICAgICAgIGRhdGFTb3VyY2UuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgaWYgKCFpdGVtLnBoYW5UcmFtKSBpdGVtLnBoYW5UcmFtID0gNTtcclxuICAgICAgICAgICAgaXRlbS5wZXJjZW50V2lkdGggPSBgJHtpdGVtLnBoYW5UcmFtfSVgO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb21pc2VHZXREYXRhKGdyaWRJbmZvOiBHcmlkSW5mbykge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRnJvbURhc2hib2FyZCkge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0geyAuLi50aGlzLnBhcmVudE1vZGVsLnNlbGVjdGVkSXRlbS5maWx0ZXIsIHN0YXRlQ29kZTogdGhpcy5wYXJlbnRNb2RlbC5zZWxlY3RlZEl0ZW0uc3RhdGVDb2RlLCBncmlkSW5mbyB9O1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29uZ1ZpZWNTZXJ2aWNlLmdldExpc3RUYXNrc0Rhc2hib2FyZChmaWx0ZXJzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UuZ2V0QnlHcmlkUmVxdWVzdChncmlkSW5mbywgdGhpcy5wbHVzVXJsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBnZXREYXRhU291cmNlVHJhbmdUaGFpV29ya2Zsb3coKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RtTG9haUNvbmdWaWVjU2VydmljZS5nZXREYXRhc291cmNlV29ya2Zsb3dDb25nVmllYygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogb3ZlcnJpZGUgZnJvbSBkYXRhLWxpc3QtYmFzZVxyXG4gICAgICogQHBhcmFtIHJvd0RhdGEgQuG6o24gZ2hpIGNsaWNrXHJcbiAgICAgKiBAcmV0dXJucyBD4bqldSBow6xuaCB3b3JrZmxvdyB0aGVvIGlkIGxv4bqhaSBjw7RuZyB2aeG7h2MgY+G7p2EgYuG6o24gZ2hpXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGdldFdvcmtmbG93Q29uZmlnKHJvd0RhdGEpIHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5fZG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlLmdldFdvcmtmbG93U2V0dGluZ0J5SWRMb2FpQ29uZ1ZpZWMocm93RGF0YS5pZExvYWlDb25nVmllYyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0SWRzQ29uZ1ZpZWNMaWVuUXVhbigpIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gW3RoaXMubmV3RmlsdGVyQ29udGFpbmVyKCdvcicsXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZENvbmdWaWVjJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaWRDb25nVmllYyksXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZENvbmdWaWVjTGllblF1YW4nLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5pZENvbmdWaWVjKSldO1xyXG4gICAgICAgIGNvbnN0IHJzID0gYXdhaXQgdGhpcy5fY29uZ1ZpZWNMaWVuUXVhblNlcnZpY2UuZ2V0QWxsKGZpbHRlcnMsICdpZENvbmdWaWVjLGlkQ29uZ1ZpZWNMaWVuUXVhbicpO1xyXG4gICAgICAgIGNvbnN0IGlkc0NvbmdWaWVjTGllblF1YW4gPSBbXTtcclxuICAgICAgICBpZiAocnMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBycy5kYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pZENvbmdWaWVjID09IGVsZW1lbnQuaWRDb25nVmllYykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkc0NvbmdWaWVjTGllblF1YW4ucHVzaChlbGVtZW50LmlkQ29uZ1ZpZWNMaWVuUXVhbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmlkQ29uZ1ZpZWMgPT0gZWxlbWVudC5pZENvbmdWaWVjTGllblF1YW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZHNDb25nVmllY0xpZW5RdWFuLnB1c2goZWxlbWVudC5pZENvbmdWaWVjKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpZHNDb25nVmllY0xpZW5RdWFuO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUNoYW5nZWRTdGF0dXNXb3JrZmxvdyhpdGVtSWQpIHtcclxuICAgICAgICBpZiAodGhpcy5jb25nVmllY0Zvcm1cclxuICAgICAgICAgICAgJiYgdGhpcy5jb25nVmllY1ZpZXdNb2RlbC5kYXRhXHJcbiAgICAgICAgICAgICYmIHRoaXMuY29uZ1ZpZWNWaWV3TW9kZWwuZGF0YS5kYXRhXHJcbiAgICAgICAgICAgICYmIHRoaXMuY29uZ1ZpZWNWaWV3TW9kZWwuZGF0YS5kYXRhLmlkID09IGl0ZW1JZFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmdWaWVjRm9ybS5fdHJpZ2dlckdldERldGFpbCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkNob25Db25nVmllYygpIHtcclxuICAgICAgICB0aGlzLnNob3dQaWNrZXJGb3JtID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBvbkFmdGVyU2F2ZWQoaWQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNMaWVuUXVhbikge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IFt7XHJcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5fY29tbW9uU2VydmljZS5ndWlkKCksXHJcbiAgICAgICAgICAgICAgICBpZENvbmdWaWVjOiB0aGlzLmlkQ29uZ1ZpZWMsXHJcbiAgICAgICAgICAgICAgICBpZENvbmdWaWVjTGllblF1YW46IGlkXHJcbiAgICAgICAgICAgIH1dO1xyXG4gICAgICAgICAgICB0aGlzLmluc2VydENvbmdWaWVjTGllblF1YW4oaXRlbXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNDb24pIHtcclxuICAgICAgICAgICAgY29uc3QgbW9kZWwgPSB7XHJcbiAgICAgICAgICAgICAgICBpZENoYTogdGhpcy5pZENvbmdWaWVjLFxyXG4gICAgICAgICAgICAgICAgaWRzQ29uZ1ZpZWM6IFtpZF1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5pbnNlcnRDb25nVmllY0Nvbihtb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2hvd0RldGFpbEZvcm0gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNydWRMaXN0LnJlbG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9kZWxldGUocm93RGF0YSkge1xyXG4gICAgICAgIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dEZWxldGVDb25maXJtKCkudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzRGVsZXRlKFtyb3dEYXRhLmlkXSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgc3VwZXIuX2RlbGV0ZShyb3dEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgX2RlbGV0ZU11bHRpcGxlKGl0ZW1zKSB7XHJcbiAgICAgICAgY29uc3QgaWRzID0gaXRlbXMubWFwKHggPT4geC5pZCk7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzRGVsZXRlKGlkcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvY2Vzc0RlbGV0ZShpZHMgPSBbXSkge1xyXG4gICAgICAgIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNMaWVuUXVhbikge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RlbCA9IHtcclxuICAgICAgICAgICAgICAgIGlkQ29uZ1ZpZWM6IHRoaXMuaWRDb25nVmllYyxcclxuICAgICAgICAgICAgICAgIGlkc0NvbmdWaWVjOiBpZHNcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5fY29uZ1ZpZWNMaWVuUXVhblNlcnZpY2UuZGVsZXRlQnVsa0NvbmdWaWVjTGllblF1YW4obW9kZWwpXHJcbiAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dEZWxldGVEYXRhU3VjY2VzcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nQnlSZXNwb25zZShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93RGVsZXRlRGF0YUVycm9yKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjQ29uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbmdWaWVjU2VydmljZS5kZWxldGVCdWxrQ29uZ1ZpZWNDb24oaWRzKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93RGVsZXRlRGF0YVN1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZ0J5UmVzcG9uc2UocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0RlbGV0ZURhdGFFcnJvcigpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uU2VsZWN0Q29uZ1ZpZWMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29uZ1ZpZWNQaWNrZXIubW9kZWwuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNMaWVuUXVhbikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmNvbmdWaWVjUGlja2VyLm1vZGVsLnNlbGVjdGVkSXRlbXMubWFwKChpdGVtKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLl9jb21tb25TZXJ2aWNlLmd1aWQoKSxcclxuICAgICAgICAgICAgICAgICAgICBpZENvbmdWaWVjOiB0aGlzLmlkQ29uZ1ZpZWMsXHJcbiAgICAgICAgICAgICAgICAgICAgaWRDb25nVmllY0xpZW5RdWFuOiBpdGVtLmlkXHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydENvbmdWaWVjTGllblF1YW4oaXRlbXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubG9haURhbmhTYWNoID09IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYy5Db25nVmllY0Nvbikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWRDaGE6IHRoaXMuaWRDb25nVmllYyxcclxuICAgICAgICAgICAgICAgICAgICBpZHNDb25nVmllYzogdGhpcy5jb25nVmllY1BpY2tlci5tb2RlbC5zZWxlY3RlZEl0ZW1zLm1hcCh4ID0+IHguaWQpXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRDb25nVmllY0Nvbihtb2RlbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zaG93UGlja2VyRm9ybSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGluc2VydENvbmdWaWVjTGllblF1YW4oaXRlbXMgPSBbXSkge1xyXG4gICAgICAgIHRoaXMuX2NvbmdWaWVjTGllblF1YW5TZXJ2aWNlLmluc2VydEJ1bGtBc3luYyhpdGVtcykudGhlbihyZXNwb25zZSA9PiB0aGlzLmhhbmRsZVJlc3BvbnNlKHJlc3BvbnNlLCAnJywgZiA9PiB0aGlzLnJlbG9hZCgpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5zZXJ0Q29uZ1ZpZWNDb24obW9kZWwpIHtcclxuICAgICAgICB0aGlzLl9jb25nVmllY1NlcnZpY2UudXBkYXRlQnVsa0lkQ2hhKG1vZGVsKS50aGVuKHJlc3BvbnNlID0+IHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzcG9uc2UsICcnLCBmID0+IHRoaXMucmVsb2FkKCkpKTtcclxuICAgIH1cclxufVxyXG5cclxuIl19
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
export class BasicUserInfo {
|
|
2
|
+
constructor(init) {
|
|
3
|
+
for (const key in init) {
|
|
4
|
+
this[key] = init[key];
|
|
5
|
+
}
|
|
6
|
+
}
|
|
2
7
|
}
|
|
3
8
|
export class StaffUserInfo {
|
|
4
9
|
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtdXNlci1pbmZvLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbIm1vZGVscy9iYXNpYy11c2VyLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGFBQWE7SUFjdEIsWUFBWSxJQUFtQjtRQUMzQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLGFBQWE7Q0FPekIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQmFzaWNVc2VySW5mbyB7XHJcbiAgICB1c2VyTmFtZTogc3RyaW5nO1xyXG4gICAgZW1haWw6IHN0cmluZztcclxuICAgIHBob25lTnVtYmVyOiBzdHJpbmc7XHJcbiAgICBmaXJzdE5hbWU6IHN0cmluZztcclxuICAgIGxhc3ROYW1lOiBzdHJpbmc7XHJcbiAgICBmdWxsTmFtZTogc3RyaW5nO1xyXG4gICAgYXZhdGFyOiBzdHJpbmc7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgLy8gaWRzT3JnOiBzdHJpbmdbXTtcclxuICAgIC8vIGlkc1Bvczogc3RyaW5nW107XHJcbiAgICBpc1N1cGVyVXNlcjogYm9vbGVhbjtcclxuICAgIGlzQWRtaW46IGJvb2xlYW47XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdDogQmFzaWNVc2VySW5mbykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFN0YWZmVXNlckluZm8ge1xyXG4gICAgZnVsbE5hbWU6IHN0cmluZztcclxuICAgIHVzZXJJZDogbnVtYmVyO1xyXG4gICAgZmlyc3ROYW1lOiBzdHJpbmc7XHJcbiAgICBsYXN0TmFtZTogc3RyaW5nO1xyXG4gICAgYXZhdGFyOiBzdHJpbmc7XHJcbiAgICBpZDogbnVtYmVyO1xyXG59XHJcbiJdfQ==
|