@bnsights/bbsf-admin-portal 1.1.4 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/README.md +6 -2
  2. package/bnsights-bbsf-admin-portal-1.1.6.tgz +0 -0
  3. package/esm2022/lib/Pages/ActiveDirectories/active-directories.component.mjs +1 -1
  4. package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +146 -146
  5. package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +152 -152
  6. package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +1 -1
  7. package/esm2022/lib/Pages/_layout/components/aside/aside.component.mjs +1 -1
  8. package/esm2022/lib/Pages/anonymouslayout/activation/activation.component.mjs +15 -15
  9. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout-routing.module.mjs +1 -1
  10. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +1 -1
  11. package/esm2022/lib/Pages/anonymouslayout/error/error.component.mjs +7 -7
  12. package/esm2022/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +12 -12
  13. package/esm2022/lib/Pages/anonymouslayout/login/login.component.mjs +19 -19
  14. package/esm2022/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +15 -15
  15. package/esm2022/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +12 -12
  16. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +102 -102
  17. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +7 -7
  18. package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +271 -271
  19. package/esm2022/lib/Pages/core/auth.module.mjs +1 -1
  20. package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +1 -1
  21. package/esm2022/lib/Pages/core/authentication/auth.guard.mjs +3 -3
  22. package/esm2022/lib/Pages/departments/department/department.component.mjs +48 -48
  23. package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +32 -32
  24. package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +52 -52
  25. package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +20 -20
  26. package/esm2022/lib/Pages/documents/document-template-info/document-template-info.component.mjs +100 -100
  27. package/esm2022/lib/Pages/documents/document-templates/document-templates.component.mjs +151 -151
  28. package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +72 -72
  29. package/esm2022/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +27 -27
  30. package/esm2022/lib/Pages/empty-data/empty-data.component.mjs +1 -1
  31. package/esm2022/lib/Pages/empty-data/empty-data.module.mjs +1 -1
  32. package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +84 -84
  33. package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +1 -1
  34. package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +56 -56
  35. package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +58 -58
  36. package/esm2022/lib/Pages/home/home.component.mjs +7 -7
  37. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +129 -129
  38. package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +14 -14
  39. package/esm2022/lib/Pages/license/license/license.component.mjs +11 -11
  40. package/esm2022/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +41 -41
  41. package/esm2022/lib/Pages/localizations/localizations.component.mjs +125 -125
  42. package/esm2022/lib/Pages/logs/log/log.component.mjs +11 -11
  43. package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +120 -120
  44. package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +34 -34
  45. package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +83 -83
  46. package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +35 -35
  47. package/esm2022/lib/Pages/notifications/edit-email/edit-email.component.mjs +53 -53
  48. package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +50 -50
  49. package/esm2022/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +16 -16
  50. package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +20 -20
  51. package/esm2022/lib/Pages/notifications/template-info/template-info.component.mjs +135 -135
  52. package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +186 -186
  53. package/esm2022/lib/Pages/providers/provider/provider.component.mjs +122 -122
  54. package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +120 -120
  55. package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +29 -29
  56. package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +57 -57
  57. package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +79 -79
  58. package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +35 -35
  59. package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +27 -27
  60. package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +27 -27
  61. package/esm2022/lib/Pages/shared/Services/AccountService.service.mjs +1 -1
  62. package/esm2022/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +1 -1
  63. package/esm2022/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +1 -1
  64. package/esm2022/lib/Pages/shared/Services/DepartmentService.service.mjs +1 -1
  65. package/esm2022/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +1 -1
  66. package/esm2022/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +1 -1
  67. package/esm2022/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +1 -1
  68. package/esm2022/lib/Pages/shared/Services/HelpCenterService.service.mjs +1 -1
  69. package/esm2022/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +1 -1
  70. package/esm2022/lib/Pages/shared/Services/JobsService.service.mjs +1 -1
  71. package/esm2022/lib/Pages/shared/Services/LicenseService.service.mjs +1 -1
  72. package/esm2022/lib/Pages/shared/Services/LogsService.mjs +1 -1
  73. package/esm2022/lib/Pages/shared/Services/LookupGroupsService.service.mjs +1 -1
  74. package/esm2022/lib/Pages/shared/Services/LookupService.service.mjs +1 -1
  75. package/esm2022/lib/Pages/shared/Services/PermissionSetService.service.mjs +1 -1
  76. package/esm2022/lib/Pages/shared/Services/PermissionsService.service.mjs +1 -1
  77. package/esm2022/lib/Pages/shared/Services/PublicHolidayService.service.mjs +1 -1
  78. package/esm2022/lib/Pages/shared/Services/SectorService.service.mjs +1 -1
  79. package/esm2022/lib/Pages/shared/Services/TemplateService.service.mjs +1 -1
  80. package/esm2022/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +1 -1
  81. package/esm2022/lib/Pages/shared/Services/WorkflowService.service.mjs +1 -1
  82. package/esm2022/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +1 -1
  83. package/esm2022/lib/Pages/shared/Services/localizationsService.service .mjs +1 -1
  84. package/esm2022/lib/Pages/shared/Services/provider.service.mjs +1 -1
  85. package/esm2022/lib/Pages/shared/components/external-url/external-url.component.mjs +36 -36
  86. package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +74 -74
  87. package/esm2022/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +8 -8
  88. package/esm2022/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +10 -10
  89. package/esm2022/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +89 -89
  90. package/esm2022/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +7 -7
  91. package/esm2022/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +9 -9
  92. package/esm2022/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +10 -10
  93. package/esm2022/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +222 -222
  94. package/esm2022/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +7 -7
  95. package/esm2022/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +257 -257
  96. package/esm2022/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +25 -25
  97. package/esm2022/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +24 -24
  98. package/esm2022/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +6 -6
  99. package/esm2022/lib/Pages/shared/components/survey/survey-info/survey-info.component.mjs +52 -52
  100. package/esm2022/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +16 -16
  101. package/esm2022/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +20 -20
  102. package/esm2022/lib/Pages/shared/components/survey/survey.component.mjs +69 -69
  103. package/esm2022/lib/Pages/shared/components/survey-form/survey-form.component.mjs +180 -180
  104. package/esm2022/lib/Pages/shared/models/SurveyModels/survey-question-option.mjs +3 -3
  105. package/esm2022/lib/Pages/users/users.component.mjs +190 -190
  106. package/esm2022/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +176 -176
  107. package/esm2022/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +364 -364
  108. package/esm2022/lib/Pages/workflows/instance-info/instance-info.component.mjs +67 -67
  109. package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +227 -227
  110. package/esm2022/lib/Pages/workflows/version-info/version-info.component.mjs +31 -31
  111. package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +56 -56
  112. package/fesm2022/bnsights-bbsf-admin-portal.mjs +5187 -5187
  113. package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -1
  114. package/lib/Pages/ActiveDirectories/active-directories.component.d.ts +0 -1
  115. package/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.d.ts +2 -2
  116. package/lib/Pages/workflows/tabs/tabs.component.d.ts +1 -1
  117. package/package.json +3 -3
  118. package/esm2022/bnsights-test-test-admin-portal.mjs +0 -5
  119. package/fesm2022/bnsights-test-test-admin-portal.mjs +0 -27181
  120. package/fesm2022/bnsights-test-test-admin-portal.mjs.map +0 -1
@@ -85,102 +85,102 @@ export class EditAuthConfigurationComponent extends AppBaseComponent {
85
85
  }
86
86
  this.editForm = new FormGroup({});
87
87
  this.editFormOptions = new FormOptions();
88
- this.editFormOptions.FormGroup = this.editForm;
89
- this.editFormOptions.PagingReference = this.pagingElement;
90
- this.editFormOptions.GetModelFunction = this.getAddModel;
91
- this.editFormOptions.ServiceSubmitFunction = this.getSubmitFunction;
92
- this.editFormOptions.DisableSuccessNotification = false;
93
- this.editFormOptions.OnSuccessHandler = this.onSuccessHandler;
88
+ this.editFormOptions.formGroup = this.editForm;
89
+ this.editFormOptions.pagingReference = this.pagingElement;
90
+ this.editFormOptions.getModelFunction = this.getAddModel;
91
+ this.editFormOptions.serviceSubmitFunction = this.getSubmitFunction;
92
+ this.editFormOptions.disableSuccessNotification = false;
93
+ this.editFormOptions.onSuccessHandler = this.onSuccessHandler;
94
94
  switch (mode) {
95
95
  case AuthenticationMode.UAEPass:
96
96
  this.uaePassConfigurationModel = authConfigObject.uaePassConfig;
97
97
  this.baseURLTextBox = new TextBoxOptions();
98
- this.baseURLTextBox.Name = "baseUrl";
99
- this.baseURLTextBox.LabelKey = "BaseUrl";
100
- this.baseURLTextBox.Type = InputType.Text;
101
- this.baseURLTextBox.ViewType = ControlLayout.Vertical;
102
- this.baseURLTextBox.Value = this.uaePassConfigurationModel.baseUrl;
98
+ this.baseURLTextBox.name = "baseUrl";
99
+ this.baseURLTextBox.labelKey = "BaseUrl";
100
+ this.baseURLTextBox.type = InputType.Text;
101
+ this.baseURLTextBox.viewType = ControlLayout.Vertical;
102
+ this.baseURLTextBox.value = this.uaePassConfigurationModel.baseUrl;
103
103
  this.clientIdTextBox = new TextBoxOptions();
104
- this.clientIdTextBox.Name = "clientID";
105
- this.clientIdTextBox.LabelKey = "ClientID";
106
- this.clientIdTextBox.Type = InputType.Text;
107
- this.clientIdTextBox.ViewType = ControlLayout.Vertical;
108
- this.clientIdTextBox.Value = this.uaePassConfigurationModel.clientID;
104
+ this.clientIdTextBox.name = "clientID";
105
+ this.clientIdTextBox.labelKey = "ClientID";
106
+ this.clientIdTextBox.type = InputType.Text;
107
+ this.clientIdTextBox.viewType = ControlLayout.Vertical;
108
+ this.clientIdTextBox.value = this.uaePassConfigurationModel.clientID;
109
109
  this.secretKeyTextBox = new TextBoxOptions();
110
- this.secretKeyTextBox.Name = "secretKey";
111
- this.secretKeyTextBox.LabelKey = "SecretKey";
112
- this.secretKeyTextBox.Type = InputType.Text;
113
- this.secretKeyTextBox.ViewType = ControlLayout.Vertical;
114
- this.secretKeyTextBox.Value = this.uaePassConfigurationModel.secretKey;
110
+ this.secretKeyTextBox.name = "secretKey";
111
+ this.secretKeyTextBox.labelKey = "SecretKey";
112
+ this.secretKeyTextBox.type = InputType.Text;
113
+ this.secretKeyTextBox.viewType = ControlLayout.Vertical;
114
+ this.secretKeyTextBox.value = this.uaePassConfigurationModel.secretKey;
115
115
  this.redirectURLTextBox = new TextBoxOptions();
116
- this.redirectURLTextBox.Name = "redirectUrl";
117
- this.redirectURLTextBox.LabelKey = "RedirectUrl";
118
- this.redirectURLTextBox.Type = InputType.Text;
119
- this.redirectURLTextBox.ViewType = ControlLayout.Vertical;
120
- this.redirectURLTextBox.Value = this.uaePassConfigurationModel.redirectUrl;
116
+ this.redirectURLTextBox.name = "redirectUrl";
117
+ this.redirectURLTextBox.labelKey = "RedirectUrl";
118
+ this.redirectURLTextBox.type = InputType.Text;
119
+ this.redirectURLTextBox.viewType = ControlLayout.Vertical;
120
+ this.redirectURLTextBox.value = this.uaePassConfigurationModel.redirectUrl;
121
121
  this.accessLevelDropdown = new DropdownOptions();
122
- this.accessLevelDropdown.Name = "accessLevels";
123
- this.accessLevelDropdown.LabelKey = "AccessLevel";
124
- this.accessLevelDropdown.SingleSelection = false;
125
- this.accessLevelDropdown.SelectedItems = this.uaePassConfigurationModel.accessLevels;
126
- this.accessLevelDropdown.DataSource = this.loadUAEPassUserTypes();
122
+ this.accessLevelDropdown.name = "accessLevels";
123
+ this.accessLevelDropdown.labelKey = "AccessLevel";
124
+ this.accessLevelDropdown.singleSelection = false;
125
+ this.accessLevelDropdown.selectedItems = this.uaePassConfigurationModel.accessLevels;
126
+ this.accessLevelDropdown.dataSource = this.loadUAEPassUserTypes();
127
127
  this.linkingModeDropdown = new DropdownOptions();
128
- this.linkingModeDropdown.Name = "linkingMode";
129
- this.linkingModeDropdown.LabelKey = "LinkingMode";
130
- this.linkingModeDropdown.SingleSelection = true;
131
- this.linkingModeDropdown.SelectedItems = this.uaePassConfigurationModel.linkingMode;
132
- this.linkingModeDropdown.DataSource = this.loadUAEPassLinkingMode();
128
+ this.linkingModeDropdown.name = "linkingMode";
129
+ this.linkingModeDropdown.labelKey = "LinkingMode";
130
+ this.linkingModeDropdown.singleSelection = true;
131
+ this.linkingModeDropdown.selectedItems = this.uaePassConfigurationModel.linkingMode;
132
+ this.linkingModeDropdown.dataSource = this.loadUAEPassLinkingMode();
133
133
  this.sopPermissionMappingToggle = new ToggleSlideOptions();
134
- this.sopPermissionMappingToggle.Name = "sopPermissionMapping";
135
- this.sopPermissionMappingToggle.LabelKey = "SOPPermissionMapping";
136
- this.sopPermissionMappingToggle.Value = this.uaePassConfigurationModel.enableSOPPermissionMapping;
134
+ this.sopPermissionMappingToggle.name = "sopPermissionMapping";
135
+ this.sopPermissionMappingToggle.labelKey = "SOPPermissionMapping";
136
+ this.sopPermissionMappingToggle.value = this.uaePassConfigurationModel.enableSOPPermissionMapping;
137
137
  this.linkingExistingUsersToggle = new ToggleSlideOptions();
138
- this.linkingExistingUsersToggle.Name = "linkingExistingUsers";
139
- this.linkingExistingUsersToggle.LabelKey = "LinkingExistingUsers";
140
- this.linkingExistingUsersToggle.Value = this.uaePassConfigurationModel.enableLinkingExistingUsers;
138
+ this.linkingExistingUsersToggle.name = "linkingExistingUsers";
139
+ this.linkingExistingUsersToggle.labelKey = "LinkingExistingUsers";
140
+ this.linkingExistingUsersToggle.value = this.uaePassConfigurationModel.enableLinkingExistingUsers;
141
141
  this.importingNewUserToggle = new ToggleSlideOptions();
142
- this.importingNewUserToggle.Name = "importingNewUser";
143
- this.importingNewUserToggle.LabelKey = "ImportingNewUser";
144
- this.importingNewUserToggle.Value = this.uaePassConfigurationModel.enableImportingNewUser;
142
+ this.importingNewUserToggle.name = "importingNewUser";
143
+ this.importingNewUserToggle.labelKey = "ImportingNewUser";
144
+ this.importingNewUserToggle.value = this.uaePassConfigurationModel.enableImportingNewUser;
145
145
  this.updateUserInformationOnLoginToggle = new ToggleSlideOptions();
146
- this.updateUserInformationOnLoginToggle.Name = "updateUserInformationOnLogin";
147
- this.updateUserInformationOnLoginToggle.LabelKey = "UpdateUserInformationOnLogin";
148
- this.updateUserInformationOnLoginToggle.Value = this.uaePassConfigurationModel.enableUpdateUserInformationOnLogin;
146
+ this.updateUserInformationOnLoginToggle.name = "updateUserInformationOnLogin";
147
+ this.updateUserInformationOnLoginToggle.labelKey = "UpdateUserInformationOnLogin";
148
+ this.updateUserInformationOnLoginToggle.value = this.uaePassConfigurationModel.enableUpdateUserInformationOnLogin;
149
149
  this.userPermissionSetDropdown = new DropdownOptions();
150
- this.userPermissionSetDropdown.Name = "PermissionSets";
151
- this.userPermissionSetDropdown.LabelKey = "PermissionSets";
152
- this.userPermissionSetDropdown.SelectedItems = this.uaePassConfigurationModel.defaultPermissionSet;
153
- this.userPermissionSetDropdown.SingleSelection = true;
154
- this.userPermissionSetDropdown.AllowSearchFilter = true;
155
- this.userPermissionSetDropdown.IsRequired = true;
150
+ this.userPermissionSetDropdown.name = "PermissionSets";
151
+ this.userPermissionSetDropdown.labelKey = "PermissionSets";
152
+ this.userPermissionSetDropdown.selectedItems = this.uaePassConfigurationModel.defaultPermissionSet;
153
+ this.userPermissionSetDropdown.singleSelection = true;
154
+ this.userPermissionSetDropdown.allowSearchFilter = true;
155
+ this.userPermissionSetDropdown.isRequired = true;
156
156
  this.nameArCheckbox = new CheckBoxOptions();
157
- this.nameArCheckbox.Name = "nameAr";
158
- this.nameArCheckbox.LabelKey = "NameAR";
159
- this.nameArCheckbox.Value = this.uaePassConfigurationModel.userInfoMapping.nameAR;
157
+ this.nameArCheckbox.name = "nameAr";
158
+ this.nameArCheckbox.labelKey = "NameAR";
159
+ this.nameArCheckbox.value = this.uaePassConfigurationModel.userInfoMapping.nameAR;
160
160
  this.nameEnCheckbox = new CheckBoxOptions();
161
- this.nameEnCheckbox.Name = "nameEn";
162
- this.nameEnCheckbox.LabelKey = "NameEN";
163
- this.nameEnCheckbox.Value = this.uaePassConfigurationModel.userInfoMapping.nameEN;
161
+ this.nameEnCheckbox.name = "nameEn";
162
+ this.nameEnCheckbox.labelKey = "NameEN";
163
+ this.nameEnCheckbox.value = this.uaePassConfigurationModel.userInfoMapping.nameEN;
164
164
  this.emailCheckbox = new CheckBoxOptions();
165
- this.emailCheckbox.Name = "email";
166
- this.emailCheckbox.LabelKey = "Email";
167
- this.emailCheckbox.Value = this.uaePassConfigurationModel.userInfoMapping.email;
165
+ this.emailCheckbox.name = "email";
166
+ this.emailCheckbox.labelKey = "Email";
167
+ this.emailCheckbox.value = this.uaePassConfigurationModel.userInfoMapping.email;
168
168
  this.eIdCheckbox = new CheckBoxOptions();
169
- this.eIdCheckbox.Name = "eId";
170
- this.eIdCheckbox.LabelKey = "EID";
171
- this.eIdCheckbox.Value = this.uaePassConfigurationModel.userInfoMapping.EID;
169
+ this.eIdCheckbox.name = "eId";
170
+ this.eIdCheckbox.labelKey = "EID";
171
+ this.eIdCheckbox.value = this.uaePassConfigurationModel.userInfoMapping.EID;
172
172
  this.mobileCheckbox = new CheckBoxOptions();
173
- this.mobileCheckbox.Name = "mobile";
174
- this.mobileCheckbox.LabelKey = "Mobile";
175
- this.mobileCheckbox.Value = this.uaePassConfigurationModel.userInfoMapping.mobile;
173
+ this.mobileCheckbox.name = "mobile";
174
+ this.mobileCheckbox.labelKey = "Mobile";
175
+ this.mobileCheckbox.value = this.uaePassConfigurationModel.userInfoMapping.mobile;
176
176
  this.nationalityCheckbox = new CheckBoxOptions();
177
- this.nationalityCheckbox.Name = "nationality";
178
- this.nationalityCheckbox.LabelKey = "Nationality";
179
- this.nationalityCheckbox.Value = this.uaePassConfigurationModel.userInfoMapping.nationality;
177
+ this.nationalityCheckbox.name = "nationality";
178
+ this.nationalityCheckbox.labelKey = "Nationality";
179
+ this.nationalityCheckbox.value = this.uaePassConfigurationModel.userInfoMapping.nationality;
180
180
  this.genderCheckbox = new CheckBoxOptions();
181
- this.genderCheckbox.Name = "gender";
182
- this.genderCheckbox.LabelKey = "Gender";
183
- this.genderCheckbox.Value = this.uaePassConfigurationModel.userInfoMapping.gender;
181
+ this.genderCheckbox.name = "gender";
182
+ this.genderCheckbox.labelKey = "Gender";
183
+ this.genderCheckbox.value = this.uaePassConfigurationModel.userInfoMapping.gender;
184
184
  this.getPermissionSets();
185
185
  this.onChangeSOPPermissionToggleValue(this.uaePassConfigurationModel.enableSOPPermissionMapping);
186
186
  this.onLinkingExistingUsersToggleValue(this.uaePassConfigurationModel.enableLinkingExistingUsers);
@@ -197,30 +197,30 @@ export class EditAuthConfigurationComponent extends AppBaseComponent {
197
197
  }
198
198
  buildUAEPassConfigObject(formValue) {
199
199
  return {
200
- baseUrl: formValue[this.baseURLTextBox.Name],
201
- clientID: formValue[this.clientIdTextBox.Name],
202
- secretKey: formValue[this.secretKeyTextBox.Name],
203
- redirectUrl: formValue[this.redirectURLTextBox.Name],
204
- accessLevels: formValue[this.accessLevelDropdown.Name],
205
- enableLinkingExistingUsers: formValue[this.linkingExistingUsersToggle.Name],
206
- enableImportingNewUser: formValue[this.importingNewUserToggle.Name],
207
- enableUpdateUserInformationOnLogin: formValue[this.updateUserInformationOnLoginToggle.Name],
208
- defaultPermissionSet: formValue[this.userPermissionSetDropdown.Name],
209
- enableSOPPermissionMapping: formValue[this.sopPermissionMappingToggle.Name],
200
+ baseUrl: formValue[this.baseURLTextBox.name],
201
+ clientID: formValue[this.clientIdTextBox.name],
202
+ secretKey: formValue[this.secretKeyTextBox.name],
203
+ redirectUrl: formValue[this.redirectURLTextBox.name],
204
+ accessLevels: formValue[this.accessLevelDropdown.name],
205
+ enableLinkingExistingUsers: formValue[this.linkingExistingUsersToggle.name],
206
+ enableImportingNewUser: formValue[this.importingNewUserToggle.name],
207
+ enableUpdateUserInformationOnLogin: formValue[this.updateUserInformationOnLoginToggle.name],
208
+ defaultPermissionSet: formValue[this.userPermissionSetDropdown.name],
209
+ enableSOPPermissionMapping: formValue[this.sopPermissionMappingToggle.name],
210
210
  userTypePermissions: this.buildUserTypePermission(),
211
211
  userInfoMapping: this.buildUserInfoMapping(formValue),
212
- linkingMode: formValue[this.linkingModeDropdown.Name],
212
+ linkingMode: formValue[this.linkingModeDropdown.name],
213
213
  };
214
214
  }
215
215
  buildUserInfoMapping(formValue) {
216
216
  return {
217
- nameEN: formValue[this.nameEnCheckbox.Name],
218
- nameAR: formValue[this.nameArCheckbox.Name],
219
- email: formValue[this.emailCheckbox.Name],
220
- EID: formValue[this.eIdCheckbox.Name],
221
- mobile: formValue[this.mobileCheckbox.Name],
222
- nationality: formValue[this.nationalityCheckbox.Name],
223
- gender: formValue[this.genderCheckbox.Name]
217
+ nameEN: formValue[this.nameEnCheckbox.name],
218
+ nameAR: formValue[this.nameArCheckbox.name],
219
+ email: formValue[this.emailCheckbox.name],
220
+ EID: formValue[this.eIdCheckbox.name],
221
+ mobile: formValue[this.mobileCheckbox.name],
222
+ nationality: formValue[this.nationalityCheckbox.name],
223
+ gender: formValue[this.genderCheckbox.name]
224
224
  };
225
225
  }
226
226
  buildUserTypePermission() {
@@ -264,17 +264,17 @@ export class EditAuthConfigurationComponent extends AppBaseComponent {
264
264
  getPermissionSets() {
265
265
  this.userService.getPermissionSetsList().subscribe(res => {
266
266
  this.permissionSetList = res.permessionsets;
267
- this.userPermissionSetDropdown.DataSource = this.permissionSetList;
267
+ this.userPermissionSetDropdown.dataSource = this.permissionSetList;
268
268
  });
269
269
  }
270
270
  initDropDownOptions(userType) {
271
271
  var permissionDropDownOptions = new DropdownOptions();
272
- permissionDropDownOptions.Name = `permissions-user-type-${userType}`;
273
- permissionDropDownOptions.LabelValue = this.translate(UAEPassUserTypes[userType]) + "-" + this.translate("Permissions");
274
- permissionDropDownOptions.IsRequired = true;
275
- permissionDropDownOptions.ViewType = ControlLayout.Vertical;
276
- permissionDropDownOptions.DataSource = this.permissionsList;
277
- permissionDropDownOptions.SelectedItems = this.setPermissionForUAEPassUserTypes(userType);
272
+ permissionDropDownOptions.name = `permissions-user-type-${userType}`;
273
+ permissionDropDownOptions.labelValue = this.translate(UAEPassUserTypes[userType]) + "-" + this.translate("Permissions");
274
+ permissionDropDownOptions.isRequired = true;
275
+ permissionDropDownOptions.viewType = ControlLayout.Vertical;
276
+ permissionDropDownOptions.dataSource = this.permissionsList;
277
+ permissionDropDownOptions.selectedItems = this.setPermissionForUAEPassUserTypes(userType);
278
278
  return permissionDropDownOptions;
279
279
  }
280
280
  onChangeAccessLevels(selectedItems) {
@@ -314,7 +314,7 @@ export class EditAuthConfigurationComponent extends AppBaseComponent {
314
314
  });
315
315
  }
316
316
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EditAuthConfigurationComponent, deps: [{ token: i0.Injector }, { token: i1.MasterLayoutService }, { token: i2.ConfigurationsService }, { token: i3.UserService }], target: i0.ɵɵFactoryTarget.Component }); }
317
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: EditAuthConfigurationComponent, selector: "auth-configuration-edit", inputs: { pagingElement: "pagingElement", onSuccessTakePenaltyHandler: "onSuccessTakePenaltyHandler" }, viewQueries: [{ propertyName: "modal", first: true, predicate: ["editModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #editModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{translate(\"EditAuthConfiguration\")}}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-4 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/close-modal.svg'\">\r\n </div>\r\n </button>\r\n </div>\r\n <BBSF-Form [options]=\"editFormOptions\">\r\n <div class=\"modal-body\">\r\n <ng-container *ngIf=\"modeId == authenticationModeEnumValue.UAEPass\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"baseURLTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"clientIdTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"secretKeyTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"redirectURLTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList (OnChange)=\"onChangeAccessLevels($event)\" [options]=\"accessLevelDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList (OnChange)=\"changePermissionSet($event)\" [options]=\"userPermissionSetDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide (OnChange)=\"onChangeSOPPermissionToggleValue($event)\" [options]=\"sopPermissionMappingToggle\"\r\n [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"linkingExistingUsersToggle\" (OnChange)=\"onLinkingExistingUsersToggleValue($event)\"\r\n [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"importingNewUserToggle\" [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"updateUserInformationOnLoginToggle\" [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"configuration-header\" *ngIf=\"showUserTypePermissionsMapping\">\r\n <h5>{{translate(\"AccessLevelsPermissionMapping\")}}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let level of selectedAccessLevels\">\r\n <BBSF-DropdownList [options]=\"initDropDownOptions(level)\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"showUserTypeLinkingMapping\">\r\n <div class=\"configuration-header\">\r\n <h5>{{translate(\"LinkingOptions\")}}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let level of selectedAccessLevels\">\r\n <BBSF-DropdownList [options]=\"linkingModeDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"configuration-header\">\r\n <h5>{{translate(\"LinkingAttributesOptions\")}}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nameArCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nameEnCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"emailCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"eIdCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"mobileCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nationalityCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"genderCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n\r\n </ng-container>\r\n\r\n <div class=\"row\" *ngIf=\"modeId == authenticationModeEnumValue.AzureAD\">\r\n\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{translate(\"Cancel\")}}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" class=\"btn btn-sm btn-brand\">\r\n {{translate('Save')}}\r\n </button>\r\n </div>\r\n </BBSF-Form>\r\n</ng-template>", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i5.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i5.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { kind: "component", type: i5.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i5.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { kind: "directive", type: i6.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] }); }
317
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: EditAuthConfigurationComponent, selector: "auth-configuration-edit", inputs: { pagingElement: "pagingElement", onSuccessTakePenaltyHandler: "onSuccessTakePenaltyHandler" }, viewQueries: [{ propertyName: "modal", first: true, predicate: ["editModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #editModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{translate(\"EditAuthConfiguration\")}}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-4 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/close-modal.svg'\">\r\n </div>\r\n </button>\r\n </div>\r\n <BBSF-Form [options]=\"editFormOptions\">\r\n <div class=\"modal-body\">\r\n <ng-container *ngIf=\"modeId == authenticationModeEnumValue.UAEPass\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"baseURLTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"clientIdTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"secretKeyTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"redirectURLTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList (OnChange)=\"onChangeAccessLevels($event)\" [options]=\"accessLevelDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList (OnChange)=\"changePermissionSet($event)\" [options]=\"userPermissionSetDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide (OnChange)=\"onChangeSOPPermissionToggleValue($event)\" [options]=\"sopPermissionMappingToggle\"\r\n [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"linkingExistingUsersToggle\" (OnChange)=\"onLinkingExistingUsersToggleValue($event)\"\r\n [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"importingNewUserToggle\" [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"updateUserInformationOnLoginToggle\" [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"configuration-header\" *ngIf=\"showUserTypePermissionsMapping\">\r\n <h5>{{translate(\"AccessLevelsPermissionMapping\")}}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let level of selectedAccessLevels\">\r\n <BBSF-DropdownList [options]=\"initDropDownOptions(level)\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"showUserTypeLinkingMapping\">\r\n <div class=\"configuration-header\">\r\n <h5>{{translate(\"LinkingOptions\")}}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let level of selectedAccessLevels\">\r\n <BBSF-DropdownList [options]=\"linkingModeDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"configuration-header\">\r\n <h5>{{translate(\"LinkingAttributesOptions\")}}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nameArCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nameEnCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"emailCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"eIdCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"mobileCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nationalityCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"genderCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n\r\n </ng-container>\r\n\r\n <div class=\"row\" *ngIf=\"modeId == authenticationModeEnumValue.AzureAD\">\r\n\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{translate(\"Cancel\")}}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" class=\"btn btn-sm btn-brand\">\r\n {{translate('Save')}}\r\n </button>\r\n </div>\r\n </BBSF-Form>\r\n</ng-template>", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i5.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i5.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i5.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i5.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "directive", type: i6.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] }); }
318
318
  }
319
319
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EditAuthConfigurationComponent, decorators: [{
320
320
  type: Component,
@@ -327,4 +327,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
327
327
  type: ViewChild,
328
328
  args: ["editModal", { static: false }]
329
329
  }] } });
330
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9jb25maWd1cmF0aW9ucy9hdXRoLWNvbmZpZ3VyYXRpb24vYXV0aC1jb25maWd1cmF0aW9uLWVkaXQvYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9jb25maWd1cmF0aW9ucy9hdXRoLWNvbmZpZ3VyYXRpb24vYXV0aC1jb25maWd1cmF0aW9uLWVkaXQvYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBd0IsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHeEssT0FBTyxFQUFFLCtCQUErQixFQUFFLG9CQUFvQixFQUFxRCxNQUFNLCtEQUErRCxDQUFDO0FBQ3pMLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFDOzs7Ozs7OztBQVM1SSxNQUFNLE9BQU8sOEJBQStCLFNBQVEsZ0JBQWdCO0lBK0NsRSxZQUFZO0lBRVosWUFBWTtJQUVaLFlBQ1UsUUFBa0IsRUFDbEIsbUJBQXdDLEVBQ3hDLHFCQUE0QyxFQUM1QyxXQUF3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O2dCQUlxQyxLQUFLO3NCQUEvQyxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50LCBDaGVja0JveE9wdGlvbnMsIENvbnRyb2xMYXlvdXQsIERyb3Bkb3duT3B0aW9ucywgRm9ybU9wdGlvbnMsIElucHV0VHlwZSwgVGV4dEJveE9wdGlvbnMsIFRvZ2dsZVNsaWRlT3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgTWFzdGVyTGF5b3V0U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiwgVUFFUGFzc0NvbmZpZ3VyYXRpb24sIFVBRVBhc3NVc2VySW5mb01hcHBpbmcsIFVBRVBhc3NVc2VyVHlwZVBlcm1pc3Npb24gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL0NvbmZpZ3VyYXRpb25Nb2RlbHMvQ29uZmlndXJhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Nb2RlLCBVQUVQYXNzTGlua2luZ01vZGUsIFVBRVBhc3NVc2VyVHlwZXMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvRW51bXMvY29uZmlndXJhdGlvbi9hdXRoZW50ZWNhdGlvbi1jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0NvbmZpZ3VyYXRpb25zU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWxPcHRpb25zIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy91c2VyU2VydmljZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXV0aC1jb25maWd1cmF0aW9uLWVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRoLWNvbmZpZ3VyYXRpb24tZWRpdC5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0QXV0aENvbmZpZ3VyYXRpb25Db21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBwYWdpbmdFbGVtZW50O1xyXG4gIEBJbnB1dCgpIG9uU3VjY2Vzc1Rha2VQZW5hbHR5SGFuZGxlcjogRnVuY3Rpb247XHJcblxyXG4gIGVkaXRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZWRpdEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgQFZpZXdDaGlsZChcImVkaXRNb2RhbFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgbW9kYWw6IEVsZW1lbnRSZWY7XHJcblxyXG4gIG1vZGVJZDogbnVtYmVyID0gdW5kZWZpbmVkO1xyXG4gIGF1dGhlbnRpY2F0aW9uTW9kZUVudW1WYWx1ZSA9IEF1dGhlbnRpY2F0aW9uTW9kZTtcclxuXHJcbiAgLy8jcmVnaW9uIHVhZSBwYXNzIHByb3BzXHJcbiAgYmFzZVVSTFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIGNsaWVudElkVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2VjcmV0S2V5VGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgcmVkaXJlY3RVUkxUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBhY2Nlc3NMZXZlbERyb3Bkb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgbGlua2luZ01vZGVEcm9wZG93bjogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICBsaW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGltcG9ydGluZ05ld1VzZXJUb2dnbGU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICB1cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgc29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuXHJcbiAgdXNlclBlcm1pc3Npb25TZXREcm9wZG93bjogRHJvcGRvd25PcHRpb25zO1xyXG4gIHVzZXJQZXJtaXNzaW9uczogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICB1YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsOiBVQUVQYXNzQ29uZmlndXJhdGlvbiA9IG5ldyBVQUVQYXNzQ29uZmlndXJhdGlvbigpO1xyXG5cclxuICBwZXJtaXNzaW9uU2V0TGlzdCA9IFtdO1xyXG4gIHBlcm1pc3Npb25zTGlzdCA9IFtdO1xyXG5cclxuICBzaG93VXNlclR5cGVQZXJtaXNzaW9uc01hcHBpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93VXNlclR5cGVMaW5raW5nTWFwcGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHVhZVBhc3NVc2VyVHlwZUVudW06IFVBRVBhc3NVc2VyVHlwZXM7XHJcbiAgdWFlUGFzc1VzZXJUeXBlTGlzdDogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZEFjY2Vzc0xldmVsczogYW55W10gPSBbXTtcclxuXHJcbiAgLy8jcmVnaW9uIGxpbmtpbmcgbWFwcGluZ1xyXG4gIG5hbWVBckNoZWNrYm94OiBDaGVja0JveE9wdGlvbnM7XHJcbiAgbmFtZUVuQ2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuICBlbWFpbENoZWNrYm94OiBDaGVja0JveE9wdGlvbnM7XHJcbiAgZUlkQ2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuICBtb2JpbGVDaGVja2JveDogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIG5hdGlvbmFsaXR5Q2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuICBnZW5kZXJDaGVja2JveDogQ2hlY2tCb3hPcHRpb25zO1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIG1hc3RlckxheW91dFNlcnZpY2U6IE1hc3RlckxheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25zU2VydmljZTogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcbiAgLy8jcmVnaW9uIGhlbHBlclxyXG5cclxuICB0cmFuc2xhdGUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShrZXkpO1xyXG4gIH1cclxuXHJcbiAgbG9hZFVBRVBhc3NVc2VyVHlwZXMoKSB7XHJcbiAgICBsZXQgbGlzdDogYW55W10gPSBbXTtcclxuICAgIGZvciAodmFyIGl0ZW0gaW4gVUFFUGFzc1VzZXJUeXBlcykge1xyXG4gICAgICBpZiAocGFyc2VJbnQoaXRlbSkpXHJcbiAgICAgICAgbGlzdC5wdXNoKHtcclxuICAgICAgICAgIGtleTogK2l0ZW0sXHJcbiAgICAgICAgICB2YWx1ZTogVUFFUGFzc1VzZXJUeXBlc1tpdGVtXVxyXG4gICAgICAgIH0gYXMgYW55KVxyXG4gICAgfVxyXG4gICAgdGhpcy51YWVQYXNzVXNlclR5cGVMaXN0ID0gbGlzdDtcclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgbG9hZFVBRVBhc3NMaW5raW5nTW9kZSgpIHtcclxuICAgIGxldCBsaXN0OiBhbnlbXSA9IFtdO1xyXG4gICAgZm9yICh2YXIgaXRlbSBpbiBVQUVQYXNzTGlua2luZ01vZGUpIHtcclxuICAgICAgaWYgKHBhcnNlSW50KGl0ZW0pKVxyXG4gICAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgICBrZXk6ICtpdGVtLFxyXG4gICAgICAgICAgdmFsdWU6IHRoaXMudHJhbnNsYXRlKFVBRVBhc3NMaW5raW5nTW9kZVtpdGVtXSlcclxuICAgICAgICB9IGFzIGFueSlcclxuICAgIH1cclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgZ2V0VUFFUGFzc1VzZXJUeXBlVmFsdWUoa2V5OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLnVhZVBhc3NVc2VyVHlwZUxpc3QuZmluZChpID0+IGkua2V5ID09IGtleSkudmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgc2hvd01vZGFsKG1vZGU6IEF1dGhlbnRpY2F0aW9uTW9kZSwgYXV0aENvbmZpZ09iamVjdDogQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbikge1xyXG4gICAgdGhpcy5tb2RlSWQgPSBtb2RlO1xyXG4gICAgaWYgKHRoaXMuZWRpdEZvcm0pIHtcclxuICAgICAgdGhpcy5lZGl0Rm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMuZWRpdEZvcm0ucmVzZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVkaXRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgdGhpcy5lZGl0Rm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5lZGl0Rm9ybSBhcyBhbnk7XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRNb2RlbDtcclxuICAgIHRoaXMuZWRpdEZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0U3VibWl0RnVuY3Rpb247XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucy5EaXNhYmxlU3VjY2Vzc05vdGlmaWNhdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5lZGl0Rm9ybU9wdGlvbnMuT25TdWNjZXNzSGFuZGxlciA9IHRoaXMub25TdWNjZXNzSGFuZGxlcjtcclxuXHJcbiAgICBzd2l0Y2ggKG1vZGUpIHtcclxuICAgICAgY2FzZSBBdXRoZW50aWNhdGlvbk1vZGUuVUFFUGFzczpcclxuICAgICAgICB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwgPSBhdXRoQ29uZmlnT2JqZWN0LnVhZVBhc3NDb25maWc7XHJcblxyXG4gICAgICAgIHRoaXMuYmFzZVVSTFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmJhc2VVUkxUZXh0Qm94Lk5hbWUgPSBcImJhc2VVcmxcIjtcclxuICAgICAgICB0aGlzLmJhc2VVUkxUZXh0Qm94LkxhYmVsS2V5ID0gXCJCYXNlVXJsXCI7XHJcbiAgICAgICAgdGhpcy5iYXNlVVJMVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5iYXNlVVJMVGV4dEJveC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgICAgdGhpcy5iYXNlVVJMVGV4dEJveC5WYWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5iYXNlVXJsO1xyXG5cclxuICAgICAgICB0aGlzLmNsaWVudElkVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWRUZXh0Qm94Lk5hbWUgPSBcImNsaWVudElEXCI7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZFRleHRCb3guTGFiZWxLZXkgPSBcIkNsaWVudElEXCI7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZFRleHRCb3guVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWRUZXh0Qm94LlZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgICAgICB0aGlzLmNsaWVudElkVGV4dEJveC5WYWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5jbGllbnRJRDtcclxuXHJcbiAgICAgICAgdGhpcy5zZWNyZXRLZXlUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5zZWNyZXRLZXlUZXh0Qm94Lk5hbWUgPSBcInNlY3JldEtleVwiO1xyXG4gICAgICAgIHRoaXMuc2VjcmV0S2V5VGV4dEJveC5MYWJlbEtleSA9IFwiU2VjcmV0S2V5XCI7XHJcbiAgICAgICAgdGhpcy5zZWNyZXRLZXlUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLnNlY3JldEtleVRleHRCb3guVmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIHRoaXMuc2VjcmV0S2V5VGV4dEJveC5WYWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5zZWNyZXRLZXk7XHJcblxyXG4gICAgICAgIHRoaXMucmVkaXJlY3RVUkxUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5yZWRpcmVjdFVSTFRleHRCb3guTmFtZSA9IFwicmVkaXJlY3RVcmxcIjtcclxuICAgICAgICB0aGlzLnJlZGlyZWN0VVJMVGV4dEJveC5MYWJlbEtleSA9IFwiUmVkaXJlY3RVcmxcIjtcclxuICAgICAgICB0aGlzLnJlZGlyZWN0VVJMVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5yZWRpcmVjdFVSTFRleHRCb3guVmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIHRoaXMucmVkaXJlY3RVUkxUZXh0Qm94LlZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnJlZGlyZWN0VXJsO1xyXG5cclxuICAgICAgICB0aGlzLmFjY2Vzc0xldmVsRHJvcGRvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NMZXZlbERyb3Bkb3duLk5hbWUgPSBcImFjY2Vzc0xldmVsc1wiO1xyXG4gICAgICAgIHRoaXMuYWNjZXNzTGV2ZWxEcm9wZG93bi5MYWJlbEtleSA9IFwiQWNjZXNzTGV2ZWxcIjtcclxuICAgICAgICB0aGlzLmFjY2Vzc0xldmVsRHJvcGRvd24uU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NMZXZlbERyb3Bkb3duLlNlbGVjdGVkSXRlbXMgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuYWNjZXNzTGV2ZWxzO1xyXG4gICAgICAgIHRoaXMuYWNjZXNzTGV2ZWxEcm9wZG93bi5EYXRhU291cmNlID0gdGhpcy5sb2FkVUFFUGFzc1VzZXJUeXBlcygpO1xyXG5cclxuICAgICAgICB0aGlzLmxpbmtpbmdNb2RlRHJvcGRvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5saW5raW5nTW9kZURyb3Bkb3duLk5hbWUgPSBcImxpbmtpbmdNb2RlXCI7XHJcbiAgICAgICAgdGhpcy5saW5raW5nTW9kZURyb3Bkb3duLkxhYmVsS2V5ID0gXCJMaW5raW5nTW9kZVwiO1xyXG4gICAgICAgIHRoaXMubGlua2luZ01vZGVEcm9wZG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubGlua2luZ01vZGVEcm9wZG93bi5TZWxlY3RlZEl0ZW1zID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmxpbmtpbmdNb2RlO1xyXG4gICAgICAgIHRoaXMubGlua2luZ01vZGVEcm9wZG93bi5EYXRhU291cmNlID0gdGhpcy5sb2FkVUFFUGFzc0xpbmtpbmdNb2RlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuc29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5zb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZS5OYW1lID0gXCJzb3BQZXJtaXNzaW9uTWFwcGluZ1wiO1xyXG4gICAgICAgIHRoaXMuc29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGUuTGFiZWxLZXkgPSBcIlNPUFBlcm1pc3Npb25NYXBwaW5nXCI7XHJcbiAgICAgICAgdGhpcy5zb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZS5WYWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5lbmFibGVTT1BQZXJtaXNzaW9uTWFwcGluZztcclxuXHJcbiAgICAgICAgdGhpcy5saW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlLk5hbWUgPSBcImxpbmtpbmdFeGlzdGluZ1VzZXJzXCI7XHJcbiAgICAgICAgdGhpcy5saW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZS5MYWJlbEtleSA9IFwiTGlua2luZ0V4aXN0aW5nVXNlcnNcIjtcclxuICAgICAgICB0aGlzLmxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlLlZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmVuYWJsZUxpbmtpbmdFeGlzdGluZ1VzZXJzO1xyXG5cclxuICAgICAgICB0aGlzLmltcG9ydGluZ05ld1VzZXJUb2dnbGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5pbXBvcnRpbmdOZXdVc2VyVG9nZ2xlLk5hbWUgPSBcImltcG9ydGluZ05ld1VzZXJcIjtcclxuICAgICAgICB0aGlzLmltcG9ydGluZ05ld1VzZXJUb2dnbGUuTGFiZWxLZXkgPSBcIkltcG9ydGluZ05ld1VzZXJcIjtcclxuICAgICAgICB0aGlzLmltcG9ydGluZ05ld1VzZXJUb2dnbGUuVmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZW5hYmxlSW1wb3J0aW5nTmV3VXNlcjtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVXNlckluZm9ybWF0aW9uT25Mb2dpblRvZ2dsZS5OYW1lID0gXCJ1cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luXCI7XHJcbiAgICAgICAgdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlLkxhYmVsS2V5ID0gXCJVcGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luXCI7XHJcbiAgICAgICAgdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlLlZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmVuYWJsZVVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW47XHJcblxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd24uTmFtZSA9IFwiUGVybWlzc2lvblNldHNcIlxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5MYWJlbEtleSA9IFwiUGVybWlzc2lvblNldHNcIlxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5TZWxlY3RlZEl0ZW1zID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmRlZmF1bHRQZXJtaXNzaW9uU2V0O1xyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51c2VyUGVybWlzc2lvblNldERyb3Bkb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLm5hbWVBckNoZWNrYm94ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMubmFtZUFyQ2hlY2tib3guTmFtZSA9IFwibmFtZUFyXCJcclxuICAgICAgICB0aGlzLm5hbWVBckNoZWNrYm94LkxhYmVsS2V5ID0gXCJOYW1lQVJcIjtcclxuICAgICAgICB0aGlzLm5hbWVBckNoZWNrYm94LlZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnVzZXJJbmZvTWFwcGluZy5uYW1lQVI7XHJcblxyXG4gICAgICAgIHRoaXMubmFtZUVuQ2hlY2tib3ggPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5uYW1lRW5DaGVja2JveC5OYW1lID0gXCJuYW1lRW5cIlxyXG4gICAgICAgIHRoaXMubmFtZUVuQ2hlY2tib3guTGFiZWxLZXkgPSBcIk5hbWVFTlwiO1xyXG4gICAgICAgIHRoaXMubmFtZUVuQ2hlY2tib3guVmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlckluZm9NYXBwaW5nLm5hbWVFTjtcclxuXHJcbiAgICAgICAgdGhpcy5lbWFpbENoZWNrYm94ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZW1haWxDaGVja2JveC5OYW1lID0gXCJlbWFpbFwiXHJcbiAgICAgICAgdGhpcy5lbWFpbENoZWNrYm94LkxhYmVsS2V5ID0gXCJFbWFpbFwiO1xyXG4gICAgICAgIHRoaXMuZW1haWxDaGVja2JveC5WYWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VySW5mb01hcHBpbmcuZW1haWw7XHJcblxyXG4gICAgICAgIHRoaXMuZUlkQ2hlY2tib3ggPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5lSWRDaGVja2JveC5OYW1lID0gXCJlSWRcIlxyXG4gICAgICAgIHRoaXMuZUlkQ2hlY2tib3guTGFiZWxLZXkgPSBcIkVJRFwiO1xyXG4gICAgICAgIHRoaXMuZUlkQ2hlY2tib3guVmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlckluZm9NYXBwaW5nLkVJRDtcclxuXHJcbiAgICAgICAgdGhpcy5tb2JpbGVDaGVja2JveCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLm1vYmlsZUNoZWNrYm94Lk5hbWUgPSBcIm1vYmlsZVwiXHJcbiAgICAgICAgdGhpcy5tb2JpbGVDaGVja2JveC5MYWJlbEtleSA9IFwiTW9iaWxlXCI7XHJcbiAgICAgICAgdGhpcy5tb2JpbGVDaGVja2JveC5WYWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VySW5mb01hcHBpbmcubW9iaWxlO1xyXG5cclxuICAgICAgICB0aGlzLm5hdGlvbmFsaXR5Q2hlY2tib3ggPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5uYXRpb25hbGl0eUNoZWNrYm94Lk5hbWUgPSBcIm5hdGlvbmFsaXR5XCJcclxuICAgICAgICB0aGlzLm5hdGlvbmFsaXR5Q2hlY2tib3guTGFiZWxLZXkgPSBcIk5hdGlvbmFsaXR5XCI7XHJcbiAgICAgICAgdGhpcy5uYXRpb25hbGl0eUNoZWNrYm94LlZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnVzZXJJbmZvTWFwcGluZy5uYXRpb25hbGl0eTtcclxuXHJcbiAgICAgICAgdGhpcy5nZW5kZXJDaGVja2JveCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmdlbmRlckNoZWNrYm94Lk5hbWUgPSBcImdlbmRlclwiXHJcbiAgICAgICAgdGhpcy5nZW5kZXJDaGVja2JveC5MYWJlbEtleSA9IFwiR2VuZGVyXCI7XHJcbiAgICAgICAgdGhpcy5nZW5kZXJDaGVja2JveC5WYWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VySW5mb01hcHBpbmcuZ2VuZGVyO1xyXG5cclxuICAgICAgICB0aGlzLmdldFBlcm1pc3Npb25TZXRzKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZVNPUFBlcm1pc3Npb25Ub2dnbGVWYWx1ZSh0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZW5hYmxlU09QUGVybWlzc2lvbk1hcHBpbmcpO1xyXG4gICAgICAgIHRoaXMub25MaW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZVZhbHVlKHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5lbmFibGVMaW5raW5nRXhpc3RpbmdVc2Vycyk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZUFjY2Vzc0xldmVscyh0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuYWNjZXNzTGV2ZWxzKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5kZWZhdWx0UGVybWlzc2lvblNldClcclxuICAgICAgICAgIHRoaXMuY2hhbmdlUGVybWlzc2lvblNldCh0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZGVmYXVsdFBlcm1pc3Npb25TZXQpO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBBdXRoZW50aWNhdGlvbk1vZGUuQXp1cmVBRDpcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMubW9kYWwsIHsgc2l6ZTogJ3hsJyB9IGFzIE5nYk1vZGFsT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRBZGRNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCByZXN1bHRNb2RlbCA9IHRoaXMuZWRpdEZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IGVkaXRNb2RlbDogQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiA9IG5ldyBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKCk7XHJcbiAgICBlZGl0TW9kZWwubW9kZUlkID0gdGhpcy5tb2RlSWQ7XHJcbiAgICBlZGl0TW9kZWwudWFlUGFzc0NvbmZpZyA9IHRoaXMuYnVpbGRVQUVQYXNzQ29uZmlnT2JqZWN0KHJlc3VsdE1vZGVsKTtcclxuICAgIHJldHVybiBBcnJheShlZGl0TW9kZWwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3VibWl0RnVuY3Rpb24gPSAoZWRpdE1vZGVsOiBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25zU2VydmljZS51cGRhdGVBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb25EYXRhKGVkaXRNb2RlbClcclxuICB9XHJcblxyXG4gIG9uU3VjY2Vzc0hhbmRsZXIgPSAoKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLm1hc3RlckxheW91dFNlcnZpY2UucmVsb2FkQ29tcG9uZW50KClcclxuICB9XHJcblxyXG4gIGJ1aWxkVUFFUGFzc0NvbmZpZ09iamVjdChmb3JtVmFsdWU6IGFueSk6IFVBRVBhc3NDb25maWd1cmF0aW9uIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGJhc2VVcmw6IGZvcm1WYWx1ZVt0aGlzLmJhc2VVUkxUZXh0Qm94Lk5hbWVdLFxyXG4gICAgICBjbGllbnRJRDogZm9ybVZhbHVlW3RoaXMuY2xpZW50SWRUZXh0Qm94Lk5hbWVdLFxyXG4gICAgICBzZWNyZXRLZXk6IGZvcm1WYWx1ZVt0aGlzLnNlY3JldEtleVRleHRCb3guTmFtZV0sXHJcbiAgICAgIHJlZGlyZWN0VXJsOiBmb3JtVmFsdWVbdGhpcy5yZWRpcmVjdFVSTFRleHRCb3guTmFtZV0sXHJcbiAgICAgIGFjY2Vzc0xldmVsczogZm9ybVZhbHVlW3RoaXMuYWNjZXNzTGV2ZWxEcm9wZG93bi5OYW1lXSxcclxuICAgICAgZW5hYmxlTGlua2luZ0V4aXN0aW5nVXNlcnM6IGZvcm1WYWx1ZVt0aGlzLmxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlLk5hbWVdLFxyXG4gICAgICBlbmFibGVJbXBvcnRpbmdOZXdVc2VyOiBmb3JtVmFsdWVbdGhpcy5pbXBvcnRpbmdOZXdVc2VyVG9nZ2xlLk5hbWVdLFxyXG4gICAgICBlbmFibGVVcGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luOiBmb3JtVmFsdWVbdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlLk5hbWVdLFxyXG4gICAgICBkZWZhdWx0UGVybWlzc2lvblNldDogZm9ybVZhbHVlW3RoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5OYW1lXSxcclxuICAgICAgZW5hYmxlU09QUGVybWlzc2lvbk1hcHBpbmc6IGZvcm1WYWx1ZVt0aGlzLnNvcFBlcm1pc3Npb25NYXBwaW5nVG9nZ2xlLk5hbWVdLFxyXG4gICAgICB1c2VyVHlwZVBlcm1pc3Npb25zOiB0aGlzLmJ1aWxkVXNlclR5cGVQZXJtaXNzaW9uKCksXHJcbiAgICAgIHVzZXJJbmZvTWFwcGluZzogdGhpcy5idWlsZFVzZXJJbmZvTWFwcGluZyhmb3JtVmFsdWUpLFxyXG4gICAgICBsaW5raW5nTW9kZTogZm9ybVZhbHVlW3RoaXMubGlua2luZ01vZGVEcm9wZG93bi5OYW1lXSxcclxuICAgIH0gYXMgVUFFUGFzc0NvbmZpZ3VyYXRpb25cclxuICB9XHJcblxyXG4gIGJ1aWxkVXNlckluZm9NYXBwaW5nKGZvcm1WYWx1ZTogYW55KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuYW1lRU46IGZvcm1WYWx1ZVt0aGlzLm5hbWVFbkNoZWNrYm94Lk5hbWVdLFxyXG4gICAgICBuYW1lQVI6IGZvcm1WYWx1ZVt0aGlzLm5hbWVBckNoZWNrYm94Lk5hbWVdLFxyXG4gICAgICBlbWFpbDogZm9ybVZhbHVlW3RoaXMuZW1haWxDaGVja2JveC5OYW1lXSxcclxuICAgICAgRUlEOiBmb3JtVmFsdWVbdGhpcy5lSWRDaGVja2JveC5OYW1lXSxcclxuICAgICAgbW9iaWxlOiBmb3JtVmFsdWVbdGhpcy5tb2JpbGVDaGVja2JveC5OYW1lXSxcclxuICAgICAgbmF0aW9uYWxpdHk6IGZvcm1WYWx1ZVt0aGlzLm5hdGlvbmFsaXR5Q2hlY2tib3guTmFtZV0sXHJcbiAgICAgIGdlbmRlcjogZm9ybVZhbHVlW3RoaXMuZ2VuZGVyQ2hlY2tib3guTmFtZV1cclxuICAgIH0gYXMgVUFFUGFzc1VzZXJJbmZvTWFwcGluZztcclxuICB9XHJcblxyXG4gIGJ1aWxkVXNlclR5cGVQZXJtaXNzaW9uKCk6IFVBRVBhc3NVc2VyVHlwZVBlcm1pc3Npb25bXSB7XHJcbiAgICBsZXQgcmVzTGlzdDogVUFFUGFzc1VzZXJUeXBlUGVybWlzc2lvbltdID0gW107XHJcbiAgICBpZiAodGhpcy5zaG93VXNlclR5cGVQZXJtaXNzaW9uc01hcHBpbmcpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEFjY2Vzc0xldmVscy5mb3JFYWNoKGxldmVsID0+IHtcclxuICAgICAgICByZXNMaXN0LnB1c2goe1xyXG4gICAgICAgICAgdXNlclR5cGU6IGxldmVsLFxyXG4gICAgICAgICAgcGVybWlzc2lvbnM6IHRoaXMuZWRpdEZvcm0uY29udHJvbHNbYHBlcm1pc3Npb25zLXVzZXItdHlwZS0ke2xldmVsfWBdPy52YWx1ZSxcclxuICAgICAgICB9IGFzIFVBRVBhc3NVc2VyVHlwZVBlcm1pc3Npb24pXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc0xpc3Q7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gVUFFIFBhc3MgRnVuY3Rpb25zXHJcblxyXG4gIG9uTGlua2luZ0V4aXN0aW5nVXNlcnNUb2dnbGVWYWx1ZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zaG93VXNlclR5cGVMaW5raW5nTWFwcGluZyA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuc2hvd1VzZXJUeXBlTGlua2luZ01hcHBpbmcpXHJcbiAgICAgIHRoaXMuYWRkUmVxdWlyZWRWYWxpZGF0aW9uKFt0aGlzLmxpbmtpbmdNb2RlRHJvcGRvd25dLCB0aGlzLmVkaXRGb3JtLCB0aGlzLmVkaXRGb3JtT3B0aW9ucyk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKFt0aGlzLmxpbmtpbmdNb2RlRHJvcGRvd25dLCB0aGlzLmVkaXRGb3JtLCB0aGlzLmVkaXRGb3JtT3B0aW9ucyk7XHJcblxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VTT1BQZXJtaXNzaW9uVG9nZ2xlVmFsdWUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2hvd1VzZXJUeXBlUGVybWlzc2lvbnNNYXBwaW5nID0gdmFsdWU7XHJcbiAgICBpZiAoIXRoaXMuc2hvd1VzZXJUeXBlUGVybWlzc2lvbnNNYXBwaW5nKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBY2Nlc3NMZXZlbHMuZm9yRWFjaChsZXZlbCA9PiB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVDb250cm9sKGBwZXJtaXNzaW9ucy11c2VyLXR5cGUtJHtsZXZlbH1gLCB0aGlzLmVkaXRGb3JtKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVBlcm1pc3Npb25TZXQoaWQ6IGFueSkge1xyXG4gICAgaWYgKCFpZCkge1xyXG4gICAgICB0aGlzLnBlcm1pc3Npb25zTGlzdCA9IFtdO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGlkcyA9IEFycmF5KGlkKTtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuTG9hZFBlcm1pc3Npb25zRHJvcERvd24oaWRzKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLnBlcm1pc3Npb25zTGlzdCA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0UGVybWlzc2lvblNldHMoKSB7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLmdldFBlcm1pc3Npb25TZXRzTGlzdCgpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXRMaXN0ID0gcmVzLnBlcm1lc3Npb25zZXRzO1xyXG4gICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd24uRGF0YVNvdXJjZSA9IHRoaXMucGVybWlzc2lvblNldExpc3Q7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgaW5pdERyb3BEb3duT3B0aW9ucyh1c2VyVHlwZTogYW55KSB7XHJcbiAgICB2YXIgcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnMuTmFtZSA9IGBwZXJtaXNzaW9ucy11c2VyLXR5cGUtJHt1c2VyVHlwZX1gO1xyXG4gICAgcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucy5MYWJlbFZhbHVlID0gdGhpcy50cmFuc2xhdGUoVUFFUGFzc1VzZXJUeXBlc1t1c2VyVHlwZV0pICsgXCItXCIgKyB0aGlzLnRyYW5zbGF0ZShcIlBlcm1pc3Npb25zXCIpO1xyXG4gICAgcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnMuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucy5EYXRhU291cmNlID0gdGhpcy5wZXJtaXNzaW9uc0xpc3Q7XHJcbiAgICBwZXJtaXNzaW9uRHJvcERvd25PcHRpb25zLlNlbGVjdGVkSXRlbXMgPSB0aGlzLnNldFBlcm1pc3Npb25Gb3JVQUVQYXNzVXNlclR5cGVzKHVzZXJUeXBlKTtcclxuXHJcbiAgICByZXR1cm4gcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucztcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlQWNjZXNzTGV2ZWxzKHNlbGVjdGVkSXRlbXM6IGFueSkge1xyXG4gICAgbGV0IHVzZXJUeXBlc0tleXMgPSB0aGlzLnVhZVBhc3NVc2VyVHlwZUxpc3QubWFwKGl0ZW0gPT4geyByZXR1cm4gaXRlbS5rZXkgfSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkQWNjZXNzTGV2ZWxzID0gc2VsZWN0ZWRJdGVtcztcclxuXHJcbiAgICBsZXQgbm90U2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkQWNjZXNzTGV2ZWxzLmZpbHRlcihpdGVtID0+IHVzZXJUeXBlc0tleXMuaW5kZXhPZihpdGVtKSA8IDApO1xyXG4gICAgbm90U2VsZWN0ZWQuZm9yRWFjaChpID0+IHtcclxuICAgICAgdGhpcy5yZW1vdmVDb250cm9sKGBwZXJtaXNzaW9ucy11c2VyLXR5cGUtJHtpfWAsIHRoaXMuZWRpdEZvcm0pO1xyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICBzZXRQZXJtaXNzaW9uRm9yVUFFUGFzc1VzZXJUeXBlcyh1c2VyVHlwZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnVzZXJUeXBlUGVybWlzc2lvbnMuZmluZChpID0+IGkudXNlclR5cGUgPT0gdXNlclR5cGUpPy5wZXJtaXNzaW9ucztcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG5cclxuICAvLyNyZWdpb24gdmFsaWRhdGlvbiBhY3Rpb25zXHJcblxyXG4gIGFkZFJlcXVpcmVkVmFsaWRhdGlvbihjdXN0b21Db250cm9sT3B0aW9uOiBhbnlbXSwgZm9ybTogRm9ybUdyb3VwLCBmb3JtT3B0aW9uczogRm9ybU9wdGlvbnMpOiB2b2lkIHtcclxuICAgIGN1c3RvbUNvbnRyb2xPcHRpb24uZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgaWYgKGZvcm0uZ2V0KGNvbnRyb2wuTmFtZSkpXHJcbiAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoZm9ybS5nZXQoY29udHJvbC5OYW1lKSwgZm9ybU9wdGlvbnMpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgY29udHJvbC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKGN1c3RvbUNvbnRyb2xPcHRpb246IGFueVtdLCBmb3JtOiBGb3JtR3JvdXAsIGZvcm1PcHRpb25zOiBGb3JtT3B0aW9ucyk6IHZvaWQge1xyXG4gICAgY3VzdG9tQ29udHJvbE9wdGlvbi5mb3JFYWNoKGNvbnRyb2wgPT4ge1xyXG4gICAgICBpZiAoZm9ybS5nZXQoY29udHJvbC5OYW1lKSlcclxuICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShmb3JtLmdldChjb250cm9sLk5hbWUpLCBmb3JtT3B0aW9ucyk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBjb250cm9sLklzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRGb3JtQ29udHJvbHNWYWx1ZShjdXN0b21Db250cm9sc09wdGlvbnM6IGFueVtdLCBmb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcclxuICAgIGN1c3RvbUNvbnRyb2xzT3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XHJcbiAgICAgIGxldCBmb3JtQ29udHJvbCA9IGZvcm0uZ2V0KG9wdGlvbi5OYW1lKTtcclxuICAgICAgaWYgKGZvcm1Db250cm9sKVxyXG4gICAgICAgIGZvcm1Db250cm9sLnJlc2V0KCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuXHJcblxyXG4iLCI8bmctdGVtcGxhdGUgI2VkaXRNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cclxuICAgICAge3t0cmFuc2xhdGUoXCJFZGl0QXV0aENvbmZpZ3VyYXRpb25cIil9fVxyXG4gICAgPC9oND5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLXNtXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNCBzdmctaWNvbi1ob3Zlci1icmFuZFwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2Nsb3NlLW1vZGFsLnN2ZydcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cImVkaXRGb3JtT3B0aW9uc1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGVJZCA9PSBhdXRoZW50aWNhdGlvbk1vZGVFbnVtVmFsdWUuVUFFUGFzc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImJhc2VVUkxUZXh0Qm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImNsaWVudElkVGV4dEJveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzZWNyZXRLZXlUZXh0Qm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInJlZGlyZWN0VVJMVGV4dEJveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IChPbkNoYW5nZSk9XCJvbkNoYW5nZUFjY2Vzc0xldmVscygkZXZlbnQpXCIgW29wdGlvbnNdPVwiYWNjZXNzTGV2ZWxEcm9wZG93blwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgKE9uQ2hhbmdlKT1cImNoYW5nZVBlcm1pc3Npb25TZXQoJGV2ZW50KVwiIFtvcHRpb25zXT1cInVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd25cIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgKE9uQ2hhbmdlKT1cIm9uQ2hhbmdlU09QUGVybWlzc2lvblRvZ2dsZVZhbHVlKCRldmVudClcIiBbb3B0aW9uc109XCJzb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZVwiXHJcbiAgICAgICAgICAgICAgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwibGlua2luZ0V4aXN0aW5nVXNlcnNUb2dnbGVcIiAoT25DaGFuZ2UpPVwib25MaW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZVZhbHVlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImltcG9ydGluZ05ld1VzZXJUb2dnbGVcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJ1cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlXCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmF0aW9uLWhlYWRlclwiICpuZ0lmPVwic2hvd1VzZXJUeXBlUGVybWlzc2lvbnNNYXBwaW5nXCI+XHJcbiAgICAgICAgICA8aDU+e3t0cmFuc2xhdGUoXCJBY2Nlc3NMZXZlbHNQZXJtaXNzaW9uTWFwcGluZ1wiKX19PC9oNT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nRm9yPVwibGV0IGxldmVsIG9mIHNlbGVjdGVkQWNjZXNzTGV2ZWxzXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImluaXREcm9wRG93bk9wdGlvbnMobGV2ZWwpXCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1VzZXJUeXBlTGlua2luZ01hcHBpbmdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmF0aW9uLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8aDU+e3t0cmFuc2xhdGUoXCJMaW5raW5nT3B0aW9uc1wiKX19PC9oNT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0Zvcj1cImxldCBsZXZlbCBvZiBzZWxlY3RlZEFjY2Vzc0xldmVsc1wiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImxpbmtpbmdNb2RlRHJvcGRvd25cIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZ3VyYXRpb24taGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxoNT57e3RyYW5zbGF0ZShcIkxpbmtpbmdBdHRyaWJ1dGVzT3B0aW9uc1wiKX19PC9oNT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwibmFtZUFyQ2hlY2tib3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJuYW1lRW5DaGVja2JveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cImVtYWlsQ2hlY2tib3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJlSWRDaGVja2JveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm1vYmlsZUNoZWNrYm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwibmF0aW9uYWxpdHlDaGVja2JveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cImdlbmRlckNoZWNrYm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcblxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIm1vZGVJZCA9PSBhdXRoZW50aWNhdGlvbk1vZGVFbnVtVmFsdWUuQXp1cmVBRFwiPlxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICB7e3RyYW5zbGF0ZShcIkNhbmNlbFwiKX19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGFwcFByZXZlbnREb3VibGVDbGljayB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1icmFuZFwiPlxyXG4gICAgICAgIHt7dHJhbnNsYXRlKCdTYXZlJyl9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvQkJTRi1Gb3JtPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9jb25maWd1cmF0aW9ucy9hdXRoLWNvbmZpZ3VyYXRpb24vYXV0aC1jb25maWd1cmF0aW9uLWVkaXQvYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9jb25maWd1cmF0aW9ucy9hdXRoLWNvbmZpZ3VyYXRpb24vYXV0aC1jb25maWd1cmF0aW9uLWVkaXQvYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBd0IsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHeEssT0FBTyxFQUFFLCtCQUErQixFQUFFLG9CQUFvQixFQUFxRCxNQUFNLCtEQUErRCxDQUFDO0FBQ3pMLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFDOzs7Ozs7OztBQVM1SSxNQUFNLE9BQU8sOEJBQStCLFNBQVEsZ0JBQWdCO0lBK0NsRSxZQUFZO0lBRVosWUFBWTtJQUVaLFlBQ1UsUUFBa0IsRUFDbEIsbUJBQXdDLEVBQ3hDLHFCQUE0QyxFQUM1QyxXQUF3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O2dCQUlxQyxLQUFLO3NCQUEvQyxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50LCBDaGVja0JveE9wdGlvbnMsIENvbnRyb2xMYXlvdXQsIERyb3Bkb3duT3B0aW9ucywgRm9ybU9wdGlvbnMsIElucHV0VHlwZSwgVGV4dEJveE9wdGlvbnMsIFRvZ2dsZVNsaWRlT3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgTWFzdGVyTGF5b3V0U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiwgVUFFUGFzc0NvbmZpZ3VyYXRpb24sIFVBRVBhc3NVc2VySW5mb01hcHBpbmcsIFVBRVBhc3NVc2VyVHlwZVBlcm1pc3Npb24gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL0NvbmZpZ3VyYXRpb25Nb2RlbHMvQ29uZmlndXJhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Nb2RlLCBVQUVQYXNzTGlua2luZ01vZGUsIFVBRVBhc3NVc2VyVHlwZXMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvRW51bXMvY29uZmlndXJhdGlvbi9hdXRoZW50ZWNhdGlvbi1jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0NvbmZpZ3VyYXRpb25zU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWxPcHRpb25zIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy91c2VyU2VydmljZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXV0aC1jb25maWd1cmF0aW9uLWVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRoLWNvbmZpZ3VyYXRpb24tZWRpdC5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0QXV0aENvbmZpZ3VyYXRpb25Db21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBwYWdpbmdFbGVtZW50O1xyXG4gIEBJbnB1dCgpIG9uU3VjY2Vzc1Rha2VQZW5hbHR5SGFuZGxlcjogRnVuY3Rpb247XHJcblxyXG4gIGVkaXRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZWRpdEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgQFZpZXdDaGlsZChcImVkaXRNb2RhbFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgbW9kYWw6IEVsZW1lbnRSZWY7XHJcblxyXG4gIG1vZGVJZDogbnVtYmVyID0gdW5kZWZpbmVkO1xyXG4gIGF1dGhlbnRpY2F0aW9uTW9kZUVudW1WYWx1ZSA9IEF1dGhlbnRpY2F0aW9uTW9kZTtcclxuXHJcbiAgLy8jcmVnaW9uIHVhZSBwYXNzIHByb3BzXHJcbiAgYmFzZVVSTFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIGNsaWVudElkVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2VjcmV0S2V5VGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgcmVkaXJlY3RVUkxUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBhY2Nlc3NMZXZlbERyb3Bkb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgbGlua2luZ01vZGVEcm9wZG93bjogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICBsaW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGltcG9ydGluZ05ld1VzZXJUb2dnbGU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICB1cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgc29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuXHJcbiAgdXNlclBlcm1pc3Npb25TZXREcm9wZG93bjogRHJvcGRvd25PcHRpb25zO1xyXG4gIHVzZXJQZXJtaXNzaW9uczogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICB1YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsOiBVQUVQYXNzQ29uZmlndXJhdGlvbiA9IG5ldyBVQUVQYXNzQ29uZmlndXJhdGlvbigpO1xyXG5cclxuICBwZXJtaXNzaW9uU2V0TGlzdCA9IFtdO1xyXG4gIHBlcm1pc3Npb25zTGlzdCA9IFtdO1xyXG5cclxuICBzaG93VXNlclR5cGVQZXJtaXNzaW9uc01hcHBpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93VXNlclR5cGVMaW5raW5nTWFwcGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHVhZVBhc3NVc2VyVHlwZUVudW06IFVBRVBhc3NVc2VyVHlwZXM7XHJcbiAgdWFlUGFzc1VzZXJUeXBlTGlzdDogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZEFjY2Vzc0xldmVsczogYW55W10gPSBbXTtcclxuXHJcbiAgLy8jcmVnaW9uIGxpbmtpbmcgbWFwcGluZ1xyXG4gIG5hbWVBckNoZWNrYm94OiBDaGVja0JveE9wdGlvbnM7XHJcbiAgbmFtZUVuQ2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuICBlbWFpbENoZWNrYm94OiBDaGVja0JveE9wdGlvbnM7XHJcbiAgZUlkQ2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuICBtb2JpbGVDaGVja2JveDogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIG5hdGlvbmFsaXR5Q2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuICBnZW5kZXJDaGVja2JveDogQ2hlY2tCb3hPcHRpb25zO1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIG1hc3RlckxheW91dFNlcnZpY2U6IE1hc3RlckxheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25zU2VydmljZTogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcbiAgLy8jcmVnaW9uIGhlbHBlclxyXG5cclxuICB0cmFuc2xhdGUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShrZXkpO1xyXG4gIH1cclxuXHJcbiAgbG9hZFVBRVBhc3NVc2VyVHlwZXMoKSB7XHJcbiAgICBsZXQgbGlzdDogYW55W10gPSBbXTtcclxuICAgIGZvciAodmFyIGl0ZW0gaW4gVUFFUGFzc1VzZXJUeXBlcykge1xyXG4gICAgICBpZiAocGFyc2VJbnQoaXRlbSkpXHJcbiAgICAgICAgbGlzdC5wdXNoKHtcclxuICAgICAgICAgIGtleTogK2l0ZW0sXHJcbiAgICAgICAgICB2YWx1ZTogVUFFUGFzc1VzZXJUeXBlc1tpdGVtXVxyXG4gICAgICAgIH0gYXMgYW55KVxyXG4gICAgfVxyXG4gICAgdGhpcy51YWVQYXNzVXNlclR5cGVMaXN0ID0gbGlzdDtcclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgbG9hZFVBRVBhc3NMaW5raW5nTW9kZSgpIHtcclxuICAgIGxldCBsaXN0OiBhbnlbXSA9IFtdO1xyXG4gICAgZm9yICh2YXIgaXRlbSBpbiBVQUVQYXNzTGlua2luZ01vZGUpIHtcclxuICAgICAgaWYgKHBhcnNlSW50KGl0ZW0pKVxyXG4gICAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgICBrZXk6ICtpdGVtLFxyXG4gICAgICAgICAgdmFsdWU6IHRoaXMudHJhbnNsYXRlKFVBRVBhc3NMaW5raW5nTW9kZVtpdGVtXSlcclxuICAgICAgICB9IGFzIGFueSlcclxuICAgIH1cclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgZ2V0VUFFUGFzc1VzZXJUeXBlVmFsdWUoa2V5OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLnVhZVBhc3NVc2VyVHlwZUxpc3QuZmluZChpID0+IGkua2V5ID09IGtleSkudmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgc2hvd01vZGFsKG1vZGU6IEF1dGhlbnRpY2F0aW9uTW9kZSwgYXV0aENvbmZpZ09iamVjdDogQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbikge1xyXG4gICAgdGhpcy5tb2RlSWQgPSBtb2RlO1xyXG4gICAgaWYgKHRoaXMuZWRpdEZvcm0pIHtcclxuICAgICAgdGhpcy5lZGl0Rm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMuZWRpdEZvcm0ucmVzZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVkaXRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgdGhpcy5lZGl0Rm9ybU9wdGlvbnMuZm9ybUdyb3VwID0gdGhpcy5lZGl0Rm9ybSBhcyBhbnk7XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucy5wYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucy5nZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRNb2RlbDtcclxuICAgIHRoaXMuZWRpdEZvcm1PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0U3VibWl0RnVuY3Rpb247XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucy5kaXNhYmxlU3VjY2Vzc05vdGlmaWNhdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5lZGl0Rm9ybU9wdGlvbnMub25TdWNjZXNzSGFuZGxlciA9IHRoaXMub25TdWNjZXNzSGFuZGxlcjtcclxuXHJcbiAgICBzd2l0Y2ggKG1vZGUpIHtcclxuICAgICAgY2FzZSBBdXRoZW50aWNhdGlvbk1vZGUuVUFFUGFzczpcclxuICAgICAgICB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwgPSBhdXRoQ29uZmlnT2JqZWN0LnVhZVBhc3NDb25maWc7XHJcblxyXG4gICAgICAgIHRoaXMuYmFzZVVSTFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmJhc2VVUkxUZXh0Qm94Lm5hbWUgPSBcImJhc2VVcmxcIjtcclxuICAgICAgICB0aGlzLmJhc2VVUkxUZXh0Qm94LmxhYmVsS2V5ID0gXCJCYXNlVXJsXCI7XHJcbiAgICAgICAgdGhpcy5iYXNlVVJMVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5iYXNlVVJMVGV4dEJveC52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgICAgdGhpcy5iYXNlVVJMVGV4dEJveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5iYXNlVXJsO1xyXG5cclxuICAgICAgICB0aGlzLmNsaWVudElkVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWRUZXh0Qm94Lm5hbWUgPSBcImNsaWVudElEXCI7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZFRleHRCb3gubGFiZWxLZXkgPSBcIkNsaWVudElEXCI7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZFRleHRCb3gudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWRUZXh0Qm94LnZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgICAgICB0aGlzLmNsaWVudElkVGV4dEJveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5jbGllbnRJRDtcclxuXHJcbiAgICAgICAgdGhpcy5zZWNyZXRLZXlUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5zZWNyZXRLZXlUZXh0Qm94Lm5hbWUgPSBcInNlY3JldEtleVwiO1xyXG4gICAgICAgIHRoaXMuc2VjcmV0S2V5VGV4dEJveC5sYWJlbEtleSA9IFwiU2VjcmV0S2V5XCI7XHJcbiAgICAgICAgdGhpcy5zZWNyZXRLZXlUZXh0Qm94LnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLnNlY3JldEtleVRleHRCb3gudmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIHRoaXMuc2VjcmV0S2V5VGV4dEJveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5zZWNyZXRLZXk7XHJcblxyXG4gICAgICAgIHRoaXMucmVkaXJlY3RVUkxUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5yZWRpcmVjdFVSTFRleHRCb3gubmFtZSA9IFwicmVkaXJlY3RVcmxcIjtcclxuICAgICAgICB0aGlzLnJlZGlyZWN0VVJMVGV4dEJveC5sYWJlbEtleSA9IFwiUmVkaXJlY3RVcmxcIjtcclxuICAgICAgICB0aGlzLnJlZGlyZWN0VVJMVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5yZWRpcmVjdFVSTFRleHRCb3gudmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIHRoaXMucmVkaXJlY3RVUkxUZXh0Qm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnJlZGlyZWN0VXJsO1xyXG5cclxuICAgICAgICB0aGlzLmFjY2Vzc0xldmVsRHJvcGRvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NMZXZlbERyb3Bkb3duLm5hbWUgPSBcImFjY2Vzc0xldmVsc1wiO1xyXG4gICAgICAgIHRoaXMuYWNjZXNzTGV2ZWxEcm9wZG93bi5sYWJlbEtleSA9IFwiQWNjZXNzTGV2ZWxcIjtcclxuICAgICAgICB0aGlzLmFjY2Vzc0xldmVsRHJvcGRvd24uc2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NMZXZlbERyb3Bkb3duLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuYWNjZXNzTGV2ZWxzO1xyXG4gICAgICAgIHRoaXMuYWNjZXNzTGV2ZWxEcm9wZG93bi5kYXRhU291cmNlID0gdGhpcy5sb2FkVUFFUGFzc1VzZXJUeXBlcygpO1xyXG5cclxuICAgICAgICB0aGlzLmxpbmtpbmdNb2RlRHJvcGRvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5saW5raW5nTW9kZURyb3Bkb3duLm5hbWUgPSBcImxpbmtpbmdNb2RlXCI7XHJcbiAgICAgICAgdGhpcy5saW5raW5nTW9kZURyb3Bkb3duLmxhYmVsS2V5ID0gXCJMaW5raW5nTW9kZVwiO1xyXG4gICAgICAgIHRoaXMubGlua2luZ01vZGVEcm9wZG93bi5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubGlua2luZ01vZGVEcm9wZG93bi5zZWxlY3RlZEl0ZW1zID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmxpbmtpbmdNb2RlO1xyXG4gICAgICAgIHRoaXMubGlua2luZ01vZGVEcm9wZG93bi5kYXRhU291cmNlID0gdGhpcy5sb2FkVUFFUGFzc0xpbmtpbmdNb2RlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuc29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5zb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZS5uYW1lID0gXCJzb3BQZXJtaXNzaW9uTWFwcGluZ1wiO1xyXG4gICAgICAgIHRoaXMuc29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGUubGFiZWxLZXkgPSBcIlNPUFBlcm1pc3Npb25NYXBwaW5nXCI7XHJcbiAgICAgICAgdGhpcy5zb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZS52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5lbmFibGVTT1BQZXJtaXNzaW9uTWFwcGluZztcclxuXHJcbiAgICAgICAgdGhpcy5saW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlLm5hbWUgPSBcImxpbmtpbmdFeGlzdGluZ1VzZXJzXCI7XHJcbiAgICAgICAgdGhpcy5saW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZS5sYWJlbEtleSA9IFwiTGlua2luZ0V4aXN0aW5nVXNlcnNcIjtcclxuICAgICAgICB0aGlzLmxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlLnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmVuYWJsZUxpbmtpbmdFeGlzdGluZ1VzZXJzO1xyXG5cclxuICAgICAgICB0aGlzLmltcG9ydGluZ05ld1VzZXJUb2dnbGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5pbXBvcnRpbmdOZXdVc2VyVG9nZ2xlLm5hbWUgPSBcImltcG9ydGluZ05ld1VzZXJcIjtcclxuICAgICAgICB0aGlzLmltcG9ydGluZ05ld1VzZXJUb2dnbGUubGFiZWxLZXkgPSBcIkltcG9ydGluZ05ld1VzZXJcIjtcclxuICAgICAgICB0aGlzLmltcG9ydGluZ05ld1VzZXJUb2dnbGUudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZW5hYmxlSW1wb3J0aW5nTmV3VXNlcjtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVXNlckluZm9ybWF0aW9uT25Mb2dpblRvZ2dsZS5uYW1lID0gXCJ1cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luXCI7XHJcbiAgICAgICAgdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlLmxhYmVsS2V5ID0gXCJVcGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luXCI7XHJcbiAgICAgICAgdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlLnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmVuYWJsZVVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW47XHJcblxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd24ubmFtZSA9IFwiUGVybWlzc2lvblNldHNcIlxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5sYWJlbEtleSA9IFwiUGVybWlzc2lvblNldHNcIlxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5zZWxlY3RlZEl0ZW1zID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmRlZmF1bHRQZXJtaXNzaW9uU2V0O1xyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51c2VyUGVybWlzc2lvblNldERyb3Bkb3duLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLm5hbWVBckNoZWNrYm94ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMubmFtZUFyQ2hlY2tib3gubmFtZSA9IFwibmFtZUFyXCJcclxuICAgICAgICB0aGlzLm5hbWVBckNoZWNrYm94LmxhYmVsS2V5ID0gXCJOYW1lQVJcIjtcclxuICAgICAgICB0aGlzLm5hbWVBckNoZWNrYm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnVzZXJJbmZvTWFwcGluZy5uYW1lQVI7XHJcblxyXG4gICAgICAgIHRoaXMubmFtZUVuQ2hlY2tib3ggPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5uYW1lRW5DaGVja2JveC5uYW1lID0gXCJuYW1lRW5cIlxyXG4gICAgICAgIHRoaXMubmFtZUVuQ2hlY2tib3gubGFiZWxLZXkgPSBcIk5hbWVFTlwiO1xyXG4gICAgICAgIHRoaXMubmFtZUVuQ2hlY2tib3gudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlckluZm9NYXBwaW5nLm5hbWVFTjtcclxuXHJcbiAgICAgICAgdGhpcy5lbWFpbENoZWNrYm94ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZW1haWxDaGVja2JveC5uYW1lID0gXCJlbWFpbFwiXHJcbiAgICAgICAgdGhpcy5lbWFpbENoZWNrYm94LmxhYmVsS2V5ID0gXCJFbWFpbFwiO1xyXG4gICAgICAgIHRoaXMuZW1haWxDaGVja2JveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VySW5mb01hcHBpbmcuZW1haWw7XHJcblxyXG4gICAgICAgIHRoaXMuZUlkQ2hlY2tib3ggPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5lSWRDaGVja2JveC5uYW1lID0gXCJlSWRcIlxyXG4gICAgICAgIHRoaXMuZUlkQ2hlY2tib3gubGFiZWxLZXkgPSBcIkVJRFwiO1xyXG4gICAgICAgIHRoaXMuZUlkQ2hlY2tib3gudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlckluZm9NYXBwaW5nLkVJRDtcclxuXHJcbiAgICAgICAgdGhpcy5tb2JpbGVDaGVja2JveCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLm1vYmlsZUNoZWNrYm94Lm5hbWUgPSBcIm1vYmlsZVwiXHJcbiAgICAgICAgdGhpcy5tb2JpbGVDaGVja2JveC5sYWJlbEtleSA9IFwiTW9iaWxlXCI7XHJcbiAgICAgICAgdGhpcy5tb2JpbGVDaGVja2JveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VySW5mb01hcHBpbmcubW9iaWxlO1xyXG5cclxuICAgICAgICB0aGlzLm5hdGlvbmFsaXR5Q2hlY2tib3ggPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5uYXRpb25hbGl0eUNoZWNrYm94Lm5hbWUgPSBcIm5hdGlvbmFsaXR5XCJcclxuICAgICAgICB0aGlzLm5hdGlvbmFsaXR5Q2hlY2tib3gubGFiZWxLZXkgPSBcIk5hdGlvbmFsaXR5XCI7XHJcbiAgICAgICAgdGhpcy5uYXRpb25hbGl0eUNoZWNrYm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnVzZXJJbmZvTWFwcGluZy5uYXRpb25hbGl0eTtcclxuXHJcbiAgICAgICAgdGhpcy5nZW5kZXJDaGVja2JveCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmdlbmRlckNoZWNrYm94Lm5hbWUgPSBcImdlbmRlclwiXHJcbiAgICAgICAgdGhpcy5nZW5kZXJDaGVja2JveC5sYWJlbEtleSA9IFwiR2VuZGVyXCI7XHJcbiAgICAgICAgdGhpcy5nZW5kZXJDaGVja2JveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VySW5mb01hcHBpbmcuZ2VuZGVyO1xyXG5cclxuICAgICAgICB0aGlzLmdldFBlcm1pc3Npb25TZXRzKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZVNPUFBlcm1pc3Npb25Ub2dnbGVWYWx1ZSh0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZW5hYmxlU09QUGVybWlzc2lvbk1hcHBpbmcpO1xyXG4gICAgICAgIHRoaXMub25MaW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZVZhbHVlKHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5lbmFibGVMaW5raW5nRXhpc3RpbmdVc2Vycyk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZUFjY2Vzc0xldmVscyh0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuYWNjZXNzTGV2ZWxzKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5kZWZhdWx0UGVybWlzc2lvblNldClcclxuICAgICAgICAgIHRoaXMuY2hhbmdlUGVybWlzc2lvblNldCh0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZGVmYXVsdFBlcm1pc3Npb25TZXQpO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBBdXRoZW50aWNhdGlvbk1vZGUuQXp1cmVBRDpcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMubW9kYWwsIHsgc2l6ZTogJ3hsJyB9IGFzIE5nYk1vZGFsT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRBZGRNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCByZXN1bHRNb2RlbCA9IHRoaXMuZWRpdEZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IGVkaXRNb2RlbDogQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiA9IG5ldyBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKCk7XHJcbiAgICBlZGl0TW9kZWwubW9kZUlkID0gdGhpcy5tb2RlSWQ7XHJcbiAgICBlZGl0TW9kZWwudWFlUGFzc0NvbmZpZyA9IHRoaXMuYnVpbGRVQUVQYXNzQ29uZmlnT2JqZWN0KHJlc3VsdE1vZGVsKTtcclxuICAgIHJldHVybiBBcnJheShlZGl0TW9kZWwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3VibWl0RnVuY3Rpb24gPSAoZWRpdE1vZGVsOiBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25zU2VydmljZS51cGRhdGVBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb25EYXRhKGVkaXRNb2RlbClcclxuICB9XHJcblxyXG4gIG9uU3VjY2Vzc0hhbmRsZXIgPSAoKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLm1hc3RlckxheW91dFNlcnZpY2UucmVsb2FkQ29tcG9uZW50KClcclxuICB9XHJcblxyXG4gIGJ1aWxkVUFFUGFzc0NvbmZpZ09iamVjdChmb3JtVmFsdWU6IGFueSk6IFVBRVBhc3NDb25maWd1cmF0aW9uIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGJhc2VVcmw6IGZvcm1WYWx1ZVt0aGlzLmJhc2VVUkxUZXh0Qm94Lm5hbWVdLFxyXG4gICAgICBjbGllbnRJRDogZm9ybVZhbHVlW3RoaXMuY2xpZW50SWRUZXh0Qm94Lm5hbWVdLFxyXG4gICAgICBzZWNyZXRLZXk6IGZvcm1WYWx1ZVt0aGlzLnNlY3JldEtleVRleHRCb3gubmFtZV0sXHJcbiAgICAgIHJlZGlyZWN0VXJsOiBmb3JtVmFsdWVbdGhpcy5yZWRpcmVjdFVSTFRleHRCb3gubmFtZV0sXHJcbiAgICAgIGFjY2Vzc0xldmVsczogZm9ybVZhbHVlW3RoaXMuYWNjZXNzTGV2ZWxEcm9wZG93bi5uYW1lXSxcclxuICAgICAgZW5hYmxlTGlua2luZ0V4aXN0aW5nVXNlcnM6IGZvcm1WYWx1ZVt0aGlzLmxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlLm5hbWVdLFxyXG4gICAgICBlbmFibGVJbXBvcnRpbmdOZXdVc2VyOiBmb3JtVmFsdWVbdGhpcy5pbXBvcnRpbmdOZXdVc2VyVG9nZ2xlLm5hbWVdLFxyXG4gICAgICBlbmFibGVVcGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luOiBmb3JtVmFsdWVbdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlLm5hbWVdLFxyXG4gICAgICBkZWZhdWx0UGVybWlzc2lvblNldDogZm9ybVZhbHVlW3RoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5uYW1lXSxcclxuICAgICAgZW5hYmxlU09QUGVybWlzc2lvbk1hcHBpbmc6IGZvcm1WYWx1ZVt0aGlzLnNvcFBlcm1pc3Npb25NYXBwaW5nVG9nZ2xlLm5hbWVdLFxyXG4gICAgICB1c2VyVHlwZVBlcm1pc3Npb25zOiB0aGlzLmJ1aWxkVXNlclR5cGVQZXJtaXNzaW9uKCksXHJcbiAgICAgIHVzZXJJbmZvTWFwcGluZzogdGhpcy5idWlsZFVzZXJJbmZvTWFwcGluZyhmb3JtVmFsdWUpLFxyXG4gICAgICBsaW5raW5nTW9kZTogZm9ybVZhbHVlW3RoaXMubGlua2luZ01vZGVEcm9wZG93bi5uYW1lXSxcclxuICAgIH0gYXMgVUFFUGFzc0NvbmZpZ3VyYXRpb25cclxuICB9XHJcblxyXG4gIGJ1aWxkVXNlckluZm9NYXBwaW5nKGZvcm1WYWx1ZTogYW55KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuYW1lRU46IGZvcm1WYWx1ZVt0aGlzLm5hbWVFbkNoZWNrYm94Lm5hbWVdLFxyXG4gICAgICBuYW1lQVI6IGZvcm1WYWx1ZVt0aGlzLm5hbWVBckNoZWNrYm94Lm5hbWVdLFxyXG4gICAgICBlbWFpbDogZm9ybVZhbHVlW3RoaXMuZW1haWxDaGVja2JveC5uYW1lXSxcclxuICAgICAgRUlEOiBmb3JtVmFsdWVbdGhpcy5lSWRDaGVja2JveC5uYW1lXSxcclxuICAgICAgbW9iaWxlOiBmb3JtVmFsdWVbdGhpcy5tb2JpbGVDaGVja2JveC5uYW1lXSxcclxuICAgICAgbmF0aW9uYWxpdHk6IGZvcm1WYWx1ZVt0aGlzLm5hdGlvbmFsaXR5Q2hlY2tib3gubmFtZV0sXHJcbiAgICAgIGdlbmRlcjogZm9ybVZhbHVlW3RoaXMuZ2VuZGVyQ2hlY2tib3gubmFtZV1cclxuICAgIH0gYXMgVUFFUGFzc1VzZXJJbmZvTWFwcGluZztcclxuICB9XHJcblxyXG4gIGJ1aWxkVXNlclR5cGVQZXJtaXNzaW9uKCk6IFVBRVBhc3NVc2VyVHlwZVBlcm1pc3Npb25bXSB7XHJcbiAgICBsZXQgcmVzTGlzdDogVUFFUGFzc1VzZXJUeXBlUGVybWlzc2lvbltdID0gW107XHJcbiAgICBpZiAodGhpcy5zaG93VXNlclR5cGVQZXJtaXNzaW9uc01hcHBpbmcpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEFjY2Vzc0xldmVscy5mb3JFYWNoKGxldmVsID0+IHtcclxuICAgICAgICByZXNMaXN0LnB1c2goe1xyXG4gICAgICAgICAgdXNlclR5cGU6IGxldmVsLFxyXG4gICAgICAgICAgcGVybWlzc2lvbnM6IHRoaXMuZWRpdEZvcm0uY29udHJvbHNbYHBlcm1pc3Npb25zLXVzZXItdHlwZS0ke2xldmVsfWBdPy52YWx1ZSxcclxuICAgICAgICB9IGFzIFVBRVBhc3NVc2VyVHlwZVBlcm1pc3Npb24pXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc0xpc3Q7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gVUFFIFBhc3MgRnVuY3Rpb25zXHJcblxyXG4gIG9uTGlua2luZ0V4aXN0aW5nVXNlcnNUb2dnbGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnNob3dVc2VyVHlwZUxpbmtpbmdNYXBwaW5nID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5zaG93VXNlclR5cGVMaW5raW5nTWFwcGluZylcclxuICAgICAgdGhpcy5hZGRSZXF1aXJlZFZhbGlkYXRpb24oW3RoaXMubGlua2luZ01vZGVEcm9wZG93bl0sIHRoaXMuZWRpdEZvcm0sIHRoaXMuZWRpdEZvcm1PcHRpb25zKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24oW3RoaXMubGlua2luZ01vZGVEcm9wZG93bl0sIHRoaXMuZWRpdEZvcm0sIHRoaXMuZWRpdEZvcm1PcHRpb25zKTtcclxuXHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZVNPUFBlcm1pc3Npb25Ub2dnbGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnNob3dVc2VyVHlwZVBlcm1pc3Npb25zTWFwcGluZyA9IHZhbHVlO1xyXG4gICAgaWYgKCF0aGlzLnNob3dVc2VyVHlwZVBlcm1pc3Npb25zTWFwcGluZykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQWNjZXNzTGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4ge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlQ29udHJvbChgcGVybWlzc2lvbnMtdXNlci10eXBlLSR7bGV2ZWx9YCwgdGhpcy5lZGl0Rm9ybSk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VQZXJtaXNzaW9uU2V0KGlkOiBhbnkpIHtcclxuICAgIGlmICghaWQpIHtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uc0xpc3QgPSBbXTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpZHMgPSBBcnJheShpZCk7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLkxvYWRQZXJtaXNzaW9uc0Ryb3BEb3duKGlkcykuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uc0xpc3QgPSByZXN1bHQgYXMgYW55O1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldFBlcm1pc3Npb25TZXRzKCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5nZXRQZXJtaXNzaW9uU2V0c0xpc3QoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0TGlzdCA9IHJlcy5wZXJtZXNzaW9uc2V0cztcclxuICAgICAgdGhpcy51c2VyUGVybWlzc2lvblNldERyb3Bkb3duLmRhdGFTb3VyY2UgPSB0aGlzLnBlcm1pc3Npb25TZXRMaXN0O1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGluaXREcm9wRG93bk9wdGlvbnModXNlclR5cGU6IGFueSkge1xyXG4gICAgdmFyIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICBwZXJtaXNzaW9uRHJvcERvd25PcHRpb25zLm5hbWUgPSBgcGVybWlzc2lvbnMtdXNlci10eXBlLSR7dXNlclR5cGV9YDtcclxuICAgIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnMubGFiZWxWYWx1ZSA9IHRoaXMudHJhbnNsYXRlKFVBRVBhc3NVc2VyVHlwZXNbdXNlclR5cGVdKSArIFwiLVwiICsgdGhpcy50cmFuc2xhdGUoXCJQZXJtaXNzaW9uc1wiKTtcclxuICAgIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnMuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICBwZXJtaXNzaW9uRHJvcERvd25PcHRpb25zLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnMuZGF0YVNvdXJjZSA9IHRoaXMucGVybWlzc2lvbnNMaXN0O1xyXG4gICAgcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZXRQZXJtaXNzaW9uRm9yVUFFUGFzc1VzZXJUeXBlcyh1c2VyVHlwZSk7XHJcblxyXG4gICAgcmV0dXJuIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZUFjY2Vzc0xldmVscyhzZWxlY3RlZEl0ZW1zOiBhbnkpIHtcclxuICAgIGxldCB1c2VyVHlwZXNLZXlzID0gdGhpcy51YWVQYXNzVXNlclR5cGVMaXN0Lm1hcChpdGVtID0+IHsgcmV0dXJuIGl0ZW0ua2V5IH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZEFjY2Vzc0xldmVscyA9IHNlbGVjdGVkSXRlbXM7XHJcblxyXG4gICAgbGV0IG5vdFNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEFjY2Vzc0xldmVscy5maWx0ZXIoaXRlbSA9PiB1c2VyVHlwZXNLZXlzLmluZGV4T2YoaXRlbSkgPCAwKTtcclxuICAgIG5vdFNlbGVjdGVkLmZvckVhY2goaSA9PiB7XHJcbiAgICAgIHRoaXMucmVtb3ZlQ29udHJvbChgcGVybWlzc2lvbnMtdXNlci10eXBlLSR7aX1gLCB0aGlzLmVkaXRGb3JtKTtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgc2V0UGVybWlzc2lvbkZvclVBRVBhc3NVc2VyVHlwZXModXNlclR5cGU6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VyVHlwZVBlcm1pc3Npb25zLmZpbmQoaSA9PiBpLnVzZXJUeXBlID09IHVzZXJUeXBlKT8ucGVybWlzc2lvbnM7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8jcmVnaW9uIHZhbGlkYXRpb24gYWN0aW9uc1xyXG5cclxuICBhZGRSZXF1aXJlZFZhbGlkYXRpb24oY3VzdG9tQ29udHJvbE9wdGlvbjogYW55W10sIGZvcm06IEZvcm1Hcm91cCwgZm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zKTogdm9pZCB7XHJcbiAgICBjdXN0b21Db250cm9sT3B0aW9uLmZvckVhY2goY29udHJvbCA9PiB7XHJcbiAgICAgIGlmIChmb3JtLmdldChjb250cm9sLk5hbWUpKVxyXG4gICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKGZvcm0uZ2V0KGNvbnRyb2wuTmFtZSksIGZvcm1PcHRpb25zKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGNvbnRyb2wuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbihjdXN0b21Db250cm9sT3B0aW9uOiBhbnlbXSwgZm9ybTogRm9ybUdyb3VwLCBmb3JtT3B0aW9uczogRm9ybU9wdGlvbnMpOiB2b2lkIHtcclxuICAgIGN1c3RvbUNvbnRyb2xPcHRpb24uZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgaWYgKGZvcm0uZ2V0KGNvbnRyb2wuTmFtZSkpXHJcbiAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoZm9ybS5nZXQoY29udHJvbC5OYW1lKSwgZm9ybU9wdGlvbnMpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgY29udHJvbC5Jc1JlcXVpcmVkID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlc2V0Rm9ybUNvbnRyb2xzVmFsdWUoY3VzdG9tQ29udHJvbHNPcHRpb25zOiBhbnlbXSwgZm9ybTogRm9ybUdyb3VwKTogdm9pZCB7XHJcbiAgICBjdXN0b21Db250cm9sc09wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gICAgICBsZXQgZm9ybUNvbnRyb2wgPSBmb3JtLmdldChvcHRpb24uTmFtZSk7XHJcbiAgICAgIGlmIChmb3JtQ29udHJvbClcclxuICAgICAgICBmb3JtQ29udHJvbC5yZXNldCgpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG59XHJcblxyXG5cclxuIiwiPG5nLXRlbXBsYXRlICNlZGl0TW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+XHJcbiAgICAgIHt7dHJhbnNsYXRlKFwiRWRpdEF1dGhDb25maWd1cmF0aW9uXCIpfX1cclxuICAgIDwvaDQ+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1zbVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgc3ZnLWljb24taG92ZXItYnJhbmRcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9jbG9zZS1tb2RhbC5zdmcnXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJlZGl0Rm9ybU9wdGlvbnNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlSWQgPT0gYXV0aGVudGljYXRpb25Nb2RlRW51bVZhbHVlLlVBRVBhc3NcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJiYXNlVVJMVGV4dEJveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJjbGllbnRJZFRleHRCb3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic2VjcmV0S2V5VGV4dEJveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJyZWRpcmVjdFVSTFRleHRCb3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAoT25DaGFuZ2UpPVwib25DaGFuZ2VBY2Nlc3NMZXZlbHMoJGV2ZW50KVwiIFtvcHRpb25zXT1cImFjY2Vzc0xldmVsRHJvcGRvd25cIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IChPbkNoYW5nZSk9XCJjaGFuZ2VQZXJtaXNzaW9uU2V0KCRldmVudClcIiBbb3B0aW9uc109XCJ1c2VyUGVybWlzc2lvblNldERyb3Bkb3duXCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIChPbkNoYW5nZSk9XCJvbkNoYW5nZVNPUFBlcm1pc3Npb25Ub2dnbGVWYWx1ZSgkZXZlbnQpXCIgW29wdGlvbnNdPVwic29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGVcIlxyXG4gICAgICAgICAgICAgIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlXCIgKE9uQ2hhbmdlKT1cIm9uTGlua2luZ0V4aXN0aW5nVXNlcnNUb2dnbGVWYWx1ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJpbXBvcnRpbmdOZXdVc2VyVG9nZ2xlXCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwidXBkYXRlVXNlckluZm9ybWF0aW9uT25Mb2dpblRvZ2dsZVwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJhdGlvbi1oZWFkZXJcIiAqbmdJZj1cInNob3dVc2VyVHlwZVBlcm1pc3Npb25zTWFwcGluZ1wiPlxyXG4gICAgICAgICAgPGg1Pnt7dHJhbnNsYXRlKFwiQWNjZXNzTGV2ZWxzUGVybWlzc2lvbk1hcHBpbmdcIil9fTwvaDU+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0Zvcj1cImxldCBsZXZlbCBvZiBzZWxlY3RlZEFjY2Vzc0xldmVsc1wiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJpbml0RHJvcERvd25PcHRpb25zKGxldmVsKVwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dVc2VyVHlwZUxpbmtpbmdNYXBwaW5nXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJhdGlvbi1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGg1Pnt7dHJhbnNsYXRlKFwiTGlua2luZ09wdGlvbnNcIil9fTwvaDU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdGb3I9XCJsZXQgbGV2ZWwgb2Ygc2VsZWN0ZWRBY2Nlc3NMZXZlbHNcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJsaW5raW5nTW9kZURyb3Bkb3duXCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmF0aW9uLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8aDU+e3t0cmFuc2xhdGUoXCJMaW5raW5nQXR0cmlidXRlc09wdGlvbnNcIil9fTwvaDU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm5hbWVBckNoZWNrYm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwibmFtZUVuQ2hlY2tib3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJlbWFpbENoZWNrYm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiZUlkQ2hlY2tib3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJtb2JpbGVDaGVja2JveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm5hdGlvbmFsaXR5Q2hlY2tib3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJnZW5kZXJDaGVja2JveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJtb2RlSWQgPT0gYXV0aGVudGljYXRpb25Nb2RlRW51bVZhbHVlLkF6dXJlQURcIj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHRcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAge3t0cmFuc2xhdGUoXCJDYW5jZWxcIil9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBhcHBQcmV2ZW50RG91YmxlQ2xpY2sgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tYnJhbmRcIj5cclxuICAgICAgICB7e3RyYW5zbGF0ZSgnU2F2ZScpfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L0JCU0YtRm9ybT5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=