tnx-shared 5.1.78 → 5.1.82

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 (121) hide show
  1. package/bundles/tnx-shared.umd.js +994 -321
  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-form-base.d.ts +1 -0
  6. package/classes/base/data-form-base.d.ts.map +1 -1
  7. package/classes/base/data-list-base.d.ts +2 -1
  8. package/classes/base/data-list-base.d.ts.map +1 -1
  9. package/classes/form-schema.d.ts +3 -0
  10. package/classes/form-schema.d.ts.map +1 -1
  11. package/components/crud/crud-form/crud-form.component.d.ts.map +1 -1
  12. package/components/crud/crud-list/crud-list.component.d.ts +1 -0
  13. package/components/crud/crud-list/crud-list.component.d.ts.map +1 -1
  14. package/components/entity-permission/services.cs/entity-permission.service.d.ts +1 -0
  15. package/components/entity-permission/services.cs/entity-permission.service.d.ts.map +1 -1
  16. package/components/file-explorer/file-manager/file-manager.component.d.ts +1 -0
  17. package/components/file-explorer/file-manager/file-manager.component.d.ts.map +1 -1
  18. package/components/file-explorer/services/file-data.service.d.ts +1 -0
  19. package/components/file-explorer/services/file-data.service.d.ts.map +1 -1
  20. package/components/query-builders/query-builder/query-builder.component.d.ts.map +1 -1
  21. package/components/query-builders/query-builder-group/query-builder-group.component.d.ts +1 -0
  22. package/components/query-builders/query-builder-group/query-builder-group.component.d.ts.map +1 -1
  23. package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts +3 -0
  24. package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts.map +1 -1
  25. package/components/statemachines/models/constants.d.ts +5 -1
  26. package/components/statemachines/models/constants.d.ts.map +1 -1
  27. package/components/statemachines/models/enums.d.ts +4 -0
  28. package/components/statemachines/models/enums.d.ts.map +1 -1
  29. package/components/statemachines/statemachines-connection-metadata/statemachines-connection-metadata.component.d.ts.map +1 -1
  30. package/components/statemachines/statemachines-connection-receiver/statemachines-connection-receiver.component.d.ts +3 -0
  31. package/components/statemachines/statemachines-connection-receiver/statemachines-connection-receiver.component.d.ts.map +1 -1
  32. package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.d.ts +28 -0
  33. package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.d.ts.map +1 -0
  34. package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.ngfactory.d.ts.map +1 -0
  35. package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.scss.shim.ngstyle.d.ts.map +1 -0
  36. package/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.d.ts +3 -1
  37. package/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.d.ts.map +1 -1
  38. package/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.d.ts +3 -1
  39. package/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.d.ts.map +1 -1
  40. package/components/statemachines/statemachines-connection-receiver-role/statemachines-connection-receiver-role.component.d.ts +6 -4
  41. package/components/statemachines/statemachines-connection-receiver-role/statemachines-connection-receiver-role.component.d.ts.map +1 -1
  42. package/components/statemachines/statemachines-connection-sender/statemachines-connection-sender.component.d.ts +3 -3
  43. package/components/statemachines/statemachines-connection-sender/statemachines-connection-sender.component.d.ts.map +1 -1
  44. package/components/user-picker/user-picker.component.d.ts +8 -2
  45. package/components/user-picker/user-picker.component.d.ts.map +1 -1
  46. package/components/workflow/models/models.d.ts +8 -8
  47. package/components/workflow/models/models.d.ts.map +1 -1
  48. package/components/workflow/process-workflow-form/process-workflow-form.component.d.ts +1 -1
  49. package/components/workflow/process-workflow-form/process-workflow-form.component.d.ts.map +1 -1
  50. package/components/workflow/process-workflow-target/process-workflow-target.component.d.ts +3 -6
  51. package/components/workflow/process-workflow-target/process-workflow-target.component.d.ts.map +1 -1
  52. package/components/workflow/workflow-history-new/workflow-history-new.component.d.ts +3 -3
  53. package/components/workflow/workflow-history-new/workflow-history-new.component.d.ts.map +1 -1
  54. package/components/workflow/workflow-setting-new/workflow-setting-new.component.d.ts +1 -0
  55. package/components/workflow/workflow-setting-new/workflow-setting-new.component.d.ts.map +1 -1
  56. package/configs/component-context.constant.d.ts +1 -0
  57. package/configs/component-context.constant.d.ts.map +1 -1
  58. package/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.d.ts +8 -3
  59. package/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.d.ts.map +1 -1
  60. package/congviec/congviec/congviec-form/congviec-form.component.d.ts +2 -0
  61. package/congviec/congviec/congviec-form/congviec-form.component.d.ts.map +1 -1
  62. package/congviec/congviec/congviec.component.d.ts.map +1 -1
  63. package/congviec/congviec/services/congviec-dinhkem.service.d.ts +8 -0
  64. package/congviec/congviec/services/congviec-dinhkem.service.d.ts.map +1 -1
  65. package/congviec/congviec/services/congviec.service.d.ts.map +1 -1
  66. package/esm2015/classes/base/data-form-base.js +6 -3
  67. package/esm2015/classes/base/data-list-base.js +13 -3
  68. package/esm2015/classes/form-schema.js +1 -1
  69. package/esm2015/components/crud/crud-form/crud-form.component.js +2 -1
  70. package/esm2015/components/crud/crud-list/crud-list.component.js +6 -2
  71. package/esm2015/components/entity-permission/services.cs/entity-permission.service.js +8 -5
  72. package/esm2015/components/file-explorer/file-manager/file-manager.component.js +17 -10
  73. package/esm2015/components/file-explorer/services/file-data.service.js +15 -15
  74. package/esm2015/components/query-builders/query-builder/query-builder.component.js +24 -7
  75. package/esm2015/components/query-builders/query-builder-group/query-builder-group.component.js +6 -2
  76. package/esm2015/components/query-builders/query-builder-rule/query-builder-rule.component.js +39 -3
  77. package/esm2015/components/share-link-by-permission/share-link-by-permission.component.js +2 -2
  78. package/esm2015/components/statemachines/models/constants.js +9 -4
  79. package/esm2015/components/statemachines/models/enums.js +6 -1
  80. package/esm2015/components/statemachines/statemachines-connection-metadata/statemachines-connection-metadata.component.js +9 -5
  81. package/esm2015/components/statemachines/statemachines-connection-receiver/statemachines-connection-receiver.component.js +19 -6
  82. package/esm2015/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.js +179 -0
  83. package/esm2015/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.js +32 -1
  84. package/esm2015/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.js +32 -1
  85. package/esm2015/components/statemachines/statemachines-connection-receiver-role/statemachines-connection-receiver-role.component.js +39 -8
  86. package/esm2015/components/statemachines/statemachines-connection-sender/statemachines-connection-sender.component.js +19 -7
  87. package/esm2015/components/statemachines/statemachines-designer/statemachines-designer.component.js +1 -1
  88. package/esm2015/components/statemachines/utils/utils.js +6 -6
  89. package/esm2015/components/tn-app-help/tn-app-help.component.js +1 -1
  90. package/esm2015/components/tn-app-notification/tn-app-notification.component.js +2 -2
  91. package/esm2015/components/user-picker/user-picker.component.js +47 -6
  92. package/esm2015/components/workflow/models/models.js +1 -7
  93. package/esm2015/components/workflow/process-workflow-form/process-workflow-form.component.js +39 -42
  94. package/esm2015/components/workflow/process-workflow-target/process-workflow-target.component.js +7 -40
  95. package/esm2015/components/workflow/workflow-history-new/workflow-history-new.component.js +10 -12
  96. package/esm2015/components/workflow/workflow-setting-new/workflow-setting-new.component.js +67 -10
  97. package/esm2015/configs/component-context.constant.js +3 -2
  98. package/esm2015/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.js +50 -14
  99. package/esm2015/congviec/congviec/congviec-form/congviec-form.component.js +24 -12
  100. package/esm2015/congviec/congviec/congviec.component.js +7 -6
  101. package/esm2015/congviec/congviec/services/congviec-dinhkem.service.js +57 -1
  102. package/esm2015/congviec/congviec/services/congviec.service.js +3 -3
  103. package/esm2015/services/base.service.js +4 -1
  104. package/esm2015/services/dm-chucvu.service.js +28 -0
  105. package/esm2015/services/role.service.js +1 -1
  106. package/esm2015/tnx-shared.js +69 -67
  107. package/esm2015/tnx-shared.module.js +3 -1
  108. package/fesm2015/tnx-shared.js +776 -220
  109. package/fesm2015/tnx-shared.js.map +1 -1
  110. package/package.json +2 -2
  111. package/services/base.service.d.ts +1 -0
  112. package/services/base.service.d.ts.map +1 -1
  113. package/services/dm-chucvu.service.d.ts +12 -0
  114. package/services/dm-chucvu.service.d.ts.map +1 -0
  115. package/services/dm-chucvu.service.ngfactory.d.ts.map +1 -0
  116. package/tnx-shared.d.ts +68 -66
  117. package/tnx-shared.d.ts.map +1 -1
  118. package/tnx-shared.metadata.json +1 -1
  119. package/tnx-shared.module.d.ts +2 -1
  120. package/tnx-shared.module.d.ts.map +1 -1
  121. package/tnx-shared.module.ngfactory.d.ts.map +1 -1
@@ -3,7 +3,7 @@ import { Component, Injector, Input } from '@angular/core';
3
3
  import { ComponentContextService } from '../../../app-context/component-context.service';
4
4
  import { DataListBase } from '../../../classes/base/data-list-base';
5
5
  import { ColumnSchemaBase, CrudListSetting, DataType, EnumFileLayout, HeightType, ModelSchema, Operator } from '../../../classes/form-schema';
6
- import { RoleService } from '../../../services/role.service';
6
+ import { DmChucVuService } from '../../../services/dm-chucvu.service';
7
7
  import { UserGroupRealService } from '../../../services/user-group-real.service';
8
8
  import { CoCauToChucService } from '../../cocautochuc/services/cocautochuc.service';
9
9
  import { FileDataService } from '../../file-explorer/services/file-data.service';
@@ -11,13 +11,13 @@ import { EnumStateType, EnumWorkflowHistoryStatus } from '../../statemachines/mo
11
11
  import { ActionChoYKienBase, ActionThuHoiBase, ActionUpdateModel, MaActionBatDauQuyTrinh } from '../models/const';
12
12
  import { WorkflowHistoryService } from '../services/workflow-history.service';
13
13
  export class WorkflowHistoryNewComponent extends DataListBase {
14
- constructor(_injector, _workflowHistoryService, _coCauToChucService, _userGroupService, _roleService, _fileDataService) {
14
+ constructor(_injector, _workflowHistoryService, _coCauToChucService, _userGroupService, _dmChucVuService, _fileDataService) {
15
15
  super(_injector);
16
16
  this._injector = _injector;
17
17
  this._workflowHistoryService = _workflowHistoryService;
18
18
  this._coCauToChucService = _coCauToChucService;
19
19
  this._userGroupService = _userGroupService;
20
- this._roleService = _roleService;
20
+ this._dmChucVuService = _dmChucVuService;
21
21
  // Là form lịch sử của task nhưng mở từ giao diện của đối tượng mà task gắn vào
22
22
  // Ở form này thì chỉ xem lịch sử chứ k dc làm gì hết
23
23
  this.isRelativeForm = false;
@@ -78,8 +78,8 @@ export class WorkflowHistoryNewComponent extends DataListBase {
78
78
  new ModelSchema({ field: 'donViViewIds', name: 'Đơn vị theo dõi', fullName: 'Đơn vị theo dõi', description: '' }),
79
79
  new ModelSchema({ field: 'groupIds', name: 'Nhóm người dùng nhận', fullName: 'Nhóm người dùng nhận', description: '' }),
80
80
  new ModelSchema({ field: 'groupViewIds', name: 'Nhóm người dùng theo dõi', fullName: 'Nhóm người dùng theo dõi', description: '' }),
81
- new ModelSchema({ field: 'roleIds', name: 'Vai trò nhận', fullName: 'Vai trò nhận', description: '' }),
82
- new ModelSchema({ field: 'roleViewIds', name: 'Vai trò theo dõi', fullName: 'Vai trò theo dõi', description: '' }),
81
+ new ModelSchema({ field: 'roleIds', name: 'Chức vụ nhận', fullName: 'Chức vụ nhận', description: '' }),
82
+ new ModelSchema({ field: 'roleViewIds', name: 'Chức vụ theo dõi', fullName: 'Chức vụ theo dõi', description: '' }),
83
83
  new ModelSchema({ field: 'note', name: 'Ý kiến', fullName: 'Ý kiến', description: '' })
84
84
  ];
85
85
  this.setting.cols = [
@@ -151,8 +151,7 @@ export class WorkflowHistoryNewComponent extends DataListBase {
151
151
  new ColumnSchemaBase({
152
152
  field: 'roleIds',
153
153
  width: '15%',
154
- baseService: this._roleService,
155
- displayField: 'name',
154
+ baseService: this._dmChucVuService,
156
155
  multiple: true,
157
156
  visible: false,
158
157
  forceGetData: true
@@ -160,8 +159,7 @@ export class WorkflowHistoryNewComponent extends DataListBase {
160
159
  new ColumnSchemaBase({
161
160
  field: 'roleViewIds',
162
161
  width: '15%',
163
- baseService: this._roleService,
164
- displayField: 'name',
162
+ baseService: this._dmChucVuService,
165
163
  multiple: true,
166
164
  visible: false,
167
165
  forceGetData: true
@@ -357,7 +355,7 @@ export class WorkflowHistoryNewComponent extends DataListBase {
357
355
  WorkflowHistoryNewComponent.decorators = [
358
356
  { type: Component, args: [{
359
357
  selector: 'workflow-history-new',
360
- template: "<div style=\"height: 100%\">\r\n <as-split direction=\"vertical\">\r\n <as-split-area [size]=\"40\">\r\n <div class=\"state-designer-container\">\r\n <div>\r\n S\u01A1 \u0111\u1ED3 quy tr\u00ECnh\r\n </div>\r\n <div>\r\n <tn-custom-scrollbar>\r\n <statemachines-designer [data]=\"machinesData\" [currentConnection]=\"currentConnection\"\r\n [viewOnly]=\"true\" [useScrollBar]=\"false\">\r\n </statemachines-designer>\r\n <after-view-checked (loaded)=\"setMachinesAndConnection()\"></after-view-checked>\r\n </tn-custom-scrollbar>\r\n </div>\r\n </div>\r\n </as-split-area>\r\n <as-split-area [size]=\"60\">\r\n <div style=\"height: 100%\">\r\n <crud-list *ngIf=\"model.ready\" #crudList [model]=\"model\" [setting]=\"setting\"\r\n [dataSource]=\"model.dataSource\" (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"_add($event)\"\r\n (onEdit)=\"_edit($event)\" (onView)=\"_view($event)\" (onDelete)=\"_delete($event)\"\r\n (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_handleReloaded($event)\"\r\n (onRowSelect)=\"handleRowSelect($event)\">\r\n <ng-template #note let-rowData=\"rowData\">\r\n <div *ngIf=\"rowData.note==null?'':rowData.note\" [innerHTML]=\"rowData.note | safeHtml\"></div>\r\n </ng-template>\r\n <ng-template #receiver let-rowData=\"rowData\">\r\n <div *ngIf=\"!rowData.notInMainThread\" class=\"container-receiver\">\r\n <div *ngIf=\"rowData.struserIds\"><b>C\u00E1n b\u1ED9: </b>{{rowData.struserIds}}</div>\r\n <div *ngIf=\"rowData.strdonViIds\"><b>\u0110\u01A1n v\u1ECB: </b>{{rowData.strdonViIds}}</div>\r\n <div *ngIf=\"rowData.strgroupIds\"><b>Nh\u00F3m: </b>{{rowData.strgroupIds}}</div>\r\n <div *ngIf=\"rowData.strroleIds\"><b>Vai tr\u00F2: </b>{{rowData.strroleIds}}</div>\r\n </div>\r\n <div *ngIf=\"rowData.notInMainThread\">\r\n <div *ngFor=\"let changedField of rowData.jsonModelChange\">\r\n {{changedField.field}},\r\n {{changedField.valueOld}} => {{changedField.valueNew}}\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #receiverView let-rowData=\"rowData\">\r\n <div class=\"container-receiver\">\r\n <div *ngIf=\"rowData.struserViewIds\"><b>C\u00E1n b\u1ED9: </b>{{rowData.struserViewIds}}</div>\r\n <div *ngIf=\"rowData.strdonViViewIds\"><b>\u0110\u01A1n v\u1ECB: </b>{{rowData.strdonViViewIds}}</div>\r\n <div *ngIf=\"rowData.strgroupViewIds\"><b>Nh\u00F3m: </b>{{rowData.strgroupViewIds}}</div>\r\n <div *ngIf=\"rowData.strroleViewIds\"><b>Vai tr\u00F2: </b>{{rowData.strroleViewIds}}</div>\r\n </div>\r\n </ng-template>\r\n <ng-template #fileDinhKem let-rowData=\"rowData\">\r\n <file-manager [serviceCode]=\"_workflowHistoryService.serviceCode\"\r\n [entity]=\"_workflowHistoryService.entityName\" [entityKey]=\"rowData.id\"\r\n [fileDataService]=\"fileDataService\" [layout]=\"layoutFile.SIMPLE\" [readonly]=\"true\">\r\n </file-manager>\r\n </ng-template>\r\n <ng-template #function let-rowData=\"rowData\">\r\n <button *ngIf=\"rowData.status == enumWorkflowHistoryStatus.IN_MAIN_THREAD\" pButton\r\n icon=\"pi pi-replay\" class=\"p-button-text p-button-rounded link-or-action\"\r\n pTooltip=\"Thu h\u1ED3i v\u1EC1 b\u01B0\u1EDBc n\u00E0y\" tooltipPosition=\"top\"\r\n (click)=\"rollbackByHistory(rowData)\"></button>\r\n </ng-template>\r\n </crud-list>\r\n </div>\r\n </as-split-area>\r\n </as-split>\r\n</div>",
358
+ template: "<div style=\"height: 100%\">\r\n <as-split direction=\"vertical\">\r\n <as-split-area [size]=\"40\">\r\n <div class=\"state-designer-container\">\r\n <div>\r\n S\u01A1 \u0111\u1ED3 quy tr\u00ECnh\r\n </div>\r\n <div>\r\n <tn-custom-scrollbar>\r\n <statemachines-designer [data]=\"machinesData\" [currentConnection]=\"currentConnection\"\r\n [viewOnly]=\"true\" [useScrollBar]=\"false\">\r\n </statemachines-designer>\r\n <after-view-checked (loaded)=\"setMachinesAndConnection()\"></after-view-checked>\r\n </tn-custom-scrollbar>\r\n </div>\r\n </div>\r\n </as-split-area>\r\n <as-split-area [size]=\"60\">\r\n <div style=\"height: 100%\">\r\n <crud-list *ngIf=\"model.ready\" #crudList [model]=\"model\" [setting]=\"setting\"\r\n [dataSource]=\"model.dataSource\" (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"_add($event)\"\r\n (onEdit)=\"_edit($event)\" (onView)=\"_view($event)\" (onDelete)=\"_delete($event)\"\r\n (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_handleReloaded($event)\"\r\n (onRowSelect)=\"handleRowSelect($event)\">\r\n <ng-template #note let-rowData=\"rowData\">\r\n <div *ngIf=\"rowData.note==null?'':rowData.note\" [innerHTML]=\"rowData.note | safeHtml\"></div>\r\n </ng-template>\r\n <ng-template #receiver let-rowData=\"rowData\">\r\n <div *ngIf=\"!rowData.notInMainThread\" class=\"container-receiver\">\r\n <div *ngIf=\"rowData.struserIds\"><b>C\u00E1n b\u1ED9: </b>{{rowData.struserIds}}</div>\r\n <div *ngIf=\"rowData.strdonViIds\"><b>\u0110\u01A1n v\u1ECB: </b>{{rowData.strdonViIds}}</div>\r\n <div *ngIf=\"rowData.strgroupIds\"><b>Nh\u00F3m: </b>{{rowData.strgroupIds}}</div>\r\n <div *ngIf=\"rowData.strroleIds\"><b>Ch\u1EE9c v\u1EE5: </b>{{rowData.strroleIds}}</div>\r\n </div>\r\n <div *ngIf=\"rowData.notInMainThread\">\r\n <div *ngFor=\"let changedField of rowData.jsonModelChange\">\r\n {{changedField.field}},\r\n {{changedField.valueOld}} => {{changedField.valueNew}}\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #receiverView let-rowData=\"rowData\">\r\n <div class=\"container-receiver\">\r\n <div *ngIf=\"rowData.struserViewIds\"><b>C\u00E1n b\u1ED9: </b>{{rowData.struserViewIds}}</div>\r\n <div *ngIf=\"rowData.strdonViViewIds\"><b>\u0110\u01A1n v\u1ECB: </b>{{rowData.strdonViViewIds}}</div>\r\n <div *ngIf=\"rowData.strgroupViewIds\"><b>Nh\u00F3m: </b>{{rowData.strgroupViewIds}}</div>\r\n <div *ngIf=\"rowData.strroleViewIds\"><b>Ch\u1EE9c v\u1EE5: </b>{{rowData.strroleViewIds}}</div>\r\n </div>\r\n </ng-template>\r\n <ng-template #fileDinhKem let-rowData=\"rowData\">\r\n <file-manager [serviceCode]=\"_workflowHistoryService.serviceCode\"\r\n [entity]=\"_workflowHistoryService.entityName\" [entityKey]=\"rowData.id\"\r\n [fileDataService]=\"fileDataService\" [layout]=\"layoutFile.SIMPLE\" [readonly]=\"true\">\r\n </file-manager>\r\n </ng-template>\r\n <ng-template #function let-rowData=\"rowData\">\r\n <button *ngIf=\"rowData.status == enumWorkflowHistoryStatus.IN_MAIN_THREAD\" pButton\r\n icon=\"pi pi-replay\" class=\"p-button-text p-button-rounded link-or-action\"\r\n pTooltip=\"Thu h\u1ED3i v\u1EC1 b\u01B0\u1EDBc n\u00E0y\" tooltipPosition=\"top\"\r\n (click)=\"rollbackByHistory(rowData)\"></button>\r\n </ng-template>\r\n </crud-list>\r\n </div>\r\n </as-split-area>\r\n </as-split>\r\n</div>",
361
359
  providers: [ComponentContextService],
362
360
  styles: [".state-designer-container{display:flex;flex-direction:column;height:100%}.state-designer-container>div:first-child{font-size:.9em;font-weight:700;padding:.5em 0}.state-designer-container>div:last-child{flex:1 1;overflow:auto}.container-receiver div{margin-bottom:10px}.container-receiver div:last-child{margin-bottom:0}::ng-deep workflow-history-new tr.recalled{opacity:.5}"]
363
361
  },] }
@@ -367,7 +365,7 @@ WorkflowHistoryNewComponent.ctorParameters = () => [
367
365
  { type: WorkflowHistoryService },
368
366
  { type: CoCauToChucService },
369
367
  { type: UserGroupRealService },
370
- { type: RoleService },
368
+ { type: DmChucVuService },
371
369
  { type: FileDataService }
372
370
  ];
373
371
  WorkflowHistoryNewComponent.propDecorators = {
@@ -377,4 +375,4 @@ WorkflowHistoryNewComponent.propDecorators = {
377
375
  item: [{ type: Input }],
378
376
  workflowSetting: [{ type: Input }]
379
377
  };
380
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvd29ya2Zsb3cvd29ya2Zsb3ctaGlzdG9yeS1uZXcvd29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU5SSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQVE5RSxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsWUFBWTtJQW9CekQsWUFDYyxTQUFtQixFQUN0Qix1QkFBK0Ms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aUIsQ0FDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFDeEIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQ3RELENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3RFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDUixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFSyxhQUFhOztZQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkMsQ0FBQztLQUFBOzs7WUFoWUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLHMrSUFBb0Q7Z0JBRXBELFNBQVMsRUFBRSxDQUFDLHVCQUF1QixDQUFDOzthQUN2Qzs7O1lBbkJrQyxRQUFRO1lBWWxDLHNCQUFzQjtZQUx0QixrQkFBa0I7WUFEbEIsb0JBQW9CO1lBRHBCLFdBQVc7WUFHWCxlQUFlOzs7OEJBY25CLEtBQUs7NkJBR0wsS0FBSzt3QkFDTCxLQUFLO21CQUNMLEtBQUs7OEJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YUxpc3RCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtbGlzdC1iYXNlJztcclxuaW1wb3J0IHsgQ29sdW1uU2NoZW1hQmFzZSwgQ3J1ZExpc3RTZXR0aW5nLCBEYXRhVHlwZSwgRW51bUZpbGVMYXlvdXQsIEhlaWdodFR5cGUsIE1vZGVsU2NoZW1hLCBPcGVyYXRvciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBHcmlkSW5mbyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9ncmlkLWluZm8nO1xyXG5pbXBvcnQgeyBSb2xlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JvbGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJHcm91cFJlYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXNlci1ncm91cC1yZWFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb0NhdVRvQ2h1Y1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb2NhdXRvY2h1Yy9zZXJ2aWNlcy9jb2NhdXRvY2h1Yy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZURhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1TdGF0ZVR5cGUsIEVudW1Xb3JrZmxvd0hpc3RvcnlTdGF0dXMgfSBmcm9tICcuLi8uLi9zdGF0ZW1hY2hpbmVzL21vZGVscy9lbnVtcyc7XHJcbmltcG9ydCB7IEFjdGlvbkNob1lLaWVuQmFzZSwgQWN0aW9uVGh1SG9pQmFzZSwgQWN0aW9uVXBkYXRlTW9kZWwsIE1hQWN0aW9uQmF0RGF1UXV5VHJpbmggfSBmcm9tICcuLi9tb2RlbHMvY29uc3QnO1xyXG5pbXBvcnQgeyBXZlNjaGVtYSB9IGZyb20gJy4uL21vZGVscy9tb2RlbHMnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd0hpc3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvd29ya2Zsb3ctaGlzdG9yeS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd3b3JrZmxvdy1oaXN0b3J5LW5ldycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dIaXN0b3J5TmV3Q29tcG9uZW50IGV4dGVuZHMgRGF0YUxpc3RCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgICBASW5wdXQoKSBidXNpbmVzc1NldHRpbmc6IENydWRMaXN0U2V0dGluZztcclxuICAgIC8vIEzDoCBmb3JtIGzhu4tjaCBz4butIGPhu6dhIHRhc2sgbmjGsG5nIG3hu58gdOG7qyBnaWFvIGRp4buHbiBj4bunYSDEkeG7kWkgdMaw4bujbmcgbcOgIHRhc2sgZ+G6r24gdsOgb1xyXG4gICAgLy8g4bueIGZvcm0gbsOgeSB0aMOsIGNo4buJIHhlbSBs4buLY2ggc+G7rSBjaOG7qSBrIGRjIGzDoG0gZ8OsIGjhur90XHJcbiAgICBASW5wdXQoKSBpc1JlbGF0aXZlRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgdGFibGVOYW1lOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpdGVtOiBhbnk7XHJcbiAgICBASW5wdXQoKSB3b3JrZmxvd1NldHRpbmc6IGFueTtcclxuXHJcbiAgICBsYXlvdXRGaWxlID0gRW51bUZpbGVMYXlvdXQ7XHJcbiAgICBlbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzID0gRW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cztcclxuICAgIGZpbGVEYXRhU2VydmljZTogRmlsZURhdGFTZXJ2aWNlO1xyXG4gICAgY3VycmVudFdvcmtmbG93OiB7XHJcbiAgICAgICAgZGF0YTogV2ZTY2hlbWFcclxuICAgIH07XHJcbiAgICBtYWNoaW5lc0RhdGE6IGFueSA9IHsgbWFjaGluZXM6IFtdLCBjb25uZWN0aW9uczogW10gfTtcclxuICAgIGN1cnJlbnRDb25uZWN0aW9uOiBhbnk7XHJcbiAgICBtYWNoaW5lQ29kZUtldFRodWNzOiBzdHJpbmdbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwdWJsaWMgX3dvcmtmbG93SGlzdG9yeVNlcnZpY2U6IFdvcmtmbG93SGlzdG9yeVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jb0NhdVRvQ2h1Y1NlcnZpY2U6IENvQ2F1VG9DaHVjU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX3VzZXJHcm91cFNlcnZpY2U6IFVzZXJHcm91cFJlYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfcm9sZVNlcnZpY2U6IFJvbGVTZXJ2aWNlLFxyXG4gICAgICAgIF9maWxlRGF0YVNlcnZpY2U6IEZpbGVEYXRhU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgICAgICB0aGlzLmZpbGVEYXRhU2VydmljZSA9IF9maWxlRGF0YVNlcnZpY2U7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkRGV0YWlsRnJvbVF1ZXJ5UGFyYW0gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX3dvcmtmbG93SGlzdG9yeVNlcnZpY2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLm11bHRpcGxlQ2hlY2tXaGVuQ2xpY2tSb3cgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuc2V0dGluZ0tleSA9ICdfX3dvcmtmbG93JztcclxuICAgICAgICB0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IHRoaXMud29ya2Zsb3dTZXR0aW5nLndvcmtmbG93cy5maW5kKHEgPT4gcS5jb2RlID09IHRoaXMuaXRlbS5fX3dvcmtmbG93Q29kZSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0dGluZy50aXRsZSA9ICcnO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oZWlnaHRUeXBlID0gSGVpZ2h0VHlwZS5keW5hbWljO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5zaG93RWRpdExpbmsgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuQnV0dG9ucyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkNoZWNrYm94ID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCB1c2VyQ3VycmVudCA9IHRoaXMuX3VzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCk7XHJcbiAgICAgICAgaWYgKHVzZXJDdXJyZW50LnVzZXJOYW1lICE9ICdhZG1pbicgfHwgdGhpcy5pc1JlbGF0aXZlRm9ybSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuRnVuY3Rpb25Db2x1bW4gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMudGFibGVOYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGVOYW1lID0gdGhpcy5idXNpbmVzc1NldHRpbmcuYmFzZVNlcnZpY2UuZW50aXR5TmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fZW50aXR5V29ya2Zsb3dIaXN0b3J5U2VydmljZS5zZXRDdXJyZW50U2VydmljZVVyaSh0aGlzLnRhYmxlTmFtZSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRXb3JrZmxvdyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwucmVhZHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gS2nhu4NtIHRyYSBu4bq/dSBhY2NvdW50IGzDoCBhZG1pbiB0aMOsIHTDrG0gbOG7i2NoIHPhu60gY3Xhu5FpIGPDuW5nIGPhu6dhIGLhuqNuIGdoaSDEkeG7gyB4w6FjIMSR4buLbmggd29ya2Zsb3cgY29kZVxyXG4gICAgICAgICAgICAvLyBQaOG7pWMgduG7pSB2aeG7h2MgcmV2ZXJ0IGThu68gbGnhu4d1IGzhu5dpXHJcbiAgICAgICAgICAgIGlmICh1c2VyQ3VycmVudC51c2VyTmFtZSA9PSAnYWRtaW4nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRMYXN0SGlzdG9yeUFuZEdldERhdGEoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ1F1eSB0csOsbmggY+G7p2EgYuG6o24gZ2hpIMSRw6MgYuG7iyB4w7NhJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzOiBbXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbnM6IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5tYWNoaW5lQ29kZUtldFRodWNzID0gdGhpcy5jdXJyZW50V29ya2Zsb3cuZGF0YS5tYWNoaW5lcy5maWx0ZXIocSA9PiBxLnR5cGUgPT0gRW51bVN0YXRlVHlwZS5TVE9QKS5tYXAocSA9PiBxLmNvZGUpO1xyXG4gICAgICAgIGNvbnN0IGRhdGFzb3VyY2VBY3Rpb24gPSB0aGlzLmNyZWF0ZURhdGFzb3VyY2VBY3Rpb24oKTtcclxuICAgICAgICB0aGlzLnNldHRpbmcubW9kZWxTY2hlbWFzID0gW1xyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ3VzZXJJZENyZWF0ZWQnLCBuYW1lOiAnTmfGsOG7nWkgZ+G7rWknLCBmdWxsTmFtZTogJ05nxrDhu51pIGfhu61pJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2FjdGlvbkNvZGUnLCBuYW1lOiAnVGhhbyB0w6FjJywgZnVsbE5hbWU6ICdUaGFvIHTDoWMnLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndGltZScsIG5hbWU6ICdUaOG7nWkgZ2lhbicsIGZ1bGxOYW1lOiAnVGjhu51pIGdpYW4nLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndXNlcklkcycsIG5hbWU6ICdOZ8aw4budaSBuaOG6rW4nLCBmdWxsTmFtZTogJ05nxrDhu51pIG5o4bqtbicsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICd1c2VyVmlld0lkcycsIG5hbWU6ICdOZ8aw4budaSB0aGVvIGTDtWknLCBmdWxsTmFtZTogJ05nxrDhu51pIHRoZW8gZMO1aScsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdkb25WaUlkcycsIG5hbWU6ICfEkMahbiB24buLIG5o4bqtbicsIGZ1bGxOYW1lOiAnxJDGoW4gduG7iyBuaOG6rW4nLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnZG9uVmlWaWV3SWRzJywgbmFtZTogJ8SQxqFuIHbhu4sgdGhlbyBkw7VpJywgZnVsbE5hbWU6ICfEkMahbiB24buLIHRoZW8gZMO1aScsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdncm91cElkcycsIG5hbWU6ICdOaMOzbSBuZ8aw4budaSBkw7luZyBuaOG6rW4nLCBmdWxsTmFtZTogJ05ow7NtIG5nxrDhu51pIGTDuW5nIG5o4bqtbicsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdncm91cFZpZXdJZHMnLCBuYW1lOiAnTmjDs20gbmfGsOG7nWkgZMO5bmcgdGhlbyBkw7VpJywgZnVsbE5hbWU6ICdOaMOzbSBuZ8aw4budaSBkw7luZyB0aGVvIGTDtWknLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAncm9sZUlkcycsIG5hbWU6ICdWYWkgdHLDsiBuaOG6rW4nLCBmdWxsTmFtZTogJ1ZhaSB0csOyIG5o4bqtbicsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdyb2xlVmlld0lkcycsIG5hbWU6ICdWYWkgdHLDsiB0aGVvIGTDtWknLCBmdWxsTmFtZTogJ1ZhaSB0csOyIHRoZW8gZMO1aScsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdub3RlJywgbmFtZTogJ8OdIGtp4bq/bicsIGZ1bGxOYW1lOiAnw50ga2nhur9uJywgZGVzY3JpcHRpb246ICcnIH0pXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmNvbHMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndXNlcklkQ3JlYXRlZCcsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEyJScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICdmdWxsTmFtZU5ldydcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnYWN0aW9uQ29kZScsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzklJyxcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IGRhdGFzb3VyY2VBY3Rpb25cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndXNlcklkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2Z1bGxOYW1lTmV3JyxcclxuICAgICAgICAgICAgICAgIGZpZWxkUGx1czogJ3VzZXJOYW1lJyxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3VzZXJWaWV3SWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl91c2VyU2VydmljZSxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnZnVsbE5hbWVOZXcnLFxyXG4gICAgICAgICAgICAgICAgZmllbGRQbHVzOiAndXNlck5hbWUnLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlJZHMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNSUnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2NvQ2F1VG9DaHVjU2VydmljZSxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlWaWV3SWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9jb0NhdVRvQ2h1Y1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2dyb3VwSWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl91c2VyR3JvdXBTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2dyb3VwVmlld0lkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlckdyb3VwU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25hbWUnLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdyb2xlSWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9yb2xlU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25hbWUnLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdyb2xlVmlld0lkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fcm9sZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICduYW1lJyxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbm90ZScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ25vdGUnLFxyXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndGltZScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogRGF0YVR5cGUuZGF0ZXRpbWUsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE0MHB4J1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdyZWNlaXZlcicsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ05nxrDhu51pIG5o4bqtbicsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3JlY2VpdmVyJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjUwcHgnLFxyXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAncmVjZWl2ZXJWaWV3JyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfGsOG7nWkgdGhlbyBkw7VpJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAncmVjZWl2ZXJWaWV3JyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjUwcHgnLFxyXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZmlsZURpbmhLZW0nLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnRmlsZSDEkcOtbmgga8OobScpLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdmaWxlRGluaEtlbScsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLm1vZGVsLnJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZpbmRMYXN0SGlzdG9yeUFuZEdldERhdGEoKSB7XHJcbiAgICAgICAgY29uc3QgbGFzdEhpc3RvcnkgPSAoYXdhaXQgdGhpcy5fd29ya2Zsb3dIaXN0b3J5U2VydmljZS5nZXRMYXN0QnlJdGVtSWQodGhpcy5pdGVtLmlkKSkuZGF0YTtcclxuICAgICAgICBpZiAoIWxhc3RIaXN0b3J5KSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5jdXJyZW50V29ya2Zsb3cgPSB0aGlzLndvcmtmbG93U2V0dGluZy53b3JrZmxvd3MuZmluZChxID0+IHEuY29kZSA9PSBsYXN0SGlzdG9yeS53b3JrZmxvd0NvZGUpO1xyXG4gICAgICAgIHRoaXMuaXRlbS5fX3dvcmtmbG93Q29kZSA9IGxhc3RIaXN0b3J5LndvcmtmbG93Q29kZTtcclxuICAgICAgICAvLyB0aGlzLmFwcGVuZE1hY2hpbmVzQW5kQ29ubmVjdGlvbih0aGlzLmN1cnJlbnRXb3JrZmxvdy5kYXRhLCB0aGlzLm1hY2hpbmVzRGF0YSk7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFdvcmtmbG93ID09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgICAgICB0aGlzLnNldE1hY2hpbmVzQW5kQ29ubmVjdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldE1hY2hpbmVzQW5kQ29ubmVjdGlvbigpIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3cgJiYgdGhpcy5jdXJyZW50V29ya2Zsb3cuZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLm1hY2hpbmVzRGF0YSA9IHRoaXMuY3VycmVudFdvcmtmbG93LmRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZURhdGFzb3VyY2VBY3Rpb24oKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW1xyXG4gICAgICAgICAgICB7IGlkOiBNYUFjdGlvbkJhdERhdVF1eVRyaW5oLCB0ZW46ICdC4bqvdCDEkeG6p3UgcXV5IHRyw6xuaCcgfVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5jdXJyZW50V29ya2Zsb3cuZGF0YS5jb25uZWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGlkOiBhY3Rpb24uY29kZSxcclxuICAgICAgICAgICAgICAgIHRlbjogYWN0aW9uLm5hbWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goXHJcbiAgICAgICAgICAgIHsgaWQ6IEFjdGlvblVwZGF0ZU1vZGVsLCB0ZW46ICdDaOG7iW5oIHPhu61hJyB9LFxyXG4gICAgICAgICAgICB7IGlkOiBBY3Rpb25DaG9ZS2llbkJhc2UsIHRlbjogJ0NobyDDvSBraeG6v24nIH0sXHJcbiAgICAgICAgICAgIHsgaWQ6IEFjdGlvblRodUhvaUJhc2UsIHRlbjogJ1RodSBo4buTaSB0aGFvIHTDoWMnIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbW9kaWZ5R3JpZEluZm8oZ3JpZEluZm8/OiBHcmlkSW5mbykge1xyXG4gICAgICAgIGdyaWRJbmZvLmZpbHRlcnMudW5zaGlmdChcclxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ3RhYmxlTmFtZScsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLnRhYmxlTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpdGVtSWQnLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5pdGVtLmlkKSxcclxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ3dvcmtmbG93Q29kZScsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLml0ZW0uX193b3JrZmxvd0NvZGUpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgZ3JpZEluZm8uc29ydHMudW5zaGlmdCh0aGlzLm5ld1NvcnQoJ2NyZWF0ZWQnLCAtMSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGJlZm9yZVJlbmRlckRhdGFTb3VyY2UoZGF0YVNvdXJjZSkge1xyXG4gICAgICAgIGRhdGFTb3VyY2UuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ3VzZXJJZHMnKTtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ3VzZXJWaWV3SWRzJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdkb25WaUlkcycpO1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAnZG9uVmlWaWV3SWRzJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdncm91cElkcycpO1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAnZ3JvdXBWaWV3SWRzJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdyb2xlSWRzJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdyb2xlVmlld0lkcycpO1xyXG4gICAgICAgICAgICBpZiAoIWl0ZW0uY29sU3BhbikgaXRlbS5jb2xTcGFuID0ge307XHJcbiAgICAgICAgICAgIGlmICghaXRlbS5oaWRkZW4pIGl0ZW0uaGlkZGVuID0ge307XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnN0YXR1cyA9PSBFbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzLk5PVF9JTl9NQUlOX1RIUkVBRCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uYWN0aW9uQ29kZSA9PSBBY3Rpb25VcGRhdGVNb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uY29sU3BhblsncmVjZWl2ZXInXSA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5oaWRkZW5bJ3JlY2VpdmVyVmlldyddID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5qc29uTW9kZWxDaGFuZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5qc29uTW9kZWxDaGFuZ2UgPSBKU09OLnBhcnNlKGl0ZW0uanNvbk1vZGVsQ2hhbmdlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uanNvbk1vZGVsQ2hhbmdlID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5hY3Rpb25Db2RlID09IEFjdGlvblRodUhvaUJhc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLmNsYXNzID0gJ3JlY2FsbGVkJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpdGVtLnN0YXR1cyA9PSBFbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzLlJFQ0FMTEVEKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLmNsYXNzID0gJ3JlY2FsbGVkJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBoaXN0b3J5TGFzdEluTWFpbkZsb3cgPSBkYXRhU291cmNlLmZpbmQocSA9PiAhcS5ub3RJbk1haW5UaHJlYWQpO1xyXG4gICAgICAgIGlmIChoaXN0b3J5TGFzdEluTWFpbkZsb3cpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW0gPSBoaXN0b3J5TGFzdEluTWFpbkZsb3c7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuc2VsZWN0ZWRJdGVtLl9jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW1zID0gW3RoaXMubW9kZWwuc2VsZWN0ZWRJdGVtXTtcclxuICAgICAgICAgICAgdGhpcy5zZXRDdXJyZW50Q29ubmVjdGlvbih0aGlzLm1vZGVsLnNlbGVjdGVkSXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGFmdGVyR2V0UmVmRGF0YURyb3Bkb3duKGZpZWxkKSB7XHJcbiAgICAvLyAgICAgaWYgKGZpZWxkID09IG51bGwpIHtcclxuICAgIC8vICAgICAgICAgdGhpcy5tb2RlbC5kYXRhU291cmNlLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAvLyAgICAgICAgICAgICBpZiAoIXRoaXMubWFjaGluZUNvZGVLZXRUaHVjcy5zb21lKHggPT4geCA9PSBpdGVtLnRhcmdldFN0YXR1c0NvZGUpKSB7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgaXRlbS5zdHJBbGxVc2VyID0gdGhpcy5qb2luVmFsdWUoaXRlbS5zdHJ1c2VySWRzLCBpdGVtLnN0cnVzZXJWaWV3SWRzKTtcclxuICAgIC8vICAgICAgICAgICAgICAgICBpdGVtLnN0ckFsbERvblZpID0gdGhpcy5qb2luVmFsdWUoaXRlbS5zdHJkb25WaUlkcywgaXRlbS5zdHJkb25WaVZpZXdJZHMpO1xyXG4gICAgLy8gICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICB9KTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyB9XHJcblxyXG4gICAgcHJpdmF0ZSBqb2luVmFsdWUodmFsdWUxLCB2YWx1ZTIpIHtcclxuICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSAnLCAnO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSAnJztcclxuICAgICAgICBpZiAodmFsdWUxKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCArPSBgJHt2YWx1ZTF9JHtzZXBhcmF0b3J9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZhbHVlMikge1xyXG4gICAgICAgICAgICByZXN1bHQgKz0gYCR7dmFsdWUyfSR7c2VwYXJhdG9yfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdWJzdHJpbmcoMCwgcmVzdWx0Lmxlbmd0aCAtIHNlcGFyYXRvci5sZW5ndGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3BsaXRMaXN0KGl0ZW06IGFueSwgZmllbGQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmIChpdGVtW2ZpZWxkXSkge1xyXG4gICAgICAgICAgICBpdGVtW2ZpZWxkXSA9IGl0ZW1bZmllbGRdLnNwbGl0KCcsJykuZmlsdGVyKHEgPT4gISFxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGl0ZW1bZmllbGRdID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVJvd1NlbGVjdChldnQpIHtcclxuICAgICAgICB0aGlzLnNldEN1cnJlbnRDb25uZWN0aW9uKHRoaXMubW9kZWwuc2VsZWN0ZWRJdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldEN1cnJlbnRDb25uZWN0aW9uKGl0ZW1IaXN0b3J5KSB7XHJcbiAgICAgICAgaWYgKCFpdGVtSGlzdG9yeVxyXG4gICAgICAgICAgICB8fCBpdGVtSGlzdG9yeS5ub3RJbk1haW5UaHJlYWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Q29ubmVjdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Q29ubmVjdGlvbiA9IHtcclxuICAgICAgICAgICAgc291cmNlQ29kZTogaXRlbUhpc3Rvcnkuc291cmNlU3RhdHVzQ29kZSxcclxuICAgICAgICAgICAgdGFyZ2V0Q29kZTogaXRlbUhpc3RvcnkudGFyZ2V0U3RhdHVzQ29kZSxcclxuICAgICAgICAgICAgYWN0aW9uQ29kZTogaXRlbUhpc3RvcnkuYWN0aW9uQ29kZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcm9sbGJhY2tCeUhpc3Rvcnkocm93RGF0YSkge1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93Q29uZmlybSgnQuG6oW4gY8OzIGNo4bqvYyBjaOG6r24gbXXhu5FuIHRodSBo4buTaSB0aGFvIHTDoWMgduG7gSBs4buLY2ggc+G7rSDEkcOjIGNo4buNbicpXHJcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlcykgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSAnJztcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5idXNpbmVzc1NldHRpbmcuZGlzcGxheUZpZWxkID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHRoaXMuaXRlbVs8c3RyaW5nPih0aGlzLmJ1c2luZXNzU2V0dGluZy5kaXNwbGF5RmllbGQpXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWUgPSAoPEZ1bmN0aW9uPih0aGlzLmJ1c2luZXNzU2V0dGluZy5kaXNwbGF5RmllbGQpKSh0aGlzLml0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5idXNpbmVzc1NldHRpbmcuYmFzZVNlcnZpY2Uucm9sbGJhY2tCeUhpc3RvcnkoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtLmlkLCByb3dEYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLmJ1c2luZXNzU2V0dGluZy5iYXNlU2VydmljZS5vYmplY3ROYW1lLCBuYW1lXVxyXG4gICAgICAgICAgICAgICAgKS50aGVuKHJlcyA9PiB0aGlzLmhhbmRsZVJlc3BvbnNlKHJlcywgJ1RodSBo4buTaSB0aGFvIHTDoWMgdGjDoG5oIGPDtG5nJywgZiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJpZ2dlclByb2Nlc3NEYXRhKCk7XHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGFmdGVyUmVsb2FkZWQoKSB7XHJcbiAgICAgICAgdGhpcy5maWxlRGF0YVNlcnZpY2UuZ2V0RGF0YSgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
378
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvd29ya2Zsb3cvd29ya2Zsb3ctaGlzdG9yeS1uZXcvd29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU5SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQVE5RSxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsWUFBWTtJQW9CekQsWUFDYyxTQUFtQixFQUN0Qix1QkFBK0Ms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RUFBRSxPQUFPLENBQUMsRUFBRSxFQUN4QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FDdEQsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSw2QkFBNkIsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDdEUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNSLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVLLGFBQWE7O1lBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQyxDQUFDO0tBQUE7OztZQTlYSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsZy9JQUFvRDtnQkFFcEQsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7O2FBQ3ZDOzs7WUFuQmtDLFFBQVE7WUFZbEMsc0JBQXNCO1lBTHRCLGtCQUFrQjtZQURsQixvQkFBb0I7WUFEcEIsZUFBZTtZQUdmLGVBQWU7Ozs4QkFjbkIsS0FBSzs2QkFHTCxLQUFLO3dCQUNMLEtBQUs7bUJBQ0wsS0FBSzs4QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhTGlzdEJhc2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvZGF0YS1saXN0LWJhc2UnO1xyXG5pbXBvcnQgeyBDb2x1bW5TY2hlbWFCYXNlLCBDcnVkTGlzdFNldHRpbmcsIERhdGFUeXBlLCBFbnVtRmlsZUxheW91dCwgSGVpZ2h0VHlwZSwgTW9kZWxTY2hlbWEsIE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IEdyaWRJbmZvIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IERtQ2h1Y1Z1U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RtLWNodWN2dS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlckdyb3VwUmVhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91c2VyLWdyb3VwLXJlYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IENvQ2F1VG9DaHVjU2VydmljZSB9IGZyb20gJy4uLy4uL2NvY2F1dG9jaHVjL3NlcnZpY2VzL2NvY2F1dG9jaHVjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWxlRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9maWxlLWV4cGxvcmVyL3NlcnZpY2VzL2ZpbGUtZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW51bVN0YXRlVHlwZSwgRW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cyB9IGZyb20gJy4uLy4uL3N0YXRlbWFjaGluZXMvbW9kZWxzL2VudW1zJztcclxuaW1wb3J0IHsgQWN0aW9uQ2hvWUtpZW5CYXNlLCBBY3Rpb25UaHVIb2lCYXNlLCBBY3Rpb25VcGRhdGVNb2RlbCwgTWFBY3Rpb25CYXREYXVRdXlUcmluaCB9IGZyb20gJy4uL21vZGVscy9jb25zdCc7XHJcbmltcG9ydCB7IFdmU2NoZW1hIH0gZnJvbSAnLi4vbW9kZWxzL21vZGVscyc7XHJcbmltcG9ydCB7IFdvcmtmbG93SGlzdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy93b3JrZmxvdy1oaXN0b3J5LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3dvcmtmbG93LWhpc3RvcnktbmV3JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1oaXN0b3J5LW5ldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1oaXN0b3J5LW5ldy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0hpc3RvcnlOZXdDb21wb25lbnQgZXh0ZW5kcyBEYXRhTGlzdEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICAgIEBJbnB1dCgpIGJ1c2luZXNzU2V0dGluZzogQ3J1ZExpc3RTZXR0aW5nO1xyXG4gICAgLy8gTMOgIGZvcm0gbOG7i2NoIHPhu60gY+G7p2EgdGFzayBuaMawbmcgbeG7nyB04burIGdpYW8gZGnhu4duIGPhu6dhIMSR4buRaSB0xrDhu6NuZyBtw6AgdGFzayBn4bqvbiB2w6BvXHJcbiAgICAvLyDhu54gZm9ybSBuw6B5IHRow6wgY2jhu4kgeGVtIGzhu4tjaCBz4butIGNo4bupIGsgZGMgbMOgbSBnw6wgaOG6v3RcclxuICAgIEBJbnB1dCgpIGlzUmVsYXRpdmVGb3JtOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSB0YWJsZU5hbWU6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGl0ZW06IGFueTtcclxuICAgIEBJbnB1dCgpIHdvcmtmbG93U2V0dGluZzogYW55O1xyXG5cclxuICAgIGxheW91dEZpbGUgPSBFbnVtRmlsZUxheW91dDtcclxuICAgIGVudW1Xb3JrZmxvd0hpc3RvcnlTdGF0dXMgPSBFbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzO1xyXG4gICAgZmlsZURhdGFTZXJ2aWNlOiBGaWxlRGF0YVNlcnZpY2U7XHJcbiAgICBjdXJyZW50V29ya2Zsb3c6IHtcclxuICAgICAgICBkYXRhOiBXZlNjaGVtYVxyXG4gICAgfTtcclxuICAgIG1hY2hpbmVzRGF0YTogYW55ID0geyBtYWNoaW5lczogW10sIGNvbm5lY3Rpb25zOiBbXSB9O1xyXG4gICAgY3VycmVudENvbm5lY3Rpb246IGFueTtcclxuICAgIG1hY2hpbmVDb2RlS2V0VGh1Y3M6IHN0cmluZ1tdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHB1YmxpYyBfd29ya2Zsb3dIaXN0b3J5U2VydmljZTogV29ya2Zsb3dIaXN0b3J5U2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2NvQ2F1VG9DaHVjU2VydmljZTogQ29DYXVUb0NodWNTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfdXNlckdyb3VwU2VydmljZTogVXNlckdyb3VwUmVhbFNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9kbUNodWNWdVNlcnZpY2U6IERtQ2h1Y1Z1U2VydmljZSxcclxuICAgICAgICBfZmlsZURhdGFTZXJ2aWNlOiBGaWxlRGF0YVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XHJcbiAgICAgICAgdGhpcy5maWxlRGF0YVNlcnZpY2UgPSBfZmlsZURhdGFTZXJ2aWNlO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMubG9hZERldGFpbEZyb21RdWVyeVBhcmFtID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl93b3JrZmxvd0hpc3RvcnlTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5tdWx0aXBsZUNoZWNrV2hlbkNsaWNrUm93ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNldHRpbmdLZXkgPSAnX193b3JrZmxvdyc7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50V29ya2Zsb3cgPSB0aGlzLndvcmtmbG93U2V0dGluZy53b3JrZmxvd3MuZmluZChxID0+IHEuY29kZSA9PSB0aGlzLml0ZW0uX193b3JrZmxvd0NvZGUpO1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmcudGl0bGUgPSAnJztcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGVpZ2h0VHlwZSA9IEhlaWdodFR5cGUuZHluYW1pYztcclxuICAgICAgICB0aGlzLnNldHRpbmcuc2hvd0VkaXRMaW5rID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkJ1dHRvbnMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5DaGVja2JveCA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgdXNlckN1cnJlbnQgPSB0aGlzLl91c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpO1xyXG4gICAgICAgIGlmICh1c2VyQ3VycmVudC51c2VyTmFtZSAhPSAnYWRtaW4nIHx8IHRoaXMuaXNSZWxhdGl2ZUZvcm0pIHtcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkZ1bmN0aW9uQ29sdW1uID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLnRhYmxlTmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlTmFtZSA9IHRoaXMuYnVzaW5lc3NTZXR0aW5nLmJhc2VTZXJ2aWNlLmVudGl0eU5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2VudGl0eVdvcmtmbG93SGlzdG9yeVNlcnZpY2Uuc2V0Q3VycmVudFNlcnZpY2VVcmkodGhpcy50YWJsZU5hbWUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3cgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLnJlYWR5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIEtp4buDbSB0cmEgbuG6v3UgYWNjb3VudCBsw6AgYWRtaW4gdGjDrCB0w6xtIGzhu4tjaCBz4butIGN14buRaSBjw7luZyBj4bunYSBi4bqjbiBnaGkgxJHhu4MgeMOhYyDEkeG7i25oIHdvcmtmbG93IGNvZGVcclxuICAgICAgICAgICAgLy8gUGjhu6VjIHbhu6Ugdmnhu4djIHJldmVydCBk4buvIGxp4buHdSBs4buXaVxyXG4gICAgICAgICAgICBpZiAodXNlckN1cnJlbnQudXNlck5hbWUgPT0gJ2FkbWluJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maW5kTGFzdEhpc3RvcnlBbmRHZXREYXRhKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKCdRdXkgdHLDrG5oIGPhu6dhIGLhuqNuIGdoaSDEkcOjIGLhu4sgeMOzYScpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50V29ya2Zsb3cgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lczogW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25zOiBbXVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KCkge1xyXG4gICAgICAgIHRoaXMubWFjaGluZUNvZGVLZXRUaHVjcyA9IHRoaXMuY3VycmVudFdvcmtmbG93LmRhdGEubWFjaGluZXMuZmlsdGVyKHEgPT4gcS50eXBlID09IEVudW1TdGF0ZVR5cGUuU1RPUCkubWFwKHEgPT4gcS5jb2RlKTtcclxuICAgICAgICBjb25zdCBkYXRhc291cmNlQWN0aW9uID0gdGhpcy5jcmVhdGVEYXRhc291cmNlQWN0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLm1vZGVsU2NoZW1hcyA9IFtcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICd1c2VySWRDcmVhdGVkJywgbmFtZTogJ05nxrDhu51pIGfhu61pJywgZnVsbE5hbWU6ICdOZ8aw4budaSBn4butaScsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdhY3Rpb25Db2RlJywgbmFtZTogJ1RoYW8gdMOhYycsIGZ1bGxOYW1lOiAnVGhhbyB0w6FjJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ3RpbWUnLCBuYW1lOiAnVGjhu51pIGdpYW4nLCBmdWxsTmFtZTogJ1Ro4budaSBnaWFuJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ3VzZXJJZHMnLCBuYW1lOiAnTmfGsOG7nWkgbmjhuq1uJywgZnVsbE5hbWU6ICdOZ8aw4budaSBuaOG6rW4nLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndXNlclZpZXdJZHMnLCBuYW1lOiAnTmfGsOG7nWkgdGhlbyBkw7VpJywgZnVsbE5hbWU6ICdOZ8aw4budaSB0aGVvIGTDtWknLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnZG9uVmlJZHMnLCBuYW1lOiAnxJDGoW4gduG7iyBuaOG6rW4nLCBmdWxsTmFtZTogJ8SQxqFuIHbhu4sgbmjhuq1uJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2RvblZpVmlld0lkcycsIG5hbWU6ICfEkMahbiB24buLIHRoZW8gZMO1aScsIGZ1bGxOYW1lOiAnxJDGoW4gduG7iyB0aGVvIGTDtWknLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnZ3JvdXBJZHMnLCBuYW1lOiAnTmjDs20gbmfGsOG7nWkgZMO5bmcgbmjhuq1uJywgZnVsbE5hbWU6ICdOaMOzbSBuZ8aw4budaSBkw7luZyBuaOG6rW4nLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnZ3JvdXBWaWV3SWRzJywgbmFtZTogJ05ow7NtIG5nxrDhu51pIGTDuW5nIHRoZW8gZMO1aScsIGZ1bGxOYW1lOiAnTmjDs20gbmfGsOG7nWkgZMO5bmcgdGhlbyBkw7VpJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ3JvbGVJZHMnLCBuYW1lOiAnQ2jhu6ljIHbhu6Ugbmjhuq1uJywgZnVsbE5hbWU6ICdDaOG7qWMgduG7pSBuaOG6rW4nLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAncm9sZVZpZXdJZHMnLCBuYW1lOiAnQ2jhu6ljIHbhu6UgdGhlbyBkw7VpJywgZnVsbE5hbWU6ICdDaOG7qWMgduG7pSB0aGVvIGTDtWknLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnbm90ZScsIG5hbWU6ICfDnSBraeG6v24nLCBmdWxsTmFtZTogJ8OdIGtp4bq/bicsIGRlc2NyaXB0aW9uOiAnJyB9KVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHRoaXMuc2V0dGluZy5jb2xzID0gW1xyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3VzZXJJZENyZWF0ZWQnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMiUnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3VzZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnZnVsbE5hbWVOZXcnXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2FjdGlvbkNvZGUnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICc5JScsXHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBkYXRhc291cmNlQWN0aW9uXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3VzZXJJZHMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNSUnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3VzZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICdmdWxsTmFtZU5ldycsXHJcbiAgICAgICAgICAgICAgICBmaWVsZFBsdXM6ICd1c2VyTmFtZScsXHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICd1c2VyVmlld0lkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2Z1bGxOYW1lTmV3JyxcclxuICAgICAgICAgICAgICAgIGZpZWxkUGx1czogJ3VzZXJOYW1lJyxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2RvblZpSWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9jb0NhdVRvQ2h1Y1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2RvblZpVmlld0lkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fY29DYXVUb0NodWNTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdncm91cElkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlckdyb3VwU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25hbWUnLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdncm91cFZpZXdJZHMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNSUnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3VzZXJHcm91cFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICduYW1lJyxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAncm9sZUlkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fZG1DaHVjVnVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdyb2xlVmlld0lkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fZG1DaHVjVnVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdub3RlJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnbm90ZScsXHJcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICd0aW1lJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBEYXRhVHlwZS5kYXRldGltZSxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTQwcHgnXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3JlY2VpdmVyJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfGsOG7nWkgbmjhuq1uJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAncmVjZWl2ZXInLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyNTBweCcsXHJcbiAgICAgICAgICAgICAgICBzb3J0OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdyZWNlaXZlclZpZXcnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdOZ8aw4budaSB0aGVvIGTDtWknLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdyZWNlaXZlclZpZXcnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyNTBweCcsXHJcbiAgICAgICAgICAgICAgICBzb3J0OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdmaWxlRGluaEtlbScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdGaWxlIMSRw61uaCBrw6htJyksXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2ZpbGVEaW5oS2VtJyxcclxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHRoaXMubW9kZWwucmVhZHkgPSB0cnVlO1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmluZExhc3RIaXN0b3J5QW5kR2V0RGF0YSgpIHtcclxuICAgICAgICBjb25zdCBsYXN0SGlzdG9yeSA9IChhd2FpdCB0aGlzLl93b3JrZmxvd0hpc3RvcnlTZXJ2aWNlLmdldExhc3RCeUl0ZW1JZCh0aGlzLml0ZW0uaWQpKS5kYXRhO1xyXG4gICAgICAgIGlmICghbGFzdEhpc3RvcnkpIHJldHVybjtcclxuICAgICAgICB0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IHRoaXMud29ya2Zsb3dTZXR0aW5nLndvcmtmbG93cy5maW5kKHEgPT4gcS5jb2RlID09IGxhc3RIaXN0b3J5LndvcmtmbG93Q29kZSk7XHJcbiAgICAgICAgdGhpcy5pdGVtLl9fd29ya2Zsb3dDb2RlID0gbGFzdEhpc3Rvcnkud29ya2Zsb3dDb2RlO1xyXG4gICAgICAgIC8vIHRoaXMuYXBwZW5kTWFjaGluZXNBbmRDb25uZWN0aW9uKHRoaXMuY3VycmVudFdvcmtmbG93LmRhdGEsIHRoaXMubWFjaGluZXNEYXRhKTtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3cgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgICAgIHRoaXMuc2V0TWFjaGluZXNBbmRDb25uZWN0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TWFjaGluZXNBbmRDb25uZWN0aW9uKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRXb3JrZmxvdyAmJiB0aGlzLmN1cnJlbnRXb3JrZmxvdy5kYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWFjaGluZXNEYXRhID0gdGhpcy5jdXJyZW50V29ya2Zsb3cuZGF0YTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlRGF0YXNvdXJjZUFjdGlvbigpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBbXHJcbiAgICAgICAgICAgIHsgaWQ6IE1hQWN0aW9uQmF0RGF1UXV5VHJpbmgsIHRlbjogJ0Lhuq90IMSR4bqndSBxdXkgdHLDrG5oJyB9XHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRXb3JrZmxvdy5kYXRhLmNvbm5lY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgaWQ6IGFjdGlvbi5jb2RlLFxyXG4gICAgICAgICAgICAgICAgdGVuOiBhY3Rpb24ubmFtZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXN1bHQucHVzaChcclxuICAgICAgICAgICAgeyBpZDogQWN0aW9uVXBkYXRlTW9kZWwsIHRlbjogJ0No4buJbmggc+G7rWEnIH0sXHJcbiAgICAgICAgICAgIHsgaWQ6IEFjdGlvbkNob1lLaWVuQmFzZSwgdGVuOiAnQ2hvIMO9IGtp4bq/bicgfSxcclxuICAgICAgICAgICAgeyBpZDogQWN0aW9uVGh1SG9pQmFzZSwgdGVuOiAnVGh1IGjhu5NpIHRoYW8gdMOhYycgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBtb2RpZnlHcmlkSW5mbyhncmlkSW5mbz86IEdyaWRJbmZvKSB7XHJcbiAgICAgICAgZ3JpZEluZm8uZmlsdGVycy51bnNoaWZ0KFxyXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcigndGFibGVOYW1lJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMudGFibGVOYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2l0ZW1JZCcsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLml0ZW0uaWQpLFxyXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignd29ya2Zsb3dDb2RlJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaXRlbS5fX3dvcmtmbG93Q29kZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBncmlkSW5mby5zb3J0cy51bnNoaWZ0KHRoaXMubmV3U29ydCgnY3JlYXRlZCcsIC0xKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgYmVmb3JlUmVuZGVyRGF0YVNvdXJjZShkYXRhU291cmNlKSB7XHJcbiAgICAgICAgZGF0YVNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAndXNlcklkcycpO1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAndXNlclZpZXdJZHMnKTtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ2RvblZpSWRzJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdkb25WaVZpZXdJZHMnKTtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ2dyb3VwSWRzJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdncm91cFZpZXdJZHMnKTtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ3JvbGVJZHMnKTtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ3JvbGVWaWV3SWRzJyk7XHJcbiAgICAgICAgICAgIGlmICghaXRlbS5jb2xTcGFuKSBpdGVtLmNvbFNwYW4gPSB7fTtcclxuICAgICAgICAgICAgaWYgKCFpdGVtLmhpZGRlbikgaXRlbS5oaWRkZW4gPSB7fTtcclxuICAgICAgICAgICAgaWYgKGl0ZW0uc3RhdHVzID09IEVudW1Xb3JrZmxvd0hpc3RvcnlTdGF0dXMuTk9UX0lOX01BSU5fVEhSRUFEKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5hY3Rpb25Db2RlID09IEFjdGlvblVwZGF0ZU1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jb2xTcGFuWydyZWNlaXZlciddID0gMjtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLmhpZGRlblsncmVjZWl2ZXJWaWV3J10gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmpzb25Nb2RlbENoYW5nZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmpzb25Nb2RlbENoYW5nZSA9IEpTT04ucGFyc2UoaXRlbS5qc29uTW9kZWxDaGFuZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5qc29uTW9kZWxDaGFuZ2UgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVtLmFjdGlvbkNvZGUgPT0gQWN0aW9uVGh1SG9pQmFzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uY2xhc3MgPSAncmVjYWxsZWQnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGl0ZW0uc3RhdHVzID09IEVudW1Xb3JrZmxvd0hpc3RvcnlTdGF0dXMuUkVDQUxMRUQpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uY2xhc3MgPSAncmVjYWxsZWQnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGhpc3RvcnlMYXN0SW5NYWluRmxvdyA9IGRhdGFTb3VyY2UuZmluZChxID0+ICFxLm5vdEluTWFpblRocmVhZCk7XHJcbiAgICAgICAgaWYgKGhpc3RvcnlMYXN0SW5NYWluRmxvdykge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLnNlbGVjdGVkSXRlbSA9IGhpc3RvcnlMYXN0SW5NYWluRmxvdztcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW0uX2NoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLnNlbGVjdGVkSXRlbXMgPSBbdGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW1dO1xyXG4gICAgICAgICAgICB0aGlzLnNldEN1cnJlbnRDb25uZWN0aW9uKHRoaXMubW9kZWwuc2VsZWN0ZWRJdGVtKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYWZ0ZXJHZXRSZWZEYXRhRHJvcGRvd24oZmllbGQpIHtcclxuICAgIC8vICAgICBpZiAoZmllbGQgPT0gbnVsbCkge1xyXG4gICAgLy8gICAgICAgICB0aGlzLm1vZGVsLmRhdGFTb3VyY2UuZm9yRWFjaChpdGVtID0+IHtcclxuICAgIC8vICAgICAgICAgICAgIGlmICghdGhpcy5tYWNoaW5lQ29kZUtldFRodWNzLnNvbWUoeCA9PiB4ID09IGl0ZW0udGFyZ2V0U3RhdHVzQ29kZSkpIHtcclxuICAgIC8vICAgICAgICAgICAgICAgICBpdGVtLnN0ckFsbFVzZXIgPSB0aGlzLmpvaW5WYWx1ZShpdGVtLnN0cnVzZXJJZHMsIGl0ZW0uc3RydXNlclZpZXdJZHMpO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGl0ZW0uc3RyQWxsRG9uVmkgPSB0aGlzLmpvaW5WYWx1ZShpdGVtLnN0cmRvblZpSWRzLCBpdGVtLnN0cmRvblZpVmlld0lkcyk7XHJcbiAgICAvLyAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgIH0pO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vIH1cclxuXHJcbiAgICBwcml2YXRlIGpvaW5WYWx1ZSh2YWx1ZTEsIHZhbHVlMikge1xyXG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9ICcsICc7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xyXG4gICAgICAgIGlmICh2YWx1ZTEpIHtcclxuICAgICAgICAgICAgcmVzdWx0ICs9IGAke3ZhbHVlMX0ke3NlcGFyYXRvcn1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodmFsdWUyKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCArPSBgJHt2YWx1ZTJ9JHtzZXBhcmF0b3J9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnN1YnN0cmluZygwLCByZXN1bHQubGVuZ3RoIC0gc2VwYXJhdG9yLmxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzcGxpdExpc3QoaXRlbTogYW55LCBmaWVsZDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKGl0ZW1bZmllbGRdKSB7XHJcbiAgICAgICAgICAgIGl0ZW1bZmllbGRdID0gaXRlbVtmaWVsZF0uc3BsaXQoJywnKS5maWx0ZXIocSA9PiAhIXEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaXRlbVtmaWVsZF0gPSBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlUm93U2VsZWN0KGV2dCkge1xyXG4gICAgICAgIHRoaXMuc2V0Q3VycmVudENvbm5lY3Rpb24odGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0Q3VycmVudENvbm5lY3Rpb24oaXRlbUhpc3RvcnkpIHtcclxuICAgICAgICBpZiAoIWl0ZW1IaXN0b3J5XHJcbiAgICAgICAgICAgIHx8IGl0ZW1IaXN0b3J5Lm5vdEluTWFpblRocmVhZFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDb25uZWN0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN1cnJlbnRDb25uZWN0aW9uID0ge1xyXG4gICAgICAgICAgICBzb3VyY2VDb2RlOiBpdGVtSGlzdG9yeS5zb3VyY2VTdGF0dXNDb2RlLFxyXG4gICAgICAgICAgICB0YXJnZXRDb2RlOiBpdGVtSGlzdG9yeS50YXJnZXRTdGF0dXNDb2RlLFxyXG4gICAgICAgICAgICBhY3Rpb25Db2RlOiBpdGVtSGlzdG9yeS5hY3Rpb25Db2RlXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByb2xsYmFja0J5SGlzdG9yeShyb3dEYXRhKSB7XHJcbiAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dDb25maXJtKCdC4bqhbiBjw7MgY2jhuq9jIGNo4bqvbiBtdeG7kW4gdGh1IGjhu5NpIHRoYW8gdMOhYyB24buBIGzhu4tjaCBz4butIMSRw6MgY2jhu41uJylcclxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghcmVzKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1c2luZXNzU2V0dGluZy5kaXNwbGF5RmllbGQgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lID0gdGhpcy5pdGVtWzxzdHJpbmc+KHRoaXMuYnVzaW5lc3NTZXR0aW5nLmRpc3BsYXlGaWVsZCldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICg8RnVuY3Rpb24+KHRoaXMuYnVzaW5lc3NTZXR0aW5nLmRpc3BsYXlGaWVsZCkpKHRoaXMuaXRlbSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJ1c2luZXNzU2V0dGluZy5iYXNlU2VydmljZS5yb2xsYmFja0J5SGlzdG9yeShcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW0uaWQsIHJvd0RhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMuYnVzaW5lc3NTZXR0aW5nLmJhc2VTZXJ2aWNlLm9iamVjdE5hbWUsIG5hbWVdXHJcbiAgICAgICAgICAgICAgICApLnRoZW4ocmVzID0+IHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzLCAnVGh1IGjhu5NpIHRoYW8gdMOhYyB0aMOgbmggY8O0bmcnLCBmID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmlnZ2VyUHJvY2Vzc0RhdGEoKTtcclxuICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgYWZ0ZXJSZWxvYWRlZCgpIHtcclxuICAgICAgICB0aGlzLmZpbGVEYXRhU2VydmljZS5nZXREYXRhKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -3,8 +3,10 @@ import { Component, EventEmitter, Injector, Input, Output, ViewChild } from '@an
3
3
  import { ComponentContextService } from '../../../app-context/component-context.service';
4
4
  import { DataFormBase } from '../../../classes/base/data-form-base';
5
5
  import { FormState } from '../../../classes/constants';
6
- import { CheckboxControlSchema, CrudListSetting, CustomControlSchema, DropdownControlSchema, LabelSchema, Operator, TextControlSchema } from '../../../classes/form-schema';
6
+ import { CheckboxControlSchema, CheckBoxListControlSchema, CrudListSetting, CustomControlSchema, DropdownControlSchema, LabelSchema, Operator, TextControlSchema } from '../../../classes/form-schema';
7
7
  import { DmLoaiCongViecService } from '../../../congviec/dm-loai-congviec/services/dm-loai-congviec.service';
8
+ import { DataSourceWorkflowCheckboxOption } from '../../statemachines/models/constants';
9
+ import { EnumWorkflowCheckboxOption } from '../../statemachines/models/enums';
8
10
  import { StateMachinesService } from '../../statemachines/services/statemachines.service';
9
11
  import { WorkflowSettingsService } from '../services/workflow-settings.service';
10
12
  import { WorkflowPickerComponent } from '../workflow-picker/workflow-picker.component';
@@ -28,14 +30,40 @@ export class WorkflowSettingNewComponent extends DataFormBase {
28
30
  ngOnInit() {
29
31
  this.setting.baseService = this._workflowSettingsService;
30
32
  this.setting.schema = [
31
- new CheckboxControlSchema({
32
- field: 'createTaskInstead',
33
- label: 'Tạo công việc',
33
+ new CheckBoxListControlSchema({
34
+ field: 'options',
34
35
  showLabel: false,
35
- mdWidth: 2
36
+ dataSource: DataSourceWorkflowCheckboxOption,
37
+ mdWidth: 4,
38
+ onChanged: (evt) => {
39
+ if (evt.rootModel.options.indexOf(EnumWorkflowCheckboxOption.TAO_CONG_VIEC) > -1) {
40
+ evt.rootModel.createTaskInstead = true;
41
+ }
42
+ else {
43
+ evt.rootModel.createTaskInstead = false;
44
+ }
45
+ if (evt.rootModel.options.indexOf(EnumWorkflowCheckboxOption.AUTO_NEXT_STEP) > -1) {
46
+ evt.rootModel.autoNextStep = true;
47
+ }
48
+ else {
49
+ evt.rootModel.autoNextStep = false;
50
+ }
51
+ }
36
52
  }),
53
+ // new CheckboxControlSchema({
54
+ // field: 'createTaskInstead',
55
+ // label: 'Tạo công việc',
56
+ // showLabel: false,
57
+ // mdWidth: 2
58
+ // }),
59
+ // new CheckboxControlSchema({
60
+ // field: 'autoNextStep',
61
+ // label: 'Tự động chuyển bước đầu tiên',
62
+ // showLabel: false,
63
+ // mdWidth: 2
64
+ // }),
37
65
  new LabelSchema({
38
- mdWidth: 10,
66
+ mdWidth: 8,
39
67
  hiddenCheck: (rootModel) => this.checkIfCreateTaskInstead(rootModel, true)
40
68
  }),
41
69
  new CustomControlSchema({
@@ -47,8 +75,9 @@ export class WorkflowSettingNewComponent extends DataFormBase {
47
75
  new CheckboxControlSchema({
48
76
  field: 'taskInsideBusinessForm',
49
77
  label: 'Hiển thị giao diện tạo công việc trên giao diện thêm mới',
78
+ class: 'taskInsideBusinessForm',
50
79
  showLabel: false,
51
- mdWidth: 10,
80
+ mdWidth: 8,
52
81
  hiddenCheck: (rootModel) => this.checkIfCreateTaskInstead(rootModel, false)
53
82
  }),
54
83
  new TextControlSchema({
@@ -74,9 +103,20 @@ export class WorkflowSettingNewComponent extends DataFormBase {
74
103
  }
75
104
  getSetting() {
76
105
  return __awaiter(this, void 0, void 0, function* () {
77
- this.model.data = (yield this._workflowSettingsService.getDetailByFilter([
106
+ const data = (yield this._workflowSettingsService.getDetailByFilter([
78
107
  this.newFilter('tableName', Operator.equal, this.parentSetting.baseService.entityName)
79
108
  ])).data;
109
+ if (data) {
110
+ if (!data.options)
111
+ data.options = [];
112
+ if (data.createTaskInstead) {
113
+ data.options.push(EnumWorkflowCheckboxOption.TAO_CONG_VIEC);
114
+ }
115
+ if (data.autoNextStep) {
116
+ data.options.push(EnumWorkflowCheckboxOption.AUTO_NEXT_STEP);
117
+ }
118
+ }
119
+ this.model.data = data;
80
120
  this.afterGetSetting();
81
121
  });
82
122
  }
@@ -126,6 +166,20 @@ export class WorkflowSettingNewComponent extends DataFormBase {
126
166
  return true;
127
167
  });
128
168
  }
169
+ setValueOption(data) {
170
+ if (data.options.indexOf(EnumWorkflowCheckboxOption.TAO_CONG_VIEC) > -1) {
171
+ data.createTaskInstead = true;
172
+ }
173
+ else {
174
+ data.createTaskInstead = false;
175
+ }
176
+ if (data.options.indexOf(EnumWorkflowCheckboxOption.AUTO_NEXT_STEP) > -1) {
177
+ data.autoNextStep = true;
178
+ }
179
+ else {
180
+ data.autoNextStep = false;
181
+ }
182
+ }
129
183
  onBeforeSave() {
130
184
  if (this.workflowPickerComp) {
131
185
  Object.assign(this.model.data, this.workflowPickerComp.model.data);
@@ -136,6 +190,9 @@ export class WorkflowSettingNewComponent extends DataFormBase {
136
190
  else {
137
191
  this.model.data.workflowCodes = null;
138
192
  }
193
+ if (this.model.data.options) {
194
+ this.setValueOption(this.model.data);
195
+ }
139
196
  this.model.data.tableName = this.parentSetting.baseService.entityName;
140
197
  }
141
198
  handleManualSave() {
@@ -148,7 +205,7 @@ WorkflowSettingNewComponent.decorators = [
148
205
  selector: 'workflow-setting-new',
149
206
  template: "<crud-form *ngIf=\"readyCrudForm\" #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\"\r\n [styleClass]=\"'workflow-setting'\" [disableCaching]=\"true\" (onFormReady)=\"_handleFormReady($event)\">\r\n <ng-template #workflowPicker>\r\n <workflow-picker [data]=\"model.data\"></workflow-picker>\r\n </ng-template>\r\n</crud-form>\r\n<ng-template #buttonTemplate>\r\n <div class=\"footer-workflow-setting\">\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\"\r\n (click)=\"_handleSave($event)\"></button>\r\n <button *ngIf=\"model.data.id\" type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-button-danger p-button-text\"\r\n [label]=\"'H\u1EE7y quy tr\u00ECnh' | translate\" (click)=\"handleCancelWorkflow($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 </div>\r\n</ng-template>",
150
207
  providers: [ComponentContextService],
151
- styles: [".title-workflow{font-size:.9em;font-weight:700;padding:1em 0 .5em}.title-workflow .pi-star{color:orange}.container-button-workflow{background:#fff;border-top:1px solid #ddd;bottom:0;padding:.5em;position:-webkit-sticky;position:sticky;text-align:right;z-index:10}"]
208
+ styles: [".title-workflow{font-size:.9em;font-weight:700;padding:1em 0 .5em}.title-workflow .pi-star{color:orange}.container-button-workflow{background:#fff;border-top:1px solid #ddd;bottom:0;padding:.5em;position:-webkit-sticky;position:sticky;text-align:right;z-index:10}::ng-deep workflow-setting-new .crud-form-control div[role=checkbox-alone].taskInsideBusinessForm{margin-top:12px!important}"]
152
209
  },] }
153
210
  ];
154
211
  WorkflowSettingNewComponent.ctorParameters = () => [
@@ -164,4 +221,4 @@ WorkflowSettingNewComponent.propDecorators = {
164
221
  onCancel: [{ type: Output }],
165
222
  onSaveSetting: [{ type: Output }]
166
223
  };
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctc2V0dGluZy1uZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvd29ya2Zsb3cvd29ya2Zsb3ctc2V0dGluZy1uZXcvd29ya2Zsb3ctc2V0dGluZy1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUE2QixXQUFXLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdk0sT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFDN0csT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDMUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFRdkYsTUFBTSxPQUFPLDJCQUE0QixTQUFRLFlBQVk7SUFVekQsWUFDYyxTQUFtQixFQUNyQix3QkFBaUQsRUFDakQscUJBQTJDLEVBQzNDLHNCQUE2QztRQUVyRCxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFMUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ3JCLDZCQUF3QixHQUF4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QUFJLENBQUMsQ0FBQztTQUN0RTtRQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDN0U7YUFDSTtZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDeEM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO0lBQzFFLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDOzs7WUFqSkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLDZtQ0FBb0Q7Z0JBRXBELFNBQVMsRUFBRSxDQUFDLHVCQUF1QixDQUFDOzthQUN2Qzs7O1lBZmlDLFFBQVE7WUFPakMsdUJBQXVCO1lBRHZCLG9CQUFvQjtZQURwQixxQkFBcUI7OztpQ0FZekIsU0FBUyxTQUFDLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs0QkFDcEQsS0FBSztzQkFFTCxNQUFNO3VCQUNOLE1BQU07NEJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YUZvcm1CYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtZm9ybS1iYXNlJztcclxuaW1wb3J0IHsgRm9ybVN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBDaGVja2JveENvbnRyb2xTY2hlbWEsIENydWRMaXN0U2V0dGluZywgQ3VzdG9tQ29udHJvbFNjaGVtYSwgRHJvcGRvd25Db250cm9sU2NoZW1hLCBFdmVudERhdGEsIEZvcm1TY2hlbWFCYXNlLCBMYWJlbFNjaGVtYSwgT3BlcmF0b3IsIFRleHRDb250cm9sU2NoZW1hIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IERtTG9haUNvbmdWaWVjU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2Nvbmd2aWVjL2RtLWxvYWktY29uZ3ZpZWMvc2VydmljZXMvZG0tbG9haS1jb25ndmllYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RhdGVNYWNoaW5lc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zdGF0ZW1hY2hpbmVzL3NlcnZpY2VzL3N0YXRlbWFjaGluZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IFdvcmtmbG93U2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvd29ya2Zsb3ctc2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7IFdvcmtmbG93UGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vd29ya2Zsb3ctcGlja2VyL3dvcmtmbG93LXBpY2tlci5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3dvcmtmbG93LXNldHRpbmctbmV3JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1zZXR0aW5nLW5ldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1zZXR0aW5nLW5ldy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd1NldHRpbmdOZXdDb21wb25lbnQgZXh0ZW5kcyBEYXRhRm9ybUJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQFZpZXdDaGlsZChXb3JrZmxvd1BpY2tlckNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIHdvcmtmbG93UGlja2VyQ29tcDogV29ya2Zsb3dQaWNrZXJDb21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBwYXJlbnRTZXR0aW5nOiBDcnVkTGlzdFNldHRpbmc7XHJcblxyXG4gICAgQE91dHB1dCgpIG9uU2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uU2F2ZVNldHRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBkaWNNYWNoaW5lc0RhdGE6IGFueSA9IHt9O1xyXG4gICAgcmVhZHlDcnVkRm9ybSA9IGZhbHNlO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfd29ya2Zsb3dTZXR0aW5nc1NlcnZpY2U6IFdvcmtmbG93U2V0dGluZ3NTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3N0YXRlTWFjaGluZXNTZXJ2aWNlOiBTdGF0ZU1hY2hpbmVzU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9kbUxvYWlDb25nVmllY1NlcnZpY2U6IERtTG9haUNvbmdWaWVjU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgICAgICB0aGlzLmF1dG9HZXREZXRhaWwgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl93b3JrZmxvd1NldHRpbmdzU2VydmljZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuc2NoZW1hID0gPEZvcm1TY2hlbWFCYXNlW10+W1xyXG4gICAgICAgICAgICBuZXcgQ2hlY2tib3hDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnY3JlYXRlVGFza0luc3RlYWQnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdU4bqhbyBjw7RuZyB2aeG7h2MnLFxyXG4gICAgICAgICAgICAgICAgc2hvd0xhYmVsOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDJcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBMYWJlbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiAxMCxcclxuICAgICAgICAgICAgICAgIGhpZGRlbkNoZWNrOiAocm9vdE1vZGVsKSA9PiB0aGlzLmNoZWNrSWZDcmVhdGVUYXNrSW5zdGVhZChyb290TW9kZWwsIHRydWUpXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ3VzdG9tQ29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3dvcmtmbG93UGlja2VyJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnUXV5IHRyw6xuaCBt4bq3YyDEkeG7i25oJyxcclxuICAgICAgICAgICAgICAgIGhpZGRlbkNoZWNrOiAocm9vdE1vZGVsKSA9PiB0aGlzLmNoZWNrSWZDcmVhdGVUYXNrSW5zdGVhZChyb290TW9kZWwsIHRydWUpLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogMTJcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDaGVja2JveENvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICd0YXNrSW5zaWRlQnVzaW5lc3NGb3JtJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnSGnhu4NuIHRo4buLIGdpYW8gZGnhu4duIHThuqFvIGPDtG5nIHZp4buHYyB0csOqbiBnaWFvIGRp4buHbiB0aMOqbSBt4bubaScsXHJcbiAgICAgICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogMTAsXHJcbiAgICAgICAgICAgICAgICBoaWRkZW5DaGVjazogKHJvb3RNb2RlbCkgPT4gdGhpcy5jaGVja0lmQ3JlYXRlVGFza0luc3RlYWQocm9vdE1vZGVsLCBmYWxzZSlcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBUZXh0Q29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3RlbXBsYXRlVGFza05hbWUnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUZW1wbGF0ZSB0w6puIGPDtG5nIHZp4buHYycsXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1RlbXBsYXRlIHTDqm4gY8O0bmcgdmnhu4djLiBWw60gZOG7pTogWOG7rSBsw70gY8O0bmcgdmnhu4djIHt7aXRlbS5uYW1lfX0nLFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBoaWRkZW5DaGVjazogKHJvb3RNb2RlbCkgPT4gdGhpcy5jaGVja0lmQ3JlYXRlVGFza0luc3RlYWQocm9vdE1vZGVsLCBmYWxzZSlcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBEcm9wZG93bkNvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpZExvYWlDb25nVmllY0RlZmF1bHQnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdMb+G6oWkgY8O0bmcgdmnhu4djIG3hurdjIMSR4buLbmgnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtTG9haUNvbmdWaWVjU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGhpZGRlbkNoZWNrOiAocm9vdE1vZGVsKSA9PiB0aGlzLmNoZWNrSWZDcmVhdGVUYXNrSW5zdGVhZChyb290TW9kZWwsIGZhbHNlKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5nZXRTZXR0aW5nKCk7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmQ3JlYXRlVGFza0luc3RlYWQgPSAocm9vdE1vZGVsLCB2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiAhcm9vdE1vZGVsIHx8IHJvb3RNb2RlbC5jcmVhdGVUYXNrSW5zdGVhZCA9PSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvbkZvcm1Jbml0aWFsaXplZChldnQ6IEV2ZW50RGF0YSkge1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFNldHRpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXRhID0gKGF3YWl0IHRoaXMuX3dvcmtmbG93U2V0dGluZ3NTZXJ2aWNlLmdldERldGFpbEJ5RmlsdGVyKFtcclxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ3RhYmxlTmFtZScsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLnBhcmVudFNldHRpbmcuYmFzZVNlcnZpY2UuZW50aXR5TmFtZSlcclxuICAgICAgICBdKSkuZGF0YTtcclxuICAgICAgICB0aGlzLmFmdGVyR2V0U2V0dGluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIGFmdGVyR2V0U2V0dGluZygpIHtcclxuICAgICAgICBpZiAoIXRoaXMubW9kZWwuZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLmRhdGEgPSB7fTtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC5mb3JtU3RhdGUgPSBGb3JtU3RhdGUuQUREO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWwuZGF0YS53b3JrZmxvd0NvZGVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLmRhdGEuX3dvcmtmbG93Q29kZXMgPSB0aGlzLm1vZGVsLmRhdGEud29ya2Zsb3dDb2Rlcy5zcGxpdCgnLCcpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5kYXRhLl93b3JrZmxvd0NvZGVzLmZvckVhY2god2ZDb2RlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpY01hY2hpbmVzRGF0YVt3ZkNvZGVdID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lczogW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25zOiBbXVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLmZvcm1TdGF0ZSA9IEZvcm1TdGF0ZS5FRElUO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5kYXRhLmNyZWF0ZVRhc2tJbnN0ZWFkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC5kYXRhLmNyZWF0ZVRhc2tJbnN0ZWFkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsLmRhdGEudGFza0luc2lkZUJ1c2luZXNzRm9ybSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuZGF0YS50YXNrSW5zaWRlQnVzaW5lc3NGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVhZHlDcnVkRm9ybSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlQ2FuY2VsV29ya2Zsb3coZXZlbnQpIHtcclxuICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0NvbmZpcm0oJ0LhuqFuIGPDsyBjaOG6r2MgY2jhuq9uIG114buRbiBo4buneSBi4buPIHF1eSB0csOsbmggbmdoaeG7h3AgduG7pScpXHJcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlcykgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fd29ya2Zsb3dTZXR0aW5nc1NlcnZpY2UuZGVsZXRlKHRoaXMubW9kZWwuZGF0YS5pZClcclxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXMgPT4gdGhpcy5oYW5kbGVSZXNwb25zZShyZXMsICdI4buneSBi4buPIHF1eSB0csOsbmggbmdoaeG7h3AgduG7pSB0aMOgbmggY8O0bmcnLCBmID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNhdmVkLmVtaXQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHZhbGlkYXRlRm9ybSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMubW9kZWwuZGF0YS5jcmVhdGVUYXNrSW5zdGVhZCkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWxpZEZvcm1DaGlsZCA9IGF3YWl0IHRoaXMud29ya2Zsb3dQaWNrZXJDb21wLl9nZXRSZXN1bHRWYWxpZGF0ZSgpO1xyXG4gICAgICAgICAgICBpZiAoIXZhbGlkRm9ybUNoaWxkKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQmVmb3JlU2F2ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy53b3JrZmxvd1BpY2tlckNvbXApIHtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm1vZGVsLmRhdGEsIHRoaXMud29ya2Zsb3dQaWNrZXJDb21wLm1vZGVsLmRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5kYXRhLl93b3JrZmxvd0NvZGVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuZGF0YS53b3JrZmxvd0NvZGVzID0gdGhpcy5tb2RlbC5kYXRhLl93b3JrZmxvd0NvZGVzLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLmRhdGEud29ya2Zsb3dDb2RlcyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubW9kZWwuZGF0YS50YWJsZU5hbWUgPSB0aGlzLnBhcmVudFNldHRpbmcuYmFzZVNlcnZpY2UuZW50aXR5TmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVNYW51YWxTYXZlKCkge1xyXG4gICAgICAgIHRoaXMubW9kZWwuc3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25TYXZlU2V0dGluZy5lbWl0KHRoaXMubW9kZWwuZGF0YSk7XHJcbiAgICB9XHJcbn1cclxuIl19
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctc2V0dGluZy1uZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvd29ya2Zsb3cvd29ya2Zsb3ctc2V0dGluZy1uZXcvd29ya2Zsb3ctc2V0dGluZy1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUE2QixXQUFXLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbE8sT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFDN0csT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDMUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFRdkYsTUFBTSxPQUFPLDJCQUE0QixTQUFRLFlBQVk7SUFVekQsWUFDYyxTQUFtQixFQUNyQix3QkFB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Q3hDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztJQUMxRSxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7O1lBeE1KLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyw2bUNBQW9EO2dCQUVwRCxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQWpCaUMsUUFBUTtZQVNqQyx1QkFBdUI7WUFEdkIsb0JBQW9CO1lBSHBCLHFCQUFxQjs7O2lDQWN6QixTQUFTLFNBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzRCQUNwRCxLQUFLO3NCQUVMLE1BQU07dUJBQ04sTUFBTTs0QkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhRm9ybUJhc2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvZGF0YS1mb3JtLWJhc2UnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdGUgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IENoZWNrYm94Q29udHJvbFNjaGVtYSwgQ2hlY2tCb3hMaXN0Q29udHJvbFNjaGVtYSwgQ3J1ZExpc3RTZXR0aW5nLCBDdXN0b21Db250cm9sU2NoZW1hLCBEcm9wZG93bkNvbnRyb2xTY2hlbWEsIEV2ZW50RGF0YSwgRm9ybVNjaGVtYUJhc2UsIExhYmVsU2NoZW1hLCBPcGVyYXRvciwgVGV4dENvbnRyb2xTY2hlbWEgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgRG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29uZ3ZpZWMvZG0tbG9haS1jb25ndmllYy9zZXJ2aWNlcy9kbS1sb2FpLWNvbmd2aWVjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhU291cmNlV29ya2Zsb3dDaGVja2JveE9wdGlvbiB9IGZyb20gJy4uLy4uL3N0YXRlbWFjaGluZXMvbW9kZWxzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEVudW1Xb3JrZmxvd0NoZWNrYm94T3B0aW9uIH0gZnJvbSAnLi4vLi4vc3RhdGVtYWNoaW5lcy9tb2RlbHMvZW51bXMnO1xyXG5pbXBvcnQgeyBTdGF0ZU1hY2hpbmVzU2VydmljZSB9IGZyb20gJy4uLy4uL3N0YXRlbWFjaGluZXMvc2VydmljZXMvc3RhdGVtYWNoaW5lcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV29ya2Zsb3dTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy93b3JrZmxvdy1zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV29ya2Zsb3dQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy1waWNrZXIvd29ya2Zsb3ctcGlja2VyLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnd29ya2Zsb3ctc2V0dGluZy1uZXcnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LXNldHRpbmctbmV3LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3dvcmtmbG93LXNldHRpbmctbmV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtmbG93U2V0dGluZ05ld0NvbXBvbmVudCBleHRlbmRzIERhdGFGb3JtQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKFdvcmtmbG93UGlja2VyQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSkgd29ya2Zsb3dQaWNrZXJDb21wOiBXb3JrZmxvd1BpY2tlckNvbXBvbmVudDtcclxuICAgIEBJbnB1dCgpIHBhcmVudFNldHRpbmc6IENydWRMaXN0U2V0dGluZztcclxuXHJcbiAgICBAT3V0cHV0KCkgb25TYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25TYXZlU2V0dGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIGRpY01hY2hpbmVzRGF0YTogYW55ID0ge307XHJcbiAgICByZWFkeUNydWRGb3JtID0gZmFsc2U7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIF93b3JrZmxvd1NldHRpbmdzU2VydmljZTogV29ya2Zsb3dTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfc3RhdGVNYWNoaW5lc1NlcnZpY2U6IFN0YXRlTWFjaGluZXNTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2RtTG9haUNvbmdWaWVjU2VydmljZTogRG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xyXG4gICAgICAgIHRoaXMuYXV0b0dldERldGFpbCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX3dvcmtmbG93U2V0dGluZ3NTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSA8Rm9ybVNjaGVtYUJhc2VbXT5bXHJcbiAgICAgICAgICAgIG5ldyBDaGVja0JveExpc3RDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnb3B0aW9ucycsXHJcbiAgICAgICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogRGF0YVNvdXJjZVdvcmtmbG93Q2hlY2tib3hPcHRpb24sXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiA0LFxyXG4gICAgICAgICAgICAgICAgb25DaGFuZ2VkOiAoZXZ0OiBFdmVudERhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LnJvb3RNb2RlbC5vcHRpb25zLmluZGV4T2YoRW51bVdvcmtmbG93Q2hlY2tib3hPcHRpb24uVEFPX0NPTkdfVklFQykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBldnQucm9vdE1vZGVsLmNyZWF0ZVRhc2tJbnN0ZWFkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5yb290TW9kZWwuY3JlYXRlVGFza0luc3RlYWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5yb290TW9kZWwub3B0aW9ucy5pbmRleE9mKEVudW1Xb3JrZmxvd0NoZWNrYm94T3B0aW9uLkFVVE9fTkVYVF9TVEVQKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5yb290TW9kZWwuYXV0b05leHRTdGVwID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5yb290TW9kZWwuYXV0b05leHRTdGVwID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgLy8gbmV3IENoZWNrYm94Q29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgIC8vICAgICBmaWVsZDogJ2NyZWF0ZVRhc2tJbnN0ZWFkJyxcclxuICAgICAgICAgICAgLy8gICAgIGxhYmVsOiAnVOG6oW8gY8O0bmcgdmnhu4djJyxcclxuICAgICAgICAgICAgLy8gICAgIHNob3dMYWJlbDogZmFsc2UsXHJcbiAgICAgICAgICAgIC8vICAgICBtZFdpZHRoOiAyXHJcbiAgICAgICAgICAgIC8vIH0pLFxyXG4gICAgICAgICAgICAvLyBuZXcgQ2hlY2tib3hDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgLy8gICAgIGZpZWxkOiAnYXV0b05leHRTdGVwJyxcclxuICAgICAgICAgICAgLy8gICAgIGxhYmVsOiAnVOG7sSDEkeG7mW5nIGNodXnhu4NuIGLGsOG7m2MgxJHhuqd1IHRpw6puJyxcclxuICAgICAgICAgICAgLy8gICAgIHNob3dMYWJlbDogZmFsc2UsXHJcbiAgICAgICAgICAgIC8vICAgICBtZFdpZHRoOiAyXHJcbiAgICAgICAgICAgIC8vIH0pLFxyXG4gICAgICAgICAgICBuZXcgTGFiZWxTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogOCxcclxuICAgICAgICAgICAgICAgIGhpZGRlbkNoZWNrOiAocm9vdE1vZGVsKSA9PiB0aGlzLmNoZWNrSWZDcmVhdGVUYXNrSW5zdGVhZChyb290TW9kZWwsIHRydWUpXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ3VzdG9tQ29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3dvcmtmbG93UGlja2VyJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnUXV5IHRyw6xuaCBt4bq3YyDEkeG7i25oJyxcclxuICAgICAgICAgICAgICAgIGhpZGRlbkNoZWNrOiAocm9vdE1vZGVsKSA9PiB0aGlzLmNoZWNrSWZDcmVhdGVUYXNrSW5zdGVhZChyb290TW9kZWwsIHRydWUpLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogMTJcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDaGVja2JveENvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICd0YXNrSW5zaWRlQnVzaW5lc3NGb3JtJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnSGnhu4NuIHRo4buLIGdpYW8gZGnhu4duIHThuqFvIGPDtG5nIHZp4buHYyB0csOqbiBnaWFvIGRp4buHbiB0aMOqbSBt4bubaScsXHJcbiAgICAgICAgICAgICAgICBjbGFzczogJ3Rhc2tJbnNpZGVCdXNpbmVzc0Zvcm0nLFxyXG4gICAgICAgICAgICAgICAgc2hvd0xhYmVsOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDgsXHJcbiAgICAgICAgICAgICAgICBoaWRkZW5DaGVjazogKHJvb3RNb2RlbCkgPT4gdGhpcy5jaGVja0lmQ3JlYXRlVGFza0luc3RlYWQocm9vdE1vZGVsLCBmYWxzZSlcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBUZXh0Q29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3RlbXBsYXRlVGFza05hbWUnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUZW1wbGF0ZSB0w6puIGPDtG5nIHZp4buHYycsXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1RlbXBsYXRlIHTDqm4gY8O0bmcgdmnhu4djLiBWw60gZOG7pTogWOG7rSBsw70gY8O0bmcgdmnhu4djIHt7aXRlbS5uYW1lfX0nLFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBoaWRkZW5DaGVjazogKHJvb3RNb2RlbCkgPT4gdGhpcy5jaGVja0lmQ3JlYXRlVGFza0luc3RlYWQocm9vdE1vZGVsLCBmYWxzZSlcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBEcm9wZG93bkNvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpZExvYWlDb25nVmllY0RlZmF1bHQnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdMb+G6oWkgY8O0bmcgdmnhu4djIG3hurdjIMSR4buLbmgnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtTG9haUNvbmdWaWVjU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGhpZGRlbkNoZWNrOiAocm9vdE1vZGVsKSA9PiB0aGlzLmNoZWNrSWZDcmVhdGVUYXNrSW5zdGVhZChyb290TW9kZWwsIGZhbHNlKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5nZXRTZXR0aW5nKCk7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmQ3JlYXRlVGFza0luc3RlYWQgPSAocm9vdE1vZGVsLCB2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiAhcm9vdE1vZGVsIHx8IHJvb3RNb2RlbC5jcmVhdGVUYXNrSW5zdGVhZCA9PSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvbkZvcm1Jbml0aWFsaXplZChldnQ6IEV2ZW50RGF0YSkge1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFNldHRpbmcoKSB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IChhd2FpdCB0aGlzLl93b3JrZmxvd1NldHRpbmdzU2VydmljZS5nZXREZXRhaWxCeUZpbHRlcihbXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCd0YWJsZU5hbWUnLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5wYXJlbnRTZXR0aW5nLmJhc2VTZXJ2aWNlLmVudGl0eU5hbWUpXHJcbiAgICAgICAgXSkpLmRhdGE7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgICAgaWYgKCFkYXRhLm9wdGlvbnMpIGRhdGEub3B0aW9ucyA9IFtdO1xyXG4gICAgICAgICAgICBpZiAoZGF0YS5jcmVhdGVUYXNrSW5zdGVhZCkge1xyXG4gICAgICAgICAgICAgICAgZGF0YS5vcHRpb25zLnB1c2goRW51bVdvcmtmbG93Q2hlY2tib3hPcHRpb24uVEFPX0NPTkdfVklFQyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRhdGEuYXV0b05leHRTdGVwKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLm9wdGlvbnMucHVzaChFbnVtV29ya2Zsb3dDaGVja2JveE9wdGlvbi5BVVRPX05FWFRfU1RFUCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLmFmdGVyR2V0U2V0dGluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIGFmdGVyR2V0U2V0dGluZygpIHtcclxuICAgICAgICBpZiAoIXRoaXMubW9kZWwuZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLmRhdGEgPSB7fTtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC5mb3JtU3RhdGUgPSBGb3JtU3RhdGUuQUREO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWwuZGF0YS53b3JrZmxvd0NvZGVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLmRhdGEuX3dvcmtmbG93Q29kZXMgPSB0aGlzLm1vZGVsLmRhdGEud29ya2Zsb3dDb2Rlcy5zcGxpdCgnLCcpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5kYXRhLl93b3JrZmxvd0NvZGVzLmZvckVhY2god2ZDb2RlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpY01hY2hpbmVzRGF0YVt3ZkNvZGVdID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lczogW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25zOiBbXVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLmZvcm1TdGF0ZSA9IEZvcm1TdGF0ZS5FRElUO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5kYXRhLmNyZWF0ZVRhc2tJbnN0ZWFkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC5kYXRhLmNyZWF0ZVRhc2tJbnN0ZWFkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsLmRhdGEudGFza0luc2lkZUJ1c2luZXNzRm9ybSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuZGF0YS50YXNrSW5zaWRlQnVzaW5lc3NGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVhZHlDcnVkRm9ybSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlQ2FuY2VsV29ya2Zsb3coZXZlbnQpIHtcclxuICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0NvbmZpcm0oJ0LhuqFuIGPDsyBjaOG6r2MgY2jhuq9uIG114buRbiBo4buneSBi4buPIHF1eSB0csOsbmggbmdoaeG7h3AgduG7pScpXHJcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlcykgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fd29ya2Zsb3dTZXR0aW5nc1NlcnZpY2UuZGVsZXRlKHRoaXMubW9kZWwuZGF0YS5pZClcclxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXMgPT4gdGhpcy5oYW5kbGVSZXNwb25zZShyZXMsICdI4buneSBi4buPIHF1eSB0csOsbmggbmdoaeG7h3AgduG7pSB0aMOgbmggY8O0bmcnLCBmID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNhdmVkLmVtaXQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHZhbGlkYXRlRm9ybSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMubW9kZWwuZGF0YS5jcmVhdGVUYXNrSW5zdGVhZCkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWxpZEZvcm1DaGlsZCA9IGF3YWl0IHRoaXMud29ya2Zsb3dQaWNrZXJDb21wLl9nZXRSZXN1bHRWYWxpZGF0ZSgpO1xyXG4gICAgICAgICAgICBpZiAoIXZhbGlkRm9ybUNoaWxkKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFZhbHVlT3B0aW9uKGRhdGEpIHtcclxuICAgICAgICBpZiAoZGF0YS5vcHRpb25zLmluZGV4T2YoRW51bVdvcmtmbG93Q2hlY2tib3hPcHRpb24uVEFPX0NPTkdfVklFQykgPiAtMSkge1xyXG4gICAgICAgICAgICBkYXRhLmNyZWF0ZVRhc2tJbnN0ZWFkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGRhdGEuY3JlYXRlVGFza0luc3RlYWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRhdGEub3B0aW9ucy5pbmRleE9mKEVudW1Xb3JrZmxvd0NoZWNrYm94T3B0aW9uLkFVVE9fTkVYVF9TVEVQKSA+IC0xKSB7XHJcbiAgICAgICAgICAgIGRhdGEuYXV0b05leHRTdGVwID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGRhdGEuYXV0b05leHRTdGVwID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uQmVmb3JlU2F2ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy53b3JrZmxvd1BpY2tlckNvbXApIHtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm1vZGVsLmRhdGEsIHRoaXMud29ya2Zsb3dQaWNrZXJDb21wLm1vZGVsLmRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5kYXRhLl93b3JrZmxvd0NvZGVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuZGF0YS53b3JrZmxvd0NvZGVzID0gdGhpcy5tb2RlbC5kYXRhLl93b3JrZmxvd0NvZGVzLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLmRhdGEud29ya2Zsb3dDb2RlcyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsLmRhdGEub3B0aW9ucykge1xyXG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlT3B0aW9uKHRoaXMubW9kZWwuZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubW9kZWwuZGF0YS50YWJsZU5hbWUgPSB0aGlzLnBhcmVudFNldHRpbmcuYmFzZVNlcnZpY2UuZW50aXR5TmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVNYW51YWxTYXZlKCkge1xyXG4gICAgICAgIHRoaXMubW9kZWwuc3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25TYXZlU2V0dGluZy5lbWl0KHRoaXMubW9kZWwuZGF0YSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -54,7 +54,8 @@ ComCtxConstants.ROOT = {
54
54
  MENU_CHANGED: 'MENU_CHANGED',
55
55
  ADVANCE_SEARCH_INIT_WITHOUT_UPDATE_ROUTER: 'ADVANCE_SEARCH_INIT_WITHOUT_UPDATE_ROUTER',
56
56
  SHOW_WAIT_BOX: 'SHOW_WAIT_BOX',
57
- SHOW_REJECT_CONFIRM: 'SHOW_REJECT_CONFIRM'
57
+ SHOW_REJECT_CONFIRM: 'SHOW_REJECT_CONFIRM',
58
+ GAN_ENTITY_SANG_CONG_VIEC: 'GAN_ENTITY_SANG_CONG_VIEC'
58
59
  };
59
60
  ComCtxConstants.ROOT_USMART = {
60
61
  SHOW_CONFIG_DATA_DEFAULT: 'SHOW_CONFIG_DATA_DEFAULT',
@@ -174,4 +175,4 @@ ComCtxConstants.AUTOCOMPLETE_LIST = {
174
175
  BIEU_MAU: 16,
175
176
  TEACHERFULL: 17,
176
177
  };
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWNvbnRleHQuY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29uZmlncy9jb21wb25lbnQtY29udGV4dC5jb25zdGFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZUFBZTs7QUFFakIsb0JBQUksR0FBRztJQUNWLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLGlCQUFpQixFQUFFLG1CQUFtQjtJQUN0Qyx5QkFBeUIsRUFBRSwyQkFBMkI7SUFDdEQsdUJBQXVCLEVBQUUseUJBQXlCO0lBQ2xELG1CQUFtQixFQUFFLHFCQUFxQjtJQUMxQyw2QkFBNkIsRUFBRSwrQkFBK0I7SUFDOUQscUJBQXFCLEVBQUUsdUJBQXVCO0lBQzlDLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLGlCQUFpQixFQUFFLG1CQUFtQjtJQUN0Qyx3QkFBd0IsRUFBRSwwQkFBMEI7SUFDcEQsZ0NBQWdDLEVBQUUsa0NBQWtDO0lBQ3BFLDRCQUE0QixFQUFFLDhCQUE4QjtJQUM1RCxzQkFBc0IsRUFBRSx3QkFBd0I7SUFDaEQsaUJBQWlCLEVBQUUsbUJBQW1CO0lBQ3RDLG9CQUFvQixFQUFFLHNCQUFzQjtJQUM1QyxpQkFBaUIsRUFBRSxtQkFBbUI7SUFDdEMsd0JBQXdCLEVBQUUsMEJBQTBCO0lBQ3BELG9CQUFvQixFQUFFLHNCQUFzQjtJQUM1QyxnQ0FBZ0MsRUFBRSxrQ0FBa0M7SUFDcEUsY0FBYyxFQUFFLGdCQUFnQjtJQUNoQyxjQUFjLEVBQUUsZ0JBQWdCO0lBQ2hDLGdCQUFnQixFQUFFLGtCQUFrQjtJQUNwQyx1QkFBdUIsRUFBRSx5QkFBeUI7SUFDbEQsYUFBYSxFQUFFLGVBQWU7SUFDOUIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsZUFBZSxFQUFFLGlCQUFpQjtJQUNsQyxZQUFZLEVBQUUsY0FBYztJQUM1QixlQUFl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QixFQUFFLG1CQUFtQjtLQUN6QztDQUNKLENBQUE7QUFFTSxpQ0FBaUIsR0FBRztJQUN2QixJQUFJLEVBQUUsQ0FBQztJQUNQLE9BQU8sRUFBRSxDQUFDO0lBQ1YsT0FBTyxFQUFFLENBQUM7SUFDVixJQUFJLEVBQUUsQ0FBQztJQUNQLEtBQUssRUFBRSxDQUFDO0lBQ1IsT0FBTyxFQUFFLENBQUM7SUFDVixVQUFVLEVBQUUsQ0FBQztJQUNiLE1BQU0sRUFBRSxDQUFDO0lBQ1QsR0FBRyxFQUFFLENBQUM7SUFDTixLQUFLLEVBQUUsQ0FBQztJQUNSLE9BQU8sRUFBRSxFQUFFO0lBQ1gsZ0JBQWdCLEVBQUUsRUFBRTtJQUNwQixZQUFZLEVBQUUsRUFBRTtJQUNoQixPQUFPLEVBQUUsRUFBRTtJQUNYLFdBQVcsRUFBRSxFQUFFO0lBQ2YsTUFBTSxFQUFFLEVBQUU7SUFDVixRQUFRLEVBQUUsRUFBRTtJQUNaLFdBQVcsRUFBRSxFQUFFO0NBQ2xCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQ29tQ3R4Q29uc3RhbnRzIHtcclxuXHJcbiAgICBzdGF0aWMgUk9PVCA9IHtcclxuICAgICAgICBVU0VSX1JFQURZOiAnVVNFUl9SRUFEWScsXHJcbiAgICAgICAgVVNFUl9MT0FERUQ6ICdVU0VSX0xPQURFRCcsXHJcbiAgICAgICAgVVNFUl9JTkZPX0NIQU5HRUQ6ICdVU0VSX0lORk9fQ0hBTkdFRCcsXHJcbiAgICAgICAgQURWQU5DRV9TRUFSQ0hfVE9HR0xFX0JPWDogJ0FEVkFOQ0VfU0VBUkNIX1RPR0dMRV9CT1gnLFxyXG4gICAgICAgIEFEVkFOQ0VfU0VBUkNIX0hJREVfQk9YOiAnQURWQU5DRV9TRUFSQ0hfSElERV9CT1gnLFxyXG4gICAgICAgIEFEVkFOQ0VfU0VBUkNIX0lOSVQ6ICdBRFZBTkNFX1NFQVJDSF9JTklUJyxcclxuICAgICAgICBBRFZBTkNFX1NFQVJDSF9UUklHR0VSX1NFQVJDSDogJ0FEVkFOQ0VfU0VBUkNIX1RSSUdHRVJfU0VBUkNIJyxcclxuICAgICAgICBBRFZBTkNFX0JJTkRfRFJPUERPV046ICdBRFZBTkNFX0JJTkRfRFJPUERPV04nLFxyXG4gICAgICAgIE9OX1NFQVJDSDogJ09OX1NFQVJDSCcsXHJcbiAgICAgICAgT05fU0VBUkNIX1ZFUlNJT046ICdPTl9TRUFSQ0hfVkVSU0lPTicsXHJcbiAgICAgICAgQURWQU5DRV9TRUFSQ0hNT0RFTF9JTklUOiAnQURWQU5DRV9TRUFSQ0hNT0RFTF9JTklUJyxcclxuICAgICAgICBPTl9BRFZBTkNFX1NFQVJDSF9GT1JNX0lOSVRJQUxFRDogJ09OX0FEVkFOQ0VfU0VBUkNIX0ZPUk1fSU5JVElBTEVEJyxcclxuICAgICAgICBPTl9BRFZBTkNFX1NFQVJDSF9GT1JNX0VWRU5UOiAnT05fQURWQU5DRV9TRUFSQ0hfRk9STV9FVkVOVCcsXHJcbiAgICAgICAgRElTQUJMRV9BRFZBTkNFX1NFQVJDSDogJ0RJU0FCTEVfQURWQU5DRV9TRUFSQ0gnLFxyXG4gICAgICAgIERFU1RST1lfQ09NUE9ORU5UOiAnREVTVFJPWV9DT01QT05FTlQnLFxyXG4gICAgICAgIENIQVRfTUVTU0FHRV9TRU5ESU5HOiAnQ0hBVF9NRVNTQUdFX1NFTkRJTkcnLFxyXG4gICAgICAgIENIQVRfTUVTU0FHRV9TRU5UOiAnQ0hBVF9NRVNTQUdFX1NFTlQnLFxyXG4gICAgICAgIENIQVRfTUVTU0FHRV9BVFRBQ0hfRklMRTogJ0NIQVRfTUVTU0FHRV9BVFRBQ0hfRklMRScsXHJcbiAgICAgICAgQ0hBVF9IQVNfTkVXX01FU1NBR0U6ICdDSEFUX0hBU19ORVdfTUVTU0FHRScsXHJcbiAgICAgICAgQ0hBVF9IQVNfTkVXX01FU1NBR0VfTk9UX1VQREFURUQ6ICdDSEFUX0hBU19ORVdfTUVTU0FHRV9OT1RfVVBEQVRFRCcsXHJcbiAgICAgICAgQ0hBVF9TQ1JPTExJTkc6ICdDSEFUX1NDUk9MTElORycsXHJcbiAgICAgICAgQ0hBVF9MT0FEX01PUkU6ICdDSEFUX0xPQURfTU9SRScsXHJcbiAgICAgICAgQ0hBVF9EQVRBX0xPQURFRDogJ0NIQVRfREFUQV9MT0FERUQnLFxyXG4gICAgICAgIENIQVRfSU5TVEFOQ0VfSURfTE9BREVEOiAnQ0hBVF9JTlNUQU5DRV9JRF9MT0FERUQnLFxyXG4gICAgICAgIENIQVRfTU9VU0VfVVA6ICdDSEFUX01PVVNFX1VQJyxcclxuICAgICAgICBOT1RJX0NMSUNLOiAnTk9USV9DTElDSycsXHJcbiAgICAgICAgS0VZX0RPV05fQ1RSTF9TOiAnS0VZX0RPV05fQ1RSTF9TJywgLy8gc2F2ZSBhY3RpdmUgQ1JVRCBmb3JtXHJcbiAgICAgICAgS0VZX0RPV05fRVNDOiAnS0VZX0RPV05fRVNDJywgLy8gZXhpdCBhY3RpdmUgQ1JVRCBmb3JtXHJcbiAgICAgICAgS0VZX0RPV05fQ1RSTF9GOiAnS0VZX0RPV05fQ1RSTF9GJywgLy8gZm9jdXMgdG8gdG9wIHNlYXJjaCBib3ggd2hlbiBpbiBtYWluIHNjcmVlblxyXG4gICAgICAgIEtFWV9ET1dOX0NUUkxfRDogJ0tFWV9ET1dOX0NUUkxfRCcsIC8vIGNyZWF0ZSBuZXcgaXRlbSB3aGVuIGFjdGl2YXRpbmcgQ1JVRCBsaXN0XHJcbiAgICAgICAgQk9EWV9NT1VTRV9ET1dOOiAnQk9EWV9NT1VTRV9ET1dOJyxcclxuICAgICAgICBCT0RZX01PVVNFX1VQOiAnQk9EWV9NT1VTRV9VUCcsXHJcbiAgICAgICAgQk9EWV9UT1VDSF9TVEFSVDogJ0JPRFlfVE9VQ0hfU1RBUlQnLFxyXG4gICAgICAgIEJPRFlfVE9VQ0hfRU5EOiAnQk9EWV9UT1VDSF9FTkQnLFxyXG4gICAgICAgIFdJTkRPV19SRVNJWkU6ICdXSU5ET1dfUkVTSVpFJyxcclxuICAgICAgICBTV0lQRV9MRUZUOiAnU1dJUEVfTEVGVCcsXHJcbiAgICAgICAgU1dJUEVfUklHSFQ6ICdTV0lQRV9SSUdIVCcsXHJcbiAgICAgICAgUFJFU1M6ICdQUkVTUycsXHJcbiAgICAgICAgUFJFU1NfVVA6ICdQUkVTU19VUCcsXHJcbiAgICAgICAgS0VZX0RPV05fQVJST1dMRUZUOiAnS0VZX0RPV05fQVJST1dMRUZUJyxcclxuICAgICAgICBLRVlfRE9XTl9BUlJPV1JJR0hUOiAnS0VZX0RPV05fQVJST1dSSUdIVCcsXHJcbiAgICAgICAgS0VZX0RPV05fQVJST1dET1dOOiAnS0VZX0RPV05fQVJST1dET1dOJyxcclxuICAgICAgICBLRVlfRE9XTl9BUlJPV1VQOiAnS0VZX0RPV05fQVJST1dVUCcsXHJcbiAgICAgICAgUEVSU09OQUxJWkVfVVBEQVRFRDogJ1BFUlNPTkFMSVpFX1VQREFURUQnLFxyXG4gICAgICAgIE5PVEVfVEFTS19DUkVBVEU6ICdOT1RFX1RBU0tfQ1JFQVRFJyxcclxuICAgICAgICBRVUlDS19OT1RFX1BJTjogJ1FVSUNLX05PVEVfUElOJyxcclxuICAgICAgICBRVUlDS19OT1RFX1VOUElOOiAnUVVJQ0tfTk9URV9VTlBJTicsXHJcbiAgICAgICAgUVVJQ0tfTk9URV9DT01QTEVURTogJ1FVSUNLX05PVEVfQ09NUExFVEUnLFxyXG4gICAgICAgIFFVSUNLX05PVEVfSU5DT01QTEVURTogJ1FVSUNLX05PVEVfSU5DT01QTEVURScsXHJcbiAgICAgICAgREVTVFJPWV9UQVNLX0RFVEFJTF9DT01QT05FTlQ6ICdERVNUUk9ZX1RBU0tfREVUQUlMX0NPTVBPTkVOVCcsXHJcbiAgICAgICAgTUVOVV9DSEFOR0VEOiAnTUVOVV9DSEFOR0VEJyxcclxuICAgICAgICBBRFZBTkNFX1NFQVJDSF9JTklUX1dJVEhPVVRfVVBEQVRFX1JPVVRFUjogJ0FEVkFOQ0VfU0VBUkNIX0lOSVRfV0lUSE9VVF9VUERBVEVfUk9VVEVSJyxcclxuICAgICAgICBTSE9XX1dBSVRfQk9YOiAnU0hPV19XQUlUX0JPWCcsXHJcbiAgICAgICAgU0hPV19SRUpFQ1RfQ09ORklSTTogJ1NIT1dfUkVKRUNUX0NPTkZJUk0nXHJcbiAgICB9O1xyXG5cclxuICAgIHN0YXRpYyBST09UX1VTTUFSVCA9IHtcclxuICAgICAgICBTSE9XX0NPTkZJR19EQVRBX0RFRkFVTFQ6ICdTSE9XX0NPTkZJR19EQVRBX0RFRkFVTFQnLFxyXG4gICAgICAgIENPTkZJR19EQVRBX0RFRkFVTFRfT1BFTkVEOiAnQ09ORklHX0RBVEFfREVGQVVMVF9PUEVORUQnLFxyXG4gICAgICAgIENPTkZJR19EQVRBX0RFRkFVTFRfQ0xPU0VEOiAnQ09ORklHX0RBVEFfREVGQVVMVF9DTE9TRUQnXHJcbiAgICB9O1xyXG5cclxuICAgIHN0YXRpYyBMT0NBTFNUT1JBR0VfS0VZID0ge1xyXG4gICAgICAgIFBBR0VfU0VUVElORzogJ1BBR0VfU0VUVElORycsXHJcbiAgICAgICAgQ09MVU1OX1NFVFRJTkc6ICdDT0xVTU5fU0VUVElORycsXHJcbiAgICAgICAgQ09MT1JfU0VUVElORzogJ0NPTE9SX1NFVFRJTkcnLFxyXG4gICAgICAgIERFRkFVTFRfREFUQTogJ0RFRkFVTFRfREFUQScsXHJcbiAgICAgICAgQURWQU5DRV9GSUxURVI6ICdBRFZBTkNFX0ZJTFRFUidcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgQ09NTU9OID0ge1xyXG4gICAgICAgIEFERDogJ0FERCcsXHJcbiAgICAgICAgRURJVDogJ0VESVQnLFxyXG4gICAgICAgIEVESVRfVkVSU0lPTjogJ0VESVRfVkVSU0lPTicsXHJcbiAgICAgICAgREVMRVRFX1ZFUlNJT046ICdERUxFVEVfVkVSU0lPTicsXHJcbiAgICAgICAgVFJJR0dFUl9VUExPQUQ6ICdUUklHR0VSX1VQTE9BRCcsXHJcbiAgICAgICAgVFJJR0dFUl9FRElUOiAnVFJJR0dFUl9FRElUJyxcclxuICAgICAgICBUUklHR0VSX0RFTEVURTogJ1RSSUdHRVJfREVMRVRFJyxcclxuICAgICAgICBUUklHR0VSX0NVU1RPTV9CVVRUT05fQ0xJQ0s6ICdUUklHR0VSX0NVU1RPTV9CVVRUT05fQ0xJQ0snLFxyXG4gICAgICAgIFJFTE9BRF9EQVRBX1ZFUlNJT046ICdSRUxPQURfREFUQV9WRVJTSU9OJyxcclxuICAgICAgICBTQVZFOiAnU0FWRScsXHJcbiAgICAgICAgQ1VTVE9NX1NBVkU6ICdDVVNUT01fU0FWRScsXHJcbiAgICAgICAgQ1VTVE9NX1NBVkVfV09SS0ZMT1dfRE9ORTogJ0NVU1RPTV9TQVZFX1dPUktGTE9XX0RPTkUnLFxyXG4gICAgICAgIENVU1RPTV9TQVZFX0VQOiAnQ1VTVE9NX1NBVkVfRVAnLCAvLyBTYXZlIGVudGl0eSBwZXJtaXNzaW9uXHJcbiAgICAgICAgU0FWRV9EQVRBX0RFRkFVTFQ6ICdTQVZFRF9EQVRBX0RFRkFVTFQnLFxyXG4gICAgICAgIFNBVkVEOiAnU0FWRUQnLFxyXG4gICAgICAgIENBTkNFTDogJ0NBTkNFTCcsXHJcbiAgICAgICAgQ0hFQ0tfRVhJU1Q6ICdDSEVDS19FWElTVCcsXHJcbiAgICAgICAgU0VUX1NFTEVDVEVEX1JPVzogJ1NFVF9TRUxFQ1RFRF9ST1cnLFxyXG4gICAgICAgIFJFTU9WRV9FUlJPUl9FWElTVDogJ1JFTU9WRV9FUlJPUl9FWElTVCcsXHJcbiAgICAgICAgT05fRk9STV9FVkVOVF9DVVNUT006ICdPTl9GT1JNX0VWRU5UX0NVU1RPTScsXHJcbiAgICAgICAgT05fRk9STV9FVkVOVDogJ09OX0ZPUk1fRVZFTlQnLFxyXG4gICAgICAgIE9OX0RBVEFNT0RFTF9DSEFOR0VEOiAnT05fREFUQU1PREVMX0NIQU5HRUQnLFxyXG4gICAgICAgIE9OX0ZPUk1fSU5JVElBTEVEOiAnT05fRk9STV9JTklUSUFMRUQnLFxyXG4gICAgICAgIE9OX1NIT1c6ICdPTl9TSE9XJyxcclxuICAgICAgICBPTl9GT1JNX1ZBTElEQVRFRDogJ09OX0ZPUk1fVkFMSURBVEVEJyxcclxuICAgICAgICBFWFBPUlRfRVhDRUw6ICdFWFBPUlRfRVhDRUwnLFxyXG4gICAgICAgIEVYUE9SVF9BTExfRVhDRUw6ICdFWFBPUlRfQUxMX0VYQ0VMJyxcclxuICAgICAgICBFWFBPUlRfQUxMX09CSkVDVF9FWENFTDogJ0VYUE9SVF9BTExfT0JKRUNUX0VYQ0VMJyxcclxuICAgICAgICBFWFBPUlRfRVhDRUxfQllfVEVNUExBVEU6ICdFWFBPUlRfRVhDRUxfQllfVEVNUExBVEUnLFxyXG4gICAgICAgIERFTEVURV9NVUxUSVBMRTogJ0RFTEVURV9NVUxUSVBMRScsXHJcbiAgICAgICAgREVMRVRFOiAnREVMRVRFJyxcclxuICAgICAgICBHRVRfREFUQV9PVVRQVVQ6ICdHRVRfREFUQV9PVVRQVVQnLFxyXG4gICAgICAgIENMT1NFX0VESVRfRk9STTogJ0NMT1NFX0VESVRfRk9STScsXHJcbiAgICAgICAgREFUQV9MT0FERUQ6ICdEQVRBX0xPQURFRCcsXHJcbiAgICAgICAgREFUQV9MT0FESU5HOiAnREFUQV9MT0FESU5HJyxcclxuICAgICAgICBGT1JNX1NDSEVNQV9DSEFOR0VEOiAnRk9STV9TQ0hFTUFfQ0hBTkdFRCcsXHJcbiAgICAgICAgVFJJR0dFUl9TSE9XX1NFVFRJTkc6ICdUUklHR0VSX1NIT1dfU0VUVElORycsXHJcbiAgICAgICAgRk9SQ0VfUkVOREVSOiAnRk9SQ0VfUkVOREVSJyxcclxuICAgICAgICBSQURJT19TRUxFQ1RFRDogJ1JBRElPX1NFTEVDVEVEJyxcclxuICAgICAgICBGT0NVU19UT19GSVJTVF9JTlBVVF9DT05UUk9MOiAnRk9DVVNfVE9fRklSU1RfSU5QVVRfQ09OVFJPTCcsXHJcbiAgICAgICAgU0lOR0xFX0ZJTEVfU0FWRUQ6ICdTSU5HTEVfRklMRV9TQVZFRCcsXHJcbiAgICAgICAgUkVMT0FEX0NSVURfRk9STTogJ1JFTE9BRF9DUlVEX0ZPUk0nLFxyXG4gICAgICAgIEJJTkRFRF9ERVRBSUxfREFUQTogJ0JJTkRFRF9ERVRBSUxfREFUQScsXHJcbiAgICAgICAgQUZURVJfQklOREVEX0RFVEFJTF9EQVRBOiAnQUZURVJfQklOREVEX0RFVEFJTF9EQVRBJyxcclxuICAgICAgICBVUERBVEVfUkVGRklFTEQ6ICdVUERBVEVfUkVGRklFTEQnLFxyXG4gICAgICAgIEVOVElUWV9NRVRBREFUQV9MT0FERUQ6ICdFTlRJVFlfTUVUQURBVEFfTE9BREVEJyxcclxuICAgICAgICBFTlRJVFlfTUVUQURBVEFfQ0hBTkdFU1RBVFVTOiAnRU5USVRZX01FVEFEQVRBX0NIQU5HRVNUQVRVUycsXHJcbiAgICAgICAgRU5USVRZX1BFUk1JU1NPTl9MT0FERUQ6ICdFTlRJVFlfUEVSTUlTU09OX0xPQURFRCcsXHJcbiAgICAgICAgRU5USVRZX1BFUk1JU1NPTl9NT0RJRlk6ICdFTlRJVFlfUEVSTUlTU09OX01PRElGWScsXHJcbiAgICAgICAgRU5USVRZX1dGX1NIT1dISVNUT1JZOiAnRU5USVRZX1dGX1NIT1dISVNUT1JZJyxcclxuICAgICAgICBFTlRJVFlfTUVUQURBVEFfUkVMT0FERUQ6ICdFTlRJVFlfTUVUQURBVEFfUkVMT0FERUQnLFxyXG4gICAgICAgIFNDUk9MTF9UT19CT1RUT006ICdTQ1JPTExfVE9fQk9UVE9NJyxcclxuICAgICAgICBUQUJMRV9TQ0hFTUFfUEFHSU5HX05FWFQ6ICdUQUJMRV9TQ0hFTUFfUEFHSU5HX05FWFQnLFxyXG4gICAgICAgIFRBQkxFX1NDSEVNQV9QQUdJTkdfUFJFVjogJ1RBQkxFX1NDSEVNQV9QQUdJTkdfUFJFVicsXHJcbiAgICAgICAgVEFCTEVfU0NIRU1BX1BBR0lOR19PTERFU1Q6ICdUQUJMRV9TQ0hFTUFfUEFHSU5HX09MREVTVCcsXHJcbiAgICAgICAgVEFCTEVfU0NIRU1BX1BBR0lOR19ORVdFU1Q6ICdUQUJMRV9TQ0hFTUFfUEFHSU5HX05FV0VTVCcsXHJcbiAgICAgICAgUk9XX1NFTEVDVEVEOiAnUk9XX1NFTEVDVEVEJyxcclxuICAgICAgICBST1dfU0VMRUNUX0FMTF9DSEFOR0VEOiAnUk9XX1NFTEVDVF9BTExfQ0hBTkdFRCcsXHJcbiAgICAgICAgSElEREVOX1NBVkU6ICdISURERU5fU0FWRScsXHJcbiAgICAgICAgU0VUX1ZJRVdfTU9ERTogJ1NFVF9WSUVXX01PREUnLFxyXG4gICAgICAgIFJFTE9BRF9DUlVEX0xJU1Q6ICdSRUxPQURfQ1JVRF9MSVNUJyxcclxuICAgICAgICBSRUxPQURfREFUQV9DUlVEX0xJU1Q6ICdSRUxPQURfREFUQV9DUlVEX0xJU1QnLFxyXG4gICAgICAgIFRBQkxFX1JFTkRFUkVEOiAnVEFCTEVfUkVOREVSRUQnLFxyXG4gICAgICAgIEFERF9DVVNUT01fRklMVEVSOiAnIEFERF9DVVNUT01fRklMVEVSJyxcclxuICAgICAgICBTQVZFX0ZJTEVfSU5fRk9STTogJ1NBVkVfRklMRV9JTl9GT1JNJyxcclxuICAgICAgICBTSE9XX05PVElGWTogJ1NIT1dfTk9USUZZJyxcclxuICAgICAgICBGT1JDRV9SRUxPQUQ6ICdGT1JDRV9SRUxPQUQnXHJcbiAgICB9O1xyXG5cclxuICAgIHN0YXRpYyBQQVJBTV9TRUFSQ0ggPSB7XHJcbiAgICAgICAgU1RBUlQ6ICdfX3MnLFxyXG4gICAgICAgIEVORDogJ19fZSdcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgRW50aXR5UGlja2VyRGlhbG9nRXZlbnRzID0ge1xyXG4gICAgICAgIENMT1NFX1BPUFVQOiAnQ0xPU0VfUE9QVVAnLFxyXG4gICAgICAgIExBU1RfRU5USVRZX0NIQU5HRTogJ0xBU1RfRU5USVRZX0NIQU5HRSdcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgVGFza1JlbGF0aW9uc2hpcENvZGVzID0ge1xyXG4gICAgICAgIFRBU0tfUkVMQVRJT05TSElQX0NPREU6ICdDb25nVmllY0xpZW5RdWFuJ1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBDdXN0b21CdXR0b25FdmVudHMgPSB7XHJcbiAgICAgICAgVGFza1JlbGF0aW9uc2hpcDoge1xyXG4gICAgICAgICAgICBBRERfTkVXX1RBU0s6ICdBRERfTkVXX1RBU0snLFxyXG4gICAgICAgICAgICBBRERfRVhJU1RJTkdfVEFTSzogJ0FERF9FWElTVElOR19UQVNLJ1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgQVVUT0NPTVBMRVRFX0xJU1QgPSB7XHJcbiAgICAgICAgVVNFUjogMCxcclxuICAgICAgICBTVFVERU5UOiAxLFxyXG4gICAgICAgIFRFQUNIRVI6IDIsXHJcbiAgICAgICAgUk9PTTogMyxcclxuICAgICAgICBDTEFTUzogNCxcclxuICAgICAgICBTVUJKRUNUOiA1LFxyXG4gICAgICAgIE5HVU9JX1RIVUU6IDYsXHJcbiAgICAgICAgRE9OX1ZJOiA3LFxyXG4gICAgICAgIEtITzogOCxcclxuICAgICAgICBOR0FOSDogOSxcclxuICAgICAgICBUSElFVEJJOiAxMCxcclxuICAgICAgICBIT0NQSEFOX1JBTkdCVU9DOiAxMSxcclxuICAgICAgICBPUkdBTklaQVRJT046IDEyLFxyXG4gICAgICAgIEhPUERPTkc6IDEzLFxyXG4gICAgICAgIFRFQUNIRVJQTFVTOiAxNCxcclxuICAgICAgICBERV9UQUk6IDE1LFxyXG4gICAgICAgIEJJRVVfTUFVOiAxNixcclxuICAgICAgICBURUFDSEVSRlVMTDogMTcsXHJcbiAgICB9XHJcbn1cclxuIl19
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWNvbnRleHQuY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29uZmlncy9jb21wb25lbnQtY29udGV4dC5jb25zdGFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZUFBZTs7QUFFakIsb0JBQUksR0FBRztJQUNWLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLGlCQUFpQixFQUFFLG1CQUFtQjtJQUN0Qyx5QkFBeUIsRUFBRSwyQkFBMkI7SUFDdEQsdUJBQXVCLEVBQUUseUJBQXlCO0lBQ2xELG1CQUFtQixFQUFFLHFCQUFxQjtJQUMxQyw2QkFBNkIsRUFBRSwrQkFBK0I7SUFDOUQscUJBQXFCLEVBQUUsdUJBQXVCO0lBQzlDLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLGlCQUFpQixFQUFFLG1CQUFtQjtJQUN0Qyx3QkFBd0IsRUFBRSwwQkFBMEI7SUFDcEQsZ0NBQWdDLEVBQUUsa0NBQWtDO0lBQ3BFLDRCQUE0QixFQUFFLDhCQUE4QjtJQUM1RCxzQkFBc0IsRUFBRSx3QkFBd0I7SUFDaEQsaUJBQWlCLEVBQUUsbUJBQW1CO0lBQ3RDLG9CQUFvQixFQUFFLHNCQUFzQjtJQUM1QyxpQkFBaUIsRUFBRSxtQkFBbUI7SUFDdEMsd0JBQXdCLEVBQUUsMEJBQTBCO0lBQ3BELG9CQUFvQixFQUFFLHNCQUFzQjtJQUM1QyxnQ0FBZ0MsRUFBRSxrQ0FBa0M7SUFDcEUsY0FBYyxFQUFFLGdCQUFnQjtJQUNoQyxjQUFjLEVBQUUsZ0JBQWdCO0lBQ2hDLGdCQUFnQixFQUFFLGtCQUFrQjtJQUNwQyx1QkFBdUIsRUFBRSx5QkFBeUI7SUFDbEQsYUFBYSxFQUFFLGVBQWU7SUFDOUIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsZUFBZSxFQUFFLGlCQUFpQjtJQUNsQyxZQUFZLEVBQUUsY0FBYztJQUM1QixlQUFlLEVBQUUsaUJBQWlCO0lBQ2xDLGVBQWUsRUFBRSxpQkFBaUI7SUFDbEMsZUFBZSxFQUFFLGlCQUFpQjtJQUNsQyxhQUFhLEVBQUUsZUFBZTtJQUM5QixnQkFBZ0IsRUFBRSxrQkFBa0I7SUFDcEMsY0FBYyxFQUFFLGdCQUFnQjtJQUNoQyxhQUFhLEVBQUUsZUFBZTtJQUM5QixVQUFVLEVBQUUsWUFBWTtJQUN4QixXQUFXLEVBQUUsYUFBYTtJQUMxQixLQUFLLEVBQUUsT0FBTztJQUNkLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLGtCQUFrQixFQUFFLG9CQUFvQjtJQUN4QyxtQkFBbUIsRUFBRSxxQkFBcUI7SUFDMUMsa0JBQWtCLEVBQUUsb0JBQW9CO0lBQ3hDLGdCQUFnQixFQUFFLGtCQUFrQjtJQUNwQyxtQkFBbUIsRUFBRSxxQkFBcUI7SUFDMUMsZ0JBQWdCLEVBQUUsa0JBQWtCO0lBQ3BDLGNBQWMsRUFBRSxnQkFBZ0I7SUFDaEMsZ0JBQWdCLEVBQUUsa0JBQWtCO0lBQ3BDLG1CQUFtQixFQUFFLHFCQUFxQjtJQUMxQyxxQkFBcUIsRUFBRSx1QkFBdUI7SUFDOUMsNkJBQTZCLEVBQUUsK0JBQStCO0lBQzlELFlBQVksRUFBRSxjQUFjO0lBQzVCLHlDQUF5QyxFQUFFLDJDQUEyQztJQUN0RixhQUFhLEVBQUUsZUFBZTtJQUM5QixtQkFBbUIsRUFBRSxxQkFBcUI7SUFDMUMseUJBQXlCLEVBQUUsMkJBQTJCO0NBQ3pELENBQUM7QUFFSywyQkFBVyxHQUFHO0lBQ2pCLHdCQUF3QixFQUFFLDBCQUEwQjtJQUNwRCwwQkFBMEIsRUFBRSw0QkFBNEI7SUFDeEQsMEJBQTBCLEVBQUUsNEJBQTRCO0NBQzNELENBQUM7QUFFSyxnQ0FBZ0IsR0FBRztJQUN0QixZQUFZLEVBQUUsY0FBYztJQUM1QixjQUFjLEVBQUUsZ0JBQWdCO0lBQ2hDLGFBQWEsRUFBRSxlQUFlO0lBQzlCLFlBQVksRUFBRSxjQUFjO0lBQzVCLGNBQWMsRUFBRSxnQkFBZ0I7Q0FDbkMsQ0FBQTtBQUVNLHNCQUFNLEdBQUc7SUFDWixHQUFHLEVBQUUsS0FBSztJQUNWLElBQUksRUFBRSxNQUFNO0lBQ1osWUFBWSxFQUFFLGNBQWM7SUFDNUIsY0FBYyxFQUFFLGdCQUFnQjtJQUNoQyxjQUFjLEVBQUUsZ0JBQWdCO0lBQ2hDLFlBQVksRUFBRSxjQUFjO0lBQzVCLGNBQWMsRUFBRSxnQkFBZ0I7SUFDaEMsMkJBQTJCLEVBQUUsNkJBQTZCO0lBQzFELG1CQUFtQixFQUFFLHFCQUFxQjtJQUMxQyxJQUFJLEVBQUUsTUFBTTtJQUNaLFdBQVcsRUFBRSxhQUFhO0lBQzFCLHlCQUF5QixFQUFFLDJCQUEyQjtJQUN0RCxjQUFjLEVBQUUsZ0JBQWdCO0lBQ2hDLGlCQUFpQixFQUFFLG9CQUFvQjtJQUN2QyxLQUFLLEVBQUUsT0FBTztJQUNkLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLGdCQUFnQixFQUFFLGtCQUFrQjtJQUNwQyxrQkFBa0IsRUFBRSxvQkFBb0I7SUFDeEMsb0JBQW9CLEVBQUUsc0JBQXNCO0lBQzVDLGFBQWEsRUFBRSxlQUFlO0lBQzlCLG9CQUFvQixFQUFFLHNCQUFzQjtJQUM1QyxpQkFBaUIsRUFBRSxtQkFBbUI7SUFDdEMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsaUJBQWlCLEVBQUUsbUJBQW1CO0lBQ3RDLFlBQVksRUFBRSxjQUFjO0lBQzVCLGdCQUFnQixFQUFFLGtCQUFrQjtJQUNwQyx1QkFBdUIsRUFBRSx5QkFBeUI7SUFDbEQsd0JBQXdCLEVBQUUsMEJBQTBCO0lBQ3BELGVBQWUsRUFBRSxpQkFBaUI7SUFDbEMsTUFBTSxFQUFFLFFBQVE7SUFDaEIsZUFBZSxFQUFFLGlCQUFpQjtJQUNsQyxlQUFlLEVBQUUsaUJBQWlCO0lBQ2xDLFdBQVcsRUFBRSxhQUFhO0lBQzFCLFlBQVksRUFBRSxjQUFjO0lBQzVCLG1CQUFtQixFQUFFLHFCQUFxQjtJQUMxQyxvQkFBb0IsRUFBRSxzQkFBc0I7SUFDNUMsWUFBWSxFQUFFLGNBQWM7SUFDNUIsY0FBYyxFQUFFLGdCQUFnQjtJQUNoQyw0QkFBNEIsRUFBRSw4QkFBOEI7SUFDNUQsaUJBQWlCLEVBQUUsbUJBQW1CO0lBQ3RDLGdCQUFnQixFQUFFLGtCQUFrQjtJQUNwQyxrQkFBa0IsRUFBRSxvQkFBb0I7SUFDeEMsd0JBQXdCLEVBQUUsMEJBQTBCO0lBQ3BELGVBQWUsRUFBRSxpQkFBaUI7SUFDbEMsc0JBQXNCLEVBQUUsd0JBQXdCO0lBQ2hELDRCQUE0QixFQUFFLDhCQUE4QjtJQUM1RCx1QkFBdUIsRUFBRSx5QkFBeUI7SUFDbEQsdUJBQXVCLEVBQUUseUJBQXlCO0lBQ2xELHFCQUFxQixFQUFFLHVCQUF1QjtJQUM5Qyx3QkFBd0IsRUFBRSwwQkFBMEI7SUFDcEQsZ0JBQWdCLEVBQUUsa0JBQWtCO0lBQ3BDLHdCQUF3QixFQUFFLDBCQUEwQjtJQUNwRCx3QkFBd0IsRUFBRSwwQkFBMEI7SUFDcEQsMEJBQTBCLEVBQUUsNEJBQTRCO0lBQ3hELDBCQUEwQixFQUFFLDRCQUE0QjtJQUN4RCxZQUFZLEVBQUUsY0FBYztJQUM1QixzQkFBc0IsRUFBRSx3QkFBd0I7SUFDaEQsV0FBVyxFQUFFLGFBQWE7SUFDMUIsYUFBYSxFQUFFLGVBQWU7SUFDOUIsZ0JBQWdCLEVBQUUsa0JBQWtCO0lBQ3BDLHFCQUFxQixFQUFFLHVCQUF1QjtJQUM5QyxjQUFjLEVBQUUsZ0JBQWdCO0lBQ2hDLGlCQUFpQixFQUFFLG9CQUFvQjtJQUN2QyxpQkFBaUIsRUFBRSxtQkFBbUI7SUFDdEMsV0FBVyxFQUFFLGFBQWE7SUFDMUIsWUFBWSxFQUFFLGNBQWM7Q0FDL0IsQ0FBQztBQUVLLDRCQUFZLEdBQUc7SUFDbEIsS0FBSyxFQUFFLEtBQUs7SUFDWixHQUFHLEVBQUUsS0FBSztDQUNiLENBQUE7QUFFTSx3Q0FBd0IsR0FBRztJQUM5QixXQUFXLEVBQUUsYUFBYTtJQUMxQixrQkFBa0IsRUFBRSxvQkFBb0I7Q0FDM0MsQ0FBQTtBQUVNLHFDQUFxQixHQUFHO0lBQzNCLHNCQUFzQixFQUFFLGtCQUFrQjtDQUM3QyxDQUFBO0FBRU0sa0NBQWtCLEdBQUc7SUFDeEIsZ0JBQWdCLEVBQUU7UUFDZCxZQUFZLEVBQUUsY0FBYztRQUM1QixpQkFBaUIsRUFBRSxtQkFBbUI7S0FDekM7Q0FDSixDQUFBO0FBRU0saUNBQWlCLEdBQUc7SUFDdkIsSUFBSSxFQUFFLENBQUM7SUFDUCxPQUFPLEVBQUUsQ0FBQztJQUNWLE9BQU8sRUFBRSxDQUFDO0lBQ1YsSUFBSSxFQUFFLENBQUM7SUFDUCxLQUFLLEVBQUUsQ0FBQztJQUNSLE9BQU8sRUFBRSxDQUFDO0lBQ1YsVUFBVSxFQUFFLENBQUM7SUFDYixNQUFNLEVBQUUsQ0FBQztJQUNULEdBQUcsRUFBRSxDQUFDO0lBQ04sS0FBSyxFQUFFLENBQUM7SUFDUixPQUFPLEVBQUUsRUFBRTtJQUNYLGdCQUFnQixFQUFFLEVBQUU7SUFDcEIsWUFBWSxFQUFFLEVBQUU7SUFDaEIsT0FBTyxFQUFFLEVBQUU7SUFDWCxXQUFXLEVBQUUsRUFBRTtJQUNmLE1BQU0sRUFBRSxFQUFFO0lBQ1YsUUFBUSxFQUFFLEVBQUU7SUFDWixXQUFXLEVBQUUsRUFBRTtDQUNsQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIENvbUN0eENvbnN0YW50cyB7XHJcblxyXG4gICAgc3RhdGljIFJPT1QgPSB7XHJcbiAgICAgICAgVVNFUl9SRUFEWTogJ1VTRVJfUkVBRFknLFxyXG4gICAgICAgIFVTRVJfTE9BREVEOiAnVVNFUl9MT0FERUQnLFxyXG4gICAgICAgIFVTRVJfSU5GT19DSEFOR0VEOiAnVVNFUl9JTkZPX0NIQU5HRUQnLFxyXG4gICAgICAgIEFEVkFOQ0VfU0VBUkNIX1RPR0dMRV9CT1g6ICdBRFZBTkNFX1NFQVJDSF9UT0dHTEVfQk9YJyxcclxuICAgICAgICBBRFZBTkNFX1NFQVJDSF9ISURFX0JPWDogJ0FEVkFOQ0VfU0VBUkNIX0hJREVfQk9YJyxcclxuICAgICAgICBBRFZBTkNFX1NFQVJDSF9JTklUOiAnQURWQU5DRV9TRUFSQ0hfSU5JVCcsXHJcbiAgICAgICAgQURWQU5DRV9TRUFSQ0hfVFJJR0dFUl9TRUFSQ0g6ICdBRFZBTkNFX1NFQVJDSF9UUklHR0VSX1NFQVJDSCcsXHJcbiAgICAgICAgQURWQU5DRV9CSU5EX0RST1BET1dOOiAnQURWQU5DRV9CSU5EX0RST1BET1dOJyxcclxuICAgICAgICBPTl9TRUFSQ0g6ICdPTl9TRUFSQ0gnLFxyXG4gICAgICAgIE9OX1NFQVJDSF9WRVJTSU9OOiAnT05fU0VBUkNIX1ZFUlNJT04nLFxyXG4gICAgICAgIEFEVkFOQ0VfU0VBUkNITU9ERUxfSU5JVDogJ0FEVkFOQ0VfU0VBUkNITU9ERUxfSU5JVCcsXHJcbiAgICAgICAgT05fQURWQU5DRV9TRUFSQ0hfRk9STV9JTklUSUFMRUQ6ICdPTl9BRFZBTkNFX1NFQVJDSF9GT1JNX0lOSVRJQUxFRCcsXHJcbiAgICAgICAgT05fQURWQU5DRV9TRUFSQ0hfRk9STV9FVkVOVDogJ09OX0FEVkFOQ0VfU0VBUkNIX0ZPUk1fRVZFTlQnLFxyXG4gICAgICAgIERJU0FCTEVfQURWQU5DRV9TRUFSQ0g6ICdESVNBQkxFX0FEVkFOQ0VfU0VBUkNIJyxcclxuICAgICAgICBERVNUUk9ZX0NPTVBPTkVOVDogJ0RFU1RST1lfQ09NUE9ORU5UJyxcclxuICAgICAgICBDSEFUX01FU1NBR0VfU0VORElORzogJ0NIQVRfTUVTU0FHRV9TRU5ESU5HJyxcclxuICAgICAgICBDSEFUX01FU1NBR0VfU0VOVDogJ0NIQVRfTUVTU0FHRV9TRU5UJyxcclxuICAgICAgICBDSEFUX01FU1NBR0VfQVRUQUNIX0ZJTEU6ICdDSEFUX01FU1NBR0VfQVRUQUNIX0ZJTEUnLFxyXG4gICAgICAgIENIQVRfSEFTX05FV19NRVNTQUdFOiAnQ0hBVF9IQVNfTkVXX01FU1NBR0UnLFxyXG4gICAgICAgIENIQVRfSEFTX05FV19NRVNTQUdFX05PVF9VUERBVEVEOiAnQ0hBVF9IQVNfTkVXX01FU1NBR0VfTk9UX1VQREFURUQnLFxyXG4gICAgICAgIENIQVRfU0NST0xMSU5HOiAnQ0hBVF9TQ1JPTExJTkcnLFxyXG4gICAgICAgIENIQVRfTE9BRF9NT1JFOiAnQ0hBVF9MT0FEX01PUkUnLFxyXG4gICAgICAgIENIQVRfREFUQV9MT0FERUQ6ICdDSEFUX0RBVEFfTE9BREVEJyxcclxuICAgICAgICBDSEFUX0lOU1RBTkNFX0lEX0xPQURFRDogJ0NIQVRfSU5TVEFOQ0VfSURfTE9BREVEJyxcclxuICAgICAgICBDSEFUX01PVVNFX1VQOiAnQ0hBVF9NT1VTRV9VUCcsXHJcbiAgICAgICAgTk9USV9DTElDSzogJ05PVElfQ0xJQ0snLFxyXG4gICAgICAgIEtFWV9ET1dOX0NUUkxfUzogJ0tFWV9ET1dOX0NUUkxfUycsIC8vIHNhdmUgYWN0aXZlIENSVUQgZm9ybVxyXG4gICAgICAgIEtFWV9ET1dOX0VTQzogJ0tFWV9ET1dOX0VTQycsIC8vIGV4aXQgYWN0aXZlIENSVUQgZm9ybVxyXG4gICAgICAgIEtFWV9ET1dOX0NUUkxfRjogJ0tFWV9ET1dOX0NUUkxfRicsIC8vIGZvY3VzIHRvIHRvcCBzZWFyY2ggYm94IHdoZW4gaW4gbWFpbiBzY3JlZW5cclxuICAgICAgICBLRVlfRE9XTl9DVFJMX0Q6ICdLRVlfRE9XTl9DVFJMX0QnLCAvLyBjcmVhdGUgbmV3IGl0ZW0gd2hlbiBhY3RpdmF0aW5nIENSVUQgbGlzdFxyXG4gICAgICAgIEJPRFlfTU9VU0VfRE9XTjogJ0JPRFlfTU9VU0VfRE9XTicsXHJcbiAgICAgICAgQk9EWV9NT1VTRV9VUDogJ0JPRFlfTU9VU0VfVVAnLFxyXG4gICAgICAgIEJPRFlfVE9VQ0hfU1RBUlQ6ICdCT0RZX1RPVUNIX1NUQVJUJyxcclxuICAgICAgICBCT0RZX1RPVUNIX0VORDogJ0JPRFlfVE9VQ0hfRU5EJyxcclxuICAgICAgICBXSU5ET1dfUkVTSVpFOiAnV0lORE9XX1JFU0laRScsXHJcbiAgICAgICAgU1dJUEVfTEVGVDogJ1NXSVBFX0xFRlQnLFxyXG4gICAgICAgIFNXSVBFX1JJR0hUOiAnU1dJUEVfUklHSFQnLFxyXG4gICAgICAgIFBSRVNTOiAnUFJFU1MnLFxyXG4gICAgICAgIFBSRVNTX1VQOiAnUFJFU1NfVVAnLFxyXG4gICAgICAgIEtFWV9ET1dOX0FSUk9XTEVGVDogJ0tFWV9ET1dOX0FSUk9XTEVGVCcsXHJcbiAgICAgICAgS0VZX0RPV05fQVJST1dSSUdIVDogJ0tFWV9ET1dOX0FSUk9XUklHSFQnLFxyXG4gICAgICAgIEtFWV9ET1dOX0FSUk9XRE9XTjogJ0tFWV9ET1dOX0FSUk9XRE9XTicsXHJcbiAgICAgICAgS0VZX0RPV05fQVJST1dVUDogJ0tFWV9ET1dOX0FSUk9XVVAnLFxyXG4gICAgICAgIFBFUlNPTkFMSVpFX1VQREFURUQ6ICdQRVJTT05BTElaRV9VUERBVEVEJyxcclxuICAgICAgICBOT1RFX1RBU0tfQ1JFQVRFOiAnTk9URV9UQVNLX0NSRUFURScsXHJcbiAgICAgICAgUVVJQ0tfTk9URV9QSU46ICdRVUlDS19OT1RFX1BJTicsXHJcbiAgICAgICAgUVVJQ0tfTk9URV9VTlBJTjogJ1FVSUNLX05PVEVfVU5QSU4nLFxyXG4gICAgICAgIFFVSUNLX05PVEVfQ09NUExFVEU6ICdRVUlDS19OT1RFX0NPTVBMRVRFJyxcclxuICAgICAgICBRVUlDS19OT1RFX0lOQ09NUExFVEU6ICdRVUlDS19OT1RFX0lOQ09NUExFVEUnLFxyXG4gICAgICAgIERFU1RST1lfVEFTS19ERVRBSUxfQ09NUE9ORU5UOiAnREVTVFJPWV9UQVNLX0RFVEFJTF9DT01QT05FTlQnLFxyXG4gICAgICAgIE1FTlVfQ0hBTkdFRDogJ01FTlVfQ0hBTkdFRCcsXHJcbiAgICAgICAgQURWQU5DRV9TRUFSQ0hfSU5JVF9XSVRIT1VUX1VQREFURV9ST1VURVI6ICdBRFZBTkNFX1NFQVJDSF9JTklUX1dJVEhPVVRfVVBEQVRFX1JPVVRFUicsXHJcbiAgICAgICAgU0hPV19XQUlUX0JPWDogJ1NIT1dfV0FJVF9CT1gnLFxyXG4gICAgICAgIFNIT1dfUkVKRUNUX0NPTkZJUk06ICdTSE9XX1JFSkVDVF9DT05GSVJNJyxcclxuICAgICAgICBHQU5fRU5USVRZX1NBTkdfQ09OR19WSUVDOiAnR0FOX0VOVElUWV9TQU5HX0NPTkdfVklFQydcclxuICAgIH07XHJcblxyXG4gICAgc3RhdGljIFJPT1RfVVNNQVJUID0ge1xyXG4gICAgICAgIFNIT1dfQ09ORklHX0RBVEFfREVGQVVMVDogJ1NIT1dfQ09ORklHX0RBVEFfREVGQVVMVCcsXHJcbiAgICAgICAgQ09ORklHX0RBVEFfREVGQVVMVF9PUEVORUQ6ICdDT05GSUdfREFUQV9ERUZBVUxUX09QRU5FRCcsXHJcbiAgICAgICAgQ09ORklHX0RBVEFfREVGQVVMVF9DTE9TRUQ6ICdDT05GSUdfREFUQV9ERUZBVUxUX0NMT1NFRCdcclxuICAgIH07XHJcblxyXG4gICAgc3RhdGljIExPQ0FMU1RPUkFHRV9LRVkgPSB7XHJcbiAgICAgICAgUEFHRV9TRVRUSU5HOiAnUEFHRV9TRVRUSU5HJyxcclxuICAgICAgICBDT0xVTU5fU0VUVElORzogJ0NPTFVNTl9TRVRUSU5HJyxcclxuICAgICAgICBDT0xPUl9TRVRUSU5HOiAnQ09MT1JfU0VUVElORycsXHJcbiAgICAgICAgREVGQVVMVF9EQVRBOiAnREVGQVVMVF9EQVRBJyxcclxuICAgICAgICBBRFZBTkNFX0ZJTFRFUjogJ0FEVkFOQ0VfRklMVEVSJ1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBDT01NT04gPSB7XHJcbiAgICAgICAgQUREOiAnQUREJyxcclxuICAgICAgICBFRElUOiAnRURJVCcsXHJcbiAgICAgICAgRURJVF9WRVJTSU9OOiAnRURJVF9WRVJTSU9OJyxcclxuICAgICAgICBERUxFVEVfVkVSU0lPTjogJ0RFTEVURV9WRVJTSU9OJyxcclxuICAgICAgICBUUklHR0VSX1VQTE9BRDogJ1RSSUdHRVJfVVBMT0FEJyxcclxuICAgICAgICBUUklHR0VSX0VESVQ6ICdUUklHR0VSX0VESVQnLFxyXG4gICAgICAgIFRSSUdHRVJfREVMRVRFOiAnVFJJR0dFUl9ERUxFVEUnLFxyXG4gICAgICAgIFRSSUdHRVJfQ1VTVE9NX0JVVFRPTl9DTElDSzogJ1RSSUdHRVJfQ1VTVE9NX0JVVFRPTl9DTElDSycsXHJcbiAgICAgICAgUkVMT0FEX0RBVEFfVkVSU0lPTjogJ1JFTE9BRF9EQVRBX1ZFUlNJT04nLFxyXG4gICAgICAgIFNBVkU6ICdTQVZFJyxcclxuICAgICAgICBDVVNUT01fU0FWRTogJ0NVU1RPTV9TQVZFJyxcclxuICAgICAgICBDVVNUT01fU0FWRV9XT1JLRkxPV19ET05FOiAnQ1VTVE9NX1NBVkVfV09SS0ZMT1dfRE9ORScsXHJcbiAgICAgICAgQ1VTVE9NX1NBVkVfRVA6ICdDVVNUT01fU0FWRV9FUCcsIC8vIFNhdmUgZW50aXR5IHBlcm1pc3Npb25cclxuICAgICAgICBTQVZFX0RBVEFfREVGQVVMVDogJ1NBVkVEX0RBVEFfREVGQVVMVCcsXHJcbiAgICAgICAgU0FWRUQ6ICdTQVZFRCcsXHJcbiAgICAgICAgQ0FOQ0VMOiAnQ0FOQ0VMJyxcclxuICAgICAgICBDSEVDS19FWElTVDogJ0NIRUNLX0VYSVNUJyxcclxuICAgICAgICBTRVRfU0VMRUNURURfUk9XOiAnU0VUX1NFTEVDVEVEX1JPVycsXHJcbiAgICAgICAgUkVNT1ZFX0VSUk9SX0VYSVNUOiAnUkVNT1ZFX0VSUk9SX0VYSVNUJyxcclxuICAgICAgICBPTl9GT1JNX0VWRU5UX0NVU1RPTTogJ09OX0ZPUk1fRVZFTlRfQ1VTVE9NJyxcclxuICAgICAgICBPTl9GT1JNX0VWRU5UOiAnT05fRk9STV9FVkVOVCcsXHJcbiAgICAgICAgT05fREFUQU1PREVMX0NIQU5HRUQ6ICdPTl9EQVRBTU9ERUxfQ0hBTkdFRCcsXHJcbiAgICAgICAgT05fRk9STV9JTklUSUFMRUQ6ICdPTl9GT1JNX0lOSVRJQUxFRCcsXHJcbiAgICAgICAgT05fU0hPVzogJ09OX1NIT1cnLFxyXG4gICAgICAgIE9OX0ZPUk1fVkFMSURBVEVEOiAnT05fRk9STV9WQUxJREFURUQnLFxyXG4gICAgICAgIEVYUE9SVF9FWENFTDogJ0VYUE9SVF9FWENFTCcsXHJcbiAgICAgICAgRVhQT1JUX0FMTF9FWENFTDogJ0VYUE9SVF9BTExfRVhDRUwnLFxyXG4gICAgICAgIEVYUE9SVF9BTExfT0JKRUNUX0VYQ0VMOiAnRVhQT1JUX0FMTF9PQkpFQ1RfRVhDRUwnLFxyXG4gICAgICAgIEVYUE9SVF9FWENFTF9CWV9URU1QTEFURTogJ0VYUE9SVF9FWENFTF9CWV9URU1QTEFURScsXHJcbiAgICAgICAgREVMRVRFX01VTFRJUExFOiAnREVMRVRFX01VTFRJUExFJyxcclxuICAgICAgICBERUxFVEU6ICdERUxFVEUnLFxyXG4gICAgICAgIEdFVF9EQVRBX09VVFBVVDogJ0dFVF9EQVRBX09VVFBVVCcsXHJcbiAgICAgICAgQ0xPU0VfRURJVF9GT1JNOiAnQ0xPU0VfRURJVF9GT1JNJyxcclxuICAgICAgICBEQVRBX0xPQURFRDogJ0RBVEFfTE9BREVEJyxcclxuICAgICAgICBEQVRBX0xPQURJTkc6ICdEQVRBX0xPQURJTkcnLFxyXG4gICAgICAgIEZPUk1fU0NIRU1BX0NIQU5HRUQ6ICdGT1JNX1NDSEVNQV9DSEFOR0VEJyxcclxuICAgICAgICBUUklHR0VSX1NIT1dfU0VUVElORzogJ1RSSUdHRVJfU0hPV19TRVRUSU5HJyxcclxuICAgICAgICBGT1JDRV9SRU5ERVI6ICdGT1JDRV9SRU5ERVInLFxyXG4gICAgICAgIFJBRElPX1NFTEVDVEVEOiAnUkFESU9fU0VMRUNURUQnLFxyXG4gICAgICAgIEZPQ1VTX1RPX0ZJUlNUX0lOUFVUX0NPTlRST0w6ICdGT0NVU19UT19GSVJTVF9JTlBVVF9DT05UUk9MJyxcclxuICAgICAgICBTSU5HTEVfRklMRV9TQVZFRDogJ1NJTkdMRV9GSUxFX1NBVkVEJyxcclxuICAgICAgICBSRUxPQURfQ1JVRF9GT1JNOiAnUkVMT0FEX0NSVURfRk9STScsXHJcbiAgICAgICAgQklOREVEX0RFVEFJTF9EQVRBOiAnQklOREVEX0RFVEFJTF9EQVRBJyxcclxuICAgICAgICBBRlRFUl9CSU5ERURfREVUQUlMX0RBVEE6ICdBRlRFUl9CSU5ERURfREVUQUlMX0RBVEEnLFxyXG4gICAgICAgIFVQREFURV9SRUZGSUVMRDogJ1VQREFURV9SRUZGSUVMRCcsXHJcbiAgICAgICAgRU5USVRZX01FVEFEQVRBX0xPQURFRDogJ0VOVElUWV9NRVRBREFUQV9MT0FERUQnLFxyXG4gICAgICAgIEVOVElUWV9NRVRBREFUQV9DSEFOR0VTVEFUVVM6ICdFTlRJVFlfTUVUQURBVEFfQ0hBTkdFU1RBVFVTJyxcclxuICAgICAgICBFTlRJVFlfUEVSTUlTU09OX0xPQURFRDogJ0VOVElUWV9QRVJNSVNTT05fTE9BREVEJyxcclxuICAgICAgICBFTlRJVFlfUEVSTUlTU09OX01PRElGWTogJ0VOVElUWV9QRVJNSVNTT05fTU9ESUZZJyxcclxuICAgICAgICBFTlRJVFlfV0ZfU0hPV0hJU1RPUlk6ICdFTlRJVFlfV0ZfU0hPV0hJU1RPUlknLFxyXG4gICAgICAgIEVOVElUWV9NRVRBREFUQV9SRUxPQURFRDogJ0VOVElUWV9NRVRBREFUQV9SRUxPQURFRCcsXHJcbiAgICAgICAgU0NST0xMX1RPX0JPVFRPTTogJ1NDUk9MTF9UT19CT1RUT00nLFxyXG4gICAgICAgIFRBQkxFX1NDSEVNQV9QQUdJTkdfTkVYVDogJ1RBQkxFX1NDSEVNQV9QQUdJTkdfTkVYVCcsXHJcbiAgICAgICAgVEFCTEVfU0NIRU1BX1BBR0lOR19QUkVWOiAnVEFCTEVfU0NIRU1BX1BBR0lOR19QUkVWJyxcclxuICAgICAgICBUQUJMRV9TQ0hFTUFfUEFHSU5HX09MREVTVDogJ1RBQkxFX1NDSEVNQV9QQUdJTkdfT0xERVNUJyxcclxuICAgICAgICBUQUJMRV9TQ0hFTUFfUEFHSU5HX05FV0VTVDogJ1RBQkxFX1NDSEVNQV9QQUdJTkdfTkVXRVNUJyxcclxuICAgICAgICBST1dfU0VMRUNURUQ6ICdST1dfU0VMRUNURUQnLFxyXG4gICAgICAgIFJPV19TRUxFQ1RfQUxMX0NIQU5HRUQ6ICdST1dfU0VMRUNUX0FMTF9DSEFOR0VEJyxcclxuICAgICAgICBISURERU5fU0FWRTogJ0hJRERFTl9TQVZFJyxcclxuICAgICAgICBTRVRfVklFV19NT0RFOiAnU0VUX1ZJRVdfTU9ERScsXHJcbiAgICAgICAgUkVMT0FEX0NSVURfTElTVDogJ1JFTE9BRF9DUlVEX0xJU1QnLFxyXG4gICAgICAgIFJFTE9BRF9EQVRBX0NSVURfTElTVDogJ1JFTE9BRF9EQVRBX0NSVURfTElTVCcsXHJcbiAgICAgICAgVEFCTEVfUkVOREVSRUQ6ICdUQUJMRV9SRU5ERVJFRCcsXHJcbiAgICAgICAgQUREX0NVU1RPTV9GSUxURVI6ICcgQUREX0NVU1RPTV9GSUxURVInLFxyXG4gICAgICAgIFNBVkVfRklMRV9JTl9GT1JNOiAnU0FWRV9GSUxFX0lOX0ZPUk0nLFxyXG4gICAgICAgIFNIT1dfTk9USUZZOiAnU0hPV19OT1RJRlknLFxyXG4gICAgICAgIEZPUkNFX1JFTE9BRDogJ0ZPUkNFX1JFTE9BRCdcclxuICAgIH07XHJcblxyXG4gICAgc3RhdGljIFBBUkFNX1NFQVJDSCA9IHtcclxuICAgICAgICBTVEFSVDogJ19fcycsXHJcbiAgICAgICAgRU5EOiAnX19lJ1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBFbnRpdHlQaWNrZXJEaWFsb2dFdmVudHMgPSB7XHJcbiAgICAgICAgQ0xPU0VfUE9QVVA6ICdDTE9TRV9QT1BVUCcsXHJcbiAgICAgICAgTEFTVF9FTlRJVFlfQ0hBTkdFOiAnTEFTVF9FTlRJVFlfQ0hBTkdFJ1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBUYXNrUmVsYXRpb25zaGlwQ29kZXMgPSB7XHJcbiAgICAgICAgVEFTS19SRUxBVElPTlNISVBfQ09ERTogJ0NvbmdWaWVjTGllblF1YW4nXHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIEN1c3RvbUJ1dHRvbkV2ZW50cyA9IHtcclxuICAgICAgICBUYXNrUmVsYXRpb25zaGlwOiB7XHJcbiAgICAgICAgICAgIEFERF9ORVdfVEFTSzogJ0FERF9ORVdfVEFTSycsXHJcbiAgICAgICAgICAgIEFERF9FWElTVElOR19UQVNLOiAnQUREX0VYSVNUSU5HX1RBU0snXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBBVVRPQ09NUExFVEVfTElTVCA9IHtcclxuICAgICAgICBVU0VSOiAwLFxyXG4gICAgICAgIFNUVURFTlQ6IDEsXHJcbiAgICAgICAgVEVBQ0hFUjogMixcclxuICAgICAgICBST09NOiAzLFxyXG4gICAgICAgIENMQVNTOiA0LFxyXG4gICAgICAgIFNVQkpFQ1Q6IDUsXHJcbiAgICAgICAgTkdVT0lfVEhVRTogNixcclxuICAgICAgICBET05fVkk6IDcsXHJcbiAgICAgICAgS0hPOiA4LFxyXG4gICAgICAgIE5HQU5IOiA5LFxyXG4gICAgICAgIFRISUVUQkk6IDEwLFxyXG4gICAgICAgIEhPQ1BIQU5fUkFOR0JVT0M6IDExLFxyXG4gICAgICAgIE9SR0FOSVpBVElPTjogMTIsXHJcbiAgICAgICAgSE9QRE9ORzogMTMsXHJcbiAgICAgICAgVEVBQ0hFUlBMVVM6IDE0LFxyXG4gICAgICAgIERFX1RBSTogMTUsXHJcbiAgICAgICAgQklFVV9NQVU6IDE2LFxyXG4gICAgICAgIFRFQUNIRVJGVUxMOiAxNyxcclxuICAgIH1cclxufVxyXG4iXX0=