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.
Files changed (120) hide show
  1. package/bundles/tnx-shared.umd.js +1999 -249
  2. package/bundles/tnx-shared.umd.js.map +1 -1
  3. package/bundles/tnx-shared.umd.min.js +1 -1
  4. package/bundles/tnx-shared.umd.min.js.map +1 -1
  5. package/classes/base/data-list-base.d.ts +2 -0
  6. package/classes/base/data-list-base.d.ts.map +1 -1
  7. package/classes/form-schema.d.ts +3 -0
  8. package/classes/form-schema.d.ts.map +1 -1
  9. package/components/chat/chat-box/chat-box.component.d.ts +102 -0
  10. package/components/chat/chat-box/chat-box.component.d.ts.map +1 -0
  11. package/components/chat/chat-box/chat-box.component.ngfactory.d.ts.map +1 -0
  12. package/components/chat/chat-box/chat-box.component.scss.shim.ngstyle.d.ts.map +1 -0
  13. package/components/chat/chat-send-message-box/chat-send-message-box.component.d.ts +37 -0
  14. package/components/chat/chat-send-message-box/chat-send-message-box.component.d.ts.map +1 -0
  15. package/components/chat/chat-send-message-box/chat-send-message-box.component.ngfactory.d.ts.map +1 -0
  16. package/components/chat/chat-send-message-box/chat-send-message-box.component.scss.shim.ngstyle.d.ts.map +1 -0
  17. package/components/chat/common-style.scss.shim.ngstyle.d.ts.map +1 -0
  18. package/components/chat/models/enums.d.ts +11 -0
  19. package/components/chat/models/enums.d.ts.map +1 -0
  20. package/components/chat/models/models.d.ts +10 -0
  21. package/components/chat/models/models.d.ts.map +1 -0
  22. package/components/chat/services/chat.service.d.ts +34 -0
  23. package/components/chat/services/chat.service.d.ts.map +1 -0
  24. package/components/chat/services/chat.service.ngfactory.d.ts.map +1 -0
  25. package/components/chat/services/content.service.d.ts +20 -0
  26. package/components/chat/services/content.service.d.ts.map +1 -0
  27. package/components/chat/services/content.service.ngfactory.d.ts.map +1 -0
  28. package/components/chat/services/message-board.service.d.ts +15 -0
  29. package/components/chat/services/message-board.service.d.ts.map +1 -0
  30. package/components/chat/services/message-board.service.ngfactory.d.ts.map +1 -0
  31. package/components/chat/services/status.service.d.ts +14 -0
  32. package/components/chat/services/status.service.d.ts.map +1 -0
  33. package/components/chat/services/status.service.ngfactory.d.ts.map +1 -0
  34. package/components/crud/crud-list/crud-list.component.d.ts +6 -0
  35. package/components/crud/crud-list/crud-list.component.d.ts.map +1 -1
  36. package/components/file-explorer/file-manager/file-manager.component.d.ts +6 -0
  37. package/components/file-explorer/file-manager/file-manager.component.d.ts.map +1 -1
  38. package/components/file-explorer/models/service-request-model.d.ts +1 -0
  39. package/components/file-explorer/models/service-request-model.d.ts.map +1 -1
  40. package/components/statemachines/models/enums.d.ts +4 -0
  41. package/components/statemachines/models/enums.d.ts.map +1 -1
  42. package/components/statemachines/statemachines-designer/statemachines-designer.component.d.ts +1 -1
  43. package/components/statemachines/statemachines-designer/statemachines-designer.component.d.ts.map +1 -1
  44. package/components/tn-custom-scrollbar/tn-custom-scrollbar.component.d.ts +1 -0
  45. package/components/tn-custom-scrollbar/tn-custom-scrollbar.component.d.ts.map +1 -1
  46. package/components/tn-dialog/tn-dialog.component.d.ts +1 -0
  47. package/components/tn-dialog/tn-dialog.component.d.ts.map +1 -1
  48. package/components/user-picker/user-picker-dialog/user-picker-dialog.component.d.ts +23 -0
  49. package/components/user-picker/user-picker-dialog/user-picker-dialog.component.d.ts.map +1 -0
  50. package/components/user-picker/user-picker-dialog/user-picker-dialog.component.ngfactory.d.ts.map +1 -0
  51. package/components/user-picker/user-picker-dialog/user-picker-dialog.component.scss.shim.ngstyle.d.ts.map +1 -0
  52. package/components/workflow/permission-sharing/permission-sharing.component.d.ts +21 -0
  53. package/components/workflow/permission-sharing/permission-sharing.component.d.ts.map +1 -0
  54. package/components/workflow/permission-sharing/permission-sharing.component.ngfactory.d.ts.map +1 -0
  55. package/components/workflow/permission-sharing/permission-sharing.component.scss.shim.ngstyle.d.ts.map +1 -0
  56. package/components/workflow/services/workflow-permission.service.d.ts +10 -0
  57. package/components/workflow/services/workflow-permission.service.d.ts.map +1 -0
  58. package/components/workflow/services/workflow-permission.service.ngfactory.d.ts.map +1 -0
  59. package/components/workflow/workflow-history-new/workflow-history-new.component.d.ts.map +1 -1
  60. package/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.d.ts +6 -2
  61. package/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.d.ts.map +1 -1
  62. package/congviec/congviec/congviec-form/congviec-form.component.d.ts +9 -1
  63. package/congviec/congviec/congviec-form/congviec-form.component.d.ts.map +1 -1
  64. package/esm2015/classes/base/data-form-base.js +3 -3
  65. package/esm2015/classes/base/data-list-base.js +41 -6
  66. package/esm2015/classes/form-schema.js +1 -1
  67. package/esm2015/components/chat/chat-box/chat-box.component.js +626 -0
  68. package/esm2015/components/chat/chat-send-message-box/chat-send-message-box.component.js +245 -0
  69. package/esm2015/components/chat/models/enums.js +13 -0
  70. package/esm2015/components/chat/models/models.js +12 -0
  71. package/esm2015/components/chat/services/chat.service.js +113 -0
  72. package/esm2015/components/chat/services/content.service.js +57 -0
  73. package/esm2015/components/chat/services/message-board.service.js +40 -0
  74. package/esm2015/components/chat/services/status.service.js +36 -0
  75. package/esm2015/components/crud/crud-list/crud-list.component.js +55 -4
  76. package/esm2015/components/file-explorer/file-manager/file-manager.component.js +69 -16
  77. package/esm2015/components/file-explorer/file-viewer/file-viewer.component.js +2 -2
  78. package/esm2015/components/file-explorer/models/service-request-model.js +5 -2
  79. package/esm2015/components/statemachines/models/enums.js +6 -1
  80. package/esm2015/components/tn-custom-scrollbar/tn-custom-scrollbar.component.js +26 -11
  81. package/esm2015/components/tn-dialog/tn-dialog.component.js +4 -2
  82. package/esm2015/components/user-picker/user-picker-dialog/user-picker-dialog.component.js +52 -0
  83. package/esm2015/components/workflow/permission-sharing/permission-sharing.component.js +123 -0
  84. package/esm2015/components/workflow/services/workflow-permission.service.js +27 -0
  85. package/esm2015/components/workflow/workflow-history-new/workflow-history-new.component.js +4 -1
  86. package/esm2015/congviec/cauhinh-workflow/cauhinh-workflow-detail/cauhinh-workflow-detail.component.js +2 -2
  87. package/esm2015/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.js +38 -14
  88. package/esm2015/congviec/congviec/congviec-form/congviec-form.component.js +25 -4
  89. package/esm2015/congviec/congviec/congviec.component.js +3 -3
  90. package/esm2015/models/basic-user-info.js +6 -1
  91. package/esm2015/public-api.js +4 -1
  92. package/esm2015/services/base.service.js +33 -9
  93. package/esm2015/services/common.service.js +3 -18
  94. package/esm2015/services/crud.service.js +56 -41
  95. package/esm2015/services/notifier.service.js +2 -2
  96. package/esm2015/services/user.service.js +37 -23
  97. package/esm2015/tnx-shared.js +49 -43
  98. package/esm2015/tnx-shared.module.js +10 -2
  99. package/fesm2015/tnx-shared.js +1705 -202
  100. package/fesm2015/tnx-shared.js.map +1 -1
  101. package/models/basic-user-info.d.ts +2 -3
  102. package/models/basic-user-info.d.ts.map +1 -1
  103. package/package.json +2 -2
  104. package/public-api.d.ts +3 -0
  105. package/public-api.d.ts.map +1 -1
  106. package/services/base.service.d.ts +5 -1
  107. package/services/base.service.d.ts.map +1 -1
  108. package/services/common.service.d.ts +3 -3
  109. package/services/common.service.d.ts.map +1 -1
  110. package/services/crud.service.d.ts.map +1 -1
  111. package/services/notifier.service.d.ts +1 -1
  112. package/services/notifier.service.d.ts.map +1 -1
  113. package/services/user.service.d.ts +14 -2
  114. package/services/user.service.d.ts.map +1 -1
  115. package/tnx-shared.d.ts +48 -42
  116. package/tnx-shared.d.ts.map +1 -1
  117. package/tnx-shared.metadata.json +1 -1
  118. package/tnx-shared.module.d.ts +5 -1
  119. package/tnx-shared.module.d.ts.map +1 -1
  120. package/tnx-shared.module.ngfactory.d.ts.map +1 -1
@@ -0,0 +1,123 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Component, Injector, Input } from '@angular/core';
3
+ import { ComponentContextService } from '../../../app-context/component-context.service';
4
+ import { DataListBase } from '../../../classes/base/data-list-base';
5
+ import { ColumnSchemaBase, HeightType, ModelSchema, Operator } from '../../../classes/form-schema';
6
+ import { PermissionBase } from '../../../enums/common';
7
+ import { BaseService } from '../../../services/base.service';
8
+ import { EnumPermissionType } from '../../statemachines/models/enums';
9
+ import { WorkflowPermissionService } from '../services/workflow-permission.service';
10
+ export class PermissionSharingComponent extends DataListBase {
11
+ constructor(_injector, _workflowPermissionService) {
12
+ super(_injector);
13
+ this._injector = _injector;
14
+ this._workflowPermissionService = _workflowPermissionService;
15
+ }
16
+ ngOnInit() {
17
+ this.setting.baseService = this._workflowPermissionService;
18
+ this.setting.settingKey = 'permission-sharing';
19
+ this.setting.title = '';
20
+ this.setting.heightType = HeightType.dynamic;
21
+ this.setting.showEditLink = false;
22
+ this.setting.hiddenToolbar = true;
23
+ this.setting.hiddenWorkflowColumn = true;
24
+ this.setting.hiddenSettingWorkflow = true;
25
+ this.setting.hiddenSettingWorkflowNew = true;
26
+ this.setting.hiddenSettingPermission = true;
27
+ this.init();
28
+ }
29
+ init() {
30
+ this.setting.modelSchemas = [
31
+ new ModelSchema({ field: 'userIdCreated', name: 'Người chia sẻ', fullName: 'Người chia sẻ', description: '' }),
32
+ new ModelSchema({ field: 'permission', name: 'Quyền', fullName: 'Quyền', description: '' }),
33
+ new ModelSchema({ field: 'created', name: 'Thời gian', fullName: 'Thời gian', description: '' }),
34
+ ];
35
+ this.setting.cols = [
36
+ new ColumnSchemaBase({
37
+ field: 'userIdCreated',
38
+ baseService: this._userService,
39
+ displayField: 'fullNameNew'
40
+ }),
41
+ new ColumnSchemaBase({
42
+ field: 'strPermissions',
43
+ label: this._translateService.instant('Quyền'),
44
+ }),
45
+ new ColumnSchemaBase({
46
+ field: 'created',
47
+ dataType: 'datetime',
48
+ width: '20%'
49
+ })
50
+ ];
51
+ this.model.ready = true;
52
+ super.ngOnInit();
53
+ }
54
+ modifyGridInfo(gridInfo) {
55
+ return __awaiter(this, void 0, void 0, function* () {
56
+ gridInfo.filters.unshift(this.newFilter('itemId', Operator.equal, this.item.id), this.newFilter('type', Operator.equal, EnumPermissionType.SHARE));
57
+ gridInfo.sorts.unshift(this.newSort('created', -1));
58
+ });
59
+ }
60
+ beforeRenderDataSource(dataSource) {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ const separator = ', ';
63
+ dataSource.forEach(item => {
64
+ item.hiddenEdit = true;
65
+ item.hiddenCopyLink = true;
66
+ // Tổng hợp quyền của bản ghi
67
+ let strPermissions = '';
68
+ if (this.checkHasPermission(item.permission, PermissionBase.READ)) {
69
+ strPermissions += `xem${separator}`;
70
+ }
71
+ if (this.checkHasPermission(item.permission, PermissionBase.EDIT)) {
72
+ strPermissions += `sửa${separator}`;
73
+ }
74
+ if (this.checkHasPermission(item.permission, PermissionBase.DELETE)) {
75
+ strPermissions += `xóa${separator}`;
76
+ }
77
+ if (strPermissions.length > 0) {
78
+ strPermissions = strPermissions.substring(0, strPermissions.length - separator.length);
79
+ strPermissions = strPermissions.substring(0, 1).toUpperCase() + strPermissions.substring(1);
80
+ }
81
+ item.strPermissions = strPermissions;
82
+ });
83
+ });
84
+ }
85
+ checkHasPermission(permission, permissionCheck) {
86
+ return (permission & permissionCheck) == permissionCheck;
87
+ }
88
+ delete(item) {
89
+ this.deletePermissionSharing([item.id]);
90
+ }
91
+ deleteMultiple(items) {
92
+ this.deletePermissionSharing(items.map(q => q.id));
93
+ }
94
+ deletePermissionSharing(ids) {
95
+ if (ids.length == 0) {
96
+ return this._notifierService.showWarning('Bạn chưa chọn link muốn xóa');
97
+ }
98
+ this._notifierService.showConfirm('Bạn có chắc chắn muốn xóa link đã chọn')
99
+ .then(res => {
100
+ if (!res)
101
+ return;
102
+ this.baseService.deleteLinkSharing(ids)
103
+ .then(res => this.handleResponse(res, 'Xóa thành công', f => this._triggerProcessData()));
104
+ });
105
+ }
106
+ }
107
+ PermissionSharingComponent.decorators = [
108
+ { type: Component, args: [{
109
+ selector: 'permission-sharing',
110
+ template: "<crud-list *ngIf=\"model.ready\" #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\"\r\n [disableShare]=\"true\" [hiddenCopyLink]=\"true\" [hiddenAdd]=\"true\" (onReload)=\"_triggerProcessData($event)\"\r\n (onAdd)=\"_add($event)\" (onEdit)=\"_edit($event)\" (onView)=\"_view($event)\" (onDelete)=\"delete($event)\"\r\n (onDeleteMultiple)=\"deleteMultiple($event)\" (onReloaded)=\"_handleReloaded($event)\">\r\n</crud-list>",
111
+ providers: [ComponentContextService],
112
+ styles: [".state-designer-container>div:first-child{font-size:.9em;font-weight:700;padding:.5em 0}.container-receiver div{margin-bottom:10px}.container-receiver div:last-child{margin-bottom:0}::ng-deep workflow-history-new tr.recalled{opacity:.5}"]
113
+ },] }
114
+ ];
115
+ PermissionSharingComponent.ctorParameters = () => [
116
+ { type: Injector },
117
+ { type: WorkflowPermissionService }
118
+ ];
119
+ PermissionSharingComponent.propDecorators = {
120
+ baseService: [{ type: Input }],
121
+ item: [{ type: Input }]
122
+ };
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1zaGFyaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3dvcmtmbG93L3Blcm1pc3Npb24tc2hhcmluZy9wZXJtaXNzaW9uLXNoYXJpbmcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBUXBGLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxZQUFZO0lBR3hELFlBQ2MsU0FBbUIsRUFDbkIsMEJBQXFEO1FBRS9ELEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUhQLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUEyQjtJQUduRSxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQztRQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQztRQUUv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RUQsY0FBYyxDQUFDLEtBQUs7UUFDaEIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU8sdUJBQXVCLENBQUMsR0FBYTtRQUN6QyxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQzNFO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyx3Q0FBd0MsQ0FBQzthQUN0RSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDUixJQUFJLENBQUMsR0FBRztnQkFBRSxPQUFPO1lBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDO2lCQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7OztZQWxISixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsNGRBQWtEO2dCQUVsRCxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQWZrQyxRQUFRO1lBUWxDLHlCQUF5Qjs7OzBCQVM3QixLQUFLO21CQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFMaXN0QmFzZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvYmFzZS9kYXRhLWxpc3QtYmFzZSc7XHJcbmltcG9ydCB7IENvbHVtblNjaGVtYUJhc2UsIEhlaWdodFR5cGUsIE1vZGVsU2NoZW1hLCBPcGVyYXRvciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uQmFzZSB9IGZyb20gJy4uLy4uLy4uL2VudW1zL2NvbW1vbic7XHJcbmltcG9ydCB7IEdyaWRJbmZvIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW51bVBlcm1pc3Npb25UeXBlIH0gZnJvbSAnLi4vLi4vc3RhdGVtYWNoaW5lcy9tb2RlbHMvZW51bXMnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd1Blcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvd29ya2Zsb3ctcGVybWlzc2lvbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdwZXJtaXNzaW9uLXNoYXJpbmcnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Blcm1pc3Npb24tc2hhcmluZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9wZXJtaXNzaW9uLXNoYXJpbmcuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvblNoYXJpbmdDb21wb25lbnQgZXh0ZW5kcyBEYXRhTGlzdEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gICAgQElucHV0KCkgYmFzZVNlcnZpY2U6IEJhc2VTZXJ2aWNlO1xyXG4gICAgQElucHV0KCkgaXRlbTogYW55O1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJvdGVjdGVkIF93b3JrZmxvd1Blcm1pc3Npb25TZXJ2aWNlOiBXb3JrZmxvd1Blcm1pc3Npb25TZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX3dvcmtmbG93UGVybWlzc2lvblNlcnZpY2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNldHRpbmdLZXkgPSAncGVybWlzc2lvbi1zaGFyaW5nJztcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLnRpdGxlID0gJyc7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhlaWdodFR5cGUgPSBIZWlnaHRUeXBlLmR5bmFtaWM7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNob3dFZGl0TGluayA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5Ub29sYmFyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuV29ya2Zsb3dDb2x1bW4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nV29ya2Zsb3cgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nV29ya2Zsb3dOZXcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nUGVybWlzc2lvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCgpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmcubW9kZWxTY2hlbWFzID0gW1xyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ3VzZXJJZENyZWF0ZWQnLCBuYW1lOiAnTmfGsOG7nWkgY2hpYSBz4bq7JywgZnVsbE5hbWU6ICdOZ8aw4budaSBjaGlhIHPhursnLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAncGVybWlzc2lvbicsIG5hbWU6ICdRdXnhu4FuJywgZnVsbE5hbWU6ICdRdXnhu4FuJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2NyZWF0ZWQnLCBuYW1lOiAnVGjhu51pIGdpYW4nLCBmdWxsTmFtZTogJ1Ro4budaSBnaWFuJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHRoaXMuc2V0dGluZy5jb2xzID0gW1xyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3VzZXJJZENyZWF0ZWQnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3VzZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnZnVsbE5hbWVOZXcnXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3N0clBlcm1pc3Npb25zJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1F1eeG7gW4nKSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnY3JlYXRlZCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2RhdGV0aW1lJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjAlJ1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHRoaXMubW9kZWwucmVhZHkgPSB0cnVlO1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbW9kaWZ5R3JpZEluZm8oZ3JpZEluZm86IEdyaWRJbmZvKSB7XHJcbiAgICAgICAgZ3JpZEluZm8uZmlsdGVycy51bnNoaWZ0KFxyXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignaXRlbUlkJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaXRlbS5pZCksXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCd0eXBlJywgT3BlcmF0b3IuZXF1YWwsIEVudW1QZXJtaXNzaW9uVHlwZS5TSEFSRSksXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgZ3JpZEluZm8uc29ydHMudW5zaGlmdCh0aGlzLm5ld1NvcnQoJ2NyZWF0ZWQnLCAtMSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGJlZm9yZVJlbmRlckRhdGFTb3VyY2UoZGF0YVNvdXJjZSkge1xyXG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9ICcsICc7XHJcbiAgICAgICAgZGF0YVNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpdGVtLmhpZGRlbkVkaXQgPSB0cnVlO1xyXG4gICAgICAgICAgICBpdGVtLmhpZGRlbkNvcHlMaW5rID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy8gVOG7lW5nIGjhu6NwIHF1eeG7gW4gY+G7p2EgYuG6o24gZ2hpXHJcbiAgICAgICAgICAgIGxldCBzdHJQZXJtaXNzaW9ucyA9ICcnO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jaGVja0hhc1Blcm1pc3Npb24oaXRlbS5wZXJtaXNzaW9uLCBQZXJtaXNzaW9uQmFzZS5SRUFEKSkge1xyXG4gICAgICAgICAgICAgICAgc3RyUGVybWlzc2lvbnMgKz0gYHhlbSR7c2VwYXJhdG9yfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tIYXNQZXJtaXNzaW9uKGl0ZW0ucGVybWlzc2lvbiwgUGVybWlzc2lvbkJhc2UuRURJVCkpIHtcclxuICAgICAgICAgICAgICAgIHN0clBlcm1pc3Npb25zICs9IGBz4butYSR7c2VwYXJhdG9yfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tIYXNQZXJtaXNzaW9uKGl0ZW0ucGVybWlzc2lvbiwgUGVybWlzc2lvbkJhc2UuREVMRVRFKSkge1xyXG4gICAgICAgICAgICAgICAgc3RyUGVybWlzc2lvbnMgKz0gYHjDs2Eke3NlcGFyYXRvcn1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdHJQZXJtaXNzaW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBzdHJQZXJtaXNzaW9ucyA9IHN0clBlcm1pc3Npb25zLnN1YnN0cmluZygwLCBzdHJQZXJtaXNzaW9ucy5sZW5ndGggLSBzZXBhcmF0b3IubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgIHN0clBlcm1pc3Npb25zID0gc3RyUGVybWlzc2lvbnMuc3Vic3RyaW5nKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBzdHJQZXJtaXNzaW9ucy5zdWJzdHJpbmcoMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXRlbS5zdHJQZXJtaXNzaW9ucyA9IHN0clBlcm1pc3Npb25zO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tIYXNQZXJtaXNzaW9uKHBlcm1pc3Npb246IG51bWJlciwgcGVybWlzc2lvbkNoZWNrOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gKHBlcm1pc3Npb24gJiBwZXJtaXNzaW9uQ2hlY2spID09IHBlcm1pc3Npb25DaGVjaztcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGUoaXRlbSkge1xyXG4gICAgICAgIHRoaXMuZGVsZXRlUGVybWlzc2lvblNoYXJpbmcoW2l0ZW0uaWRdKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVNdWx0aXBsZShpdGVtcykge1xyXG4gICAgICAgIHRoaXMuZGVsZXRlUGVybWlzc2lvblNoYXJpbmcoaXRlbXMubWFwKHEgPT4gcS5pZCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZGVsZXRlUGVybWlzc2lvblNoYXJpbmcoaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIGlmIChpZHMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZygnQuG6oW4gY2jGsGEgY2jhu41uIGxpbmsgbXXhu5FuIHjDs2EnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dDb25maXJtKCdC4bqhbiBjw7MgY2jhuq9jIGNo4bqvbiBtdeG7kW4geMOzYSBsaW5rIMSRw6MgY2jhu41uJylcclxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghcmVzKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhc2VTZXJ2aWNlLmRlbGV0ZUxpbmtTaGFyaW5nKGlkcylcclxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXMgPT4gdGhpcy5oYW5kbGVSZXNwb25zZShyZXMsICdYw7NhIHRow6BuaCBjw7RuZycsIGYgPT4gdGhpcy5fdHJpZ2dlclByb2Nlc3NEYXRhKCkpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,27 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Injectable, Injector } from '@angular/core';
3
+ import { BaseService } from '../../../services/base.service';
4
+ import { ModuleConfigService } from '../../../services/module-config.service';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ import * as i2 from "../../../services/module-config.service";
8
+ export class WorkflowPermissionService extends BaseService {
9
+ constructor(http, injector, _moduleConfigService) {
10
+ super(http, injector, `${_moduleConfigService.getConfig().environment.apiDomain.workflowEndpoint}/WorkflowPermission`);
11
+ this.entityName = 'WorkflowPermission';
12
+ this.serviceCode = 'workflow';
13
+ this.endPoint = _moduleConfigService.getConfig().environment.apiDomain.workflowEndpoint;
14
+ }
15
+ }
16
+ WorkflowPermissionService.ɵprov = i0.ɵɵdefineInjectable({ factory: function WorkflowPermissionService_Factory() { return new WorkflowPermissionService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i2.ModuleConfigService)); }, token: WorkflowPermissionService, providedIn: "root" });
17
+ WorkflowPermissionService.decorators = [
18
+ { type: Injectable, args: [{
19
+ providedIn: 'root'
20
+ },] }
21
+ ];
22
+ WorkflowPermissionService.ctorParameters = () => [
23
+ { type: HttpClient },
24
+ { type: Injector },
25
+ { type: ModuleConfigService }
26
+ ];
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvd29ya2Zsb3cvc2VydmljZXMvd29ya2Zsb3ctcGVybWlzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7QUFLOUUsTUFBTSxPQUFPLHlCQUEwQixTQUFRLFdBQVc7SUFHdEQsWUFDSSxJQUFnQixFQUNoQixRQUFrQixFQUNsQixvQkFBeUM7UUFFekMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLGdCQUFnQixxQkFBcUIsQ0FBQyxDQUFDO1FBUDNILGVBQVUsR0FBRyxvQkFBb0IsQ0FBQztRQUNsQyxnQkFBVyxHQUFHLFVBQVUsQ0FBQztRQU9yQixJQUFJLENBQUMsUUFBUSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7SUFDNUYsQ0FBQzs7OztZQWJKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBUFEsVUFBVTtZQUNFLFFBQVE7WUFFcEIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kdWxlLWNvbmZpZy5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dQZXJtaXNzaW9uU2VydmljZSBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcclxuICAgIGVudGl0eU5hbWUgPSAnV29ya2Zsb3dQZXJtaXNzaW9uJztcclxuICAgIHNlcnZpY2VDb2RlID0gJ3dvcmtmbG93JztcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihodHRwLCBpbmplY3RvciwgYCR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLndvcmtmbG93RW5kcG9pbnR9L1dvcmtmbG93UGVybWlzc2lvbmApO1xyXG4gICAgICAgIHRoaXMuZW5kUG9pbnQgPSBfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4ud29ya2Zsb3dFbmRwb2ludDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -260,6 +260,9 @@ export class WorkflowHistoryNewComponent extends DataListBase {
260
260
  item.jsonModelChange = [];
261
261
  }
262
262
  }
263
+ else if (item.actionCode == ActionThuHoiBase) {
264
+ item.class = 'recalled';
265
+ }
263
266
  }
264
267
  else if (item.status == EnumWorkflowHistoryStatus.RECALLED) {
265
268
  item.class = 'recalled';
@@ -359,4 +362,4 @@ WorkflowHistoryNewComponent.propDecorators = {
359
362
  item: [{ type: Input }],
360
363
  workflowSetting: [{ type: Input }]
361
364
  };
362
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvd29ya2Zsb3cvd29ya2Zsb3ctaGlzdG9yeS1uZXcvd29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU5SSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQVE5RSxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsWUFBWTtJQWlCekQsWUFDYyxTQUFtQixFQUN0Qix1QkFBK0Ms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cnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFMaXN0QmFzZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvYmFzZS9kYXRhLWxpc3QtYmFzZSc7XHJcbmltcG9ydCB7IENvbHVtblNjaGVtYUJhc2UsIENydWRMaXN0U2V0dGluZywgRGF0YVR5cGUsIEVudW1GaWxlTGF5b3V0LCBIZWlnaHRUeXBlLCBNb2RlbFNjaGVtYSwgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgR3JpZEluZm8gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgUm9sZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yb2xlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyR3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXNlci1ncm91cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29DYXVUb0NodWNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29jYXV0b2NodWMvc2VydmljZXMvY29jYXV0b2NodWMuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGVEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL2ZpbGUtZXhwbG9yZXIvc2VydmljZXMvZmlsZS1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnVtU3RhdGVUeXBlLCBFbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzIH0gZnJvbSAnLi4vLi4vc3RhdGVtYWNoaW5lcy9tb2RlbHMvZW51bXMnO1xyXG5pbXBvcnQgeyBBY3Rpb25DaG9ZS2llbkJhc2UsIEFjdGlvblRodUhvaUJhc2UsIEFjdGlvblVwZGF0ZU1vZGVsLCBNYUFjdGlvbkJhdERhdVF1eVRyaW5oIH0gZnJvbSAnLi4vbW9kZWxzL2NvbnN0JztcclxuaW1wb3J0IHsgV2ZTY2hlbWEgfSBmcm9tICcuLi9tb2RlbHMvbW9kZWxzJztcclxuaW1wb3J0IHsgV29ya2Zsb3dIaXN0b3J5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3dvcmtmbG93LWhpc3Rvcnkuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnd29ya2Zsb3ctaGlzdG9yeS1uZXcnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LWhpc3RvcnktbmV3LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3dvcmtmbG93LWhpc3RvcnktbmV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtmbG93SGlzdG9yeU5ld0NvbXBvbmVudCBleHRlbmRzIERhdGFMaXN0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gICAgQElucHV0KCkgYnVzaW5lc3NTZXR0aW5nOiBDcnVkTGlzdFNldHRpbmc7XHJcbiAgICBASW5wdXQoKSBpdGVtOiBhbnk7XHJcbiAgICBASW5wdXQoKSB3b3JrZmxvd1NldHRpbmc6IGFueTtcclxuXHJcbiAgICBsYXlvdXRGaWxlID0gRW51bUZpbGVMYXlvdXQ7XHJcbiAgICBlbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzID0gRW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cztcclxuICAgIGZpbGVEYXRhU2VydmljZTogRmlsZURhdGFTZXJ2aWNlO1xyXG4gICAgY3VycmVudFdvcmtmbG93OiB7XHJcbiAgICAgICAgZGF0YTogV2ZTY2hlbWFcclxuICAgIH07XHJcbiAgICBtYWNoaW5lc0RhdGE6IGFueSA9IHsgbWFjaGluZXM6IFtdLCBjb25uZWN0aW9uczogW10gfTtcclxuICAgIGN1cnJlbnRTdGF0ZUNvZGVzOiBzdHJpbmdbXTtcclxuICAgIGRpc2FibGVkU3RhdGVDb2Rlczogc3RyaW5nW107XHJcbiAgICBtYWNoaW5lQ29kZUtldFRodWNzOiBzdHJpbmdbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwdWJsaWMgX3dvcmtmbG93SGlzdG9yeVNlcnZpY2U6IFdvcmtmbG93SGlzdG9yeVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jb0NhdVRvQ2h1Y1NlcnZpY2U6IENvQ2F1VG9DaHVjU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX3VzZXJHcm91cFNlcnZpY2U6IFVzZXJHcm91cFNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9yb2xlU2VydmljZTogUm9sZVNlcnZpY2UsXHJcbiAgICAgICAgX2ZpbGVEYXRhU2VydmljZTogRmlsZURhdGFTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xyXG4gICAgICAgIHRoaXMuZmlsZURhdGFTZXJ2aWNlID0gX2ZpbGVEYXRhU2VydmljZTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl93b3JrZmxvd0hpc3RvcnlTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5tdWx0aXBsZUNoZWNrV2hlbkNsaWNrUm93ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNldHRpbmdLZXkgPSAnX193b3JrZmxvdyc7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50V29ya2Zsb3cgPSB0aGlzLndvcmtmbG93U2V0dGluZy53b3JrZmxvd3MuZmluZChxID0+IHEuY29kZSA9PSB0aGlzLml0ZW0uX193b3JrZmxvd0NvZGUpO1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmcudGl0bGUgPSAnJztcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGVpZ2h0VHlwZSA9IEhlaWdodFR5cGUuZHluYW1pYztcclxuICAgICAgICB0aGlzLnNldHRpbmcuc2hvd0VkaXRMaW5rID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkJ1dHRvbnMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5DaGVja2JveCA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgdXNlckN1cnJlbnQgPSB0aGlzLl91c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpO1xyXG4gICAgICAgIGlmICh1c2VyQ3VycmVudC51c2VyTmFtZSAhPSAnYWRtaW4nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5GdW5jdGlvbkNvbHVtbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2VudGl0eVdvcmtmbG93SGlzdG9yeVNlcnZpY2Uuc2V0Q3VycmVudFNlcnZpY2VVcmkodGhpcy5idXNpbmVzc1NldHRpbmcuYmFzZVNlcnZpY2UuZW50aXR5TmFtZSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRXb3JrZmxvdyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwucmVhZHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gS2nhu4NtIHRyYSBu4bq/dSBhY2NvdW50IGzDoCBhZG1pbiB0aMOsIHTDrG0gbOG7i2NoIHPhu60gY3Xhu5FpIGPDuW5nIGPhu6dhIGLhuqNuIGdoaSDEkeG7gyB4w6FjIMSR4buLbmggd29ya2Zsb3cgY29kZVxyXG4gICAgICAgICAgICAvLyBQaOG7pWMgduG7pSB2aeG7h2MgcmV2ZXJ0IGThu68gbGnhu4d1IGzhu5dpXHJcbiAgICAgICAgICAgIGlmICh1c2VyQ3VycmVudC51c2VyTmFtZSA9PSAnYWRtaW4nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRMYXN0SGlzdG9yeUFuZEdldERhdGEoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ1F1eSB0csOsbmggY+G7p2EgYuG6o24gZ2hpIMSRw6MgYuG7iyB4w7NhJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzOiBbXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbnM6IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5tYWNoaW5lQ29kZUtldFRodWNzID0gdGhpcy5jdXJyZW50V29ya2Zsb3cuZGF0YS5tYWNoaW5lcy5maWx0ZXIocSA9PiBxLnR5cGUgPT0gRW51bVN0YXRlVHlwZS5TVE9QKS5tYXAocSA9PiBxLmNvZGUpO1xyXG4gICAgICAgIGNvbnN0IGRhdGFzb3VyY2VBY3Rpb24gPSB0aGlzLmNyZWF0ZURhdGFzb3VyY2VBY3Rpb24oKTtcclxuICAgICAgICB0aGlzLnNldHRpbmcubW9kZWxTY2hlbWFzID0gW1xyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ3VzZXJJZENyZWF0ZWQnLCBuYW1lOiAnTmfGsOG7nWkgZ+G7rWknLCBmdWxsTmFtZTogJ05nxrDhu51pIGfhu61pJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2FjdGlvbkNvZGUnLCBuYW1lOiAnVGhhbyB0w6FjJywgZnVsbE5hbWU6ICdUaGFvIHTDoWMnLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndGltZScsIG5hbWU6ICdUaOG7nWkgZ2lhbicsIGZ1bGxOYW1lOiAnVGjhu51pIGdpYW4nLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndXNlcklkcycsIG5hbWU6ICdOZ8aw4budaSBuaOG6rW4nLCBmdWxsTmFtZTogJ05nxrDhu51pIG5o4bqtbicsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICd1c2VyVmlld0lkcycsIG5hbWU6ICdOZ8aw4budaSB0aGVvIGTDtWknLCBmdWxsTmFtZTogJ05nxrDhu51pIHRoZW8gZMO1aScsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdkb25WaUlkcycsIG5hbWU6ICfEkMahbiB24buLIG5o4bqtbicsIGZ1bGxOYW1lOiAnxJDGoW4gduG7iyBuaOG6rW4nLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnZG9uVmlWaWV3SWRzJywgbmFtZTogJ8SQxqFuIHbhu4sgdGhlbyBkw7VpJywgZnVsbE5hbWU6ICfEkMahbiB24buLIHRoZW8gZMO1aScsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdncm91cElkcycsIG5hbWU6ICdOaMOzbSBuZ8aw4budaSBkw7luZyBuaOG6rW4nLCBmdWxsTmFtZTogJ05ow7NtIG5nxrDhu51pIGTDuW5nIG5o4bqtbicsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdncm91cFZpZXdJZHMnLCBuYW1lOiAnTmjDs20gbmfGsOG7nWkgZMO5bmcgdGhlbyBkw7VpJywgZnVsbE5hbWU6ICdOaMOzbSBuZ8aw4budaSBkw7luZyB0aGVvIGTDtWknLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAncm9sZUlkcycsIG5hbWU6ICdWYWkgdHLDsiBuaOG6rW4nLCBmdWxsTmFtZTogJ1ZhaSB0csOyIG5o4bqtbicsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdyb2xlVmlld0lkcycsIG5hbWU6ICdWYWkgdHLDsiB0aGVvIGTDtWknLCBmdWxsTmFtZTogJ1ZhaSB0csOyIHRoZW8gZMO1aScsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdub3RlJywgbmFtZTogJ8OdIGtp4bq/bicsIGZ1bGxOYW1lOiAnw50ga2nhur9uJywgZGVzY3JpcHRpb246ICcnIH0pXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmNvbHMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndXNlcklkQ3JlYXRlZCcsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEyJScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICdmdWxsTmFtZU5ldydcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnYWN0aW9uQ29kZScsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzklJyxcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IGRhdGFzb3VyY2VBY3Rpb25cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndXNlcklkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2Z1bGxOYW1lTmV3JyxcclxuICAgICAgICAgICAgICAgIGZpZWxkUGx1czogJ3VzZXJOYW1lJyxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3VzZXJWaWV3SWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl91c2VyU2VydmljZSxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnZnVsbE5hbWVOZXcnLFxyXG4gICAgICAgICAgICAgICAgZmllbGRQbHVzOiAndXNlck5hbWUnLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlJZHMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNSUnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2NvQ2F1VG9DaHVjU2VydmljZSxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlWaWV3SWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9jb0NhdVRvQ2h1Y1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2dyb3VwSWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl91c2VyR3JvdXBTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2dyb3VwVmlld0lkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlckdyb3VwU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25hbWUnLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdyb2xlSWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9yb2xlU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25hbWUnLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdyb2xlVmlld0lkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fcm9sZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICduYW1lJyxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbm90ZScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ25vdGUnLFxyXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndGltZScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogRGF0YVR5cGUuZGF0ZXRpbWUsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE0MHB4J1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdyZWNlaXZlcicsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ05nxrDhu51pIG5o4bqtbicsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3JlY2VpdmVyJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjUwcHgnLFxyXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAncmVjZWl2ZXJWaWV3JyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfGsOG7nWkgdGhlbyBkw7VpJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAncmVjZWl2ZXJWaWV3JyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjUwcHgnLFxyXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZmlsZURpbmhLZW0nLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnRmlsZSDEkcOtbmgga8OobScpLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdmaWxlRGluaEtlbScsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLm1vZGVsLnJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZpbmRMYXN0SGlzdG9yeUFuZEdldERhdGEoKSB7XHJcbiAgICAgICAgY29uc3QgbGFzdEhpc3RvcnkgPSAoYXdhaXQgdGhpcy5fd29ya2Zsb3dIaXN0b3J5U2VydmljZS5nZXRMYXN0QnlJdGVtSWQodGhpcy5pdGVtLmlkKSkuZGF0YTtcclxuICAgICAgICBpZiAoIWxhc3RIaXN0b3J5KSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5jdXJyZW50V29ya2Zsb3cgPSB0aGlzLndvcmtmbG93U2V0dGluZy53b3JrZmxvd3MuZmluZChxID0+IHEuY29kZSA9PSBsYXN0SGlzdG9yeS53b3JrZmxvd0NvZGUpO1xyXG4gICAgICAgIHRoaXMuaXRlbS5fX3dvcmtmbG93Q29kZSA9IGxhc3RIaXN0b3J5LndvcmtmbG93Q29kZTtcclxuICAgICAgICAvLyB0aGlzLmFwcGVuZE1hY2hpbmVzQW5kQ29ubmVjdGlvbih0aGlzLmN1cnJlbnRXb3JrZmxvdy5kYXRhLCB0aGlzLm1hY2hpbmVzRGF0YSk7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFdvcmtmbG93ID09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgICAgICB0aGlzLnNldE1hY2hpbmVzQW5kQ29ubmVjdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldE1hY2hpbmVzQW5kQ29ubmVjdGlvbigpIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3cgJiYgdGhpcy5jdXJyZW50V29ya2Zsb3cuZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLm1hY2hpbmVzRGF0YSA9IHRoaXMuY3VycmVudFdvcmtmbG93LmRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZURhdGFzb3VyY2VBY3Rpb24oKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW1xyXG4gICAgICAgICAgICB7IGlkOiBNYUFjdGlvbkJhdERhdVF1eVRyaW5oLCB0ZW46ICdC4bqvdCDEkeG6p3UgcXV5IHRyw6xuaCcgfVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5jdXJyZW50V29ya2Zsb3cuZGF0YS5jb25uZWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGlkOiBhY3Rpb24uY29kZSxcclxuICAgICAgICAgICAgICAgIHRlbjogYWN0aW9uLm5hbWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goXHJcbiAgICAgICAgICAgIHsgaWQ6IEFjdGlvblVwZGF0ZU1vZGVsLCB0ZW46ICdDaOG7iW5oIHPhu61hJyB9LFxyXG4gICAgICAgICAgICB7IGlkOiBBY3Rpb25DaG9ZS2llbkJhc2UsIHRlbjogJ0NobyDDvSBraeG6v24nIH0sXHJcbiAgICAgICAgICAgIHsgaWQ6IEFjdGlvblRodUhvaUJhc2UsIHRlbjogJ1RodSBo4buTaSB0aGFvIHTDoWMnIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbW9kaWZ5R3JpZEluZm8oZ3JpZEluZm8/OiBHcmlkSW5mbykge1xyXG4gICAgICAgIGdyaWRJbmZvLmZpbHRlcnMudW5zaGlmdChcclxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ3RhYmxlTmFtZScsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLmJ1c2luZXNzU2V0dGluZy5iYXNlU2VydmljZS5lbnRpdHlOYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2l0ZW1JZCcsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLml0ZW0uaWQpLFxyXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignd29ya2Zsb3dDb2RlJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaXRlbS5fX3dvcmtmbG93Q29kZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBncmlkSW5mby5zb3J0cy51bnNoaWZ0KHRoaXMubmV3U29ydCgnY3JlYXRlZCcsIC0xKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgYmVmb3JlUmVuZGVyRGF0YVNvdXJjZShkYXRhU291cmNlKSB7XHJcbiAgICAgICAgZGF0YVNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAndXNlcklkcycpO1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAndXNlclZpZXdJZHMnKTtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ2RvblZpSWRzJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdkb25WaVZpZXdJZHMnKTtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ2dyb3VwSWRzJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdncm91cFZpZXdJZHMnKTtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ3JvbGVJZHMnKTtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ3JvbGVWaWV3SWRzJyk7XHJcbiAgICAgICAgICAgIGlmICghaXRlbS5jb2xTcGFuKSBpdGVtLmNvbFNwYW4gPSB7fTtcclxuICAgICAgICAgICAgaWYgKCFpdGVtLmhpZGRlbikgaXRlbS5oaWRkZW4gPSB7fTtcclxuICAgICAgICAgICAgaWYgKGl0ZW0uc3RhdHVzID09IEVudW1Xb3JrZmxvd0hpc3RvcnlTdGF0dXMuTk9UX0lOX01BSU5fVEhSRUFEKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5hY3Rpb25Db2RlID09IEFjdGlvblVwZGF0ZU1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jb2xTcGFuWydyZWNlaXZlciddID0gMjtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLmhpZGRlblsncmVjZWl2ZXJWaWV3J10gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmpzb25Nb2RlbENoYW5nZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmpzb25Nb2RlbENoYW5nZSA9IEpTT04ucGFyc2UoaXRlbS5qc29uTW9kZWxDaGFuZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5qc29uTW9kZWxDaGFuZ2UgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5zdGF0dXMgPT0gRW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cy5SRUNBTExFRCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5jbGFzcyA9ICdyZWNhbGxlZCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBhZnRlckdldFJlZkRhdGFEcm9wZG93bihmaWVsZCkge1xyXG4gICAgLy8gICAgIGlmIChmaWVsZCA9PSBudWxsKSB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMubW9kZWwuZGF0YVNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgLy8gICAgICAgICAgICAgaWYgKCF0aGlzLm1hY2hpbmVDb2RlS2V0VGh1Y3Muc29tZSh4ID0+IHggPT0gaXRlbS50YXJnZXRTdGF0dXNDb2RlKSkge1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGl0ZW0uc3RyQWxsVXNlciA9IHRoaXMuam9pblZhbHVlKGl0ZW0uc3RydXNlcklkcywgaXRlbS5zdHJ1c2VyVmlld0lkcyk7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgaXRlbS5zdHJBbGxEb25WaSA9IHRoaXMuam9pblZhbHVlKGl0ZW0uc3RyZG9uVmlJZHMsIGl0ZW0uc3RyZG9uVmlWaWV3SWRzKTtcclxuICAgIC8vICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgfSk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gfVxyXG5cclxuICAgIHByaXZhdGUgam9pblZhbHVlKHZhbHVlMSwgdmFsdWUyKSB7XHJcbiAgICAgICAgY29uc3Qgc2VwYXJhdG9yID0gJywgJztcclxuICAgICAgICBsZXQgcmVzdWx0ID0gJyc7XHJcbiAgICAgICAgaWYgKHZhbHVlMSkge1xyXG4gICAgICAgICAgICByZXN1bHQgKz0gYCR7dmFsdWUxfSR7c2VwYXJhdG9yfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2YWx1ZTIpIHtcclxuICAgICAgICAgICAgcmVzdWx0ICs9IGAke3ZhbHVlMn0ke3NlcGFyYXRvcn1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc3Vic3RyaW5nKDAsIHJlc3VsdC5sZW5ndGggLSBzZXBhcmF0b3IubGVuZ3RoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNwbGl0TGlzdChpdGVtOiBhbnksIGZpZWxkOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoaXRlbVtmaWVsZF0pIHtcclxuICAgICAgICAgICAgaXRlbVtmaWVsZF0gPSBpdGVtW2ZpZWxkXS5zcGxpdCgnLCcpLmZpbHRlcihxID0+ICEhcSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpdGVtW2ZpZWxkXSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVSb3dTZWxlY3QoZXZ0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsLnNlbGVjdGVkSXRlbSkgcmV0dXJuO1xyXG4gICAgICAgIGlmICghdGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW0ubm90SW5NYWluVGhyZWFkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0YXRlQ29kZXMgPSBbXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnNlbGVjdGVkSXRlbS50YXJnZXRTdGF0dXNDb2RlXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRTdGF0ZUNvZGVzID0gW1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW0uc291cmNlU3RhdHVzQ29kZVxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RhdGVDb2RlcyA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkU3RhdGVDb2RlcyA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByb2xsYmFja0J5SGlzdG9yeShyb3dEYXRhKSB7XHJcbiAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dDb25maXJtKCdC4bqhbiBjw7MgY2jhuq9jIGNo4bqvbiBtdeG7kW4gdGh1IGjhu5NpIHRoYW8gdMOhYyB24buBIGzhu4tjaCBz4butIMSRw6MgY2jhu41uJylcclxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghcmVzKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1c2luZXNzU2V0dGluZy5kaXNwbGF5RmllbGQgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lID0gdGhpcy5pdGVtWzxzdHJpbmc+KHRoaXMuYnVzaW5lc3NTZXR0aW5nLmRpc3BsYXlGaWVsZCldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICg8RnVuY3Rpb24+KHRoaXMuYnVzaW5lc3NTZXR0aW5nLmRpc3BsYXlGaWVsZCkpKHRoaXMuaXRlbSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJ1c2luZXNzU2V0dGluZy5iYXNlU2VydmljZS5yb2xsYmFja0J5SGlzdG9yeShcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW0uaWQsIHJvd0RhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMuYnVzaW5lc3NTZXR0aW5nLmJhc2VTZXJ2aWNlLm9iamVjdE5hbWUsIG5hbWVdXHJcbiAgICAgICAgICAgICAgICApLnRoZW4ocmVzID0+IHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzLCAnVGh1IGjhu5NpIHRoYW8gdMOhYyB0aMOgbmggY8O0bmcnLCBmID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmlnZ2VyUHJvY2Vzc0RhdGEoKTtcclxuICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgYWZ0ZXJSZWxvYWRlZCgpIHtcclxuICAgICAgICB0aGlzLmZpbGVEYXRhU2VydmljZS5nZXREYXRhKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvd29ya2Zsb3cvd29ya2Zsb3ctaGlzdG9yeS1uZXcvd29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU5SSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQVE5RSxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsWUFBWTtJQWlCekQsWUFDYyxTQUFtQixFQUN0Qix1QkFBK0Ms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QkFBZ0I7WUFEaEIsV0FBVztZQUdYLGVBQWU7Ozs4QkFjbkIsS0FBSzttQkFDTCxLQUFLOzhCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFMaXN0QmFzZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvYmFzZS9kYXRhLWxpc3QtYmFzZSc7XHJcbmltcG9ydCB7IENvbHVtblNjaGVtYUJhc2UsIENydWRMaXN0U2V0dGluZywgRGF0YVR5cGUsIEVudW1GaWxlTGF5b3V0LCBIZWlnaHRUeXBlLCBNb2RlbFNjaGVtYSwgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgR3JpZEluZm8gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgUm9sZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yb2xlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyR3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXNlci1ncm91cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29DYXVUb0NodWNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29jYXV0b2NodWMvc2VydmljZXMvY29jYXV0b2NodWMuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGVEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL2ZpbGUtZXhwbG9yZXIvc2VydmljZXMvZmlsZS1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnVtU3RhdGVUeXBlLCBFbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzIH0gZnJvbSAnLi4vLi4vc3RhdGVtYWNoaW5lcy9tb2RlbHMvZW51bXMnO1xyXG5pbXBvcnQgeyBBY3Rpb25DaG9ZS2llbkJhc2UsIEFjdGlvblRodUhvaUJhc2UsIEFjdGlvblVwZGF0ZU1vZGVsLCBNYUFjdGlvbkJhdERhdVF1eVRyaW5oIH0gZnJvbSAnLi4vbW9kZWxzL2NvbnN0JztcclxuaW1wb3J0IHsgV2ZTY2hlbWEgfSBmcm9tICcuLi9tb2RlbHMvbW9kZWxzJztcclxuaW1wb3J0IHsgV29ya2Zsb3dIaXN0b3J5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3dvcmtmbG93LWhpc3Rvcnkuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnd29ya2Zsb3ctaGlzdG9yeS1uZXcnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LWhpc3RvcnktbmV3LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3dvcmtmbG93LWhpc3RvcnktbmV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtmbG93SGlzdG9yeU5ld0NvbXBvbmVudCBleHRlbmRzIERhdGFMaXN0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gICAgQElucHV0KCkgYnVzaW5lc3NTZXR0aW5nOiBDcnVkTGlzdFNldHRpbmc7XHJcbiAgICBASW5wdXQoKSBpdGVtOiBhbnk7XHJcbiAgICBASW5wdXQoKSB3b3JrZmxvd1NldHRpbmc6IGFueTtcclxuXHJcbiAgICBsYXlvdXRGaWxlID0gRW51bUZpbGVMYXlvdXQ7XHJcbiAgICBlbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzID0gRW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cztcclxuICAgIGZpbGVEYXRhU2VydmljZTogRmlsZURhdGFTZXJ2aWNlO1xyXG4gICAgY3VycmVudFdvcmtmbG93OiB7XHJcbiAgICAgICAgZGF0YTogV2ZTY2hlbWFcclxuICAgIH07XHJcbiAgICBtYWNoaW5lc0RhdGE6IGFueSA9IHsgbWFjaGluZXM6IFtdLCBjb25uZWN0aW9uczogW10gfTtcclxuICAgIGN1cnJlbnRTdGF0ZUNvZGVzOiBzdHJpbmdbXTtcclxuICAgIGRpc2FibGVkU3RhdGVDb2Rlczogc3RyaW5nW107XHJcbiAgICBtYWNoaW5lQ29kZUtldFRodWNzOiBzdHJpbmdbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwdWJsaWMgX3dvcmtmbG93SGlzdG9yeVNlcnZpY2U6IFdvcmtmbG93SGlzdG9yeVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jb0NhdVRvQ2h1Y1NlcnZpY2U6IENvQ2F1VG9DaHVjU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX3VzZXJHcm91cFNlcnZpY2U6IFVzZXJHcm91cFNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9yb2xlU2VydmljZTogUm9sZVNlcnZpY2UsXHJcbiAgICAgICAgX2ZpbGVEYXRhU2VydmljZTogRmlsZURhdGFTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xyXG4gICAgICAgIHRoaXMuZmlsZURhdGFTZXJ2aWNlID0gX2ZpbGVEYXRhU2VydmljZTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl93b3JrZmxvd0hpc3RvcnlTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5tdWx0aXBsZUNoZWNrV2hlbkNsaWNrUm93ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNldHRpbmdLZXkgPSAnX193b3JrZmxvdyc7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50V29ya2Zsb3cgPSB0aGlzLndvcmtmbG93U2V0dGluZy53b3JrZmxvd3MuZmluZChxID0+IHEuY29kZSA9PSB0aGlzLml0ZW0uX193b3JrZmxvd0NvZGUpO1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmcudGl0bGUgPSAnJztcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGVpZ2h0VHlwZSA9IEhlaWdodFR5cGUuZHluYW1pYztcclxuICAgICAgICB0aGlzLnNldHRpbmcuc2hvd0VkaXRMaW5rID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkJ1dHRvbnMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5DaGVja2JveCA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgdXNlckN1cnJlbnQgPSB0aGlzLl91c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpO1xyXG4gICAgICAgIGlmICh1c2VyQ3VycmVudC51c2VyTmFtZSAhPSAnYWRtaW4nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5GdW5jdGlvbkNvbHVtbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2VudGl0eVdvcmtmbG93SGlzdG9yeVNlcnZpY2Uuc2V0Q3VycmVudFNlcnZpY2VVcmkodGhpcy5idXNpbmVzc1NldHRpbmcuYmFzZVNlcnZpY2UuZW50aXR5TmFtZSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRXb3JrZmxvdyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwucmVhZHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gS2nhu4NtIHRyYSBu4bq/dSBhY2NvdW50IGzDoCBhZG1pbiB0aMOsIHTDrG0gbOG7i2NoIHPhu60gY3Xhu5FpIGPDuW5nIGPhu6dhIGLhuqNuIGdoaSDEkeG7gyB4w6FjIMSR4buLbmggd29ya2Zsb3cgY29kZVxyXG4gICAgICAgICAgICAvLyBQaOG7pWMgduG7pSB2aeG7h2MgcmV2ZXJ0IGThu68gbGnhu4d1IGzhu5dpXHJcbiAgICAgICAgICAgIGlmICh1c2VyQ3VycmVudC51c2VyTmFtZSA9PSAnYWRtaW4nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRMYXN0SGlzdG9yeUFuZEdldERhdGEoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ1F1eSB0csOsbmggY+G7p2EgYuG6o24gZ2hpIMSRw6MgYuG7iyB4w7NhJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzOiBbXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbnM6IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5tYWNoaW5lQ29kZUtldFRodWNzID0gdGhpcy5jdXJyZW50V29ya2Zsb3cuZGF0YS5tYWNoaW5lcy5maWx0ZXIocSA9PiBxLnR5cGUgPT0gRW51bVN0YXRlVHlwZS5TVE9QKS5tYXAocSA9PiBxLmNvZGUpO1xyXG4gICAgICAgIGNvbnN0IGRhdGFzb3VyY2VBY3Rpb24gPSB0aGlzLmNyZWF0ZURhdGFzb3VyY2VBY3Rpb24oKTtcclxuICAgICAgICB0aGlzLnNldHRpbmcubW9kZWxTY2hlbWFzID0gW1xyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ3VzZXJJZENyZWF0ZWQnLCBuYW1lOiAnTmfGsOG7nWkgZ+G7rWknLCBmdWxsTmFtZTogJ05nxrDhu51pIGfhu61pJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2FjdGlvbkNvZGUnLCBuYW1lOiAnVGhhbyB0w6FjJywgZnVsbE5hbWU6ICdUaGFvIHTDoWMnLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndGltZScsIG5hbWU6ICdUaOG7nWkgZ2lhbicsIGZ1bGxOYW1lOiAnVGjhu51pIGdpYW4nLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndXNlcklkcycsIG5hbWU6ICdOZ8aw4budaSBuaOG6rW4nLCBmdWxsTmFtZTogJ05nxrDhu51pIG5o4bqtbicsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICd1c2VyVmlld0lkcycsIG5hbWU6ICdOZ8aw4budaSB0aGVvIGTDtWknLCBmdWxsTmFtZTogJ05nxrDhu51pIHRoZW8gZMO1aScsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdkb25WaUlkcycsIG5hbWU6ICfEkMahbiB24buLIG5o4bqtbicsIGZ1bGxOYW1lOiAnxJDGoW4gduG7iyBuaOG6rW4nLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnZG9uVmlWaWV3SWRzJywgbmFtZTogJ8SQxqFuIHbhu4sgdGhlbyBkw7VpJywgZnVsbE5hbWU6ICfEkMahbiB24buLIHRoZW8gZMO1aScsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdncm91cElkcycsIG5hbWU6ICdOaMOzbSBuZ8aw4budaSBkw7luZyBuaOG6rW4nLCBmdWxsTmFtZTogJ05ow7NtIG5nxrDhu51pIGTDuW5nIG5o4bqtbicsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdncm91cFZpZXdJZHMnLCBuYW1lOiAnTmjDs20gbmfGsOG7nWkgZMO5bmcgdGhlbyBkw7VpJywgZnVsbE5hbWU6ICdOaMOzbSBuZ8aw4budaSBkw7luZyB0aGVvIGTDtWknLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAncm9sZUlkcycsIG5hbWU6ICdWYWkgdHLDsiBuaOG6rW4nLCBmdWxsTmFtZTogJ1ZhaSB0csOyIG5o4bqtbicsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdyb2xlVmlld0lkcycsIG5hbWU6ICdWYWkgdHLDsiB0aGVvIGTDtWknLCBmdWxsTmFtZTogJ1ZhaSB0csOyIHRoZW8gZMO1aScsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdub3RlJywgbmFtZTogJ8OdIGtp4bq/bicsIGZ1bGxOYW1lOiAnw50ga2nhur9uJywgZGVzY3JpcHRpb246ICcnIH0pXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmNvbHMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndXNlcklkQ3JlYXRlZCcsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEyJScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICdmdWxsTmFtZU5ldydcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnYWN0aW9uQ29kZScsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzklJyxcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IGRhdGFzb3VyY2VBY3Rpb25cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndXNlcklkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2Z1bGxOYW1lTmV3JyxcclxuICAgICAgICAgICAgICAgIGZpZWxkUGx1czogJ3VzZXJOYW1lJyxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3VzZXJWaWV3SWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl91c2VyU2VydmljZSxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnZnVsbE5hbWVOZXcnLFxyXG4gICAgICAgICAgICAgICAgZmllbGRQbHVzOiAndXNlck5hbWUnLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlJZHMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNSUnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2NvQ2F1VG9DaHVjU2VydmljZSxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlWaWV3SWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9jb0NhdVRvQ2h1Y1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2dyb3VwSWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl91c2VyR3JvdXBTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2dyb3VwVmlld0lkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlckdyb3VwU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25hbWUnLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdyb2xlSWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9yb2xlU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25hbWUnLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdyb2xlVmlld0lkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fcm9sZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICduYW1lJyxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbm90ZScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ25vdGUnLFxyXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndGltZScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogRGF0YVR5cGUuZGF0ZXRpbWUsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE0MHB4J1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdyZWNlaXZlcicsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ05nxrDhu51pIG5o4bqtbicsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3JlY2VpdmVyJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjUwcHgnLFxyXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAncmVjZWl2ZXJWaWV3JyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfGsOG7nWkgdGhlbyBkw7VpJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAncmVjZWl2ZXJWaWV3JyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjUwcHgnLFxyXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZmlsZURpbmhLZW0nLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnRmlsZSDEkcOtbmgga8OobScpLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdmaWxlRGluaEtlbScsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLm1vZGVsLnJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZpbmRMYXN0SGlzdG9yeUFuZEdldERhdGEoKSB7XHJcbiAgICAgICAgY29uc3QgbGFzdEhpc3RvcnkgPSAoYXdhaXQgdGhpcy5fd29ya2Zsb3dIaXN0b3J5U2VydmljZS5nZXRMYXN0QnlJdGVtSWQodGhpcy5pdGVtLmlkKSkuZGF0YTtcclxuICAgICAgICBpZiAoIWxhc3RIaXN0b3J5KSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5jdXJyZW50V29ya2Zsb3cgPSB0aGlzLndvcmtmbG93U2V0dGluZy53b3JrZmxvd3MuZmluZChxID0+IHEuY29kZSA9PSBsYXN0SGlzdG9yeS53b3JrZmxvd0NvZGUpO1xyXG4gICAgICAgIHRoaXMuaXRlbS5fX3dvcmtmbG93Q29kZSA9IGxhc3RIaXN0b3J5LndvcmtmbG93Q29kZTtcclxuICAgICAgICAvLyB0aGlzLmFwcGVuZE1hY2hpbmVzQW5kQ29ubmVjdGlvbih0aGlzLmN1cnJlbnRXb3JrZmxvdy5kYXRhLCB0aGlzLm1hY2hpbmVzRGF0YSk7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFdvcmtmbG93ID09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgICAgICB0aGlzLnNldE1hY2hpbmVzQW5kQ29ubmVjdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldE1hY2hpbmVzQW5kQ29ubmVjdGlvbigpIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3cgJiYgdGhpcy5jdXJyZW50V29ya2Zsb3cuZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLm1hY2hpbmVzRGF0YSA9IHRoaXMuY3VycmVudFdvcmtmbG93LmRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZURhdGFzb3VyY2VBY3Rpb24oKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW1xyXG4gICAgICAgICAgICB7IGlkOiBNYUFjdGlvbkJhdERhdVF1eVRyaW5oLCB0ZW46ICdC4bqvdCDEkeG6p3UgcXV5IHRyw6xuaCcgfVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5jdXJyZW50V29ya2Zsb3cuZGF0YS5jb25uZWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGlkOiBhY3Rpb24uY29kZSxcclxuICAgICAgICAgICAgICAgIHRlbjogYWN0aW9uLm5hbWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goXHJcbiAgICAgICAgICAgIHsgaWQ6IEFjdGlvblVwZGF0ZU1vZGVsLCB0ZW46ICdDaOG7iW5oIHPhu61hJyB9LFxyXG4gICAgICAgICAgICB7IGlkOiBBY3Rpb25DaG9ZS2llbkJhc2UsIHRlbjogJ0NobyDDvSBraeG6v24nIH0sXHJcbiAgICAgICAgICAgIHsgaWQ6IEFjdGlvblRodUhvaUJhc2UsIHRlbjogJ1RodSBo4buTaSB0aGFvIHTDoWMnIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbW9kaWZ5R3JpZEluZm8oZ3JpZEluZm8/OiBHcmlkSW5mbykge1xyXG4gICAgICAgIGdyaWRJbmZvLmZpbHRlcnMudW5zaGlmdChcclxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ3RhYmxlTmFtZScsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLmJ1c2luZXNzU2V0dGluZy5iYXNlU2VydmljZS5lbnRpdHlOYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2l0ZW1JZCcsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLml0ZW0uaWQpLFxyXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignd29ya2Zsb3dDb2RlJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaXRlbS5fX3dvcmtmbG93Q29kZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBncmlkSW5mby5zb3J0cy51bnNoaWZ0KHRoaXMubmV3U29ydCgnY3JlYXRlZCcsIC0xKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgYmVmb3JlUmVuZGVyRGF0YVNvdXJjZShkYXRhU291cmNlKSB7XHJcbiAgICAgICAgZGF0YVNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAndXNlcklkcycpO1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAndXNlclZpZXdJZHMnKTtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ2RvblZpSWRzJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdkb25WaVZpZXdJZHMnKTtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ2dyb3VwSWRzJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdncm91cFZpZXdJZHMnKTtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ3JvbGVJZHMnKTtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ3JvbGVWaWV3SWRzJyk7XHJcbiAgICAgICAgICAgIGlmICghaXRlbS5jb2xTcGFuKSBpdGVtLmNvbFNwYW4gPSB7fTtcclxuICAgICAgICAgICAgaWYgKCFpdGVtLmhpZGRlbikgaXRlbS5oaWRkZW4gPSB7fTtcclxuICAgICAgICAgICAgaWYgKGl0ZW0uc3RhdHVzID09IEVudW1Xb3JrZmxvd0hpc3RvcnlTdGF0dXMuTk9UX0lOX01BSU5fVEhSRUFEKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5hY3Rpb25Db2RlID09IEFjdGlvblVwZGF0ZU1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jb2xTcGFuWydyZWNlaXZlciddID0gMjtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLmhpZGRlblsncmVjZWl2ZXJWaWV3J10gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmpzb25Nb2RlbENoYW5nZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmpzb25Nb2RlbENoYW5nZSA9IEpTT04ucGFyc2UoaXRlbS5qc29uTW9kZWxDaGFuZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5qc29uTW9kZWxDaGFuZ2UgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVtLmFjdGlvbkNvZGUgPT0gQWN0aW9uVGh1SG9pQmFzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uY2xhc3MgPSAncmVjYWxsZWQnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGl0ZW0uc3RhdHVzID09IEVudW1Xb3JrZmxvd0hpc3RvcnlTdGF0dXMuUkVDQUxMRUQpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uY2xhc3MgPSAncmVjYWxsZWQnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYWZ0ZXJHZXRSZWZEYXRhRHJvcGRvd24oZmllbGQpIHtcclxuICAgIC8vICAgICBpZiAoZmllbGQgPT0gbnVsbCkge1xyXG4gICAgLy8gICAgICAgICB0aGlzLm1vZGVsLmRhdGFTb3VyY2UuZm9yRWFjaChpdGVtID0+IHtcclxuICAgIC8vICAgICAgICAgICAgIGlmICghdGhpcy5tYWNoaW5lQ29kZUtldFRodWNzLnNvbWUoeCA9PiB4ID09IGl0ZW0udGFyZ2V0U3RhdHVzQ29kZSkpIHtcclxuICAgIC8vICAgICAgICAgICAgICAgICBpdGVtLnN0ckFsbFVzZXIgPSB0aGlzLmpvaW5WYWx1ZShpdGVtLnN0cnVzZXJJZHMsIGl0ZW0uc3RydXNlclZpZXdJZHMpO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGl0ZW0uc3RyQWxsRG9uVmkgPSB0aGlzLmpvaW5WYWx1ZShpdGVtLnN0cmRvblZpSWRzLCBpdGVtLnN0cmRvblZpVmlld0lkcyk7XHJcbiAgICAvLyAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgIH0pO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vIH1cclxuXHJcbiAgICBwcml2YXRlIGpvaW5WYWx1ZSh2YWx1ZTEsIHZhbHVlMikge1xyXG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9ICcsICc7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xyXG4gICAgICAgIGlmICh2YWx1ZTEpIHtcclxuICAgICAgICAgICAgcmVzdWx0ICs9IGAke3ZhbHVlMX0ke3NlcGFyYXRvcn1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodmFsdWUyKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCArPSBgJHt2YWx1ZTJ9JHtzZXBhcmF0b3J9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnN1YnN0cmluZygwLCByZXN1bHQubGVuZ3RoIC0gc2VwYXJhdG9yLmxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzcGxpdExpc3QoaXRlbTogYW55LCBmaWVsZDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKGl0ZW1bZmllbGRdKSB7XHJcbiAgICAgICAgICAgIGl0ZW1bZmllbGRdID0gaXRlbVtmaWVsZF0uc3BsaXQoJywnKS5maWx0ZXIocSA9PiAhIXEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaXRlbVtmaWVsZF0gPSBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlUm93U2VsZWN0KGV2dCkge1xyXG4gICAgICAgIGlmICghdGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW0pIHJldHVybjtcclxuICAgICAgICBpZiAoIXRoaXMubW9kZWwuc2VsZWN0ZWRJdGVtLm5vdEluTWFpblRocmVhZCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGF0ZUNvZGVzID0gW1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW0udGFyZ2V0U3RhdHVzQ29kZVxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkU3RhdGVDb2RlcyA9IFtcclxuICAgICAgICAgICAgICAgIHRoaXMubW9kZWwuc2VsZWN0ZWRJdGVtLnNvdXJjZVN0YXR1c0NvZGVcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0YXRlQ29kZXMgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZFN0YXRlQ29kZXMgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcm9sbGJhY2tCeUhpc3Rvcnkocm93RGF0YSkge1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93Q29uZmlybSgnQuG6oW4gY8OzIGNo4bqvYyBjaOG6r24gbXXhu5FuIHRodSBo4buTaSB0aGFvIHTDoWMgduG7gSBs4buLY2ggc+G7rSDEkcOjIGNo4buNbicpXHJcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlcykgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSAnJztcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5idXNpbmVzc1NldHRpbmcuZGlzcGxheUZpZWxkID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHRoaXMuaXRlbVs8c3RyaW5nPih0aGlzLmJ1c2luZXNzU2V0dGluZy5kaXNwbGF5RmllbGQpXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWUgPSAoPEZ1bmN0aW9uPih0aGlzLmJ1c2luZXNzU2V0dGluZy5kaXNwbGF5RmllbGQpKSh0aGlzLml0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5idXNpbmVzc1NldHRpbmcuYmFzZVNlcnZpY2Uucm9sbGJhY2tCeUhpc3RvcnkoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtLmlkLCByb3dEYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLmJ1c2luZXNzU2V0dGluZy5iYXNlU2VydmljZS5vYmplY3ROYW1lLCBuYW1lXVxyXG4gICAgICAgICAgICAgICAgKS50aGVuKHJlcyA9PiB0aGlzLmhhbmRsZVJlc3BvbnNlKHJlcywgJ1RodSBo4buTaSB0aGFvIHTDoWMgdGjDoG5oIGPDtG5nJywgZiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJpZ2dlclByb2Nlc3NEYXRhKCk7XHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGFmdGVyUmVsb2FkZWQoKSB7XHJcbiAgICAgICAgdGhpcy5maWxlRGF0YVNlcnZpY2UuZ2V0RGF0YSgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -65,7 +65,7 @@ export class BaseCauHinhWorkflowDetailComponent extends ComponentBase {
65
65
  BaseCauHinhWorkflowDetailComponent.decorators = [
66
66
  { type: Component, args: [{
67
67
  selector: 'base-cauhinh-workflow-detail',
68
- template: "<workflow-picker #workflowPicker *ngIf=\"readyGenWorkflow\" #formBase [data]=\"workflowData\" [showButtonSave]=\"true\"\r\n (onSaveSetting)=\"handleSave($event)\"></workflow-picker>\r\n<after-view-checked *ngIf=\"hasCountDown\" (loaded)=\"handleReadyToGetWorkflowData()\">\r\n</after-view-checked>",
68
+ template: "<workflow-picker #workflowPicker *ngIf=\"readyGenWorkflow\" #formBase [data]=\"workflowData\" [showButtonSave]=\"true\"\r\n (onSaveSetting)=\"handleSave($event)\"></workflow-picker>\r\n<after-view-checked *ngIf=\"hasCountDown\" (loaded)=\"handleReadyToGetWorkflowData()\">\r\n</after-view-checked>\r\n",
69
69
  providers: [ComponentContextService],
70
70
  styles: [".container-task-info .percent-done{background-color:#f0f0f0;border-radius:2px;height:5px;margin-top:5px;overflow:hidden;position:relative}.container-task-info .percent-done .detail{border-radius:2px;color:#fff;font-size:13px;height:5px;left:0;position:absolute;text-align:center;top:0}"]
71
71
  },] }
@@ -78,4 +78,4 @@ BaseCauHinhWorkflowDetailComponent.propDecorators = {
78
78
  isDetail: [{ type: Input }],
79
79
  itemLoaiCongViec: [{ type: Input }]
80
80
  };
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1aGluaC13b3JrZmxvdy1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbmd2aWVjL2NhdWhpbmgtd29ya2Zsb3cvY2F1aGluaC13b3JrZmxvdy1kZXRhaWwvY2F1aGluaC13b3JrZmxvdy1kZXRhaWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQU85RSxNQUFNLE9BQU8sa0NBQW1DLFNBQVEsYUFBYTtJQVdqRSxZQUNjLFNBQW1CLEVBQ25CLHVCQUErQztRQUV6RCxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFIUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBd0I7UUFacEQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQU8xQixpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQUN2QixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUFNbEMsQ0FBQztJQWJELElBQWEsZ0JBQWdCLENBQUMsS0FBVTtRQUNwQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBWUQsUUFBUTtJQUVSLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLEVBQUU7WUFDakQsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1NBQ25EO2FBQ0k7WUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM5QjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVLLDRCQUE0Qjs7WUFDOUIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ25CLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7YUFDdkY7aUJBQ0k7Z0JBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN2RTtZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUN6RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUM7S0FBQTtJQUVELGdCQUFnQixDQUFDLFlBQVk7UUFDekIsSUFBSSxZQUFZLENBQUMsRUFBRSxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQzFFO2FBQ0k7WUFDRCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDMUQ7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLFlBQVk7UUFDbkIsWUFBWSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7YUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7UUFFckUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNaLENBQUM7OztZQXRFSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLDhCQUE4QjtnQkFDeEMsd1RBQXVEO2dCQUV2RCxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQVZtQixRQUFRO1lBSW5CLHNCQUFzQjs7O3VCQVExQixLQUFLOytCQUVMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvY29tcG9uZW50LWJhc2UnO1xyXG5pbXBvcnQgeyBPcGVyYXRvciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBDYXVIaW5oV29ya2Zsb3dTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2F1aGluaC13b3JrZmxvdy5zZXJ2aWNlJztcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2Jhc2UtY2F1aGluaC13b3JrZmxvdy1kZXRhaWwnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhdWhpbmgtd29ya2Zsb3ctZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NhdWhpbmgtd29ya2Zsb3ctZGV0YWlsLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlQ2F1SGluaFdvcmtmbG93RGV0YWlsQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSBpc0RldGFpbCA9IGZhbHNlO1xyXG4gICAgX2l0ZW1Mb2FpQ29uZ1ZpZWM6IGFueTtcclxuICAgIEBJbnB1dCgpIHNldCBpdGVtTG9haUNvbmdWaWVjKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLl9pdGVtTG9haUNvbmdWaWVjID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5nZXRTZXR0aW5nKCk7XHJcbiAgICB9XHJcbiAgICBpZExvYWlDb25nVmllYzogc3RyaW5nO1xyXG4gICAgd29ya2Zsb3dEYXRhOiBhbnkgPSB7fTtcclxuICAgIGhhc0NvdW50RG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcmVhZHlHZW5Xb3JrZmxvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jYXVIaW5oV29ya2Zsb3dTZXJ2aWNlOiBDYXVIaW5oV29ya2Zsb3dTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBnZXRTZXR0aW5nKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRGV0YWlsICYmIHRoaXMuX2l0ZW1Mb2FpQ29uZ1ZpZWMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLl9pdGVtTG9haUNvbmdWaWVjKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaWRMb2FpQ29uZ1ZpZWMgPSB0aGlzLl9pdGVtTG9haUNvbmdWaWVjLmlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pZExvYWlDb25nVmllYyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVhZHlHZW5Xb3JrZmxvdyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaGFzQ291bnREb3duID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBoYW5kbGVSZWFkeVRvR2V0V29ya2Zsb3dEYXRhKCkge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5pZExvYWlDb25nVmllYykge1xyXG4gICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkTG9haUNvbmdWaWVjJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaWRMb2FpQ29uZ1ZpZWMpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcignaWRMb2FpQ29uZ1ZpZWMnLCBPcGVyYXRvci5pc051bGwsICcnKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMud29ya2Zsb3dEYXRhID0gKGF3YWl0IHRoaXMuX2NhdUhpbmhXb3JrZmxvd1NlcnZpY2UuZ2V0RGV0YWlsQnlGaWx0ZXIoZmlsdGVycykpLmRhdGE7XHJcbiAgICAgICAgdGhpcy5yZWFkeUdlbldvcmtmbG93ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmhhc0NvdW50RG93biA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNhdmluZ1Byb21pc2Uod29ya2Zsb3dEYXRhKSB7XHJcbiAgICAgICAgaWYgKHdvcmtmbG93RGF0YS5pZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY2F1SGluaFdvcmtmbG93U2VydmljZS5wdXQod29ya2Zsb3dEYXRhLmlkLCB3b3JrZmxvd0RhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NhdUhpbmhXb3JrZmxvd1NlcnZpY2UucG9zdCh3b3JrZmxvd0RhdGEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVTYXZlKHdvcmtmbG93RGF0YSkge1xyXG4gICAgICAgIHdvcmtmbG93RGF0YS5pZExvYWlDb25nVmllYyA9IHRoaXMuaWRMb2FpQ29uZ1ZpZWM7XHJcbiAgICAgICAgdGhpcy5nZXRTYXZpbmdQcm9taXNlKHdvcmtmbG93RGF0YSlcclxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzLCAnTMawdSBj4bqldSBow6xuaCB0aMOgbmggY8O0bmcnLCBmID0+IHtcclxuXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgIH1cclxufVxyXG5cclxuIl19
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1aGluaC13b3JrZmxvdy1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbmd2aWVjL2NhdWhpbmgtd29ya2Zsb3cvY2F1aGluaC13b3JrZmxvdy1kZXRhaWwvY2F1aGluaC13b3JrZmxvdy1kZXRhaWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQU85RSxNQUFNLE9BQU8sa0NBQW1DLFNBQVEsYUFBYTtJQVdqRSxZQUNjLFNBQW1CLEVBQ25CLHVCQUErQztRQUV6RCxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFIUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBd0I7UUFacEQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQU8xQixpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQUN2QixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUFNbEMsQ0FBQztJQWJELElBQWEsZ0JBQWdCLENBQUMsS0FBVTtRQUNwQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBWUQsUUFBUTtJQUVSLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLEVBQUU7WUFDakQsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1NBQ25EO2FBQ0k7WUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM5QjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVLLDRCQUE0Qjs7WUFDOUIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ25CLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7YUFDdkY7aUJBQ0k7Z0JBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN2RTtZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUN6RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUM7S0FBQTtJQUVELGdCQUFnQixDQUFDLFlBQVk7UUFDekIsSUFBSSxZQUFZLENBQUMsRUFBRSxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQzFFO2FBQ0k7WUFDRCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDMUQ7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLFlBQVk7UUFDbkIsWUFBWSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7YUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7UUFFckUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNaLENBQUM7OztZQXRFSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLDhCQUE4QjtnQkFDeEMsNFRBQXVEO2dCQUV2RCxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQVZtQixRQUFRO1lBSW5CLHNCQUFzQjs7O3VCQVExQixLQUFLOytCQUVMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvY29tcG9uZW50LWJhc2UnO1xyXG5pbXBvcnQgeyBPcGVyYXRvciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBDYXVIaW5oV29ya2Zsb3dTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2F1aGluaC13b3JrZmxvdy5zZXJ2aWNlJztcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2Jhc2UtY2F1aGluaC13b3JrZmxvdy1kZXRhaWwnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhdWhpbmgtd29ya2Zsb3ctZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NhdWhpbmgtd29ya2Zsb3ctZGV0YWlsLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlQ2F1SGluaFdvcmtmbG93RGV0YWlsQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSBpc0RldGFpbCA9IGZhbHNlO1xyXG4gICAgX2l0ZW1Mb2FpQ29uZ1ZpZWM6IGFueTtcclxuICAgIEBJbnB1dCgpIHNldCBpdGVtTG9haUNvbmdWaWVjKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLl9pdGVtTG9haUNvbmdWaWVjID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5nZXRTZXR0aW5nKCk7XHJcbiAgICB9XHJcbiAgICBpZExvYWlDb25nVmllYzogc3RyaW5nO1xyXG4gICAgd29ya2Zsb3dEYXRhOiBhbnkgPSB7fTtcclxuICAgIGhhc0NvdW50RG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcmVhZHlHZW5Xb3JrZmxvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jYXVIaW5oV29ya2Zsb3dTZXJ2aWNlOiBDYXVIaW5oV29ya2Zsb3dTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBnZXRTZXR0aW5nKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRGV0YWlsICYmIHRoaXMuX2l0ZW1Mb2FpQ29uZ1ZpZWMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLl9pdGVtTG9haUNvbmdWaWVjKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaWRMb2FpQ29uZ1ZpZWMgPSB0aGlzLl9pdGVtTG9haUNvbmdWaWVjLmlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pZExvYWlDb25nVmllYyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVhZHlHZW5Xb3JrZmxvdyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaGFzQ291bnREb3duID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBoYW5kbGVSZWFkeVRvR2V0V29ya2Zsb3dEYXRhKCkge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5pZExvYWlDb25nVmllYykge1xyXG4gICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkTG9haUNvbmdWaWVjJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaWRMb2FpQ29uZ1ZpZWMpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcignaWRMb2FpQ29uZ1ZpZWMnLCBPcGVyYXRvci5pc051bGwsICcnKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMud29ya2Zsb3dEYXRhID0gKGF3YWl0IHRoaXMuX2NhdUhpbmhXb3JrZmxvd1NlcnZpY2UuZ2V0RGV0YWlsQnlGaWx0ZXIoZmlsdGVycykpLmRhdGE7XHJcbiAgICAgICAgdGhpcy5yZWFkeUdlbldvcmtmbG93ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmhhc0NvdW50RG93biA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNhdmluZ1Byb21pc2Uod29ya2Zsb3dEYXRhKSB7XHJcbiAgICAgICAgaWYgKHdvcmtmbG93RGF0YS5pZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY2F1SGluaFdvcmtmbG93U2VydmljZS5wdXQod29ya2Zsb3dEYXRhLmlkLCB3b3JrZmxvd0RhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NhdUhpbmhXb3JrZmxvd1NlcnZpY2UucG9zdCh3b3JrZmxvd0RhdGEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVTYXZlKHdvcmtmbG93RGF0YSkge1xyXG4gICAgICAgIHdvcmtmbG93RGF0YS5pZExvYWlDb25nVmllYyA9IHRoaXMuaWRMb2FpQ29uZ1ZpZWM7XHJcbiAgICAgICAgdGhpcy5nZXRTYXZpbmdQcm9taXNlKHdvcmtmbG93RGF0YSlcclxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzLCAnTMawdSBj4bqldSBow6xuaCB0aMOgbmggY8O0bmcnLCBmID0+IHtcclxuXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgIH1cclxufVxyXG5cclxuIl19