@bnsights/bbsf-admin-portal 1.0.3 → 1.0.7

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 (166) hide show
  1. package/bnsights-bbsf-admin-portal-1.0.7.tgz +0 -0
  2. package/bundles/bnsights-bbsf-admin-portal.umd.js +19377 -20042
  3. package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
  4. package/esm2015/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.js +2 -2
  5. package/esm2015/lib/Pages/account/account-routing.module.js +3 -1
  6. package/esm2015/lib/Pages/account/account.component.js +15 -6
  7. package/esm2015/lib/Pages/account/account.module.js +16 -8
  8. package/esm2015/lib/Pages/account/forgot-password/forgot-password.component.js +48 -0
  9. package/esm2015/lib/Pages/configurations/configuration/configuration.component.js +392 -387
  10. package/esm2015/lib/Pages/core/authentication/auth.guard.js +10 -4
  11. package/esm2015/lib/Pages/core/authentication/auth.service.js +1 -2
  12. package/esm2015/lib/Pages/departments/department/department.component.js +49 -84
  13. package/esm2015/lib/Pages/departments/department-info/department-info.component.js +85 -94
  14. package/esm2015/lib/Pages/departments/departments.module.js +7 -2
  15. package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +224 -223
  16. package/esm2015/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.js +137 -146
  17. package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js +136 -153
  18. package/esm2015/lib/Pages/home/home.component.js +32 -26
  19. package/esm2015/lib/Pages/home/home.module.js +5 -10
  20. package/esm2015/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.js +336 -317
  21. package/esm2015/lib/Pages/jobs/jobs/jobs.component.js +168 -227
  22. package/esm2015/lib/Pages/license/license/license.component.js +68 -99
  23. package/esm2015/lib/Pages/localizations/localizations.component.js +378 -341
  24. package/esm2015/lib/Pages/logs/log/log.component.js +18 -27
  25. package/esm2015/lib/Pages/lookups/lookup/lookup.component.js +297 -288
  26. package/esm2015/lib/Pages/lookups/lookup-group/lookup-group.component.js +143 -165
  27. package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +234 -233
  28. package/esm2015/lib/Pages/lookups/lookups-routing.module.js +2 -2
  29. package/esm2015/lib/Pages/notifications/add/add.component.js +83 -76
  30. package/esm2015/lib/Pages/notifications/edit/edit.component.js +60 -63
  31. package/esm2015/lib/Pages/notifications/edit-email/edit-email.component.js +128 -126
  32. package/esm2015/lib/Pages/notifications/edit-sms/edit-sms.component.js +87 -85
  33. package/esm2015/lib/Pages/notifications/master-layouts/master-layouts.component.js +57 -58
  34. package/esm2015/lib/Pages/notifications/notifications-routing.module.js +1 -3
  35. package/esm2015/lib/Pages/notifications/notifications.module.js +3 -4
  36. package/esm2015/lib/Pages/notifications/template-info/template-info.component.js +232 -228
  37. package/esm2015/lib/Pages/notifications/templates/templates.component.js +347 -310
  38. package/esm2015/lib/Pages/providers/provider/provider.component.js +54 -52
  39. package/esm2015/lib/Pages/publicHolidays/public-holiday/public-holiday.component.js +268 -270
  40. package/esm2015/lib/Pages/roles/permission-set-info/permission-set-info.component.js +136 -152
  41. package/esm2015/lib/Pages/roles/permissions/permissions.component.js +182 -218
  42. package/esm2015/lib/Pages/roles/permissionsets/permissionsets.component.js +223 -258
  43. package/esm2015/lib/Pages/sectors/department-info/department-info.component.js +134 -142
  44. package/esm2015/lib/Pages/sectors/sector/sector.component.js +127 -144
  45. package/esm2015/lib/Pages/sectors/sector-info/sector-info.component.js +123 -139
  46. package/esm2015/lib/Pages/shared/Enums/ConfigurationScope.js +8 -0
  47. package/esm2015/lib/Pages/shared/Enums/ConfigurationType.js +8 -0
  48. package/esm2015/lib/Pages/shared/Enums/ConfigurationValueSource.js +6 -0
  49. package/esm2015/lib/Pages/shared/Enums/ParticipantType.js +8 -0
  50. package/esm2015/lib/Pages/shared/Services/AccountService.service.js +21 -0
  51. package/esm2015/lib/Pages/shared/Services/ConfigurationsService.service.js +15 -12
  52. package/esm2015/lib/Pages/shared/Services/DepartmentService.service.js +4 -5
  53. package/esm2015/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.js +10 -9
  54. package/esm2015/lib/Pages/shared/Services/HelpCenterService.service.js +10 -7
  55. package/esm2015/lib/Pages/shared/Services/ImpersonationRuleService.service.js +14 -8
  56. package/esm2015/lib/Pages/shared/Services/LicenseService.service.js +3 -3
  57. package/esm2015/lib/Pages/shared/Services/LogsService.js +1 -1
  58. package/esm2015/lib/Pages/shared/Services/LookupGroupsService.service.js +11 -5
  59. package/esm2015/lib/Pages/shared/Services/LookupService.service.js +31 -15
  60. package/esm2015/lib/Pages/shared/Services/PermissionSetService.service.js +18 -8
  61. package/esm2015/lib/Pages/shared/Services/PermissionsService.service.js +12 -9
  62. package/esm2015/lib/Pages/shared/Services/PublicHolidayService.service.js +9 -3
  63. package/esm2015/lib/Pages/shared/Services/SectorService.service.js +18 -13
  64. package/esm2015/lib/Pages/shared/Services/TemplateService.service.js +36 -29
  65. package/esm2015/lib/Pages/shared/Services/localizationsService.service .js +23 -13
  66. package/esm2015/lib/Pages/shared/Services/provider.service.js +5 -7
  67. package/esm2015/lib/Pages/shared/Services/userService.service.js +10 -2
  68. package/esm2015/lib/Pages/shared/models/AccountModels/forgotPasswordModel.js +6 -0
  69. package/esm2015/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.js +1 -1
  70. package/esm2015/lib/Pages/shared/models/DepartmentModels/DepartmentModel.js +1 -1
  71. package/esm2015/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.js +1 -1
  72. package/esm2015/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.js +1 -1
  73. package/esm2015/lib/Pages/shared/models/Lookups/LookupItem.js +1 -1
  74. package/esm2015/lib/Pages/shared/models/Lookups/LookupModel.js +1 -2
  75. package/esm2015/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.js +1 -1
  76. package/esm2015/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.js +1 -1
  77. package/esm2015/lib/Pages/users/users.component.js +398 -409
  78. package/esm2015/lib/Pages/workflows/tabs/tabs.component.js +2 -2
  79. package/esm2015/lib/masterlayout-routing.module.js +5 -4
  80. package/esm2015/lib/masterlayout.component.js +22 -32
  81. package/esm2015/lib/masterlayout.module.js +26 -22
  82. package/esm2015/public-api.js +2 -1
  83. package/fesm2015/bnsights-bbsf-admin-portal.js +17234 -17314
  84. package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
  85. package/lib/Pages/account/account.component.d.ts +5 -1
  86. package/lib/Pages/account/account.module.d.ts +8 -6
  87. package/lib/Pages/account/forgot-password/forgot-password.component.d.ts +20 -0
  88. package/lib/Pages/configurations/configuration/configuration.component.d.ts +39 -31
  89. package/lib/Pages/core/authentication/auth.guard.d.ts +1 -0
  90. package/lib/Pages/departments/department/department.component.d.ts +15 -13
  91. package/lib/Pages/departments/department-info/department-info.component.d.ts +31 -28
  92. package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +34 -32
  93. package/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.d.ts +31 -34
  94. package/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.d.ts +30 -35
  95. package/lib/Pages/home/home.component.d.ts +4 -4
  96. package/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.d.ts +43 -42
  97. package/lib/Pages/jobs/jobs/jobs.component.d.ts +56 -62
  98. package/lib/Pages/license/license/license.component.d.ts +25 -23
  99. package/lib/Pages/localizations/localizations.component.d.ts +77 -65
  100. package/lib/Pages/logs/log/log.component.d.ts +7 -11
  101. package/lib/Pages/lookups/lookup/lookup.component.d.ts +64 -59
  102. package/lib/Pages/lookups/lookup-group/lookup-group.component.d.ts +44 -45
  103. package/lib/Pages/lookups/lookup-item/lookup-item.component.d.ts +62 -56
  104. package/lib/Pages/notifications/add/add.component.d.ts +13 -11
  105. package/lib/Pages/notifications/edit/edit.component.d.ts +14 -14
  106. package/lib/Pages/notifications/edit-email/edit-email.component.d.ts +18 -20
  107. package/lib/Pages/notifications/edit-sms/edit-sms.component.d.ts +15 -16
  108. package/lib/Pages/notifications/master-layouts/master-layouts.component.d.ts +24 -25
  109. package/lib/Pages/notifications/notifications.module.d.ts +15 -16
  110. package/lib/Pages/notifications/template-info/template-info.component.d.ts +32 -32
  111. package/lib/Pages/notifications/templates/templates.component.d.ts +54 -46
  112. package/lib/Pages/providers/provider/provider.component.d.ts +14 -13
  113. package/lib/Pages/publicHolidays/public-holiday/public-holiday.component.d.ts +29 -27
  114. package/lib/Pages/roles/permission-set-info/permission-set-info.component.d.ts +39 -40
  115. package/lib/Pages/roles/permissions/permissions.component.d.ts +49 -54
  116. package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +53 -55
  117. package/lib/Pages/sectors/department-info/department-info.component.d.ts +41 -44
  118. package/lib/Pages/sectors/sector/sector.component.d.ts +35 -33
  119. package/lib/Pages/sectors/sector-info/sector-info.component.d.ts +40 -44
  120. package/lib/Pages/shared/Enums/ConfigurationScope.d.ts +5 -0
  121. package/lib/Pages/shared/Enums/ConfigurationType.d.ts +6 -0
  122. package/lib/Pages/shared/Enums/ConfigurationValueSource.d.ts +4 -0
  123. package/lib/Pages/shared/Enums/ParticipantType.d.ts +6 -0
  124. package/lib/Pages/shared/Services/AccountService.service.d.ts +10 -0
  125. package/lib/Pages/shared/Services/ActiveDirectoryService.service.d.ts +8 -8
  126. package/lib/Pages/shared/Services/ConfigurationsService.service.d.ts +7 -8
  127. package/lib/Pages/shared/Services/DepartmentService.service.d.ts +7 -7
  128. package/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.d.ts +5 -5
  129. package/lib/Pages/shared/Services/HelpCenterService.service.d.ts +8 -7
  130. package/lib/Pages/shared/Services/ImpersonationRuleService.service.d.ts +5 -5
  131. package/lib/Pages/shared/Services/JobsService.service.d.ts +1 -1
  132. package/lib/Pages/shared/Services/LicenseService.service.d.ts +2 -2
  133. package/lib/Pages/shared/Services/LogsService.d.ts +1 -1
  134. package/lib/Pages/shared/Services/LookupGroupsService.service.d.ts +4 -4
  135. package/lib/Pages/shared/Services/LookupService.service.d.ts +14 -11
  136. package/lib/Pages/shared/Services/PermissionSetService.service.d.ts +8 -7
  137. package/lib/Pages/shared/Services/PermissionsService.service.d.ts +5 -6
  138. package/lib/Pages/shared/Services/PublicHolidayService.service.d.ts +6 -6
  139. package/lib/Pages/shared/Services/SectorService.service.d.ts +7 -7
  140. package/lib/Pages/shared/Services/TemplateService.service.d.ts +20 -19
  141. package/lib/Pages/shared/Services/WorkflowActivityService.service.d.ts +3 -3
  142. package/lib/Pages/shared/Services/WorkflowService.service.d.ts +3 -3
  143. package/lib/Pages/shared/Services/WorkflowVariablesService.service.d.ts +4 -4
  144. package/lib/Pages/shared/Services/localizationsService.service .d.ts +12 -11
  145. package/lib/Pages/shared/Services/provider.service.d.ts +10 -10
  146. package/lib/Pages/shared/Services/userService.service.d.ts +14 -12
  147. package/lib/Pages/shared/models/AccountModels/forgotPasswordModel.d.ts +3 -0
  148. package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +0 -1
  149. package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +1 -0
  150. package/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.d.ts +1 -1
  151. package/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.d.ts +0 -2
  152. package/lib/Pages/shared/models/Lookups/LookupModel.d.ts +1 -1
  153. package/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.d.ts +1 -1
  154. package/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.d.ts +1 -1
  155. package/lib/Pages/users/users.component.d.ts +54 -68
  156. package/lib/masterlayout.component.d.ts +4 -5
  157. package/lib/masterlayout.module.d.ts +8 -9
  158. package/package.json +5 -3
  159. package/public-api.d.ts +1 -0
  160. package/src/lib/assets/sass/core/components/_variables.scss +1 -1
  161. package/src/lib/assets/sass/custom-styles-rtl.scss +5 -0
  162. package/src/lib/assets/sass/custom-styles.scss +153 -0
  163. package/src/lib/assets/sass/style-rtl.scss +2 -0
  164. package/src/lib/assets/sass/style.scss +2 -2
  165. package/esm2015/lib/Pages/notifications/edit-template/edit-template.component.js +0 -35
  166. package/lib/Pages/notifications/edit-template/edit-template.component.d.ts +0 -35
@@ -1,7 +1,6 @@
1
- import { __awaiter } from "tslib";
2
1
  import { Component, ViewChild } from '@angular/core';
3
2
  import { FormGroup } from '@angular/forms';
4
- import { FilterItem, FilterType, InputType, PagingOptions, TagsInputOptions, TextBoxOptions } from '@bnsights/bbsf-controls';
3
+ import { ConfirmationModalOptions, FilterItem, FilterType, FormOptions, InputType, PagingOptions, TagsInputOptions, TextBoxOptions } from '@bnsights/bbsf-controls';
5
4
  import { PageInfoService } from '../../../_metronic/core/services/page-info.service';
6
5
  import { DepartmentModel } from '../../shared/models/DepartmentModels/DepartmentModel';
7
6
  import { DepartmentUsersIDRequestModel } from '../../shared/models/DepartmentModels/DepartmentUsersIDRequestModel';
@@ -16,66 +15,62 @@ import * as i7 from "@bnsights/bbsf-controls";
16
15
  import * as i8 from "@angular/material/menu";
17
16
  import * as i9 from "../../empty-data/empty-data.component";
18
17
  import * as i10 from "@angular/common";
19
- import * as i11 from "@angular/forms";
20
- import * as i12 from "ng-inline-svg";
18
+ import * as i11 from "ng-inline-svg";
21
19
  export class DepartmentInfoComponent {
22
- constructor(activatedRoute, UtilityService, DepartmentService, environmentService, pageInfoService, authService, BBSFTranslateService, modalService) {
20
+ constructor(activatedRoute, utilityService, departmentService, pageInfoService, authService, modalService, requestHandlerService) {
23
21
  this.activatedRoute = activatedRoute;
24
- this.UtilityService = UtilityService;
25
- this.DepartmentService = DepartmentService;
26
- this.environmentService = environmentService;
22
+ this.utilityService = utilityService;
23
+ this.departmentService = departmentService;
27
24
  this.pageInfoService = pageInfoService;
28
25
  this.authService = authService;
29
- this.BBSFTranslateService = BBSFTranslateService;
30
26
  this.modalService = modalService;
27
+ this.requestHandlerService = requestHandlerService;
31
28
  //Page requirements
32
- this.ShowPageContent = false;
33
- this.AuthToken = "";
34
- this.language = "";
35
- this.ShowToolbar = true;
36
- this.ShowbreadCrumb = true;
37
- this.BreadcrumbTitle = this.UtilityService.getResourceValue('Departments');
38
- this.ApiUrl = "/api/admin/Department/";
29
+ this.ApiUrl = this.departmentService.ApiUrl;
30
+ //Parent department data
31
+ this.DepartmentId = "";
32
+ this.Department = new DepartmentModel();
39
33
  //Filter and paging components
40
34
  this.UserDepartmentForm = new FormGroup({});
41
35
  this.IsFilterLoaded = false;
42
36
  this.UserDepartmentPagingResult = [];
43
- //Parent department data
44
- this.DepartmentId = "";
45
- this.Department = new DepartmentModel();
37
+ this.FilteredUserDepartmentPagingResult = [];
46
38
  //Add Model Controls
47
39
  this.AddUsersToDepartmentForm = new FormGroup({});
40
+ this.deleteControlLoaded = false;
41
+ this.getAddUserToDepartmentModel = () => {
42
+ let paramArray = [];
43
+ let ResultModel = this.AddUsersToDepartmentForm.value;
44
+ let AddModel = new DepartmentUsersIDRequestModel();
45
+ for (let index = 0; index < ResultModel.UserAutoComplete.length; index++) {
46
+ const key = ResultModel.UserAutoComplete[index].key;
47
+ AddModel.UsersIDs.push(Number(key));
48
+ }
49
+ AddModel.DepartmentId = this.DepartmentId;
50
+ paramArray.push(AddModel);
51
+ return paramArray;
52
+ };
53
+ this.getAddUserToDepartmentFunction = (AddModel) => {
54
+ return this.departmentService.addUsersToDepartment(AddModel);
55
+ };
56
+ this.deleteUserFromDepartment = (deleteUserId) => {
57
+ return this.departmentService.deleteUserFromDepartment(deleteUserId);
58
+ };
48
59
  this.activatedRoute.params.subscribe(params => {
49
60
  this.DepartmentId = params['id'];
50
61
  });
51
62
  }
52
63
  ngOnInit() {
53
- return __awaiter(this, void 0, void 0, function* () {
54
- this.ShowPageContent = true;
55
- this.BBSFTranslateService.onLangChange.subscribe((event) => {
56
- this.ShowPageContent = false;
57
- this.language = event.lang;
58
- this.ngOnInit();
59
- });
60
- this.language = yield this.UtilityService.getCurrentLanguage();
61
- this.initializePage();
62
- this.loadBreadCrumpData();
63
- });
64
+ //Page header (breadcrumb and title)
65
+ this.loadBreadCrumpData();
64
66
  }
65
67
  //Paging functions
66
- reinitializeUserDepartmentPaging() {
67
- let element = this.pagingElement;
68
- element.ReinitializePaging();
69
- }
70
- updateUserDepartmentPaging() {
71
- let element = this.pagingElement;
72
- element.UpdatePaging();
73
- }
74
68
  setUserDepartmentListResult(result) {
75
69
  this.UserDepartmentPagingResult = result;
76
- this.ShowPageContent = true;
77
- this.UtilityService.stopBlockUI();
70
+ this.FilteredUserDepartmentPagingResult = this.UserDepartmentPagingResult;
71
+ this.utilityService.stopBlockUI();
78
72
  }
73
+ //Reset all Filters
79
74
  resetFilters() {
80
75
  this.UserDepartmentForm.controls["searchTextBox"].setValue(null);
81
76
  let element = this.pagingElement;
@@ -83,18 +78,19 @@ export class DepartmentInfoComponent {
83
78
  }
84
79
  //Get parent department name and set page title and breadcrumbs
85
80
  loadBreadCrumpData() {
86
- this.DepartmentService.getDepartmentInfo(this.DepartmentId).subscribe((result) => {
81
+ this.departmentService.getDepartmentInfo(this.DepartmentId).subscribe((result) => {
87
82
  let resultModel = result;
88
- this.SubheaderTitle = resultModel.val.departmentNamec;
89
- PageInfoService.PageTitle = this.SubheaderTitle;
83
+ PageInfoService.PageTitle = resultModel.val.departmentName;
90
84
  PageInfoService.PageBreadcrumbs = [
91
- { title: this.UtilityService.getResourceValue("Home"), path: '/Admin/Home', isSeparator: false, isActive: false },
85
+ { title: this.utilityService.getResourceValue("Home"), path: '/Admin/Home', isSeparator: false, isActive: false },
92
86
  { title: '', path: '', isSeparator: true, isActive: false },
93
- { title: this.UtilityService.getResourceValue("Departments"), path: '/Admin/Departments/Departments', isSeparator: false, isActive: false },
87
+ { title: this.utilityService.getResourceValue("Departments"), path: '/Admin/Departments/Departments', isSeparator: false, isActive: false },
94
88
  { title: '', path: '', isSeparator: true, isActive: false }
95
89
  ];
96
90
  this.pageInfoService.calculateTitle();
97
91
  this.pageInfoService.calculateBreadcrumbs();
92
+ //initialize page
93
+ this.initializePage();
98
94
  });
99
95
  }
100
96
  //Initialize filters and paging
@@ -104,13 +100,13 @@ export class DepartmentInfoComponent {
104
100
  this.searchTextBox.Name = "searchTextBox";
105
101
  this.searchTextBox.HideLabel = true;
106
102
  this.searchTextBox.Type = InputType.Text;
107
- this.searchTextBox.Placeholder = this.UtilityService.getResourceValue("SearchByNameOrEmail");
103
+ this.searchTextBox.Placeholder = this.utilityService.getResourceValue("SearchByNameOrEmail");
108
104
  this.DepartmentIdTextBox = new TextBoxOptions();
109
105
  this.DepartmentIdTextBox.Name = "DepartmentIdTextBox";
110
106
  this.DepartmentIdTextBox.LabelKey = "DepartmentIdTextBox";
111
107
  this.DepartmentIdTextBox.Type = InputType.Text;
112
108
  this.DepartmentIdTextBox.Value = this.DepartmentId;
113
- this.DepartmentIdTextBox.Placeholder = this.UtilityService.getResourceValue("SearchByName");
109
+ this.DepartmentIdTextBox.Placeholder = this.utilityService.getResourceValue("SearchByName");
114
110
  this.TextInputFilter = new FilterItem();
115
111
  this.TextInputFilter.FormControlName = "searchTextBox";
116
112
  this.TextInputFilter.ActionParameterName = "searchText";
@@ -118,11 +114,11 @@ export class DepartmentInfoComponent {
118
114
  this.TextInputFilter.FilterType = FilterType.TextBox;
119
115
  this.DepartmentIdTextInputFilter = new FilterItem();
120
116
  this.DepartmentIdTextInputFilter.FormControlName = "DepartmentIdTextBox";
121
- this.DepartmentIdTextInputFilter.ActionParameterName = "DepartmentId";
117
+ this.DepartmentIdTextInputFilter.ActionParameterName = "departmentId";
122
118
  this.DepartmentIdTextInputFilter.IsFormControl = true;
123
119
  this.DepartmentIdTextInputFilter.FilterType = FilterType.TextBox;
124
120
  this.UserDepartmentPaging = new PagingOptions();
125
- this.UserDepartmentPaging.ActionPostURL = this.environmentService.getBaseUrl() + this.ApiUrl + 'GetUsersByFilter';
121
+ this.UserDepartmentPaging.ActionPostURL = this.ApiUrl + 'GetUsersByFilter';
126
122
  this.UserDepartmentPaging.OnKeyPressFiltersControlNames = ["searchTextBox", "DepartmentIdTextBox"];
127
123
  this.UserDepartmentPaging.Filters = [this.TextInputFilter, this.DepartmentIdTextInputFilter];
128
124
  this.UserDepartmentPaging.PageSize = 10;
@@ -134,70 +130,65 @@ export class DepartmentInfoComponent {
134
130
  }
135
131
  //Add user to department
136
132
  showAddUserToDepartmentModal(AddUserToDepartmentModal) {
137
- this.UtilityService.startBlockUI();
133
+ this.utilityService.startBlockUI();
138
134
  this.AddUsersToDepartmentForm = new FormGroup({});
135
+ this.AddUserToDepartmentFormOptions = new FormOptions();
136
+ this.AddUserToDepartmentFormOptions.FormGroup = this.AddUsersToDepartmentForm;
137
+ this.AddUserToDepartmentFormOptions.GetModelFunction = this.getAddUserToDepartmentModel;
138
+ this.AddUserToDepartmentFormOptions.ServiceSubmitFunction = this.getAddUserToDepartmentFunction;
139
+ this.AddUserToDepartmentFormOptions.PagingReference = this.pagingElement;
139
140
  this.UserAutoComplete = new TagsInputOptions();
140
141
  this.UserAutoComplete.Name = "UserAutoComplete";
141
142
  this.UserAutoComplete.LabelKey = "Users";
142
143
  this.UserAutoComplete.IsRequired = true;
143
144
  this.UserAutoComplete.Value = null;
144
- this.UserAutoComplete.ActionURL = this.environmentService.getBaseUrl() + this.ApiUrl + "AutoCompleteUserList";
145
- this.UserAutoComplete.ValidationToken = this.AuthToken;
145
+ this.UserAutoComplete.ActionURL = this.ApiUrl + "AutoCompleteUserList";
146
+ this.UserAutoComplete.ValidationToken = this.authService.authorizationHeaderValue();
146
147
  this.modalService.open(AddUserToDepartmentModal);
147
- this.UtilityService.stopBlockUI();
148
- }
149
- addUserToDepartment() {
150
- if (this.AddUsersToDepartmentForm.invalid) {
151
- return;
152
- }
153
- else {
154
- let ResultModel = this.AddUsersToDepartmentForm.value;
155
- let AddModel = new DepartmentUsersIDRequestModel();
156
- for (let index = 0; index < ResultModel.UserAutoComplete.length; index++) {
157
- const key = ResultModel.UserAutoComplete[index].key;
158
- AddModel.UsersIDs.push(Number(key));
159
- }
160
- AddModel.DepartmentId = Number(this.DepartmentId);
161
- this.DepartmentService.addUsersToDepartment(AddModel).subscribe((result) => {
162
- this.modalService.dismissAll();
163
- let element = this.pagingElement;
164
- element.ReinitializePaging();
165
- }, (error) => {
166
- });
167
- }
148
+ this.utilityService.stopBlockUI();
168
149
  }
169
150
  //Delete user from department
170
- showDeleteUserFromDepartmentModal(user, deleteUserDepartmentModal) {
171
- this.UtilityService.startBlockUI();
172
- this.deleteUserId = user.id;
173
- this.modalService.open(deleteUserDepartmentModal);
174
- this.UtilityService.stopBlockUI();
151
+ showDeleteUserFromDepartmentModal(encryptedUserId) {
152
+ this.deleteUserId = encryptedUserId;
153
+ //array sent to service function
154
+ let paramArray = [];
155
+ paramArray.push(this.deleteUserId);
156
+ this.DeleteConfirmationOptions = new ConfirmationModalOptions();
157
+ this.DeleteConfirmationOptions.ServiceSubmitFunction = this.deleteUserFromDepartment;
158
+ this.DeleteConfirmationOptions.ServiceSubmitModel = paramArray;
159
+ this.DeleteConfirmationOptions.PagingReference = this.pagingElement;
160
+ this.deleteControlLoaded = true;
161
+ setTimeout(() => {
162
+ this.ConfirmationModalControl.showModal();
163
+ }, 200);
175
164
  }
176
- deleteUserFromDepartment() {
177
- this.DepartmentService.deleteUserFromDepartment(this.deleteUserId.toString(), this.DepartmentId).subscribe((result) => {
178
- this.deleteUserId = 0;
179
- this.modalService.dismissAll();
180
- let element = this.pagingElement;
181
- element.ReinitializePaging();
182
- });
165
+ /**FunctionName:filterUserDepartmentList */
166
+ /**Declaration:function to filter user Department List in client-side */
167
+ /**Parameters:*/
168
+ /**searchValue: current value of search box*/
169
+ filterUserDepartmentList(searchValue) {
170
+ if (searchValue)
171
+ this.FilteredUserDepartmentPagingResult = this.UserDepartmentPagingResult.filter(item => item.userName.toLowerCase().includes(searchValue.toLowerCase()));
172
+ else
173
+ this.FilteredUserDepartmentPagingResult = this.UserDepartmentPagingResult;
174
+ }
175
+ ngOnDestroy() {
176
+ this.requestHandlerService.destroyHandler();
183
177
  }
184
178
  }
185
- DepartmentInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DepartmentInfoComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.UtilityService }, { token: i3.DepartmentService }, { token: i2.EnvironmentService }, { token: i4.PageInfoService }, { token: i2.AuthService }, { token: i2.BBSFTranslateService }, { token: i5.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
186
- DepartmentInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: DepartmentInfoComponent, selector: "lib-department-info", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["UserDepartmentPagingViewElement"], descendants: true }, { propertyName: "CloseAddUsersToDepartment", first: true, predicate: ["CloseAddUsersToDepartment"], descendants: true }, { propertyName: "CloseDeleteUserFromDepartmentModal", first: true, predicate: ["CloseDeleteUserFromDepartmentModal"], descendants: true }], ngImport: i0, template: "\r\n<block-ui></block-ui>\r\n <!-- Page Content -->\r\n <div *ngIf=\"ShowPageContent\" class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"UserDepartmentForm\">\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"DepartmentIdTextBox\" [group]=\"UserDepartmentForm\">\r\n </BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"UserDepartmentForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <!-- begin::Menu -->\r\n <button type=\"button\" class=\"btn btn-sm btn-primary\" title=\"Add\" (click)=\"showAddUserToDepartmentModal(AddUserToDepartmentModal)\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{UtilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n\r\n <!-- end::Menu -->\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"table-responsive\">\r\n <!--begin::Permission list-->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n\r\n <th class=\"min-w-150px\">{{UtilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150px\">{{UtilityService.getResourceValue(\"Email\")}}</th>\r\n <th class=\"min-w-150px\">{{UtilityService.getResourceValue(\"Roles\")}}</th>\r\n <th class=\"min-w-50px\">{{UtilityService.getResourceValue(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n\r\n <tr *ngFor=\"let user of UserDepartmentPagingResult\">\r\n\r\n <td>\r\n <span *ngIf=\"language=='en'\" class=\"text-dark\">{{user.name.english}}</span>\r\n <span *ngIf=\"language=='ar'\" class=\"text-dark\">{{user.name.arabic}}</span>\r\n\r\n </td>\r\n <td>{{user.email}}</td>\r\n <td>{{user.userPermsets}}</td>\r\n <td>\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <a ngbDropdownItem class=\"drop-item px-3\"\r\n (click)=\"showDeleteUserFromDepartmentModal(user,deleteUserDepartmentModal)\">\r\n <span class=\"drop-link px-3\">{{UtilityService.getResourceValue(\"Delete\")}}</span>\r\n </a>\r\n </mat-menu>\r\n </div>\r\n\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"UserDepartmentPagingResult.length == 0\">\r\n <td colspan=\"4\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!--end::Permission list-->\r\n </div>\r\n\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setUserDepartmentListResult($event)\" *ngIf=\"IsFilterLoaded\"\r\n [options]=\"UserDepartmentPaging\" [group]=\"UserDepartmentForm\" #UserDepartmentPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n\r\n <!--delete Modal-->\r\n <ng-template #deleteUserDepartmentModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{UtilityService.getResourceValue(\"Delete\")}} {{UtilityService.getResourceValue(\"User\")}}</h1>\r\n </div>\r\n <div class=\"notice d-flex bg-light-danger rounded border-danger border border-dashed mb-10 p-6\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{UtilityService.getResourceValue(\"Delete_Question\")}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseDeleteUserFromDepartmentModal id=\"CloseDeleteUserFromDepartmentModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3 \" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{UtilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" (click)=\"deleteUserFromDepartment()\"\r\n class=\"btn btn-light-danger btn-sm \">\r\n {{UtilityService.getResourceValue(\"Delete\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <!--add Modal-->\r\n <ng-template #AddUserToDepartmentModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\"> {{UtilityService.getResourceValue(\"Add\")}} {{UtilityService.getResourceValue(\"User\")}} </h1>\r\n </div>\r\n <form [formGroup]=\"AddUsersToDepartmentForm\"\r\n (ngSubmit)=\"addUserToDepartment()\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TagsInput [options]=\"UserAutoComplete\" [group]=\"AddUsersToDepartmentForm\">\r\n </BBSF-TagsInput>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseAddUsersToDepartment id=\"CloseAddUsersToDepartment\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{UtilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{UtilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </ng-template>\r\n", components: [{ type: i6.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i7.ɵd, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }, { type: i7.ɵs, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i7.ɵr, selector: "BBSF-TagsInput", inputs: ["group", "options"], outputs: ["OnChange"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11NgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i11.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i11.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["matMenuTriggerRestoreFocus", "mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { type: i5.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i12.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] });
179
+ DepartmentInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DepartmentInfoComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.UtilityService }, { token: i3.DepartmentService }, { token: i4.PageInfoService }, { token: i2.AuthService }, { token: i5.NgbModal }, { token: i2.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component });
180
+ DepartmentInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: DepartmentInfoComponent, selector: "lib-department-info", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["UserDepartmentPagingViewElement"], descendants: true }, { propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n<!-- Page Content -->\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"DepartmentIdTextBox\" [group]=\"UserDepartmentForm\">\r\n </BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"searchTextBox\" (OnChange)=\"filterUserDepartmentList($event)\" [group]=\"UserDepartmentForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <!-- begin::Menu -->\r\n <button type=\"button\" class=\"btn btn-sm btn-primary\" title=\"Add\"\r\n (click)=\"showAddUserToDepartmentModal(AddUserToDepartmentModal)\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n\r\n <!-- end::Menu -->\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"table-responsive\">\r\n <!--begin::Permission list-->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Email\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Roles\")}}</th>\r\n <th class=\"min-w-50px\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n\r\n <tr *ngFor=\"let user of FilteredUserDepartmentPagingResult\">\r\n\r\n <td>\r\n <span class=\"text-dark\">{{user.userName}}</span>\r\n </td>\r\n <td>{{user.email}}</td>\r\n <td>{{user.userPermsets}}</td>\r\n <td>\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"menu\"\r\n class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <a ngbDropdownItem class=\"drop-item px-3\"\r\n (click)=\"showDeleteUserFromDepartmentModal(user.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Delete\")}}</span>\r\n </a>\r\n </mat-menu>\r\n </div>\r\n\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"FilteredUserDepartmentPagingResult.length == 0\">\r\n <td colspan=\"4\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!--end::Permission list-->\r\n </div>\r\n\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setUserDepartmentListResult($event)\" *ngIf=\"IsFilterLoaded\" [options]=\"UserDepartmentPaging\"\r\n [group]=\"UserDepartmentForm\" #UserDepartmentPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n\r\n<!--add Modal-->\r\n<ng-template #AddUserToDepartmentModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\"\r\n (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\"> {{utilityService.getResourceValue(\"Add\")}} {{utilityService.getResourceValue(\"User\")}} </h1>\r\n </div>\r\n <BBSF-Form [options]=\"AddUserToDepartmentFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TagsInput [options]=\"UserAutoComplete\" [group]=\"AddUsersToDepartmentForm\">\r\n </BBSF-TagsInput>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseAddUsersToDepartment id=\"CloseAddUsersToDepartment\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!--delete Modal-->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"DeleteConfirmationOptions\" id=\"ConfirmationModalControl\"\r\n #ConfirmationModalControl></BBSF-ConfirmationModal>", components: [{ type: i6.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i7.ɵd, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }, { type: i7.ɵs, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i7.ɵv, selector: "BBSF-Form", inputs: ["options"] }, { type: i7.ɵr, selector: "BBSF-TagsInput", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7w, selector: "BBSF-ConfirmationModal", inputs: ["options"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["matMenuTriggerRestoreFocus", "mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { type: i5.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] });
187
181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DepartmentInfoComponent, decorators: [{
188
182
  type: Component,
189
183
  args: [{
190
184
  selector: 'lib-department-info',
191
185
  templateUrl: './department-info.component.html',
192
186
  }]
193
- }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.UtilityService }, { type: i3.DepartmentService }, { type: i2.EnvironmentService }, { type: i4.PageInfoService }, { type: i2.AuthService }, { type: i2.BBSFTranslateService }, { type: i5.NgbModal }]; }, propDecorators: { pagingElement: [{
187
+ }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.UtilityService }, { type: i3.DepartmentService }, { type: i4.PageInfoService }, { type: i2.AuthService }, { type: i5.NgbModal }, { type: i2.RequestHandlerService }]; }, propDecorators: { pagingElement: [{
194
188
  type: ViewChild,
195
189
  args: ['UserDepartmentPagingViewElement', { static: false }]
196
- }], CloseAddUsersToDepartment: [{
197
- type: ViewChild,
198
- args: ['CloseAddUsersToDepartment', { static: false }]
199
- }], CloseDeleteUserFromDepartmentModal: [{
190
+ }], ConfirmationModalControl: [{
200
191
  type: ViewChild,
201
- args: ['CloseDeleteUserFromDepartmentModal', { static: false }]
192
+ args: ['ConfirmationModalControl', { static: false }]
202
193
  }] } });
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwYXJ0bWVudC1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvZGVwYXJ0bWVudHMvZGVwYXJ0bWVudC1pbmZvL2RlcGFydG1lbnQtaW5mby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2RlcGFydG1lbnRzL2RlcGFydG1lbnQtaW5mby9kZXBhcnRtZW50LWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFHLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVFuSCxNQUFNLE9BQU8sdUJBQXVCO0lBbUNsQyxZQUFvQixjQUE4QixFQUFTLGNBQThCLEVBQVUsaUJBQW9DLEVBQzdILGtCQUFzQyxFQUFVLGVBQWdDLEVBQVUsV0FBd0IsRUFDbEgsb0JBQTBDLEVBQzFDLFlBQXNCO1FBSFosbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUM3SCx1QkFB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LHVCQUF1Qjt5R0FBdkIsdUJBQXVCLGljQ2RwQyw2M09BNkpBOzRGRC9JYSx1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLGtDQUFrQztpQkFDaEQ7cVRBcUJrRSxhQUFhO3NCQUE3RSxTQUFTO3VCQUFDLGlDQUFpQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFTSix5QkFBeUI7c0JBQW5GLFNBQVM7dUJBQUMsMkJBQTJCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUlXLGtDQUFrQztzQkFBckcsU0FBUzt1QkFBQyxvQ0FBb0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyAgRmlsdGVySXRlbSwgRmlsdGVyVHlwZSwgSW5wdXRUeXBlLCBQYWdpbmdPcHRpb25zLCBUYWdzSW5wdXRPcHRpb25zLCBUZXh0Qm94T3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEZXBhcnRtZW50TW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0RlcGFydG1lbnRNb2RlbHMvRGVwYXJ0bWVudE1vZGVsJztcclxuaW1wb3J0IHsgRGVwYXJ0bWVudFVzZXJzSURSZXF1ZXN0TW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0RlcGFydG1lbnRNb2RlbHMvRGVwYXJ0bWVudFVzZXJzSURSZXF1ZXN0TW9kZWwnO1xyXG5pbXBvcnQgeyBEZXBhcnRtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9EZXBhcnRtZW50U2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWRlcGFydG1lbnQtaW5mbycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RlcGFydG1lbnQtaW5mby5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXBhcnRtZW50SW5mb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIFNob3dQYWdlQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEF1dGhUb2tlbjogc3RyaW5nID0gXCJcIlxyXG4gIGxhbmd1YWdlOiBzdHJpbmcgPSBcIlwiXHJcbiAgU3ViaGVhZGVyVGl0bGU6IHN0cmluZztcclxuICBTaG93VG9vbGJhciA9IHRydWU7XHJcbiAgU2hvd2JyZWFkQ3J1bWIgPSB0cnVlO1xyXG4gIEJyZWFkY3J1bWJUaXRsZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRGVwYXJ0bWVudHMnKTtcclxuICBBcGlVcmwgPSBcIi9hcGkvYWRtaW4vRGVwYXJ0bWVudC9cIlxyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIGNvbXBvbmVudHNcclxuICBVc2VyRGVwYXJ0bWVudEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgRGVwYXJ0bWVudElkVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgRGVwYXJ0bWVudElkVGV4dElucHV0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIElzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgVXNlckRlcGFydG1lbnRQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgVXNlckRlcGFydG1lbnRQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgQFZpZXdDaGlsZCgnVXNlckRlcGFydG1lbnRQYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwYWdpbmdFbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICAvL1BhcmVudCBkZXBhcnRtZW50IGRhdGFcclxuICBEZXBhcnRtZW50SWQ6IHN0cmluZyA9IFwiXCJcclxuICBEZXBhcnRtZW50OiBEZXBhcnRtZW50TW9kZWwgPSBuZXcgRGVwYXJ0bWVudE1vZGVsKCk7XHJcblxyXG4gIC8vQWRkIE1vZGVsIENvbnRyb2xzXHJcbiAgQWRkVXNlcnNUb0RlcGFydG1lbnRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgVXNlckF1dG9Db21wbGV0ZTogVGFnc0lucHV0T3B0aW9ucztcclxuICBAVmlld0NoaWxkKCdDbG9zZUFkZFVzZXJzVG9EZXBhcnRtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIENsb3NlQWRkVXNlcnNUb0RlcGFydG1lbnQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8vZGVsZXRlICBNb2RlbCBDb250cm9sc1xyXG4gIGRlbGV0ZVVzZXJJZDogbnVtYmVyO1xyXG4gIEBWaWV3Q2hpbGQoJ0Nsb3NlRGVsZXRlVXNlckZyb21EZXBhcnRtZW50TW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgQ2xvc2VEZWxldGVVc2VyRnJvbURlcGFydG1lbnRNb2RhbDogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHB1YmxpYyBVdGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgRGVwYXJ0bWVudFNlcnZpY2U6IERlcGFydG1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSwgcHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6IFBhZ2VJbmZvU2VydmljZSwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCkge1xyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIHRoaXMuRGVwYXJ0bWVudElkID0gcGFyYW1zWydpZCddO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5TaG93UGFnZUNvbnRlbnQ9dHJ1ZTtcclxuICAgIHRoaXMuQkJTRlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpPT57XHJcbiAgICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50PWZhbHNlO1xyXG4gICAgICB0aGlzLmxhbmd1YWdlID0gZXZlbnQubGFuZztcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuICAgIHRoaXMubGFuZ3VhZ2UgPSAgYXdhaXQgdGhpcy5VdGlsaXR5U2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuICAgIHRoaXMubG9hZEJyZWFkQ3J1bXBEYXRhKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy9QYWdpbmcgZnVuY3Rpb25zXHJcbiAgcmVpbml0aWFsaXplVXNlckRlcGFydG1lbnRQYWdpbmcoKSB7XHJcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMucGFnaW5nRWxlbWVudCBhcyBhbnk7XHJcbiAgICBlbGVtZW50LlJlaW5pdGlhbGl6ZVBhZ2luZygpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVXNlckRlcGFydG1lbnRQYWdpbmcoKSB7XHJcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMucGFnaW5nRWxlbWVudCBhcyBhbnk7XHJcbiAgICBlbGVtZW50LlVwZGF0ZVBhZ2luZygpO1xyXG4gIH1cclxuXHJcbiAgc2V0VXNlckRlcGFydG1lbnRMaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5Vc2VyRGVwYXJ0bWVudFBhZ2luZ1Jlc3VsdCA9IHJlc3VsdFxyXG4gICAgdGhpcy5TaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgdGhpcy5VdGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpXHJcbiAgfVxyXG5cclxuICByZXNldEZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLlVzZXJEZXBhcnRtZW50Rm9ybS5jb250cm9sc1tcInNlYXJjaFRleHRCb3hcIl0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMucGFnaW5nRWxlbWVudCBhcyBhbnk7XHJcbiAgICBlbGVtZW50LlJlaW5pdGlhbGl6ZVBhZ2luZygpO1xyXG4gIH1cclxuXHJcbiAgLy9HZXQgcGFyZW50IGRlcGFydG1lbnQgbmFtZSBhbmQgc2V0IHBhZ2UgdGl0bGUgYW5kIGJyZWFkY3J1bWJzXHJcbiAgbG9hZEJyZWFkQ3J1bXBEYXRhKCkge1xyXG4gICAgdGhpcy5EZXBhcnRtZW50U2VydmljZS5nZXREZXBhcnRtZW50SW5mbyh0aGlzLkRlcGFydG1lbnRJZCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IHJlc3VsdE1vZGVsID0gcmVzdWx0IGFzIGFueVxyXG4gICAgICB0aGlzLlN1YmhlYWRlclRpdGxlID0gcmVzdWx0TW9kZWwudmFsLmRlcGFydG1lbnROYW1lYztcclxuICAgICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IHRoaXMuU3ViaGVhZGVyVGl0bGVcclxuICAgICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icyA9IFtcclxuICAgICAgICB7IHRpdGxlOiB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlcGFydG1lbnRzXCIpLCBwYXRoOiAnL0FkbWluL0RlcGFydG1lbnRzL0RlcGFydG1lbnRzJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfVxyXG5cclxuICAgICAgXTtcclxuXHJcbiAgICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gICAgLy9Jbml0aWFsaXplIGZpbHRlcnMgYW5kIHBhZ2luZ1xyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgLy8gVGV4dEJveCBpbnRpXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5OYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guUGxhY2Vob2xkZXIgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZWFyY2hCeU5hbWVPckVtYWlsXCIpO1xyXG5cclxuICAgIHRoaXMuRGVwYXJ0bWVudElkVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5EZXBhcnRtZW50SWRUZXh0Qm94Lk5hbWUgPSBcIkRlcGFydG1lbnRJZFRleHRCb3hcIlxyXG4gICAgdGhpcy5EZXBhcnRtZW50SWRUZXh0Qm94LkxhYmVsS2V5ID0gXCJEZXBhcnRtZW50SWRUZXh0Qm94XCJcclxuICAgIHRoaXMuRGVwYXJ0bWVudElkVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuRGVwYXJ0bWVudElkVGV4dEJveC5WYWx1ZSA9IHRoaXMuRGVwYXJ0bWVudElkO1xyXG4gICAgdGhpcy5EZXBhcnRtZW50SWRUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpXHJcblxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcbiAgICB0aGlzLkRlcGFydG1lbnRJZFRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLkRlcGFydG1lbnRJZFRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcIkRlcGFydG1lbnRJZFRleHRCb3hcIlxyXG4gICAgdGhpcy5EZXBhcnRtZW50SWRUZXh0SW5wdXRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwiRGVwYXJ0bWVudElkXCJcclxuICAgIHRoaXMuRGVwYXJ0bWVudElkVGV4dElucHV0RmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLkRlcGFydG1lbnRJZFRleHRJbnB1dEZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgdGhpcy5Vc2VyRGVwYXJ0bWVudFBhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLlVzZXJEZXBhcnRtZW50UGFnaW5nLkFjdGlvblBvc3RVUkwgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRCYXNlVXJsKCkgKyB0aGlzLkFwaVVybCArICdHZXRVc2Vyc0J5RmlsdGVyJztcclxuICAgIHRoaXMuVXNlckRlcGFydG1lbnRQYWdpbmcuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hUZXh0Qm94XCIsIFwiRGVwYXJ0bWVudElkVGV4dEJveFwiXVxyXG4gICAgdGhpcy5Vc2VyRGVwYXJ0bWVudFBhZ2luZy5GaWx0ZXJzID0gW3RoaXMuVGV4dElucHV0RmlsdGVyLCB0aGlzLkRlcGFydG1lbnRJZFRleHRJbnB1dEZpbHRlcl1cclxuICAgIHRoaXMuVXNlckRlcGFydG1lbnRQYWdpbmcuUGFnZVNpemUgPSAxMFxyXG4gICAgdGhpcy5Vc2VyRGVwYXJ0bWVudFBhZ2luZy5IaWRlUGFnaW5hdGlvbldoZW5QYWdlU2l6ZUVxdWFsT25lID0gdHJ1ZVxyXG4gICAgdGhpcy5Vc2VyRGVwYXJ0bWVudFBhZ2luZy5TaG93UGFnZVNpemVPcHRpb24gPSB0cnVlXHJcbiAgICB0aGlzLlVzZXJEZXBhcnRtZW50UGFnaW5nLlNob3dGaXJzdEFuZExhc3QgPSB0cnVlXHJcbiAgICB0aGlzLlVzZXJEZXBhcnRtZW50UGFnaW5nLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9BZGQgdXNlciB0byBkZXBhcnRtZW50XHJcbiAgc2hvd0FkZFVzZXJUb0RlcGFydG1lbnRNb2RhbChBZGRVc2VyVG9EZXBhcnRtZW50TW9kYWwpIHtcclxuXHJcbiAgICB0aGlzLlV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy5BZGRVc2Vyc1RvRGVwYXJ0bWVudEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG5cclxuICAgIHRoaXMuVXNlckF1dG9Db21wbGV0ZSA9IG5ldyBUYWdzSW5wdXRPcHRpb25zKCk7XHJcbiAgICB0aGlzLlVzZXJBdXRvQ29tcGxldGUuTmFtZSA9IFwiVXNlckF1dG9Db21wbGV0ZVwiO1xyXG4gICAgdGhpcy5Vc2VyQXV0b0NvbXBsZXRlLkxhYmVsS2V5ID0gXCJVc2Vyc1wiO1xyXG4gICAgdGhpcy5Vc2VyQXV0b0NvbXBsZXRlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5Vc2VyQXV0b0NvbXBsZXRlLlZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMuVXNlckF1dG9Db21wbGV0ZS5BY3Rpb25VUkwgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRCYXNlVXJsKCkgKyB0aGlzLkFwaVVybCArIFwiQXV0b0NvbXBsZXRlVXNlckxpc3RcIlxyXG4gICAgdGhpcy5Vc2VyQXV0b0NvbXBsZXRlLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuQXV0aFRva2VuXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZFVzZXJUb0RlcGFydG1lbnRNb2RhbCk7XHJcbiAgICB0aGlzLlV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgYWRkVXNlclRvRGVwYXJ0bWVudCgpIHtcclxuICAgIGlmICh0aGlzLkFkZFVzZXJzVG9EZXBhcnRtZW50Rm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkFkZFVzZXJzVG9EZXBhcnRtZW50Rm9ybS52YWx1ZTtcclxuICAgICAgbGV0IEFkZE1vZGVsOiBEZXBhcnRtZW50VXNlcnNJRFJlcXVlc3RNb2RlbCA9IG5ldyBEZXBhcnRtZW50VXNlcnNJRFJlcXVlc3RNb2RlbCgpO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgUmVzdWx0TW9kZWwuVXNlckF1dG9Db21wbGV0ZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBrZXkgPSBSZXN1bHRNb2RlbC5Vc2VyQXV0b0NvbXBsZXRlW2luZGV4XS5rZXk7XHJcbiAgICAgICAgQWRkTW9kZWwuVXNlcnNJRHMucHVzaChOdW1iZXIoa2V5KSlcclxuXHJcbiAgICAgIH1cclxuICAgICAgQWRkTW9kZWwuRGVwYXJ0bWVudElkID0gTnVtYmVyKHRoaXMuRGVwYXJ0bWVudElkKTtcclxuICAgICAgdGhpcy5EZXBhcnRtZW50U2VydmljZS5hZGRVc2Vyc1RvRGVwYXJ0bWVudChBZGRNb2RlbCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLnBhZ2luZ0VsZW1lbnQgYXMgYW55O1xyXG4gICAgICAgIGVsZW1lbnQuUmVpbml0aWFsaXplUGFnaW5nKCk7XHJcbiAgICAgIH0sIChlcnJvcikgPT4ge1xyXG5cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4vL0RlbGV0ZSB1c2VyIGZyb20gZGVwYXJ0bWVudFxyXG4gIHNob3dEZWxldGVVc2VyRnJvbURlcGFydG1lbnRNb2RhbCh1c2VyOiBhbnksIGRlbGV0ZVVzZXJEZXBhcnRtZW50TW9kYWwpIHtcclxuICAgIHRoaXMuVXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLmRlbGV0ZVVzZXJJZCA9IHVzZXIuaWQ7XHJcblxyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihkZWxldGVVc2VyRGVwYXJ0bWVudE1vZGFsKTtcclxuICAgIHRoaXMuVXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVVzZXJGcm9tRGVwYXJ0bWVudCgpIHtcclxuICAgIHRoaXMuRGVwYXJ0bWVudFNlcnZpY2UuZGVsZXRlVXNlckZyb21EZXBhcnRtZW50KHRoaXMuZGVsZXRlVXNlcklkLnRvU3RyaW5nKCksIHRoaXMuRGVwYXJ0bWVudElkKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLmRlbGV0ZVVzZXJJZCA9IDA7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKVxyXG4gICAgICBsZXQgZWxlbWVudCA9IHRoaXMucGFnaW5nRWxlbWVudCBhcyBhbnk7XHJcbiAgICAgIGVsZW1lbnQuUmVpbml0aWFsaXplUGFnaW5nKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG59XHJcbiIsIlxyXG48YmxvY2stdWk+PC9ibG9jay11aT5cclxuICA8IS0tIFBhZ2UgQ29udGVudCAtLT5cclxuICA8ZGl2ICpuZ0lmPVwiU2hvd1BhZ2VDb250ZW50XCIgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiVXNlckRlcGFydG1lbnRGb3JtXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwiRGVwYXJ0bWVudElkVGV4dEJveFwiIFtncm91cF09XCJVc2VyRGVwYXJ0bWVudEZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic2VhcmNoVGV4dEJveFwiIFtncm91cF09XCJVc2VyRGVwYXJ0bWVudEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICA8IS0tIGJlZ2luOjpNZW51IC0tPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgdGl0bGU9XCJBZGRcIiAoY2xpY2spPVwic2hvd0FkZFVzZXJUb0RlcGFydG1lbnRNb2RhbChBZGRVc2VyVG9EZXBhcnRtZW50TW9kYWwpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMgbWUtMVwiPjwvaT5cclxuICAgICAgICAgICAge3tVdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDwhLS0gZW5kOjpNZW51IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgIDwhLS1iZWdpbjo6UGVybWlzc2lvbiBsaXN0LS0+XHJcbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7VXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7VXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVtYWlsXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e1V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSb2xlc1wiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj57e1V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcblxyXG4gICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgdXNlciBvZiBVc2VyRGVwYXJ0bWVudFBhZ2luZ1Jlc3VsdFwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsYW5ndWFnZT09J2VuJ1wiIGNsYXNzPVwidGV4dC1kYXJrXCI+e3t1c2VyLm5hbWUuZW5nbGlzaH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxhbmd1YWdlPT0nYXInXCIgY2xhc3M9XCJ0ZXh0LWRhcmtcIj57e3VzZXIubmFtZS5hcmFiaWN9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7dXNlci5lbWFpbH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD57e3VzZXIudXNlclBlcm1zZXRzfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLWhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGEgbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dEZWxldGVVc2VyRnJvbURlcGFydG1lbnRNb2RhbCh1c2VyLGRlbGV0ZVVzZXJEZXBhcnRtZW50TW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e1V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiVXNlckRlcGFydG1lbnRQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICA8IS0tZW5kOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTBcIj5cclxuICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldFVzZXJEZXBhcnRtZW50TGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlVzZXJEZXBhcnRtZW50UGFnaW5nXCIgW2dyb3VwXT1cIlVzZXJEZXBhcnRtZW50Rm9ybVwiICNVc2VyRGVwYXJ0bWVudFBhZ2luZ1ZpZXdFbGVtZW50PlxyXG4gICAgICAgIDwvQkJTRi1QYWdpbmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuICA8IS0tZGVsZXRlIE1vZGFsLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNkZWxldGVVc2VyRGVwYXJ0bWVudE1vZGFsIGxldC1tb2RhbD5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3tVdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVsZXRlXCIpfX0ge3tVdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVXNlclwiKX19PC9oMT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJub3RpY2UgZC1mbGV4IGJnLWxpZ2h0LWRhbmdlciByb3VuZGVkIGJvcmRlci1kYW5nZXIgYm9yZGVyIGJvcmRlci1kYXNoZWQgbWItMTAgcC02XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0ydHggc3ZnLWljb24tZGFuZ2VyIG1lLTRcIj5cclxuICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvZ2VuMDQ0LnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy02IHRleHQtZ3JheS03MDBcIj5cclxuICAgICAgICAgICAgICB7e1V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVfUXVlc3Rpb25cIil9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZURlbGV0ZVVzZXJGcm9tRGVwYXJ0bWVudE1vZGFsIGlkPVwiQ2xvc2VEZWxldGVVc2VyRnJvbURlcGFydG1lbnRNb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSBtZS0zIFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3tVdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkZWxldGVVc2VyRnJvbURlcGFydG1lbnQoKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQtZGFuZ2VyIGJ0bi1zbSBcIj5cclxuICAgICAgICAgIHt7VXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZVwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPCEtLWFkZCBNb2RhbC0tPlxyXG4gIDxuZy10ZW1wbGF0ZSAjQWRkVXNlclRvRGVwYXJ0bWVudE1vZGFsIGxldC1tb2RhbD5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+IHt7VXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19IHt7VXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlVzZXJcIil9fSA8L2gxPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJBZGRVc2Vyc1RvRGVwYXJ0bWVudEZvcm1cIlxyXG4gICAgICAgICAgICAobmdTdWJtaXQpPVwiYWRkVXNlclRvRGVwYXJ0bWVudCgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UYWdzSW5wdXQgW29wdGlvbnNdPVwiVXNlckF1dG9Db21wbGV0ZVwiIFtncm91cF09XCJBZGRVc2Vyc1RvRGVwYXJ0bWVudEZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLVRhZ3NJbnB1dD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgICA8YnV0dG9uICNDbG9zZUFkZFVzZXJzVG9EZXBhcnRtZW50IGlkPVwiQ2xvc2VBZGRVc2Vyc1RvRGVwYXJ0bWVudFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtICBtZS0zXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgIHt7VXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3tVdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9mb3JtPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuIl19
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwYXJ0bWVudC1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvZGVwYXJ0bWVudHMvZGVwYXJ0bWVudC1pbmZvL2RlcGFydG1lbnQtaW5mby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2RlcGFydG1lbnRzL2RlcGFydG1lbnQtaW5mby9kZXBhcnRtZW50LWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBaUMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwSyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBV25ILE1BQU0sT0FBTyx1QkFBdUI7SUFpQ2xDLFlBQ1UsY0FBOEIsRUFDL0IsY0FBOEIsRUFDN0IsaUJBQW9DLEVBQ3BDLGVBQWdDLEVBQ2hDLFdBQXdCLEVBQ3hCLFlBQXNCLEVBQ3RCLHFCQUE0QztRQU41QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FB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bkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixXQUFXLEVBQUUsa0NBQWtDO2lCQUNoRDtxUkFvQmtFLGFBQWE7c0JBQTdFLFNBQVM7dUJBQUMsaUNBQWlDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQWFMLHdCQUF3QjtzQkFBakYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucywgRmlsdGVySXRlbSwgRmlsdGVyVHlwZSwgRm9ybU9wdGlvbnMsIElucHV0VHlwZSwgUGFnaW5nT3B0aW9ucywgVGFnc0lucHV0T3B0aW9ucywgVGV4dEJveE9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGVwYXJ0bWVudE1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9EZXBhcnRtZW50TW9kZWxzL0RlcGFydG1lbnRNb2RlbCc7XHJcbmltcG9ydCB7IERlcGFydG1lbnRVc2Vyc0lEUmVxdWVzdE1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9EZXBhcnRtZW50TW9kZWxzL0RlcGFydG1lbnRVc2Vyc0lEUmVxdWVzdE1vZGVsJztcclxuaW1wb3J0IHsgRGVwYXJ0bWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvRGVwYXJ0bWVudFNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSAsIFJlcXVlc3RIYW5kbGVyU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBQYWdpbmdDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL0NvbmZpcm1hdGlvbk1vZGFsL0NvbmZpcm1hdGlvbk1vZGFsLmNvbXBvbmVudCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWRlcGFydG1lbnQtaW5mbycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RlcGFydG1lbnQtaW5mby5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXBhcnRtZW50SW5mb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgQXBpVXJsID0gdGhpcy5kZXBhcnRtZW50U2VydmljZS5BcGlVcmxcclxuXHJcbiAgLy9QYXJlbnQgZGVwYXJ0bWVudCBkYXRhXHJcbiAgRGVwYXJ0bWVudElkOiBzdHJpbmcgPSBcIlwiXHJcbiAgRGVwYXJ0bWVudDogRGVwYXJ0bWVudE1vZGVsID0gbmV3IERlcGFydG1lbnRNb2RlbCgpO1xyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIGNvbXBvbmVudHNcclxuICBVc2VyRGVwYXJ0bWVudEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgRGVwYXJ0bWVudElkVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgRGVwYXJ0bWVudElkVGV4dElucHV0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIElzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgVXNlckRlcGFydG1lbnRQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgVXNlckRlcGFydG1lbnRQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgRmlsdGVyZWRVc2VyRGVwYXJ0bWVudFBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnVXNlckRlcGFydG1lbnRQYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwYWdpbmdFbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuXHJcblxyXG5cclxuICAvL0FkZCBNb2RlbCBDb250cm9sc1xyXG4gIEFkZFVzZXJzVG9EZXBhcnRtZW50Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEFkZFVzZXJUb0RlcGFydG1lbnRGb3JtT3B0aW9uczogRm9ybU9wdGlvbnNcclxuICBVc2VyQXV0b0NvbXBsZXRlOiBUYWdzSW5wdXRPcHRpb25zO1xyXG5cclxuICAvL2RlbGV0ZSAgTW9kZWwgQ29udHJvbHNcclxuICBkZWxldGVVc2VySWQ6IHN0cmluZztcclxuICBEZWxldGVDb25maXJtYXRpb25PcHRpb25zOiBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnM7XHJcbiAgZGVsZXRlQ29udHJvbExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkZXBhcnRtZW50U2VydmljZTogRGVwYXJ0bWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLFxyXG5cclxuICApIHtcclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLkRlcGFydG1lbnRJZCA9IHBhcmFtc1snaWQnXTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAgbmdPbkluaXQoKTogdm9pZHtcclxuICAgIC8vUGFnZSBoZWFkZXIgKGJyZWFkY3J1bWIgYW5kIHRpdGxlKVxyXG4gICAgdGhpcy5sb2FkQnJlYWRDcnVtcERhdGEoKTtcclxuICAgXHJcblxyXG4gIH1cclxuXHJcblxyXG4gIC8vUGFnaW5nIGZ1bmN0aW9uc1xyXG4gIHNldFVzZXJEZXBhcnRtZW50TGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuVXNlckRlcGFydG1lbnRQYWdpbmdSZXN1bHQgPSByZXN1bHRcclxuICAgIHRoaXMuRmlsdGVyZWRVc2VyRGVwYXJ0bWVudFBhZ2luZ1Jlc3VsdCA9IHRoaXMuVXNlckRlcGFydG1lbnRQYWdpbmdSZXN1bHQ7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKClcclxuICB9XHJcbiAgLy9SZXNldCBhbGwgRmlsdGVyc1xyXG4gIHJlc2V0RmlsdGVycygpIHtcclxuICAgIHRoaXMuVXNlckRlcGFydG1lbnRGb3JtLmNvbnRyb2xzW1wic2VhcmNoVGV4dEJveFwiXS5zZXRWYWx1ZShudWxsKTtcclxuICAgIGxldCBlbGVtZW50ID0gdGhpcy5wYWdpbmdFbGVtZW50IGFzIGFueTtcclxuICAgIGVsZW1lbnQuUmVpbml0aWFsaXplUGFnaW5nKCk7XHJcbiAgfVxyXG4gIC8vR2V0IHBhcmVudCBkZXBhcnRtZW50IG5hbWUgYW5kIHNldCBwYWdlIHRpdGxlIGFuZCBicmVhZGNydW1ic1xyXG4gIGxvYWRCcmVhZENydW1wRGF0YSgpIHtcclxuICAgIHRoaXMuZGVwYXJ0bWVudFNlcnZpY2UuZ2V0RGVwYXJ0bWVudEluZm8odGhpcy5EZXBhcnRtZW50SWQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRNb2RlbCA9IHJlc3VsdCBhcyBhbnlcclxuICAgICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IHJlc3VsdE1vZGVsLnZhbC5kZXBhcnRtZW50TmFtZTtcclxuICAgICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icyA9IFtcclxuICAgICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlcGFydG1lbnRzXCIpLCBwYXRoOiAnL0FkbWluL0RlcGFydG1lbnRzL0RlcGFydG1lbnRzJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfVxyXG5cclxuICAgICAgXTtcclxuICAgICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgICAgIC8vaW5pdGlhbGl6ZSBwYWdlXHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9Jbml0aWFsaXplIGZpbHRlcnMgYW5kIHBhZ2luZ1xyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgLy8gVGV4dEJveCBpbnRpXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5OYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guUGxhY2Vob2xkZXIgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZWFyY2hCeU5hbWVPckVtYWlsXCIpO1xyXG5cclxuICAgIHRoaXMuRGVwYXJ0bWVudElkVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5EZXBhcnRtZW50SWRUZXh0Qm94Lk5hbWUgPSBcIkRlcGFydG1lbnRJZFRleHRCb3hcIlxyXG4gICAgdGhpcy5EZXBhcnRtZW50SWRUZXh0Qm94LkxhYmVsS2V5ID0gXCJEZXBhcnRtZW50SWRUZXh0Qm94XCJcclxuICAgIHRoaXMuRGVwYXJ0bWVudElkVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuRGVwYXJ0bWVudElkVGV4dEJveC5WYWx1ZSA9IHRoaXMuRGVwYXJ0bWVudElkO1xyXG4gICAgdGhpcy5EZXBhcnRtZW50SWRUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpXHJcblxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcbiAgICB0aGlzLkRlcGFydG1lbnRJZFRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLkRlcGFydG1lbnRJZFRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcIkRlcGFydG1lbnRJZFRleHRCb3hcIlxyXG4gICAgdGhpcy5EZXBhcnRtZW50SWRUZXh0SW5wdXRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwiZGVwYXJ0bWVudElkXCJcclxuICAgIHRoaXMuRGVwYXJ0bWVudElkVGV4dElucHV0RmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLkRlcGFydG1lbnRJZFRleHRJbnB1dEZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICBcclxuICAgIHRoaXMuVXNlckRlcGFydG1lbnRQYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5Vc2VyRGVwYXJ0bWVudFBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5BcGlVcmwgKyAnR2V0VXNlcnNCeUZpbHRlcic7XHJcbiAgICB0aGlzLlVzZXJEZXBhcnRtZW50UGFnaW5nLk9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzID0gW1wic2VhcmNoVGV4dEJveFwiLCBcIkRlcGFydG1lbnRJZFRleHRCb3hcIl1cclxuICAgIHRoaXMuVXNlckRlcGFydG1lbnRQYWdpbmcuRmlsdGVycyA9IFt0aGlzLlRleHRJbnB1dEZpbHRlciwgdGhpcy5EZXBhcnRtZW50SWRUZXh0SW5wdXRGaWx0ZXJdXHJcbiAgICB0aGlzLlVzZXJEZXBhcnRtZW50UGFnaW5nLlBhZ2VTaXplID0gMTBcclxuICAgIHRoaXMuVXNlckRlcGFydG1lbnRQYWdpbmcuSGlkZVBhZ2luYXRpb25XaGVuUGFnZVNpemVFcXVhbE9uZSA9IHRydWVcclxuICAgIHRoaXMuVXNlckRlcGFydG1lbnRQYWdpbmcuU2hvd1BhZ2VTaXplT3B0aW9uID0gdHJ1ZVxyXG4gICAgdGhpcy5Vc2VyRGVwYXJ0bWVudFBhZ2luZy5TaG93Rmlyc3RBbmRMYXN0ID0gdHJ1ZVxyXG4gICAgdGhpcy5Vc2VyRGVwYXJ0bWVudFBhZ2luZy5WYWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpXHJcblxyXG4gICAgdGhpcy5Jc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy9BZGQgdXNlciB0byBkZXBhcnRtZW50XHJcbiAgc2hvd0FkZFVzZXJUb0RlcGFydG1lbnRNb2RhbChBZGRVc2VyVG9EZXBhcnRtZW50TW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKClcclxuICAgIFxyXG4gICAgdGhpcy5BZGRVc2Vyc1RvRGVwYXJ0bWVudEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgdGhpcy5BZGRVc2VyVG9EZXBhcnRtZW50Rm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgIHRoaXMuQWRkVXNlclRvRGVwYXJ0bWVudEZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuQWRkVXNlcnNUb0RlcGFydG1lbnRGb3JtXHJcbiAgICB0aGlzLkFkZFVzZXJUb0RlcGFydG1lbnRGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRVc2VyVG9EZXBhcnRtZW50TW9kZWw7XHJcbiAgICB0aGlzLkFkZFVzZXJUb0RlcGFydG1lbnRGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEFkZFVzZXJUb0RlcGFydG1lbnRGdW5jdGlvbjtcclxuICAgIHRoaXMuQWRkVXNlclRvRGVwYXJ0bWVudEZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudFxyXG5cclxuICAgIHRoaXMuVXNlckF1dG9Db21wbGV0ZSA9IG5ldyBUYWdzSW5wdXRPcHRpb25zKCk7XHJcbiAgICB0aGlzLlVzZXJBdXRvQ29tcGxldGUuTmFtZSA9IFwiVXNlckF1dG9Db21wbGV0ZVwiO1xyXG4gICAgdGhpcy5Vc2VyQXV0b0NvbXBsZXRlLkxhYmVsS2V5ID0gXCJVc2Vyc1wiO1xyXG4gICAgdGhpcy5Vc2VyQXV0b0NvbXBsZXRlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5Vc2VyQXV0b0NvbXBsZXRlLlZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMuVXNlckF1dG9Db21wbGV0ZS5BY3Rpb25VUkwgPSB0aGlzLkFwaVVybCArIFwiQXV0b0NvbXBsZXRlVXNlckxpc3RcIlxyXG4gICAgdGhpcy5Vc2VyQXV0b0NvbXBsZXRlLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWRkVXNlclRvRGVwYXJ0bWVudE1vZGFsKTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBnZXRBZGRVc2VyVG9EZXBhcnRtZW50TW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuQWRkVXNlcnNUb0RlcGFydG1lbnRGb3JtLnZhbHVlO1xyXG4gICAgbGV0IEFkZE1vZGVsOiBEZXBhcnRtZW50VXNlcnNJRFJlcXVlc3RNb2RlbCA9IG5ldyBEZXBhcnRtZW50VXNlcnNJRFJlcXVlc3RNb2RlbCgpO1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFJlc3VsdE1vZGVsLlVzZXJBdXRvQ29tcGxldGUubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIGNvbnN0IGtleSA9IFJlc3VsdE1vZGVsLlVzZXJBdXRvQ29tcGxldGVbaW5kZXhdLmtleTtcclxuICAgICAgQWRkTW9kZWwuVXNlcnNJRHMucHVzaChOdW1iZXIoa2V5KSlcclxuICAgIH1cclxuICAgIEFkZE1vZGVsLkRlcGFydG1lbnRJZCA9IHRoaXMuRGVwYXJ0bWVudElkO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKEFkZE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0QWRkVXNlclRvRGVwYXJ0bWVudEZ1bmN0aW9uID0gKEFkZE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLmRlcGFydG1lbnRTZXJ2aWNlLmFkZFVzZXJzVG9EZXBhcnRtZW50KEFkZE1vZGVsKVxyXG4gIH1cclxuXHJcblxyXG4gIC8vRGVsZXRlIHVzZXIgZnJvbSBkZXBhcnRtZW50XHJcbiAgc2hvd0RlbGV0ZVVzZXJGcm9tRGVwYXJ0bWVudE1vZGFsKGVuY3J5cHRlZFVzZXJJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRlbGV0ZVVzZXJJZCA9IGVuY3J5cHRlZFVzZXJJZDtcclxuICAgIC8vYXJyYXkgc2VudCB0byBzZXJ2aWNlIGZ1bmN0aW9uXHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIHBhcmFtQXJyYXkucHVzaCh0aGlzLmRlbGV0ZVVzZXJJZCk7XHJcblxyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zID0gbmV3IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZGVsZXRlVXNlckZyb21EZXBhcnRtZW50O1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRNb2RlbCA9IHBhcmFtQXJyYXk7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG5cclxuICAgIHRoaXMuZGVsZXRlQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5Db25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd01vZGFsKCk7XHJcbiAgICB9LCAyMDApO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBkZWxldGVVc2VyRnJvbURlcGFydG1lbnQgPSAoZGVsZXRlVXNlcklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVwYXJ0bWVudFNlcnZpY2UuZGVsZXRlVXNlckZyb21EZXBhcnRtZW50KGRlbGV0ZVVzZXJJZCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqRnVuY3Rpb25OYW1lOmZpbHRlclVzZXJEZXBhcnRtZW50TGlzdCAqL1xyXG4gIC8qKkRlY2xhcmF0aW9uOmZ1bmN0aW9uIHRvIGZpbHRlciB1c2VyIERlcGFydG1lbnQgTGlzdCBpbiBjbGllbnQtc2lkZSAqL1xyXG4gIC8qKlBhcmFtZXRlcnM6Ki9cclxuICAvKipzZWFyY2hWYWx1ZTogY3VycmVudCB2YWx1ZSBvZiBzZWFyY2ggYm94Ki9cclxuICBmaWx0ZXJVc2VyRGVwYXJ0bWVudExpc3Qoc2VhcmNoVmFsdWUpIHtcclxuICAgIGlmIChzZWFyY2hWYWx1ZSlcclxuICAgICAgdGhpcy5GaWx0ZXJlZFVzZXJEZXBhcnRtZW50UGFnaW5nUmVzdWx0ID0gdGhpcy5Vc2VyRGVwYXJ0bWVudFBhZ2luZ1Jlc3VsdC5maWx0ZXIoaXRlbSA9PiBpdGVtLnVzZXJOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLkZpbHRlcmVkVXNlckRlcGFydG1lbnRQYWdpbmdSZXN1bHQgPSB0aGlzLlVzZXJEZXBhcnRtZW50UGFnaW5nUmVzdWx0XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxibG9jay11aT48L2Jsb2NrLXVpPlxyXG48IS0tIFBhZ2UgQ29udGVudCAtLT5cclxuPGRpdiAgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwiRGVwYXJ0bWVudElkVGV4dEJveFwiIFtncm91cF09XCJVc2VyRGVwYXJ0bWVudEZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzZWFyY2hUZXh0Qm94XCIgKE9uQ2hhbmdlKT1cImZpbHRlclVzZXJEZXBhcnRtZW50TGlzdCgkZXZlbnQpXCIgIFtncm91cF09XCJVc2VyRGVwYXJ0bWVudEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICA8IS0tIGJlZ2luOjpNZW51IC0tPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIHRpdGxlPVwiQWRkXCJcclxuICAgICAgICAgIChjbGljayk9XCJzaG93QWRkVXNlclRvRGVwYXJ0bWVudE1vZGFsKEFkZFVzZXJUb0RlcGFydG1lbnRNb2RhbClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMgbWUtMVwiPjwvaT5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDwhLS0gZW5kOjpNZW51IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgPCEtLWJlZ2luOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbWFpbFwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlJvbGVzXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcblxyXG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHVzZXIgb2YgRmlsdGVyZWRVc2VyRGVwYXJ0bWVudFBhZ2luZ1Jlc3VsdFwiPlxyXG5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFya1wiPnt7dXNlci51c2VyTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPnt7dXNlci5lbWFpbH19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+e3t1c2VyLnVzZXJQZXJtc2V0c319PC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy1oXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGVsZXRlVXNlckZyb21EZXBhcnRtZW50TW9kYWwodXNlci5pZEVuY3J5cHRlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPHRyICpuZ0lmPVwiRmlsdGVyZWRVc2VyRGVwYXJ0bWVudFBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8IS0tZW5kOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTBcIj5cclxuICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRVc2VyRGVwYXJ0bWVudExpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIiBbb3B0aW9uc109XCJVc2VyRGVwYXJ0bWVudFBhZ2luZ1wiXHJcbiAgICAgICAgW2dyb3VwXT1cIlVzZXJEZXBhcnRtZW50Rm9ybVwiICNVc2VyRGVwYXJ0bWVudFBhZ2luZ1ZpZXdFbGVtZW50PlxyXG4gICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuXHJcblxyXG48IS0tYWRkIE1vZGFsLS0+XHJcbjxuZy10ZW1wbGF0ZSAjQWRkVXNlclRvRGVwYXJ0bWVudE1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiXHJcbiAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj4ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX0ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVXNlclwiKX19IDwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiQWRkVXNlclRvRGVwYXJ0bWVudEZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UYWdzSW5wdXQgW29wdGlvbnNdPVwiVXNlckF1dG9Db21wbGV0ZVwiIFtncm91cF09XCJBZGRVc2Vyc1RvRGVwYXJ0bWVudEZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UYWdzSW5wdXQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlQWRkVXNlcnNUb0RlcGFydG1lbnQgaWQ9XCJDbG9zZUFkZFVzZXJzVG9EZXBhcnRtZW50XCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtICBtZS0zXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS1kZWxldGUgTW9kYWwtLT5cclxuPEJCU0YtQ29uZmlybWF0aW9uTW9kYWwgKm5nSWY9XCJkZWxldGVDb250cm9sTG9hZGVkXCIgW29wdGlvbnNdPVwiRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uc1wiIGlkPVwiQ29uZmlybWF0aW9uTW9kYWxDb250cm9sXCJcclxuICAjQ29uZmlybWF0aW9uTW9kYWxDb250cm9sPjwvQkJTRi1Db25maXJtYXRpb25Nb2RhbD4iXX0=
@@ -15,8 +15,9 @@ import { DataSecretService } from '../shared/Services/data.service';
15
15
  import { NgbModule } from "@ng-bootstrap/ng-bootstrap";
16
16
  import { MatMenuModule } from '@angular/material/menu';
17
17
  import { InlineSVGModule } from 'ng-inline-svg';
18
- import { AuthService, EnvironmentService, UtilityService, BBSFTranslateService } from '@bnsights/bbsf-utilities';
18
+ import { AuthService, EnvironmentService, UtilityService, BBSFTranslateService, RequestHandlerService } from '@bnsights/bbsf-utilities';
19
19
  import { EmptyDataModule } from '../empty-data/empty-data.module';
20
+ import { DepartmentService } from '../shared/Services/DepartmentService.service';
20
21
  import * as i0 from "@angular/core";
21
22
  import * as i1 from "ng-block-ui";
22
23
  export class DepartmentsModule {
@@ -41,6 +42,8 @@ DepartmentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versi
41
42
  UtilityService,
42
43
  AuthService,
43
44
  BBSFTranslateService,
45
+ DepartmentService,
46
+ RequestHandlerService
44
47
  ], imports: [[
45
48
  DepartmentsRoutingModule,
46
49
  CommonModule,
@@ -85,7 +88,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
85
88
  UtilityService,
86
89
  AuthService,
87
90
  BBSFTranslateService,
91
+ DepartmentService,
92
+ RequestHandlerService
88
93
  ]
89
94
  }]
90
95
  }] });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwYXJ0bWVudHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9kZXBhcnRtZW50cy9kZXBhcnRtZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFHLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsdUZBQXVGO0FBQ3ZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBWSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBOEJsRSxNQUFNLE9BQU8saUJBQWlCOzsrR0FBakIsaUJBQWlCO2dIQUFqQixpQkFBaUIsaUJBNUJiLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixhQUUvRSx3QkFBd0I7UUFDeEIsWUFBWTtRQUNaLG1CQUFtQjtRQUNuQixnQkFBZ0I7UUFDaEIsWUFBWTtRQUNaLFlBQVk7UUFDWixlQUFlLG9CQUVmLG1CQUFtQjtRQUNuQixXQUFXO1FBQ1gsa0JBQWtCO1FBQ2xCLFNBQVM7UUFDVCxhQUFhO1FBQ2IsZUFBZTtRQUNmLGVBQWU7Z0hBWU4saUJBQWlCLGFBVmxCO1FBQ1Isa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2QsV0FBVztRQUNYLG9CQUFvQjtLQUdyQixZQXpCUTtZQUNQLHdCQUF3QjtZQUN4QixZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osWUFBWTtZQUNaLGVBQWU7WUFDZixhQUFhLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLG1CQUFtQjtZQUNuQixXQUFXO1lBQ1gsa0JBQWtCO1lBQ2xCLFNBQVM7WUFDVCxhQUFhO1lBQ2IsZUFBZTtZQUNmLGVBQWU7U0FDaEI7NEZBV1UsaUJBQWlCO2tCQTdCN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSx1QkFBdUIsQ0FBQztvQkFDbEYsT0FBTyxFQUFFO3dCQUNQLHdCQUF3Qjt3QkFDeEIsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsYUFBYSxDQUFDLE9BQU8sRUFBRTt3QkFDdkIsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGtCQUFrQjt3QkFDbEIsU0FBUzt3QkFDVCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZUFBZTtxQkFDaEI7b0JBQ0QsU0FBUyxFQUFDO3dCQUNSLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsb0JBQW9CO3FCQUdyQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ICBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBEZXBhcnRtZW50c0NvbXBvbmVudCB9IGZyb20gJy4vZGVwYXJ0bWVudHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGVwYXJ0bWVudENvbXBvbmVudCB9IGZyb20gJy4vZGVwYXJ0bWVudC9kZXBhcnRtZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlcGFydG1lbnRJbmZvQ29tcG9uZW50IH0gZnJvbSAnLi9kZXBhcnRtZW50LWluZm8vZGVwYXJ0bWVudC1pbmZvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlcGFydG1lbnRzUm91dGluZ01vZHVsZSB9IGZyb20gJy4vZGVwYXJ0bWVudHMtcm91dGluZy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ2xpcGJvYXJkTW9kdWxlIH0gZnJvbSAnbmd4LWNsaXBib2FyZCc7XHJcbmltcG9ydCB7IEJCU0ZDb250cm9sc01vZHVsZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgQmxvY2tVSU1vZHVsZSB9IGZyb20gJ25nLWJsb2NrLXVpJztcclxuLy8gaW1wb3J0IHsgZW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL1NlcnZpY2VzL2Vudmlyb25tZW50c1NlcnZpY2UuU2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFTZWNyZXRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL1NlcnZpY2VzL2RhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JNb2R1bGUgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBJbmxpbmVTVkdNb2R1bGUgfSBmcm9tICduZy1pbmxpbmUtc3ZnJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgRW1wdHlEYXRhTW9kdWxlIH0gZnJvbSAnLi4vZW1wdHktZGF0YS9lbXB0eS1kYXRhLm1vZHVsZSc7XHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbRGVwYXJ0bWVudHNDb21wb25lbnQsIERlcGFydG1lbnRDb21wb25lbnQsIERlcGFydG1lbnRJbmZvQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBEZXBhcnRtZW50c1JvdXRpbmdNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgSHR0cENsaWVudE1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIENsaXBib2FyZE1vZHVsZSxcclxuICAgIEJsb2NrVUlNb2R1bGUuZm9yUm9vdCgpLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQkJTRkNvbnRyb2xzTW9kdWxlLFxyXG4gICAgTmdiTW9kdWxlLFxyXG4gICAgTWF0TWVudU1vZHVsZSxcclxuICAgIElubGluZVNWR01vZHVsZSwgICBcclxuICAgIEVtcHR5RGF0YU1vZHVsZVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOltcclxuICAgIEVudmlyb25tZW50U2VydmljZSxcclxuICAgIERhdGFTZWNyZXRTZXJ2aWNlLFxyXG4gICAgVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBBdXRoU2VydmljZSxcclxuICAgIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgXHJcblxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIERlcGFydG1lbnRzTW9kdWxlIHsgfVxyXG4iXX0=
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwYXJ0bWVudHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9kZXBhcnRtZW50cy9kZXBhcnRtZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFHLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsdUZBQXVGO0FBQ3ZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBWSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7O0FBOEJqRixNQUFNLE9BQU8saUJBQWlCOzsrR0FBakIsaUJBQWlCO2dIQUFqQixpQkFBaUIsaUJBNUJiLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixhQUUvRSx3QkFBd0I7UUFDeEIsWUFBWTtRQUNaLG1CQUFtQjtRQUNuQixnQkFBZ0I7UUFDaEIsWUFBWTtRQUNaLFlBQVk7UUFDWixlQUFlLG9CQUVmLG1CQUFtQjtRQUNuQixXQUFXO1FBQ1gsa0JBQWtCO1FBQ2xCLFNBQVM7UUFDVCxhQUFhO1FBQ2IsZUFBZTtRQUNmLGVBQWU7Z0hBWU4saUJBQWlCLGFBVmxCO1FBQ1Isa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2QsV0FBVztRQUNYLG9CQUFvQjtRQUNwQixpQkFBaUI7UUFDakIscUJBQXFCO0tBQ3RCLFlBekJRO1lBQ1Asd0JBQXdCO1lBQ3hCLFlBQVk7WUFDWixtQkFBbUI7WUFDbkIsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixZQUFZO1lBQ1osZUFBZTtZQUNmLGFBQWEsQ0FBQyxPQUFPLEVBQUU7WUFDdkIsbUJBQW1CO1lBQ25CLFdBQVc7WUFDWCxrQkFBa0I7WUFDbEIsU0FBUztZQUNULGFBQWE7WUFDYixlQUFlO1lBQ2YsZUFBZTtTQUNoQjs0RkFXVSxpQkFBaUI7a0JBN0I3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDO29CQUNsRixPQUFPLEVBQUU7d0JBQ1Asd0JBQXdCO3dCQUN4QixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixhQUFhLENBQUMsT0FBTyxFQUFFO3dCQUN2QixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixTQUFTO3dCQUNULGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixlQUFlO3FCQUNoQjtvQkFDRCxTQUFTLEVBQUM7d0JBQ1Isa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLGNBQWM7d0JBQ2QsV0FBVzt3QkFDWCxvQkFBb0I7d0JBQ3BCLGlCQUFpQjt3QkFDakIscUJBQXFCO3FCQUN0QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ICBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBEZXBhcnRtZW50c0NvbXBvbmVudCB9IGZyb20gJy4vZGVwYXJ0bWVudHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGVwYXJ0bWVudENvbXBvbmVudCB9IGZyb20gJy4vZGVwYXJ0bWVudC9kZXBhcnRtZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlcGFydG1lbnRJbmZvQ29tcG9uZW50IH0gZnJvbSAnLi9kZXBhcnRtZW50LWluZm8vZGVwYXJ0bWVudC1pbmZvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlcGFydG1lbnRzUm91dGluZ01vZHVsZSB9IGZyb20gJy4vZGVwYXJ0bWVudHMtcm91dGluZy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ2xpcGJvYXJkTW9kdWxlIH0gZnJvbSAnbmd4LWNsaXBib2FyZCc7XHJcbmltcG9ydCB7IEJCU0ZDb250cm9sc01vZHVsZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgQmxvY2tVSU1vZHVsZSB9IGZyb20gJ25nLWJsb2NrLXVpJztcclxuLy8gaW1wb3J0IHsgZW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL1NlcnZpY2VzL2Vudmlyb25tZW50c1NlcnZpY2UuU2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFTZWNyZXRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL1NlcnZpY2VzL2RhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JNb2R1bGUgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBJbmxpbmVTVkdNb2R1bGUgfSBmcm9tICduZy1pbmxpbmUtc3ZnJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBFbXB0eURhdGFNb2R1bGUgfSBmcm9tICcuLi9lbXB0eS1kYXRhL2VtcHR5LWRhdGEubW9kdWxlJztcclxuaW1wb3J0IHsgRGVwYXJ0bWVudFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvU2VydmljZXMvRGVwYXJ0bWVudFNlcnZpY2Uuc2VydmljZSc7XHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbRGVwYXJ0bWVudHNDb21wb25lbnQsIERlcGFydG1lbnRDb21wb25lbnQsIERlcGFydG1lbnRJbmZvQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBEZXBhcnRtZW50c1JvdXRpbmdNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgSHR0cENsaWVudE1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIENsaXBib2FyZE1vZHVsZSxcclxuICAgIEJsb2NrVUlNb2R1bGUuZm9yUm9vdCgpLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQkJTRkNvbnRyb2xzTW9kdWxlLFxyXG4gICAgTmdiTW9kdWxlLFxyXG4gICAgTWF0TWVudU1vZHVsZSxcclxuICAgIElubGluZVNWR01vZHVsZSwgICBcclxuICAgIEVtcHR5RGF0YU1vZHVsZVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOltcclxuICAgIEVudmlyb25tZW50U2VydmljZSxcclxuICAgIERhdGFTZWNyZXRTZXJ2aWNlLFxyXG4gICAgVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBBdXRoU2VydmljZSxcclxuICAgIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgRGVwYXJ0bWVudFNlcnZpY2UsXHJcbiAgICBSZXF1ZXN0SGFuZGxlclNlcnZpY2VcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXBhcnRtZW50c01vZHVsZSB7IH1cclxuIl19