tnx-shared 5.1.149 → 5.1.150

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.
@@ -39,6 +39,7 @@ export declare class BaseCongViecFormComponent extends DataFormBase implements O
39
39
  buttons: any[];
40
40
  mdWidthWorkflow: number;
41
41
  mdLoaiCongViec: number;
42
+ idLoaiCongViec: string;
42
43
  constructor(_injector: Injector, _congViecService: CongViecService, _dmLoaiCongViecService: DmLoaiCongViecService, _dmLinhVucCongViecService: DmLinhVucCongViecService, _dmPriorityService: DmPriorityService, _workflowPermissionDetailService: WorkflowPermissionDetailService);
43
44
  ngOnInit(): void;
44
45
  onFormInitialized(evt: EventData): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"congviec-form.component.d.ts","sourceRoot":"../../../../projects/tnx-shared/src/lib/","sources":["congviec/congviec/congviec-form/congviec-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAE,QAAQ,EAAS,MAAM,EAAqB,MAAM,eAAe,CAAC;AAEpG,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EACH,mBAAmB,EAInB,SAAS,EAKZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wDAAwD,CAAC;AAC3F,OAAO,EAAE,8BAA8B,EAAE,MAAM,gEAAgE,CAAC;AAChH,OAAO,EAAE,+BAA+B,EAAE,MAAM,0EAA0E,CAAC;AAG3H,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gEAAgE,CAAC;AAC1G,OAAO,EAAE,qBAAqB,EAAE,MAAM,0DAA0D,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,qBAMa,yBAA0B,SAAQ,YAAa,YAAW,MAAM;IAmErE,SAAS,CAAC,SAAS,EAAE,QAAQ;IAC7B,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,yBAAyB;IACjC,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,gCAAgC;IAvEkB,iBAAiB,EAAE,8BAA8B,CAAC;IACvG,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,mBAAmB,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAa,WAAW,CAAC,KAAK,EAAE,MAAM,EAGrC;IAES,YAAY,oBAA2B;IACjD,SAAS,UAAQ;IACV,aAAa,mBAAa;IACjC,wBAAwB,kCAA4B;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE;QACH,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,GAAG,CAAC;QACd,QAAQ,EAAE,GAAG,CAAC;QACd,YAAY,EAAE,GAAG,EAAE,CAAC;KACvB,CAKK;IAEN,WAAW,EAAE,GAAG,EAAE,CAYhB;IACF,YAAY,EAAE,GAAG,EAAE,CAqBjB;IACF,OAAO,EAAE,GAAG,EAAE,CAAM;IACpB,eAAe,SAAK;IACpB,cAAc,EAAE,MAAM,CAAC;gBAGT,SAAS,EAAE,QAAQ,EACrB,gBAAgB,EAAE,eAAe,EACjC,sBAAsB,EAAE,qBAAqB,EAC7C,yBAAyB,EAAE,wBAAwB,EACnD,kBAAkB,EAAE,iBAAiB,EACrC,gCAAgC,EAAE,+BAA+B;IAQ7E,QAAQ;IAgFF,iBAAiB,CAAC,GAAG,EAAE,SAAS;IAatC,cAAc;IAIR,gBAAgB,CAAC,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KAAE;IAIpD,oBAAoB;IAId,sBAAsB,CAAC,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KAAE;IAuC1D,+BAA+B,QAAe,SAAS,mBAIrD;IAEI,0BAA0B,CAAC,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM;IAYjE,YAAY;IAOlB,WAAW,CAAC,GAAG,EAAE,cAAc;IAM/B,WAAW,CAAC,GAAG,KAAA;IAKf,yBAAyB,CAAC,KAAK,KAAA;CAIlC"}
1
+ {"version":3,"file":"congviec-form.component.d.ts","sourceRoot":"../../../../projects/tnx-shared/src/lib/","sources":["congviec/congviec/congviec-form/congviec-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAE,QAAQ,EAAS,MAAM,EAAqB,MAAM,eAAe,CAAC;AAEpG,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EACH,mBAAmB,EAInB,SAAS,EAKZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wDAAwD,CAAC;AAC3F,OAAO,EAAE,8BAA8B,EAAE,MAAM,gEAAgE,CAAC;AAChH,OAAO,EAAE,+BAA+B,EAAE,MAAM,0EAA0E,CAAC;AAG3H,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gEAAgE,CAAC;AAC1G,OAAO,EAAE,qBAAqB,EAAE,MAAM,0DAA0D,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,qBAMa,yBAA0B,SAAQ,YAAa,YAAW,MAAM;IAoErE,SAAS,CAAC,SAAS,EAAE,QAAQ;IAC7B,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,yBAAyB;IACjC,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,gCAAgC;IAxEkB,iBAAiB,EAAE,8BAA8B,CAAC;IACvG,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,mBAAmB,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAa,WAAW,CAAC,KAAK,EAAE,MAAM,EAGrC;IAES,YAAY,oBAA2B;IACjD,SAAS,UAAQ;IACV,aAAa,mBAAa;IACjC,wBAAwB,kCAA4B;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE;QACH,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,GAAG,CAAC;QACd,QAAQ,EAAE,GAAG,CAAC;QACd,YAAY,EAAE,GAAG,EAAE,CAAC;KACvB,CAKK;IAEN,WAAW,EAAE,GAAG,EAAE,CAYhB;IACF,YAAY,EAAE,GAAG,EAAE,CAqBjB;IACF,OAAO,EAAE,GAAG,EAAE,CAAM;IACpB,eAAe,SAAK;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;gBAGT,SAAS,EAAE,QAAQ,EACrB,gBAAgB,EAAE,eAAe,EACjC,sBAAsB,EAAE,qBAAqB,EAC7C,yBAAyB,EAAE,wBAAwB,EACnD,kBAAkB,EAAE,iBAAiB,EACrC,gCAAgC,EAAE,+BAA+B;IAQ7E,QAAQ;IAgFF,iBAAiB,CAAC,GAAG,EAAE,SAAS;IActC,cAAc;IAIR,gBAAgB,CAAC,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KAAE;IAIpD,oBAAoB;IAId,sBAAsB,CAAC,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KAAE;IAuC1D,+BAA+B,QAAe,SAAS,mBAIrD;IAEI,0BAA0B,CAAC,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM;IAYjE,YAAY;IAOlB,WAAW,CAAC,GAAG,EAAE,cAAc;IAM/B,WAAW,CAAC,GAAG,KAAA;IAKf,yBAAyB,CAAC,KAAK,KAAA;CAIlC"}
@@ -165,6 +165,7 @@ export class BaseCongViecFormComponent extends DataFormBase {
165
165
  Object.assign(evt.model, this.control.data);
166
166
  }
167
167
  if (evt.model.idLoaiCongViec) {
168
+ this.idLoaiCongViec = evt.model.idLoaiCongViec;
168
169
  yield this.loadWorkflowByLoaiCongViec(evt, evt.model.idLoaiCongViec);
169
170
  }
170
171
  }
@@ -257,7 +258,7 @@ export class BaseCongViecFormComponent extends DataFormBase {
257
258
  BaseCongViecFormComponent.decorators = [
258
259
  { type: Component, args: [{
259
260
  selector: 'base-congviec-form',
260
- template: "<!-- <ng-container *ngIf=\"_isFormAddNew()\">\r\n <div style=\"height: 100%; overflow: hidden\">\r\n <tn-tabview [data]=\"tabDataTask\" [allowViewAll]=\"true\">\r\n <ng-template #congviec>\r\n <ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n </ng-template>\r\n <ng-template #workflow>\r\n <tn-custom-scrollbar>\r\n <congviec-next-first-step [crudListSetting]=\"crudList.setting\"\r\n [workflowCode]=\"model.data._WorkflowCode\" [taskModel]=\"model.data\"></congviec-next-first-step>\r\n </tn-custom-scrollbar>\r\n </ng-template>\r\n </tn-tabview>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!_isFormAddNew()\">\r\n <ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n</ng-container> -->\r\n<ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n<ng-template #contentTask>\r\n <tn-custom-scrollbar>\r\n <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\"\r\n [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 <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"model.formState\"\r\n [loaiDanhSach]=\"enumLoaiDanhSachCongViec.CongViecCon\" [idCongViec]=\"model.data.id\">\r\n </base-congviec>\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\" [users]=\"users\"></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 </tn-custom-scrollbar>\r\n</ng-template>\r\n<ng-template #buttonTemplate>\r\n <button *ngFor=\"let butt of this.buttons\" pButton [icon]=\"butt.icon\" [label]=\"butt.label\" class=\"p-button-text\"\r\n (click)=\"butt.command()\">\r\n </button>\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>",
261
+ template: "<!-- <ng-container *ngIf=\"_isFormAddNew()\">\r\n <div style=\"height: 100%; overflow: hidden\">\r\n <tn-tabview [data]=\"tabDataTask\" [allowViewAll]=\"true\">\r\n <ng-template #congviec>\r\n <ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n </ng-template>\r\n <ng-template #workflow>\r\n <tn-custom-scrollbar>\r\n <congviec-next-first-step [crudListSetting]=\"crudList.setting\"\r\n [workflowCode]=\"model.data._WorkflowCode\" [taskModel]=\"model.data\"></congviec-next-first-step>\r\n </tn-custom-scrollbar>\r\n </ng-template>\r\n </tn-tabview>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!_isFormAddNew()\">\r\n <ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n</ng-container> -->\r\n<ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n<ng-template #contentTask>\r\n <tn-custom-scrollbar>\r\n <div *ngIf=\"idLoaiCongViec === 'f51ca5f6-d266-4521-a633-e2f9f8528aaf'\" class=\"note\"\r\n style=\"padding: 0.5rem 1rem;\">\r\n <b>Ghi ch\u00FA</b>: Vui l\u00F2ng chuy\u1EC3n sang ph\u00E2n h\u1EC7 V\u0103n b\u1EA3n \u0111\u1EC3 t\u1EA1o D\u1EF1 th\u1EA3o v\u0103n b\u1EA3n \u0111i. Link:\r\n <a href=\"https://usmart.utc.edu.vn/vanban/vanbandi/du-thao\" target=\"_blank\">\r\n https://usmart.utc.edu.vn/vanban/vanbandi/du-thao</a>\r\n </div>\r\n\r\n <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\"\r\n [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 <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"model.formState\"\r\n [loaiDanhSach]=\"enumLoaiDanhSachCongViec.CongViecCon\" [idCongViec]=\"model.data.id\">\r\n </base-congviec>\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\" [users]=\"users\"></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 </tn-custom-scrollbar>\r\n</ng-template>\r\n<ng-template #buttonTemplate>\r\n <button *ngFor=\"let butt of this.buttons\" pButton [icon]=\"butt.icon\" [label]=\"butt.label\" class=\"p-button-text\"\r\n (click)=\"butt.command()\">\r\n </button>\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>",
261
262
  providers: [ComponentContextService],
262
263
  styles: [".tab-child{padding:1em}"]
263
264
  },] }
@@ -277,4 +278,4 @@ BaseCongViecFormComponent.propDecorators = {
277
278
  tenCongViec: [{ type: Input }],
278
279
  onAfterSaved: [{ type: Output }]
279
280
  };
280
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29uZ3ZpZWMvY29uZ3ZpZWMvY29uZ3ZpZWMtZm9ybS9jb25ndmllYy1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUNILG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUduQixRQUFRLEVBQ1Isb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNwQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2hILE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzNILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDMUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDakcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBUy9ELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxZQUFZO0lBa0V2RCxZQUNjLFNBQW1CLEVBQ3JCLGdCQUFpQyxFQUNqQyxzQkFBNkMsRUFDN0MseUJBQW1ELEVBQ25ELGtCQUFxQyxFQUNyQyxnQ0FBaUU7UUFFekUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBUFAsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNyQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBQ2pDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUFDN0MsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEwQjtRQUNuRCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3JDLHFDQUFnQyxHQUFoQyxnQ0FBZ0MsQ0FBaUM7UUE5RG5FLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNqRCxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ1Ysa0JBQWEsR0FBRyxTQUFTLENBQUM7UUFDakMsNkJBQXdCLEdBQUcsd0JBQXdCLENBQUM7UUFFcEQsVUFBSyxHQUtEO1lBQ0ksUUFBUSxFQUFFLEVBQUU7WUFDWixRQUFRLEVBQUUsQ0FBQztZQUNYLFFBQVEsRUFBRSxDQUFDO1lBQ1gsWUFBWSxFQUFFLEVBQUU7U0FDbkIsQ0FBQztRQUVOLGdCQUFXLEdBQVU7WUFDakI7Z0JBQ0ksSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLElBQUksRUFBRSxZQUFZO2dCQUNsQixLQUFLLEVBQUUscUJBQXFCO2FBQy9CO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLElBQUksRUFBRSxZQUFZO2dCQUNsQixLQUFLLEVBQUUsWUFBWTtnQkFDbkIsTUFBTSxFQUFFLElBQUk7YUFDZjtTQUNKLENBQUM7UUFDRixpQkFBWSxHQUFVO1lBQ2xCO2dCQUNJLElBQUksRUFBRSxhQUFhO2dCQUNuQixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixLQUFLLEVBQUUsZUFBZTthQUN6QjtZQUNEO2dCQUNJLElBQUksRUFBRSxXQUFXO2dCQUNqQixJQUFJLEVBQUUsb0JBQW9CO2dCQUMxQixLQUFLLEVBQUUsZUFBZTthQUN6QjtZQUNEO2dCQUNJLElBQUksRUFBRSxjQUFjO2dCQUNwQixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixLQUFLLEVBQUUscUJBQXFCO2FBQy9CO1NBTUosQ0FBQztRQUNGLFlBQU8sR0FBVSxFQUFFLENBQUM7UUFDcEIsb0JBQWUsR0FBRyxDQUFDLENBQUM7UUFpS3BCLG9DQUErQixHQUFHLENBQU8sR0FBYyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxHQUFHLENBQUMsU0FBUyxJQUFJLFFBQVEsRUFBRTtnQkFDM0IsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDNUQ7UUFDTCxDQUFDLENBQUEsQ0FBQztRQXpKRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBekVELElBQWEsV0FBVyxDQUFDLEtBQWE7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUF3RUQsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUNsQztRQUNELEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDakQsSUFBSSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDaEMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDdEIsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUFDO1NBQy9EO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ25EO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQXNCO1lBQ3JDLElBQUksaUJBQWlCLENBQUM7Z0JBQ2xCLEtBQUssRUFBRSxLQUFLO2dCQUNaLEtBQUssRUFBRSxlQUFlO2dCQUN0QixRQUFRLEVBQUUsSUFBSTtnQkFDZCxPQUFPLEVBQUUsRUFBRTthQUNkLENBQUM7WUFDRixJQUFJLG1CQUFtQixDQUFDO2dCQUNwQixLQUFLLEVBQUUsTUFBTTtnQkFDYixLQUFLLEVBQUUsZ0JBQWdCO2dCQUN2QixPQUFPLEVBQUUsRUFBRTthQUNkLENBQUM7WUFDRixJQUFJLHFCQUFxQixDQUFDO2dCQUN0QixLQUFLLEVBQUUsWUFBWTtnQkFDbkIsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLFdBQVcsRUFBRSxJQUFJLENBQUMsa0JBQWtCO2FBQ3ZDLENBQUM7WUFDRixJQUFJLHFCQUFxQixDQUFDO2dCQUN0QixLQUFLLEVBQUUsV0FBVztnQkFDbEIsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLFdBQVcsRUFBRSxJQUFJLENBQUMseUJBQXlCO2FBQzlDLENBQUM7WUFDRixJQUFJLHFCQUFxQixDQUFDO2dCQUN0QixLQUFLLEVBQUUsWUFBWTtnQkFDbkIsS0FBSyxFQUFFLGNBQWM7Z0JBQ3JCLE9BQU8sRUFBRSxDQUFDO2FBQ2IsQ0FBQztZQUNGLElBQUkscUJBQXFCLENBQUM7Z0JBQ3RCLEtBQUssRUFBRSxhQUFhO2dCQUNwQixLQUFLLEVBQUUsZUFBZTtnQkFDdEIsVUFBVSxFQUFFO29CQUNSLElBQUksb0JBQW9CLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQztpQkFDcEU7Z0JBQ0QsT0FBTyxFQUFFLENBQUM7YUFDYixDQUFDO1lBQ0YsSUFBSSxvQkFBb0IsQ0FBQztnQkFDckIsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLE9BQU8sRUFBRSxDQUFDO2dCQUNWLEtBQUssRUFBRSxTQUFTO2FBQ25CLENBQUM7WUFDRixJQUFJLHFCQUFxQixDQUFDO2dCQUN0QixLQUFLLEVBQUUsZ0JBQWdCO2dCQUN2QixLQUFLLEVBQUUscUJBQXFCO2dCQUM1QixXQUFXLEVBQUUsSUFBSSxDQUFDLHNCQUFzQjtnQkFDeEMsTUFBTSxFQUFFLElBQUk7Z0JBQ1osU0FBUyxFQUFFLFVBQVU7Z0JBQ3JCLGVBQWUsRUFBRSxJQUFJO2dCQUNyQixLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxTQUFTLEVBQUUsb0JBQW9CO2FBQ2xDLENBQUM7U0FDTCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLDhCQUE4QjtRQUM5QixnQ0FBZ0M7UUFDaEMsc0NBQXNDO1FBQ3RDLHFDQUFxQztRQUNyQyxxREFBcUQ7UUFDckQsaUNBQWlDO1FBQ2pDLGdDQUFnQztRQUNoQywwQkFBMEI7UUFDMUIsbUVBQW1FO1FBQ25FLGFBQWE7UUFDYixTQUFTO1FBQ1QsSUFBSTtJQUNSLENBQUM7SUFFSyxpQkFBaUIsQ0FBQyxHQUFjOztZQUNsQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO29CQUNuQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDL0M7Z0JBQ0QsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRTtvQkFDMUIsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ3hFO2FBQ0o7aUJBQ0k7YUFDSjtRQUNMLENBQUM7S0FBQTtJQUVELGNBQWM7UUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksbUNBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLEdBQUUsQ0FBQztJQUNyRSxDQUFDO0lBRUssZ0JBQWdCLENBQUMsSUFBNkI7O1lBQ2hELE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUM7S0FBQTtJQUVELG9CQUFvQjtRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUssc0JBQXNCLENBQUMsSUFBNkI7O1lBQ3RELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEQsOEJBQThCO1lBQzlCLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsZ0NBQWdDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FDM0c7Z0JBQ0ksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNqRCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQzthQUMxRCxFQUFFLCtEQUErRCxDQUNyRSxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ1IsSUFBSSxhQUFhLElBQUksSUFBSSxFQUFFO2dCQUN2QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsMERBQTBELENBQUMsQ0FBQzthQUN4RztZQUNELElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRTtnQkFDdkIsVUFBVSxHQUFHO29CQUNULGFBQWEsRUFBRSxxQkFBcUI7aUJBQ3ZDLENBQUM7YUFDTDtpQkFDSTtnQkFDRCxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsRyxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7b0JBQ3BCLFVBQVUsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2pDO2dCQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNuRDtZQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztZQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUM7WUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO1lBQzlDLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUMxQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2YsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDO29CQUFFLE9BQU87Z0JBQ3BELE1BQU0sY0FBYyxHQUFHLHVCQUF1QixDQUFDO2dCQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQzthQUNqQztRQUNMLENBQUM7S0FBQTtJQVFLLDBCQUEwQixDQUFDLEdBQWMsRUFBRSxjQUFzQjs7WUFDbkUsSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDakIsY0FBYyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2FBQ2pDO1lBQ0QsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsa0NBQWtDLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDN0csSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNyRCxDQUFDO0tBQUE7SUFFRCxtREFBbUQ7SUFDbkQsaUVBQWlFO0lBQ2pFLElBQUk7SUFFRSxZQUFZOztZQUNkLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUNyRjtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7S0FBQTtJQUVELFdBQVcsQ0FBQyxHQUFtQjtRQUMzQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksRUFBRTtZQUN6RSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQUc7UUFDWCxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzlDLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxLQUFLO1FBQzNCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDaEYsQ0FBQzs7O1lBN1FKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixpOUhBQTZDO2dCQUU3QyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQWxDaUMsUUFBUTtZQTBCakMsZUFBZTtZQUhmLHFCQUFxQjtZQURyQix3QkFBd0I7WUFFeEIsaUJBQWlCO1lBTmpCLCtCQUErQjs7O2dDQWtCbkMsU0FBUyxTQUFDLDhCQUE4QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTt1QkFDM0QsS0FBSztzQkFDTCxLQUFLOzBCQUVMLEtBQUs7MkJBS0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YUZvcm1CYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtZm9ybS1iYXNlJztcclxuaW1wb3J0IHsgRGF0ZUNvbXBhcmVWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvdmFsaWRhdG9ycyc7XHJcbmltcG9ydCB7IEZvcm1TdGF0ZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29uc3RhbnRzJztcclxuaW1wb3J0IHtcclxuICAgIEN1c3RvbUNvbnRyb2xTY2hlbWEsXHJcbiAgICBEYXRlVGltZUNvbnRyb2xTY2hlbWEsXHJcbiAgICBEcm9wZG93bkNvbnRyb2xTY2hlbWEsXHJcbiAgICBFZGl0b3JDb250cm9sU2NoZW1hLFxyXG4gICAgRXZlbnREYXRhLFxyXG4gICAgRm9ybUNvbnRyb2xCYXNlLFxyXG4gICAgT3BlcmF0b3IsXHJcbiAgICBQZXJjZW50Q29udHJvbFNjaGVtYSxcclxuICAgIFRleHRDb250cm9sU2NoZW1hXHJcbn0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IENydWRMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9jcnVkL2NydWQtbGlzdC9jcnVkLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29uZ1ZpZWNOZXh0Rmlyc3RTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZ3ZpZWMtbmV4dC1maXJzdC1zdGVwL2Nvbmd2aWVjLW5leHQtZmlyc3Qtc3RlcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd1Blcm1pc3Npb25EZXRhaWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy93b3JrZmxvdy9zZXJ2aWNlcy93b3JrZmxvdy1wZXJtaXNzaW9uLWRldGFpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tQ3R4Q29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlncy9jb21wb25lbnQtY29udGV4dC5jb25zdGFudCc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25CYXNlIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvY29tbW9uJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgRG1MaW5oVnVjQ29uZ1ZpZWNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZG0tbGluaHZ1Yy1jb25ndmllYy9zZXJ2aWNlcy9kbS1saW5odnVjLWNvbmd2aWVjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEbUxvYWlDb25nVmllY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9kbS1sb2FpLWNvbmd2aWVjL3NlcnZpY2VzL2RtLWxvYWktY29uZ3ZpZWMuc2VydmljZSc7XHJcbmltcG9ydCB7IERtUHJpb3JpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZG0tcHJpb3JpdHkvc2VydmljZXMvZG0tcHJpb3JpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYyB9IGZyb20gJy4uLy4uL21vZGVscy9lbnVtcyc7XHJcbmltcG9ydCB7IENvbmdWaWVjU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Nvbmd2aWVjLnNlcnZpY2UnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdiYXNlLWNvbmd2aWVjLWZvcm0nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nvbmd2aWVjLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY29uZ3ZpZWMtZm9ybS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZUNvbmdWaWVjRm9ybUNvbXBvbmVudCBleHRlbmRzIERhdGFGb3JtQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKENvbmdWaWVjTmV4dEZpcnN0U3RlcENvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIGZvcm1OZXh0Rmlyc3RTdGVwOiBDb25nVmllY05leHRGaXJzdFN0ZXBDb21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBjcnVkTGlzdDogQ3J1ZExpc3RDb21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBjb250cm9sOiBDdXN0b21Db250cm9sU2NoZW1hO1xyXG4gICAgX3RlbkNvbmdWaWVjOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzZXQgdGVuQ29uZ1ZpZWModmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3RlbkNvbmdWaWVjID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5zZXRUZW5Db25nVmllYygpO1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKSBvbkFmdGVyU2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIGF1dG9Gb2N1cyA9IHRydWU7XHJcbiAgICBwdWJsaWMgZW51bUZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTtcclxuICAgIGVudW1Mb2FpRGFuaFNhY2hDb25nVmllYyA9IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYztcclxuICAgIGN1cnJlbnRUYWJJbmRleDogbnVtYmVyO1xyXG4gICAgdXNlcnM6IHtcclxuICAgICAgICB0YXNrTmFtZTogc3RyaW5nLFxyXG4gICAgICAgIGFzc2lnbmVlOiBhbnksXHJcbiAgICAgICAgYXNzaWduZXI6IGFueSxcclxuICAgICAgICByZWxhdGVkVXNlcnM6IGFueVtdO1xyXG4gICAgfSA9IHtcclxuICAgICAgICAgICAgdGFza05hbWU6ICcnLFxyXG4gICAgICAgICAgICBhc3NpZ25lcjogMCxcclxuICAgICAgICAgICAgYXNzaWduZWU6IDAsXHJcbiAgICAgICAgICAgIHJlbGF0ZWRVc2VyczogW10sXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICB0YWJEYXRhVGFzazogYW55W10gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2RlOiAnY29uZ3ZpZWMnLFxyXG4gICAgICAgICAgICBpY29uOiAncGkgcGktbGlzdCcsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnVGjDtG5nIHRpbiBjw7RuZyB2aeG7h2MnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvZGU6ICd3b3JrZmxvdycsXHJcbiAgICAgICAgICAgIGljb246ICdwaSBwaS11c2VyJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdOZ8aw4budaSBuaOG6rW4nLFxyXG4gICAgICAgICAgICBoaWRkZW46IHRydWVcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG4gICAgdGFiRGF0YUNoaWxkOiBhbnlbXSA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvZGU6ICdmaWxlRGluaEtlbScsXHJcbiAgICAgICAgICAgIGljb246ICdwaSBwaS1wYXBlcmNsaXAnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ0ZpbGUgxJHDrW5oIGvDqG0nXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvZGU6ICd0YXNrQ2hpbGQnLFxyXG4gICAgICAgICAgICBpY29uOiAncGkgcGktY2hlY2stc3F1YXJlJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdDw7RuZyB2aeG7h2MgY29uJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2RlOiAndGFza0xpZW5RdWFuJyxcclxuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLXNoYXJlLWFsdCcsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnQ8O0bmcgdmnhu4djIGxpw6puIHF1YW4nXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyB7XHJcbiAgICAgICAgLy8gICAgIGNvZGU6ICd0cmFvRG9pQ29uZ1ZpZWMnLFxyXG4gICAgICAgIC8vICAgICBpY29uOiAncGkgcGktY29tbWVudCcsXHJcbiAgICAgICAgLy8gICAgIGxhYmVsOiAnVHJhbyDEkeG7lWkgY8O0bmcgdmnhu4djJyxcclxuICAgICAgICAvLyB9XHJcbiAgICBdO1xyXG4gICAgYnV0dG9uczogYW55W10gPSBbXTtcclxuICAgIG1kV2lkdGhXb3JrZmxvdyA9IDY7XHJcbiAgICBtZExvYWlDb25nVmllYzogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgX2NvbmdWaWVjU2VydmljZTogQ29uZ1ZpZWNTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2RtTG9haUNvbmdWaWVjU2VydmljZTogRG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2RtTGluaFZ1Y0NvbmdWaWVjU2VydmljZTogRG1MaW5oVnVjQ29uZ1ZpZWNTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2RtUHJpb3JpdHlTZXJ2aWNlOiBEbVByaW9yaXR5U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF93b3JrZmxvd1Blcm1pc3Npb25EZXRhaWxTZXJ2aWNlOiBXb3JrZmxvd1Blcm1pc3Npb25EZXRhaWxTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xyXG4gICAgICAgIHRoaXMudXNlcnMuYXNzaWduZXIgPSAwO1xyXG4gICAgICAgIHRoaXMudXNlcnMuYXNzaWduZWUgPSAwO1xyXG4gICAgICAgIHRoaXMudXNlcnMucmVsYXRlZFVzZXJzID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuX2NvbXBvbmVudCA9IHRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5hdXRvRm9jdXMgPSAhdGhpcy5jb250cm9sO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX2NvbmdWaWVjU2VydmljZTtcclxuICAgICAgICBsZXQgb25DaGFuZ2VMb2FpQ29uZ1ZpZWMgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLl9pc0Zvcm1BZGROZXcoKSkge1xyXG4gICAgICAgICAgICBvbkNoYW5nZUxvYWlDb25nVmllYyA9IHRoaXMuaGFuZGxlQ2hhbmdlTG9haUNvbmdWaWVjV2hlbkFkZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWwuZm9ybVN0YXRlID09IEZvcm1TdGF0ZS5BREQpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC5kYXRhLmlkID0gdGhpcy5fY29tbW9uU2VydmljZS5ndWlkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSA8Rm9ybUNvbnRyb2xCYXNlW10+W1xyXG4gICAgICAgICAgICBuZXcgVGV4dENvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICd0ZW4nLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUw6puIGPDtG5nIHZp4buHYycsXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDEyXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRWRpdG9yQ29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ21vVGEnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdNw7QgdOG6oyBu4buZaSBkdW5nJyxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDEyXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRQcmlvcml0eScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ8SQ4buZIMawdSB0acOqbicsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fZG1Qcmlvcml0eVNlcnZpY2VcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBEcm9wZG93bkNvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpZExpbmhWdWMnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdMxKluaCB24buxYycsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fZG1MaW5oVnVjQ29uZ1ZpZWNTZXJ2aWNlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRGF0ZVRpbWVDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheUJhdERhdScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ05nw6B5IGLhuq90IMSR4bqndScsXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiAzXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRGF0ZVRpbWVDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheUtldFRodWMnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdOZ8OgeSBr4bq/dCB0aMO6YycsXHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3IERhdGVDb21wYXJlVmFsaWRhdG9yKE9wZXJhdG9yLmdyZWF0ZXJUaGFuRXF1YWwsICduZ2F5QmF0RGF1JylcclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiAzXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgUGVyY2VudENvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdwaGFuVHJhbScsXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiA2LFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUaeG6v24gxJHhu5knXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRMb2FpQ29uZ1ZpZWMnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdQaMOibiBsb+G6oWkgY8O0bmcgdmnhu4djJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbUxvYWlDb25nVmllY1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBpc1RyZWU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBmaWVsZFRyZWU6ICdpZFBhcmVudCcsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZVBhcmVudFJvb3Q6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBzb3J0czogW3sgZmllbGQ6ICdtYVBoYW5DYXAnLCBkaXI6IDEgfV0sXHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZWQ6IG9uQ2hhbmdlTG9haUNvbmdWaWVjXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLmFkZFNjaGVtYUJhc2UoKTtcclxuICAgICAgICAvLyBpZiAodGhpcy5faXNGb3JtQWRkTmV3KCkpIHtcclxuICAgICAgICAvLyAgICAgdGhpcy5zZXR0aW5nLnNjaGVtYS5wdXNoKFxyXG4gICAgICAgIC8vICAgICAgICAgbmV3IENoZWNrYm94Q29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgZmllbGQ6ICdhdXRvTmV4dFN0ZXAnLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIGxhYmVsOiAnVOG7sSDEkeG7mW5nIGNodXnhu4NuIGLGsOG7m2MgxJHhuqd1IHRpw6puJyxcclxuICAgICAgICAvLyAgICAgICAgICAgICBjbGFzczogJ21nLXRvcC0wJyxcclxuICAgICAgICAvLyAgICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIG1kV2lkdGg6IDYsXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgaGlkZGVuQ2hlY2s6IChyb290TW9kZWwpID0+ICFyb290TW9kZWwuX1dvcmtmbG93Q29kZVxyXG4gICAgICAgIC8vICAgICAgICAgfSlcclxuICAgICAgICAvLyAgICAgKTtcclxuICAgICAgICAvLyB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25Gb3JtSW5pdGlhbGl6ZWQoZXZ0OiBFdmVudERhdGEpIHtcclxuICAgICAgICBpZiAodGhpcy5faXNGb3JtQWRkTmV3KCkpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbCAmJiB0aGlzLmNvbnRyb2wuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihldnQubW9kZWwsIHRoaXMuY29udHJvbC5kYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZXZ0Lm1vZGVsLmlkTG9haUNvbmdWaWVjKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRXb3JrZmxvd0J5TG9haUNvbmdWaWVjKGV2dCwgZXZ0Lm1vZGVsLmlkTG9haUNvbmdWaWVjKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGVuQ29uZ1ZpZWMoKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXRhID0geyAuLi50aGlzLm1vZGVsLmRhdGEsIHRlbjogdGhpcy5fdGVuQ29uZ1ZpZWMgfTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBtb2RpZnlEZXRhaWxEYXRhKGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55OyB9KSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5nZW5lcmF0ZVdvcmtmbG93QnV0dG9uKGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyV29ya2Zsb3dCdXR0b25zKCkge1xyXG4gICAgICAgIHRoaXMuYnV0dG9ucyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdlbmVyYXRlV29ya2Zsb3dCdXR0b24oZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnk7IH0pIHtcclxuICAgICAgICBjb25zdCB1c2VySWRDdXJyZW50ID0gdGhpcy5fdXNlclNlcnZpY2UuZ2V0SWQoKTtcclxuICAgICAgICAvLyBM4bqleSByYSB0cuG6oW5nIHRow6FpIHF1eSB0csOsbmhcclxuICAgICAgICBjb25zdCBsc3RJdGVtU3RhdHVzID0gKGF3YWl0IHRoaXMuX3dvcmtmbG93UGVybWlzc2lvbkRldGFpbFNlcnZpY2UuY2hhbmdlRW5kcG9pbnQodGhpcy5fY29uZ1ZpZWNTZXJ2aWNlKS5nZXRBbGwoXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpdGVtSWQnLCBPcGVyYXRvci5lcXVhbCwgZGF0YS5pZCksXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcigndXNlcklkJywgT3BlcmF0b3IuZXF1YWwsIHVzZXJJZEN1cnJlbnQpXHJcbiAgICAgICAgICAgIF0sICdpdGVtSWQsdXNlcklkLHRyYW5nVGhhaSx0ZXh0VHJhbmdUaGFpLHdvcmtmbG93Q29kZSxwZXJtaXNzaW9uJ1xyXG4gICAgICAgICkpLmRhdGE7XHJcbiAgICAgICAgaWYgKGxzdEl0ZW1TdGF0dXMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKCdLaMO0bmcgbOG6pXkgxJHGsOG7o2MgdGjDtG5nIHRpbiB0cuG6oW5nIHRow6FpIGhp4buHbiB04bqhaSBj4bunYSBi4bqjbiBnaGknKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGl0ZW1TdGF0dXMgPSBudWxsO1xyXG4gICAgICAgIGlmICghbHN0SXRlbVN0YXR1cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaXRlbVN0YXR1cyA9IHtcclxuICAgICAgICAgICAgICAgIHRleHRUcmFuZ1RoYWk6ICdDaMawYSBjaOG6oXkgcXV5IHRyw6xuaCdcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGl0ZW1TdGF0dXMgPSBsc3RJdGVtU3RhdHVzLmZpbmQocSA9PiAocS5wZXJtaXNzaW9uICYgUGVybWlzc2lvbkJhc2UuRURJVCkgPT0gUGVybWlzc2lvbkJhc2UuRURJVCk7XHJcbiAgICAgICAgICAgIGlmIChpdGVtU3RhdHVzID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW1TdGF0dXMgPSBsc3RJdGVtU3RhdHVzWzBdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9zZXREaXNhYmxlQ29udHJvbCgnaWRMb2FpQ29uZ1ZpZWMnLCB0cnVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRhdGEuX190cmFuZ1RoYWkgPSBpdGVtU3RhdHVzLnRyYW5nVGhhaTtcclxuICAgICAgICBkYXRhLl9fdGV4dFRyYW5nVGhhaSA9IGl0ZW1TdGF0dXMudGV4dFRyYW5nVGhhaTtcclxuICAgICAgICBkYXRhLl9fd29ya2Zsb3dDb2RlID0gaXRlbVN0YXR1cy53b3JrZmxvd0NvZGU7XHJcbiAgICAgICAgZGF0YS5fX3Blcm1pc3Npb24gPSBpdGVtU3RhdHVzLnBlcm1pc3Npb247XHJcbiAgICAgICAgaWYgKHRoaXMuY3J1ZExpc3QpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0R2V0QWN0aW9uV29ya2Zsb3cgPSBhd2FpdCB0aGlzLmNydWRMaXN0LmdldEFjdGlvbldvcmtmbG93KGRhdGEpO1xyXG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocmVzdWx0R2V0QWN0aW9uV29ya2Zsb3cpKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNvbnN0IGJ1dHRvbkNvbnRleHRzID0gcmVzdWx0R2V0QWN0aW9uV29ya2Zsb3c7XHJcbiAgICAgICAgICAgIHRoaXMuYnV0dG9ucyA9IGJ1dHRvbkNvbnRleHRzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVDaGFuZ2VMb2FpQ29uZ1ZpZWNXaGVuQWRkID0gYXN5bmMgKGV2dDogRXZlbnREYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKGV2dC5ldmVudFR5cGUgPT0gJ2NoYW5nZScpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5sb2FkV29ya2Zsb3dCeUxvYWlDb25nVmllYyhldnQsIGV2dC5tb2RlbC5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBhc3luYyBsb2FkV29ya2Zsb3dCeUxvYWlDb25nVmllYyhldnQ6IEV2ZW50RGF0YSwgaWRMb2FpQ29uZ1ZpZWM6IHN0cmluZykge1xyXG4gICAgICAgIGlmICghaWRMb2FpQ29uZ1ZpZWMpIHtcclxuICAgICAgICAgICAgaWRMb2FpQ29uZ1ZpZWMgPSBldnQubW9kZWwuaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHdvcmtmbG93U2V0dGluZyA9IGF3YWl0IHRoaXMuX2RtTG9haUNvbmdWaWVjU2VydmljZS5nZXRXb3JrZmxvd1NldHRpbmdCeUlkTG9haUNvbmdWaWVjKGlkTG9haUNvbmdWaWVjKTtcclxuICAgICAgICB0aGlzLnNldFdvcmtmbG93RGF0YXNvdXJjZShldnQsIHdvcmtmbG93U2V0dGluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYXN5bmMgaGFuZGxlQ2hhbmdlV29ya2Zsb3dDb2RlKGV2dDogRXZlbnREYXRhKSB7XHJcbiAgICAvLyAgICAgdGhpcy50YWJEYXRhVGFza1sxXS5oaWRkZW4gPSAhZXZ0LnJvb3RNb2RlbC5fV29ya2Zsb3dDb2RlO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGFzeW5jIG9uQmVmb3JlU2F2ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtTmV4dEZpcnN0U3RlcCkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLmRhdGEuaXRlbVdvcmtmbG93SGlzdG9yeSA9IGF3YWl0IHRoaXMuZm9ybU5leHRGaXJzdFN0ZXAuZ2V0TW9kZWxEYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQWZ0ZXJTYXZlKHJlczogUmVzcG9uc2VSZXN1bHQpIHtcclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5mb3JtU3RhdGUgPT0gRm9ybVN0YXRlLkFERCAmJiByZXMgJiYgcmVzLnN1Y2Nlc3MgJiYgcmVzLmRhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkFmdGVyU2F2ZWQuZW1pdChyZXMuZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uVGFiQ2hhbmdlKGV2dCkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRhYkluZGV4ID0gZXZ0LmluZGV4O1xyXG4gICAgICAgIHRoaXMudXNlcnMudGFza05hbWUgPSB0aGlzLm1vZGVsLmRhdGEudGVuO1xyXG4gICAgfVxyXG5cclxuICAgIGZvcmN1c1RvRmlyc3RJbnB1dENvbnRyb2woZXZlbnQpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoQ29tQ3R4Q29uc3RhbnRzLkNPTU1PTi5GT0NVU19UT19GSVJTVF9JTlBVVF9DT05UUk9MKTtcclxuICAgIH1cclxufVxyXG5cclxuIl19
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29uZ3ZpZWMvY29uZ3ZpZWMvY29uZ3ZpZWMtZm9ybS9jb25ndmllYy1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUNILG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUduQixRQUFRLEVBQ1Isb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNwQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2hILE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzNILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDMUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMERBQTBELENBQUM7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LENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxLQUFLO1FBQzNCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDaEYsQ0FBQzs7O1lBL1FKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixtOUlBQTZDO2dCQUU3QyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQWxDaUMsUUFBUTtZQTBCakMsZUFBZTtZQUhmLHFCQUFxQjtZQURyQix3QkFBd0I7WUFFeEIsaUJBQWlCO1lBTmpCLCtCQUErQjs7O2dDQWtCbkMsU0FBUyxTQUFDLDhCQUE4QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTt1QkFDM0QsS0FBSztzQkFDTCxLQUFLOzBCQUVMLEtBQUs7MkJBS0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YUZvcm1CYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtZm9ybS1iYXNlJztcclxuaW1wb3J0IHsgRGF0ZUNvbXBhcmVWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvdmFsaWRhdG9ycyc7XHJcbmltcG9ydCB7IEZvcm1TdGF0ZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29uc3RhbnRzJztcclxuaW1wb3J0IHtcclxuICAgIEN1c3RvbUNvbnRyb2xTY2hlbWEsXHJcbiAgICBEYXRlVGltZUNvbnRyb2xTY2hlbWEsXHJcbiAgICBEcm9wZG93bkNvbnRyb2xTY2hlbWEsXHJcbiAgICBFZGl0b3JDb250cm9sU2NoZW1hLFxyXG4gICAgRXZlbnREYXRhLFxyXG4gICAgRm9ybUNvbnRyb2xCYXNlLFxyXG4gICAgT3BlcmF0b3IsXHJcbiAgICBQZXJjZW50Q29udHJvbFNjaGVtYSxcclxuICAgIFRleHRDb250cm9sU2NoZW1hXHJcbn0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IENydWRMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9jcnVkL2NydWQtbGlzdC9jcnVkLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29uZ1ZpZWNOZXh0Rmlyc3RTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZ3ZpZWMtbmV4dC1maXJzdC1zdGVwL2Nvbmd2aWVjLW5leHQtZmlyc3Qtc3RlcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd1Blcm1pc3Npb25EZXRhaWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy93b3JrZmxvdy9zZXJ2aWNlcy93b3JrZmxvdy1wZXJtaXNzaW9uLWRldGFpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tQ3R4Q29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlncy9jb21wb25lbnQtY29udGV4dC5jb25zdGFudCc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25CYXNlIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvY29tbW9uJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgRG1MaW5oVnVjQ29uZ1ZpZWNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZG0tbGluaHZ1Yy1jb25ndmllYy9zZXJ2aWNlcy9kbS1saW5odnVjLWNvbmd2aWVjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEbUxvYWlDb25nVmllY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9kbS1sb2FpLWNvbmd2aWVjL3NlcnZpY2VzL2RtLWxvYWktY29uZ3ZpZWMuc2VydmljZSc7XHJcbmltcG9ydCB7IERtUHJpb3JpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZG0tcHJpb3JpdHkvc2VydmljZXMvZG0tcHJpb3JpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYyB9IGZyb20gJy4uLy4uL21vZGVscy9lbnVtcyc7XHJcbmltcG9ydCB7IENvbmdWaWVjU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Nvbmd2aWVjLnNlcnZpY2UnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdiYXNlLWNvbmd2aWVjLWZvcm0nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nvbmd2aWVjLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY29uZ3ZpZWMtZm9ybS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZUNvbmdWaWVjRm9ybUNvbXBvbmVudCBleHRlbmRzIERhdGFGb3JtQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKENvbmdWaWVjTmV4dEZpcnN0U3RlcENvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIGZvcm1OZXh0Rmlyc3RTdGVwOiBDb25nVmllY05leHRGaXJzdFN0ZXBDb21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBjcnVkTGlzdDogQ3J1ZExpc3RDb21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBjb250cm9sOiBDdXN0b21Db250cm9sU2NoZW1hO1xyXG4gICAgX3RlbkNvbmdWaWVjOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzZXQgdGVuQ29uZ1ZpZWModmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3RlbkNvbmdWaWVjID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5zZXRUZW5Db25nVmllYygpO1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKSBvbkFmdGVyU2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIGF1dG9Gb2N1cyA9IHRydWU7XHJcbiAgICBwdWJsaWMgZW51bUZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTtcclxuICAgIGVudW1Mb2FpRGFuaFNhY2hDb25nVmllYyA9IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYztcclxuICAgIGN1cnJlbnRUYWJJbmRleDogbnVtYmVyO1xyXG4gICAgdXNlcnM6IHtcclxuICAgICAgICB0YXNrTmFtZTogc3RyaW5nLFxyXG4gICAgICAgIGFzc2lnbmVlOiBhbnksXHJcbiAgICAgICAgYXNzaWduZXI6IGFueSxcclxuICAgICAgICByZWxhdGVkVXNlcnM6IGFueVtdO1xyXG4gICAgfSA9IHtcclxuICAgICAgICAgICAgdGFza05hbWU6ICcnLFxyXG4gICAgICAgICAgICBhc3NpZ25lcjogMCxcclxuICAgICAgICAgICAgYXNzaWduZWU6IDAsXHJcbiAgICAgICAgICAgIHJlbGF0ZWRVc2VyczogW10sXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICB0YWJEYXRhVGFzazogYW55W10gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2RlOiAnY29uZ3ZpZWMnLFxyXG4gICAgICAgICAgICBpY29uOiAncGkgcGktbGlzdCcsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnVGjDtG5nIHRpbiBjw7RuZyB2aeG7h2MnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvZGU6ICd3b3JrZmxvdycsXHJcbiAgICAgICAgICAgIGljb246ICdwaSBwaS11c2VyJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdOZ8aw4budaSBuaOG6rW4nLFxyXG4gICAgICAgICAgICBoaWRkZW46IHRydWVcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG4gICAgdGFiRGF0YUNoaWxkOiBhbnlbXSA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvZGU6ICdmaWxlRGluaEtlbScsXHJcbiAgICAgICAgICAgIGljb246ICdwaSBwaS1wYXBlcmNsaXAnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ0ZpbGUgxJHDrW5oIGvDqG0nXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvZGU6ICd0YXNrQ2hpbGQnLFxyXG4gICAgICAgICAgICBpY29uOiAncGkgcGktY2hlY2stc3F1YXJlJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdDw7RuZyB2aeG7h2MgY29uJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2RlOiAndGFza0xpZW5RdWFuJyxcclxuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLXNoYXJlLWFsdCcsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnQ8O0bmcgdmnhu4djIGxpw6puIHF1YW4nXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyB7XHJcbiAgICAgICAgLy8gICAgIGNvZGU6ICd0cmFvRG9pQ29uZ1ZpZWMnLFxyXG4gICAgICAgIC8vICAgICBpY29uOiAncGkgcGktY29tbWVudCcsXHJcbiAgICAgICAgLy8gICAgIGxhYmVsOiAnVHJhbyDEkeG7lWkgY8O0bmcgdmnhu4djJyxcclxuICAgICAgICAvLyB9XHJcbiAgICBdO1xyXG4gICAgYnV0dG9uczogYW55W10gPSBbXTtcclxuICAgIG1kV2lkdGhXb3JrZmxvdyA9IDY7XHJcbiAgICBtZExvYWlDb25nVmllYzogbnVtYmVyO1xyXG4gICAgaWRMb2FpQ29uZ1ZpZWM6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIF9jb25nVmllY1NlcnZpY2U6IENvbmdWaWVjU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9kbUxvYWlDb25nVmllY1NlcnZpY2U6IERtTG9haUNvbmdWaWVjU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9kbUxpbmhWdWNDb25nVmllY1NlcnZpY2U6IERtTGluaFZ1Y0NvbmdWaWVjU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9kbVByaW9yaXR5U2VydmljZTogRG1Qcmlvcml0eVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfd29ya2Zsb3dQZXJtaXNzaW9uRGV0YWlsU2VydmljZTogV29ya2Zsb3dQZXJtaXNzaW9uRGV0YWlsU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgICAgICB0aGlzLnVzZXJzLmFzc2lnbmVyID0gMDtcclxuICAgICAgICB0aGlzLnVzZXJzLmFzc2lnbmVlID0gMDtcclxuICAgICAgICB0aGlzLnVzZXJzLnJlbGF0ZWRVc2VycyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sLl9jb21wb25lbnQgPSB0aGlzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuYXV0b0ZvY3VzID0gIXRoaXMuY29udHJvbDtcclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl9jb25nVmllY1NlcnZpY2U7XHJcbiAgICAgICAgbGV0IG9uQ2hhbmdlTG9haUNvbmdWaWVjID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5faXNGb3JtQWRkTmV3KCkpIHtcclxuICAgICAgICAgICAgb25DaGFuZ2VMb2FpQ29uZ1ZpZWMgPSB0aGlzLmhhbmRsZUNoYW5nZUxvYWlDb25nVmllY1doZW5BZGQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsLmZvcm1TdGF0ZSA9PSBGb3JtU3RhdGUuQUREKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuZGF0YS5pZCA9IHRoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldHRpbmcuc2NoZW1hID0gPEZvcm1Db250cm9sQmFzZVtdPltcclxuICAgICAgICAgICAgbmV3IFRleHRDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndGVuJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVMOqbiBjw7RuZyB2aeG7h2MnLFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiAxMlxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEVkaXRvckNvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdtb1RhJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTcO0IHThuqMgbuG7mWkgZHVuZycsXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiAxMlxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IERyb3Bkb3duQ29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkUHJpb3JpdHknLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICfEkOG7mSDGsHUgdGnDqm4nLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtUHJpb3JpdHlTZXJ2aWNlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRMaW5oVnVjJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTMSpbmggduG7sWMnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtTGluaFZ1Y0NvbmdWaWVjU2VydmljZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IERhdGVUaW1lQ29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25nYXlCYXREYXUnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdOZ8OgeSBi4bqvdCDEkeG6p3UnLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogM1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IERhdGVUaW1lQ29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25nYXlLZXRUaHVjJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfDoHkga+G6v3QgdGjDumMnLFxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1xyXG4gICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlQ29tcGFyZVZhbGlkYXRvcihPcGVyYXRvci5ncmVhdGVyVGhhbkVxdWFsLCAnbmdheUJhdERhdScpXHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogM1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IFBlcmNlbnRDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAncGhhblRyYW0nLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogNixcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVGnhur9uIMSR4buZJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IERyb3Bkb3duQ29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkTG9haUNvbmdWaWVjJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnUGjDom4gbG/huqFpIGPDtG5nIHZp4buHYycsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fZG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgaXNUcmVlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZmllbGRUcmVlOiAnaWRQYXJlbnQnLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVQYXJlbnRSb290OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgc29ydHM6IFt7IGZpZWxkOiAnbWFQaGFuQ2FwJywgZGlyOiAxIH1dLFxyXG4gICAgICAgICAgICAgICAgb25DaGFuZ2VkOiBvbkNoYW5nZUxvYWlDb25nVmllY1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5hZGRTY2hlbWFCYXNlKCk7XHJcbiAgICAgICAgLy8gaWYgKHRoaXMuX2lzRm9ybUFkZE5ldygpKSB7XHJcbiAgICAgICAgLy8gICAgIHRoaXMuc2V0dGluZy5zY2hlbWEucHVzaChcclxuICAgICAgICAvLyAgICAgICAgIG5ldyBDaGVja2JveENvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIGZpZWxkOiAnYXV0b05leHRTdGVwJyxcclxuICAgICAgICAvLyAgICAgICAgICAgICBsYWJlbDogJ1Thu7EgxJHhu5luZyBjaHV54buDbiBixrDhu5tjIMSR4bqndSB0acOqbicsXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgY2xhc3M6ICdtZy10b3AtMCcsXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgc2hvd0xhYmVsOiBmYWxzZSxcclxuICAgICAgICAvLyAgICAgICAgICAgICBtZFdpZHRoOiA2LFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIGhpZGRlbkNoZWNrOiAocm9vdE1vZGVsKSA9PiAhcm9vdE1vZGVsLl9Xb3JrZmxvd0NvZGVcclxuICAgICAgICAvLyAgICAgICAgIH0pXHJcbiAgICAgICAgLy8gICAgICk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uRm9ybUluaXRpYWxpemVkKGV2dDogRXZlbnREYXRhKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2lzRm9ybUFkZE5ldygpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wgJiYgdGhpcy5jb250cm9sLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZXZ0Lm1vZGVsLCB0aGlzLmNvbnRyb2wuZGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGV2dC5tb2RlbC5pZExvYWlDb25nVmllYykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pZExvYWlDb25nVmllYyA9IGV2dC5tb2RlbC5pZExvYWlDb25nVmllYztcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZFdvcmtmbG93QnlMb2FpQ29uZ1ZpZWMoZXZ0LCBldnQubW9kZWwuaWRMb2FpQ29uZ1ZpZWMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRUZW5Db25nVmllYygpIHtcclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGEgPSB7IC4uLnRoaXMubW9kZWwuZGF0YSwgdGVuOiB0aGlzLl90ZW5Db25nVmllYyB9O1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG1vZGlmeURldGFpbERhdGEoZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnk7IH0pIHtcclxuICAgICAgICBhd2FpdCB0aGlzLmdlbmVyYXRlV29ya2Zsb3dCdXR0b24oZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJXb3JrZmxvd0J1dHRvbnMoKSB7XHJcbiAgICAgICAgdGhpcy5idXR0b25zID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2VuZXJhdGVXb3JrZmxvd0J1dHRvbihkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueTsgfSkge1xyXG4gICAgICAgIGNvbnN0IHVzZXJJZEN1cnJlbnQgPSB0aGlzLl91c2VyU2VydmljZS5nZXRJZCgpO1xyXG4gICAgICAgIC8vIEzhuqV5IHJhIHRy4bqhbmcgdGjDoWkgcXV5IHRyw6xuaFxyXG4gICAgICAgIGNvbnN0IGxzdEl0ZW1TdGF0dXMgPSAoYXdhaXQgdGhpcy5fd29ya2Zsb3dQZXJtaXNzaW9uRGV0YWlsU2VydmljZS5jaGFuZ2VFbmRwb2ludCh0aGlzLl9jb25nVmllY1NlcnZpY2UpLmdldEFsbChcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2l0ZW1JZCcsIE9wZXJhdG9yLmVxdWFsLCBkYXRhLmlkKSxcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCd1c2VySWQnLCBPcGVyYXRvci5lcXVhbCwgdXNlcklkQ3VycmVudClcclxuICAgICAgICAgICAgXSwgJ2l0ZW1JZCx1c2VySWQsdHJhbmdUaGFpLHRleHRUcmFuZ1RoYWksd29ya2Zsb3dDb2RlLHBlcm1pc3Npb24nXHJcbiAgICAgICAgKSkuZGF0YTtcclxuICAgICAgICBpZiAobHN0SXRlbVN0YXR1cyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ0tow7RuZyBs4bqleSDEkcaw4bujYyB0aMO0bmcgdGluIHRy4bqhbmcgdGjDoWkgaGnhu4duIHThuqFpIGPhu6dhIGLhuqNuIGdoaScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaXRlbVN0YXR1cyA9IG51bGw7XHJcbiAgICAgICAgaWYgKCFsc3RJdGVtU3RhdHVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpdGVtU3RhdHVzID0ge1xyXG4gICAgICAgICAgICAgICAgdGV4dFRyYW5nVGhhaTogJ0NoxrBhIGNo4bqheSBxdXkgdHLDrG5oJ1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaXRlbVN0YXR1cyA9IGxzdEl0ZW1TdGF0dXMuZmluZChxID0+IChxLnBlcm1pc3Npb24gJiBQZXJtaXNzaW9uQmFzZS5FRElUKSA9PSBQZXJtaXNzaW9uQmFzZS5FRElUKTtcclxuICAgICAgICAgICAgaWYgKGl0ZW1TdGF0dXMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbVN0YXR1cyA9IGxzdEl0ZW1TdGF0dXNbMF07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3NldERpc2FibGVDb250cm9sKCdpZExvYWlDb25nVmllYycsIHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGF0YS5fX3RyYW5nVGhhaSA9IGl0ZW1TdGF0dXMudHJhbmdUaGFpO1xyXG4gICAgICAgIGRhdGEuX190ZXh0VHJhbmdUaGFpID0gaXRlbVN0YXR1cy50ZXh0VHJhbmdUaGFpO1xyXG4gICAgICAgIGRhdGEuX193b3JrZmxvd0NvZGUgPSBpdGVtU3RhdHVzLndvcmtmbG93Q29kZTtcclxuICAgICAgICBkYXRhLl9fcGVybWlzc2lvbiA9IGl0ZW1TdGF0dXMucGVybWlzc2lvbjtcclxuICAgICAgICBpZiAodGhpcy5jcnVkTGlzdCkge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHRHZXRBY3Rpb25Xb3JrZmxvdyA9IGF3YWl0IHRoaXMuY3J1ZExpc3QuZ2V0QWN0aW9uV29ya2Zsb3coZGF0YSk7XHJcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShyZXN1bHRHZXRBY3Rpb25Xb3JrZmxvdykpIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3QgYnV0dG9uQ29udGV4dHMgPSByZXN1bHRHZXRBY3Rpb25Xb3JrZmxvdztcclxuICAgICAgICAgICAgdGhpcy5idXR0b25zID0gYnV0dG9uQ29udGV4dHM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUNoYW5nZUxvYWlDb25nVmllY1doZW5BZGQgPSBhc3luYyAoZXZ0OiBFdmVudERhdGEpID0+IHtcclxuICAgICAgICBpZiAoZXZ0LmV2ZW50VHlwZSA9PSAnY2hhbmdlJykge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRXb3JrZmxvd0J5TG9haUNvbmdWaWVjKGV2dCwgZXZ0Lm1vZGVsLmlkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGFzeW5jIGxvYWRXb3JrZmxvd0J5TG9haUNvbmdWaWVjKGV2dDogRXZlbnREYXRhLCBpZExvYWlDb25nVmllYzogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKCFpZExvYWlDb25nVmllYykge1xyXG4gICAgICAgICAgICBpZExvYWlDb25nVmllYyA9IGV2dC5tb2RlbC5pZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgd29ya2Zsb3dTZXR0aW5nID0gYXdhaXQgdGhpcy5fZG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlLmdldFdvcmtmbG93U2V0dGluZ0J5SWRMb2FpQ29uZ1ZpZWMoaWRMb2FpQ29uZ1ZpZWMpO1xyXG4gICAgICAgIHRoaXMuc2V0V29ya2Zsb3dEYXRhc291cmNlKGV2dCwgd29ya2Zsb3dTZXR0aW5nKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBhc3luYyBoYW5kbGVDaGFuZ2VXb3JrZmxvd0NvZGUoZXZ0OiBFdmVudERhdGEpIHtcclxuICAgIC8vICAgICB0aGlzLnRhYkRhdGFUYXNrWzFdLmhpZGRlbiA9ICFldnQucm9vdE1vZGVsLl9Xb3JrZmxvd0NvZGU7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgYXN5bmMgb25CZWZvcmVTYXZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm1OZXh0Rmlyc3RTdGVwKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuZGF0YS5pdGVtV29ya2Zsb3dIaXN0b3J5ID0gYXdhaXQgdGhpcy5mb3JtTmV4dEZpcnN0U3RlcC5nZXRNb2RlbERhdGEoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgb25BZnRlclNhdmUocmVzOiBSZXNwb25zZVJlc3VsdCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsLmZvcm1TdGF0ZSA9PSBGb3JtU3RhdGUuQUREICYmIHJlcyAmJiByZXMuc3VjY2VzcyAmJiByZXMuZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uQWZ0ZXJTYXZlZC5lbWl0KHJlcy5kYXRhKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25UYWJDaGFuZ2UoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiSW5kZXggPSBldnQuaW5kZXg7XHJcbiAgICAgICAgdGhpcy51c2Vycy50YXNrTmFtZSA9IHRoaXMubW9kZWwuZGF0YS50ZW47XHJcbiAgICB9XHJcblxyXG4gICAgZm9yY3VzVG9GaXJzdElucHV0Q29udHJvbChldmVudCkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudChDb21DdHhDb25zdGFudHMuQ09NTU9OLkZPQ1VTX1RPX0ZJUlNUX0lOUFVUX0NPTlRST0wpO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0=
@@ -44078,6 +44078,7 @@ class BaseCongViecFormComponent extends DataFormBase {
44078
44078
  Object.assign(evt.model, this.control.data);
44079
44079
  }
44080
44080
  if (evt.model.idLoaiCongViec) {
44081
+ this.idLoaiCongViec = evt.model.idLoaiCongViec;
44081
44082
  yield this.loadWorkflowByLoaiCongViec(evt, evt.model.idLoaiCongViec);
44082
44083
  }
44083
44084
  }
@@ -44170,7 +44171,7 @@ class BaseCongViecFormComponent extends DataFormBase {
44170
44171
  BaseCongViecFormComponent.decorators = [
44171
44172
  { type: Component, args: [{
44172
44173
  selector: 'base-congviec-form',
44173
- template: "<!-- <ng-container *ngIf=\"_isFormAddNew()\">\r\n <div style=\"height: 100%; overflow: hidden\">\r\n <tn-tabview [data]=\"tabDataTask\" [allowViewAll]=\"true\">\r\n <ng-template #congviec>\r\n <ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n </ng-template>\r\n <ng-template #workflow>\r\n <tn-custom-scrollbar>\r\n <congviec-next-first-step [crudListSetting]=\"crudList.setting\"\r\n [workflowCode]=\"model.data._WorkflowCode\" [taskModel]=\"model.data\"></congviec-next-first-step>\r\n </tn-custom-scrollbar>\r\n </ng-template>\r\n </tn-tabview>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!_isFormAddNew()\">\r\n <ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n</ng-container> -->\r\n<ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n<ng-template #contentTask>\r\n <tn-custom-scrollbar>\r\n <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\"\r\n [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 <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"model.formState\"\r\n [loaiDanhSach]=\"enumLoaiDanhSachCongViec.CongViecCon\" [idCongViec]=\"model.data.id\">\r\n </base-congviec>\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\" [users]=\"users\"></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 </tn-custom-scrollbar>\r\n</ng-template>\r\n<ng-template #buttonTemplate>\r\n <button *ngFor=\"let butt of this.buttons\" pButton [icon]=\"butt.icon\" [label]=\"butt.label\" class=\"p-button-text\"\r\n (click)=\"butt.command()\">\r\n </button>\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>",
44174
+ template: "<!-- <ng-container *ngIf=\"_isFormAddNew()\">\r\n <div style=\"height: 100%; overflow: hidden\">\r\n <tn-tabview [data]=\"tabDataTask\" [allowViewAll]=\"true\">\r\n <ng-template #congviec>\r\n <ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n </ng-template>\r\n <ng-template #workflow>\r\n <tn-custom-scrollbar>\r\n <congviec-next-first-step [crudListSetting]=\"crudList.setting\"\r\n [workflowCode]=\"model.data._WorkflowCode\" [taskModel]=\"model.data\"></congviec-next-first-step>\r\n </tn-custom-scrollbar>\r\n </ng-template>\r\n </tn-tabview>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!_isFormAddNew()\">\r\n <ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n</ng-container> -->\r\n<ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n<ng-template #contentTask>\r\n <tn-custom-scrollbar>\r\n <div *ngIf=\"idLoaiCongViec === 'f51ca5f6-d266-4521-a633-e2f9f8528aaf'\" class=\"note\"\r\n style=\"padding: 0.5rem 1rem;\">\r\n <b>Ghi ch\u00FA</b>: Vui l\u00F2ng chuy\u1EC3n sang ph\u00E2n h\u1EC7 V\u0103n b\u1EA3n \u0111\u1EC3 t\u1EA1o D\u1EF1 th\u1EA3o v\u0103n b\u1EA3n \u0111i. Link:\r\n <a href=\"https://usmart.utc.edu.vn/vanban/vanbandi/du-thao\" target=\"_blank\">\r\n https://usmart.utc.edu.vn/vanban/vanbandi/du-thao</a>\r\n </div>\r\n\r\n <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\"\r\n [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 <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"model.formState\"\r\n [loaiDanhSach]=\"enumLoaiDanhSachCongViec.CongViecCon\" [idCongViec]=\"model.data.id\">\r\n </base-congviec>\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\" [users]=\"users\"></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 </tn-custom-scrollbar>\r\n</ng-template>\r\n<ng-template #buttonTemplate>\r\n <button *ngFor=\"let butt of this.buttons\" pButton [icon]=\"butt.icon\" [label]=\"butt.label\" class=\"p-button-text\"\r\n (click)=\"butt.command()\">\r\n </button>\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>",
44174
44175
  providers: [ComponentContextService],
44175
44176
  styles: [".tab-child{padding:1em}"]
44176
44177
  },] }