@bnsights/bbsf-admin-portal 1.1.63 → 1.3.1

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 (217) hide show
  1. package/README.md +3 -1
  2. package/bnsights-bbsf-admin-portal-1.3.1.tgz +0 -0
  3. package/esm2022/lib/Pages/ActiveDirectories/active-directories.component.mjs +5 -5
  4. package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +5 -5
  5. package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +5 -5
  6. package/esm2022/lib/Pages/ActiveDirectories/active-directory-routing.module.mjs +5 -5
  7. package/esm2022/lib/Pages/ActiveDirectories/active-directory.module.mjs +5 -5
  8. package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +5 -5
  9. package/esm2022/lib/Pages/_layout/components/aside/aside.component.mjs +5 -5
  10. package/esm2022/lib/Pages/_layout/components/content/content.component.mjs +5 -5
  11. package/esm2022/lib/Pages/_layout/components/footer/footer.component.mjs +5 -5
  12. package/esm2022/lib/Pages/_layout/components/header/header.component.mjs +5 -5
  13. package/esm2022/lib/Pages/_layout/components/header/page-title/page-title.component.mjs +5 -5
  14. package/esm2022/lib/Pages/_layout/components/scripts-init/scripts-init.component.mjs +5 -5
  15. package/esm2022/lib/Pages/_layout/components/subheader/subheader.component.mjs +5 -5
  16. package/esm2022/lib/Pages/_layout/components/subheader/subheader.module.mjs +5 -5
  17. package/esm2022/lib/Pages/_layout/components/toolbar/toolbar.component.mjs +5 -5
  18. package/esm2022/lib/Pages/_layout/components/toolbar/toolbar.module.mjs +5 -5
  19. package/esm2022/lib/Pages/_layout/components/topbar/topbar.component.mjs +5 -5
  20. package/esm2022/lib/Pages/anonymouslayout/activation/activation.component.mjs +5 -5
  21. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout-routing.module.mjs +5 -5
  22. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +11 -6
  23. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +5 -5
  24. package/esm2022/lib/Pages/anonymouslayout/change-password/change-password.component.mjs +5 -5
  25. package/esm2022/lib/Pages/anonymouslayout/error/error.component.mjs +5 -5
  26. package/esm2022/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +5 -5
  27. package/esm2022/lib/Pages/anonymouslayout/login/login.component.mjs +5 -5
  28. package/esm2022/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +5 -5
  29. package/esm2022/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +5 -5
  30. package/esm2022/lib/Pages/anonymouslayout/verify-two-fa/verify-two-fa.component.mjs +5 -5
  31. package/esm2022/lib/Pages/authentication/auth-callback/auth-callback.component.mjs +5 -5
  32. package/esm2022/lib/Pages/authentication/authentication.component.mjs +5 -5
  33. package/esm2022/lib/Pages/authentication/authentication.module.mjs +5 -5
  34. package/esm2022/lib/Pages/authentication/authentication.routing.mjs +5 -5
  35. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +5 -5
  36. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +5 -5
  37. package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +5 -5
  38. package/esm2022/lib/Pages/configurations/configurations.component.mjs +5 -5
  39. package/esm2022/lib/Pages/configurations/configurations.module.mjs +5 -5
  40. package/esm2022/lib/Pages/configurations/configurations.routing.mjs +5 -5
  41. package/esm2022/lib/Pages/core/auth.module.mjs +5 -5
  42. package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +4 -4
  43. package/esm2022/lib/Pages/core/authentication/auth.guard.mjs +4 -4
  44. package/esm2022/lib/Pages/core/authentication/auth.service.mjs +4 -4
  45. package/esm2022/lib/Pages/departments/department/department.component.mjs +5 -5
  46. package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +5 -5
  47. package/esm2022/lib/Pages/departments/departments-routing.module.mjs +5 -5
  48. package/esm2022/lib/Pages/departments/departments.component.mjs +5 -5
  49. package/esm2022/lib/Pages/departments/departments.module.mjs +5 -5
  50. package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +5 -5
  51. package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +5 -5
  52. package/esm2022/lib/Pages/documents/document-template-info/document-template-info.component.mjs +5 -5
  53. package/esm2022/lib/Pages/documents/document-templates/document-templates.component.mjs +5 -5
  54. package/esm2022/lib/Pages/documents/documents.component.mjs +5 -5
  55. package/esm2022/lib/Pages/documents/documents.module.mjs +5 -5
  56. package/esm2022/lib/Pages/documents/documents.routing.mjs +5 -5
  57. package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +5 -5
  58. package/esm2022/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +5 -5
  59. package/esm2022/lib/Pages/empty-data/empty-data.component.mjs +5 -5
  60. package/esm2022/lib/Pages/empty-data/empty-data.module.mjs +5 -5
  61. package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +5 -5
  62. package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +5 -5
  63. package/esm2022/lib/Pages/helpCenter/help-center-routing.module.mjs +5 -5
  64. package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +5 -5
  65. package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +5 -5
  66. package/esm2022/lib/Pages/helpCenter/help-center.module.mjs +5 -5
  67. package/esm2022/lib/Pages/helpCenter/help-centers.component.mjs +5 -5
  68. package/esm2022/lib/Pages/home/filter-pipe.mjs +6 -5
  69. package/esm2022/lib/Pages/home/home.component.mjs +5 -5
  70. package/esm2022/lib/Pages/home/home.module.mjs +5 -5
  71. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +5 -5
  72. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules.module.mjs +5 -5
  73. package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +5 -5
  74. package/esm2022/lib/Pages/jobs/jobs.module.mjs +5 -5
  75. package/esm2022/lib/Pages/license/license/license.component.mjs +5 -5
  76. package/esm2022/lib/Pages/license/license.module.mjs +5 -5
  77. package/esm2022/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +5 -5
  78. package/esm2022/lib/Pages/localizations/localizations.component.mjs +5 -5
  79. package/esm2022/lib/Pages/localizations/localizations.module.mjs +5 -5
  80. package/esm2022/lib/Pages/logs/log/log.component.mjs +5 -5
  81. package/esm2022/lib/Pages/logs/logs-routing.module.mjs +5 -5
  82. package/esm2022/lib/Pages/logs/logs.component.mjs +5 -5
  83. package/esm2022/lib/Pages/logs/logs.module.mjs +5 -5
  84. package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +5 -5
  85. package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +5 -5
  86. package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +5 -5
  87. package/esm2022/lib/Pages/lookups/lookups-routing.module.mjs +5 -5
  88. package/esm2022/lib/Pages/lookups/lookups.component.mjs +5 -5
  89. package/esm2022/lib/Pages/lookups/lookups.module.mjs +5 -5
  90. package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +5 -5
  91. package/esm2022/lib/Pages/notifications/edit-email/edit-email.component.mjs +5 -5
  92. package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +5 -5
  93. package/esm2022/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +5 -5
  94. package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +5 -5
  95. package/esm2022/lib/Pages/notifications/notifications.component.mjs +5 -5
  96. package/esm2022/lib/Pages/notifications/notifications.module.mjs +5 -5
  97. package/esm2022/lib/Pages/notifications/notifications.routing.mjs +5 -5
  98. package/esm2022/lib/Pages/notifications/template-info/template-info.component.mjs +5 -5
  99. package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +5 -5
  100. package/esm2022/lib/Pages/organization/add-organization/add-organization.component.mjs +5 -5
  101. package/esm2022/lib/Pages/organization/edit-organization/edit-organization.component.mjs +5 -5
  102. package/esm2022/lib/Pages/organization/list-organization/list-organization.component.mjs +5 -5
  103. package/esm2022/lib/Pages/organization/organization.component.mjs +5 -5
  104. package/esm2022/lib/Pages/organization/organization.module.mjs +5 -5
  105. package/esm2022/lib/Pages/organization/organization.routing.mjs +5 -5
  106. package/esm2022/lib/Pages/providers/provider/provider.component.mjs +5 -5
  107. package/esm2022/lib/Pages/providers/providers-routing.module.mjs +5 -5
  108. package/esm2022/lib/Pages/providers/providers.component.mjs +5 -5
  109. package/esm2022/lib/Pages/providers/providers.module.mjs +5 -5
  110. package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +5 -5
  111. package/esm2022/lib/Pages/publicHolidays/public-holidays-routing.module.mjs +5 -5
  112. package/esm2022/lib/Pages/publicHolidays/public-holidays.component.mjs +5 -5
  113. package/esm2022/lib/Pages/publicHolidays/public-holidays.module.mjs +5 -5
  114. package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +5 -5
  115. package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +5 -5
  116. package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +5 -5
  117. package/esm2022/lib/Pages/roles/roles-routing.module.mjs +5 -5
  118. package/esm2022/lib/Pages/roles/roles.component.mjs +5 -5
  119. package/esm2022/lib/Pages/roles/roles.module.mjs +5 -5
  120. package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +5 -5
  121. package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +5 -5
  122. package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +5 -5
  123. package/esm2022/lib/Pages/sectors/sectors-routing.module.mjs +5 -5
  124. package/esm2022/lib/Pages/sectors/sectors.component.mjs +5 -5
  125. package/esm2022/lib/Pages/sectors/sectors.module.mjs +5 -5
  126. package/esm2022/lib/Pages/shared/Pipes/survey-date.pipe.mjs +6 -5
  127. package/esm2022/lib/Pages/shared/Services/AccountService.service.mjs +4 -4
  128. package/esm2022/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +4 -4
  129. package/esm2022/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +4 -4
  130. package/esm2022/lib/Pages/shared/Services/ConfigurationsService.service.mjs +4 -4
  131. package/esm2022/lib/Pages/shared/Services/DepartmentService.service.mjs +4 -4
  132. package/esm2022/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +4 -4
  133. package/esm2022/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +4 -4
  134. package/esm2022/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +4 -4
  135. package/esm2022/lib/Pages/shared/Services/ErrorService.service.mjs +4 -4
  136. package/esm2022/lib/Pages/shared/Services/GlobalErrorHandler.service.mjs +4 -4
  137. package/esm2022/lib/Pages/shared/Services/HelpCenterService.service.mjs +4 -4
  138. package/esm2022/lib/Pages/shared/Services/HttpErrorInterceptor.service.mjs +4 -4
  139. package/esm2022/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +4 -4
  140. package/esm2022/lib/Pages/shared/Services/JobsService.service.mjs +4 -4
  141. package/esm2022/lib/Pages/shared/Services/LicenseService.service.mjs +4 -4
  142. package/esm2022/lib/Pages/shared/Services/LogsService.mjs +4 -4
  143. package/esm2022/lib/Pages/shared/Services/LookupGroupsService.service.mjs +4 -4
  144. package/esm2022/lib/Pages/shared/Services/LookupService.service.mjs +4 -4
  145. package/esm2022/lib/Pages/shared/Services/PermissionSetService.service.mjs +4 -4
  146. package/esm2022/lib/Pages/shared/Services/PermissionsService.service.mjs +4 -4
  147. package/esm2022/lib/Pages/shared/Services/PublicHolidayService.service.mjs +4 -4
  148. package/esm2022/lib/Pages/shared/Services/SectorService.service.mjs +4 -4
  149. package/esm2022/lib/Pages/shared/Services/TemplateService.service.mjs +4 -4
  150. package/esm2022/lib/Pages/shared/Services/WorkFlowVersionService.service.mjs +4 -4
  151. package/esm2022/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +4 -4
  152. package/esm2022/lib/Pages/shared/Services/WorkflowInstanceService.service.mjs +4 -4
  153. package/esm2022/lib/Pages/shared/Services/WorkflowLogVariablesService.service.mjs +4 -4
  154. package/esm2022/lib/Pages/shared/Services/WorkflowService.service.mjs +4 -4
  155. package/esm2022/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +4 -4
  156. package/esm2022/lib/Pages/shared/Services/data.service.mjs +4 -4
  157. package/esm2022/lib/Pages/shared/Services/injectionModuleService.service.mjs +4 -4
  158. package/esm2022/lib/Pages/shared/Services/localizationsService.service .mjs +4 -4
  159. package/esm2022/lib/Pages/shared/Services/organization.service.mjs +4 -4
  160. package/esm2022/lib/Pages/shared/Services/provider.service.mjs +4 -4
  161. package/esm2022/lib/Pages/shared/Services/survey-question.service.mjs +4 -4
  162. package/esm2022/lib/Pages/shared/Services/survey.service.mjs +4 -4
  163. package/esm2022/lib/Pages/shared/Services/userService.service.mjs +4 -4
  164. package/esm2022/lib/Pages/shared/components/AdDirective.mjs +5 -4
  165. package/esm2022/lib/Pages/shared/components/external-url/external-url.component.mjs +5 -5
  166. package/esm2022/lib/Pages/shared/components/no-results/no-results.component.mjs +5 -5
  167. package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +5 -5
  168. package/esm2022/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +5 -5
  169. package/esm2022/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +5 -5
  170. package/esm2022/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +5 -5
  171. package/esm2022/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +5 -5
  172. package/esm2022/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +5 -5
  173. package/esm2022/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +5 -5
  174. package/esm2022/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +5 -5
  175. package/esm2022/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +5 -5
  176. package/esm2022/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +5 -5
  177. package/esm2022/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +5 -5
  178. package/esm2022/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +5 -5
  179. package/esm2022/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +5 -5
  180. package/esm2022/lib/Pages/shared/components/survey/survey-info/survey-info.component.mjs +5 -5
  181. package/esm2022/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +5 -5
  182. package/esm2022/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +5 -5
  183. package/esm2022/lib/Pages/shared/components/survey/survey.component.mjs +5 -5
  184. package/esm2022/lib/Pages/shared/components/survey-form/survey-form.component.mjs +5 -5
  185. package/esm2022/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +5 -5
  186. package/esm2022/lib/Pages/shared/components/survey-layout/survey-layout.component.mjs +5 -5
  187. package/esm2022/lib/Pages/shared/config.service.mjs +4 -4
  188. package/esm2022/lib/Pages/shared/filter/filter.component.mjs +5 -5
  189. package/esm2022/lib/Pages/shared/modules/public-survey.module.mjs +5 -5
  190. package/esm2022/lib/Pages/shared/modules/survey-routing.module.mjs +5 -5
  191. package/esm2022/lib/Pages/shared/modules/survey.module.mjs +5 -5
  192. package/esm2022/lib/Pages/shared/shared.module.mjs +5 -5
  193. package/esm2022/lib/Pages/shared/stylesbundle.service.mjs +4 -4
  194. package/esm2022/lib/Pages/start/index/index.component.mjs +5 -5
  195. package/esm2022/lib/Pages/start/start-routing.module.mjs +5 -5
  196. package/esm2022/lib/Pages/start/start.module.mjs +5 -5
  197. package/esm2022/lib/Pages/users/users.component.mjs +5 -5
  198. package/esm2022/lib/Pages/users/users.module.mjs +5 -5
  199. package/esm2022/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +5 -5
  200. package/esm2022/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +5 -5
  201. package/esm2022/lib/Pages/workflows/instance-info/instance-info.component.mjs +5 -5
  202. package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +5 -5
  203. package/esm2022/lib/Pages/workflows/version-info/version-info.component.mjs +5 -5
  204. package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +5 -5
  205. package/esm2022/lib/Pages/workflows/workflows-routing.module.mjs +5 -5
  206. package/esm2022/lib/Pages/workflows/workflows.component.mjs +5 -5
  207. package/esm2022/lib/Pages/workflows/workflows.module.mjs +5 -5
  208. package/esm2022/lib/_metronic/core/services/layout-init.service.mjs +4 -4
  209. package/esm2022/lib/_metronic/core/services/layout.service.mjs +4 -4
  210. package/esm2022/lib/_metronic/core/services/page-info.service.mjs +4 -4
  211. package/esm2022/lib/masterlayout.component.mjs +5 -5
  212. package/esm2022/lib/masterlayout.module.mjs +5 -5
  213. package/esm2022/lib/masterlayout.routing.mjs +5 -5
  214. package/fesm2022/bnsights-bbsf-admin-portal.mjs +802 -796
  215. package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -1
  216. package/lib/Pages/anonymouslayout/anonymouslayout.component.d.ts +2 -0
  217. package/package.json +12 -12
@@ -313,12 +313,12 @@ export class EditAuthConfigurationComponent extends AppBaseComponent {
313
313
  formControl.reset();
314
314
  });
315
315
  }
316
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", 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.3.12", 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'\"></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\r\n (onChange)=\"onChangeSOPPermissionToggleValue($event)\"\r\n [options]=\"sopPermissionMappingToggle\"\r\n [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide\r\n [options]=\"linkingExistingUsersToggle\"\r\n (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 </ng-container>\r\n\r\n <div class=\"row\" *ngIf=\"modeId == authenticationModeEnumValue.AzureAD\"></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>\r\n", 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"] }] }); }
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'\"></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\r\n (onChange)=\"onChangeSOPPermissionToggleValue($event)\"\r\n [options]=\"sopPermissionMappingToggle\"\r\n [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide\r\n [options]=\"linkingExistingUsersToggle\"\r\n (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 </ng-container>\r\n\r\n <div class=\"row\" *ngIf=\"modeId == authenticationModeEnumValue.AzureAD\"></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>\r\n", 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
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EditAuthConfigurationComponent, decorators: [{
319
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EditAuthConfigurationComponent, decorators: [{
320
320
  type: Component,
321
- args: [{ selector: 'auth-configuration-edit', 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'\"></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\r\n (onChange)=\"onChangeSOPPermissionToggleValue($event)\"\r\n [options]=\"sopPermissionMappingToggle\"\r\n [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide\r\n [options]=\"linkingExistingUsersToggle\"\r\n (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 </ng-container>\r\n\r\n <div class=\"row\" *ngIf=\"modeId == authenticationModeEnumValue.AzureAD\"></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>\r\n" }]
321
+ args: [{ selector: 'auth-configuration-edit', standalone: false, 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'\"></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\r\n (onChange)=\"onChangeSOPPermissionToggleValue($event)\"\r\n [options]=\"sopPermissionMappingToggle\"\r\n [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide\r\n [options]=\"linkingExistingUsersToggle\"\r\n (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 </ng-container>\r\n\r\n <div class=\"row\" *ngIf=\"modeId == authenticationModeEnumValue.AzureAD\"></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>\r\n" }]
322
322
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.MasterLayoutService }, { type: i2.ConfigurationsService }, { type: i3.UserService }], propDecorators: { pagingElement: [{
323
323
  type: Input
324
324
  }], onSuccessTakePenaltyHandler: [{
@@ -327,4 +327,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
327
327
  type: ViewChild,
328
328
  args: ["editModal", { static: false }]
329
329
  }] } });
330
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9jb25maWd1cmF0aW9ucy9hdXRoLWNvbmZpZ3VyYXRpb24vYXV0aC1jb25maWd1cmF0aW9uLWVkaXQvYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9jb25maWd1cmF0aW9ucy9hdXRoLWNvbmZpZ3VyYXRpb24vYXV0aC1jb25maWd1cmF0aW9uLWVkaXQvYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBd0IsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHeEssT0FBTyxFQUFFLCtCQUErQixFQUFFLG9CQUFvQixFQUFxRCxNQUFNLCtEQUErRCxDQUFDO0FBQ3pMLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFDOzs7Ozs7OztBQVM1SSxNQUFNLE9BQU8sOEJBQStCLFNBQVEsZ0JBQWdCO0lBK0NsRSxZQUFZO0lBRVosWUFBWTtJQUVaLFlBQ1UsUUFBa0IsRUFDbEIsbUJBQXdDLEVBQ3hDLHFCQUE0QyxFQUM1QyxXQUF3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O2dCQUlxQyxLQUFLO3NCQUEvQyxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50LCBDaGVja0JveE9wdGlvbnMsIENvbnRyb2xMYXlvdXQsIERyb3Bkb3duT3B0aW9ucywgRm9ybU9wdGlvbnMsIElucHV0VHlwZSwgVGV4dEJveE9wdGlvbnMsIFRvZ2dsZVNsaWRlT3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgTWFzdGVyTGF5b3V0U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiwgVUFFUGFzc0NvbmZpZ3VyYXRpb24sIFVBRVBhc3NVc2VySW5mb01hcHBpbmcsIFVBRVBhc3NVc2VyVHlwZVBlcm1pc3Npb24gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL0NvbmZpZ3VyYXRpb25Nb2RlbHMvQ29uZmlndXJhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Nb2RlLCBVQUVQYXNzTGlua2luZ01vZGUsIFVBRVBhc3NVc2VyVHlwZXMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvRW51bXMvY29uZmlndXJhdGlvbi9hdXRoZW50ZWNhdGlvbi1jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0NvbmZpZ3VyYXRpb25zU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWxPcHRpb25zIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy91c2VyU2VydmljZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXV0aC1jb25maWd1cmF0aW9uLWVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRoLWNvbmZpZ3VyYXRpb24tZWRpdC5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0QXV0aENvbmZpZ3VyYXRpb25Db21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBwYWdpbmdFbGVtZW50O1xyXG4gIEBJbnB1dCgpIG9uU3VjY2Vzc1Rha2VQZW5hbHR5SGFuZGxlcjogRnVuY3Rpb247XHJcblxyXG4gIGVkaXRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZWRpdEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgQFZpZXdDaGlsZChcImVkaXRNb2RhbFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgbW9kYWw6IEVsZW1lbnRSZWY7XHJcblxyXG4gIG1vZGVJZDogbnVtYmVyID0gdW5kZWZpbmVkO1xyXG4gIGF1dGhlbnRpY2F0aW9uTW9kZUVudW1WYWx1ZSA9IEF1dGhlbnRpY2F0aW9uTW9kZTtcclxuXHJcbiAgLy8jcmVnaW9uIHVhZSBwYXNzIHByb3BzXHJcbiAgYmFzZVVSTFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIGNsaWVudElkVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2VjcmV0S2V5VGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgcmVkaXJlY3RVUkxUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBhY2Nlc3NMZXZlbERyb3Bkb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgbGlua2luZ01vZGVEcm9wZG93bjogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICBsaW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGltcG9ydGluZ05ld1VzZXJUb2dnbGU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICB1cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgc29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuXHJcbiAgdXNlclBlcm1pc3Npb25TZXREcm9wZG93bjogRHJvcGRvd25PcHRpb25zO1xyXG4gIHVzZXJQZXJtaXNzaW9uczogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICB1YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsOiBVQUVQYXNzQ29uZmlndXJhdGlvbiA9IG5ldyBVQUVQYXNzQ29uZmlndXJhdGlvbigpO1xyXG5cclxuICBwZXJtaXNzaW9uU2V0TGlzdCA9IFtdO1xyXG4gIHBlcm1pc3Npb25zTGlzdCA9IFtdO1xyXG5cclxuICBzaG93VXNlclR5cGVQZXJtaXNzaW9uc01hcHBpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93VXNlclR5cGVMaW5raW5nTWFwcGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHVhZVBhc3NVc2VyVHlwZUVudW06IFVBRVBhc3NVc2VyVHlwZXM7XHJcbiAgdWFlUGFzc1VzZXJUeXBlTGlzdDogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZEFjY2Vzc0xldmVsczogYW55W10gPSBbXTtcclxuXHJcbiAgLy8jcmVnaW9uIGxpbmtpbmcgbWFwcGluZ1xyXG4gIG5hbWVBckNoZWNrYm94OiBDaGVja0JveE9wdGlvbnM7XHJcbiAgbmFtZUVuQ2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuICBlbWFpbENoZWNrYm94OiBDaGVja0JveE9wdGlvbnM7XHJcbiAgZUlkQ2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuICBtb2JpbGVDaGVja2JveDogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIG5hdGlvbmFsaXR5Q2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuICBnZW5kZXJDaGVja2JveDogQ2hlY2tCb3hPcHRpb25zO1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIG1hc3RlckxheW91dFNlcnZpY2U6IE1hc3RlckxheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25zU2VydmljZTogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcbiAgLy8jcmVnaW9uIGhlbHBlclxyXG5cclxuICB0cmFuc2xhdGUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShrZXkpO1xyXG4gIH1cclxuXHJcbiAgbG9hZFVBRVBhc3NVc2VyVHlwZXMoKSB7XHJcbiAgICBsZXQgbGlzdDogYW55W10gPSBbXTtcclxuICAgIGZvciAodmFyIGl0ZW0gaW4gVUFFUGFzc1VzZXJUeXBlcykge1xyXG4gICAgICBpZiAocGFyc2VJbnQoaXRlbSkpXHJcbiAgICAgICAgbGlzdC5wdXNoKHtcclxuICAgICAgICAgIGtleTogK2l0ZW0sXHJcbiAgICAgICAgICB2YWx1ZTogVUFFUGFzc1VzZXJUeXBlc1tpdGVtXVxyXG4gICAgICAgIH0gYXMgYW55KTtcclxuICAgIH1cclxuICAgIHRoaXMudWFlUGFzc1VzZXJUeXBlTGlzdCA9IGxpc3Q7XHJcbiAgICByZXR1cm4gbGlzdDtcclxuICB9XHJcblxyXG4gIGxvYWRVQUVQYXNzTGlua2luZ01vZGUoKSB7XHJcbiAgICBsZXQgbGlzdDogYW55W10gPSBbXTtcclxuICAgIGZvciAodmFyIGl0ZW0gaW4gVUFFUGFzc0xpbmtpbmdNb2RlKSB7XHJcbiAgICAgIGlmIChwYXJzZUludChpdGVtKSlcclxuICAgICAgICBsaXN0LnB1c2goe1xyXG4gICAgICAgICAga2V5OiAraXRlbSxcclxuICAgICAgICAgIHZhbHVlOiB0aGlzLnRyYW5zbGF0ZShVQUVQYXNzTGlua2luZ01vZGVbaXRlbV0pXHJcbiAgICAgICAgfSBhcyBhbnkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXRVQUVQYXNzVXNlclR5cGVWYWx1ZShrZXk6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMudWFlUGFzc1VzZXJUeXBlTGlzdC5maW5kKGkgPT4gaS5rZXkgPT0ga2V5KS52YWx1ZTtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBzaG93TW9kYWwobW9kZTogQXV0aGVudGljYXRpb25Nb2RlLCBhdXRoQ29uZmlnT2JqZWN0OiBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKSB7XHJcbiAgICB0aGlzLm1vZGVJZCA9IG1vZGU7XHJcbiAgICBpZiAodGhpcy5lZGl0Rm9ybSkge1xyXG4gICAgICB0aGlzLmVkaXRGb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgdGhpcy5lZGl0Rm9ybS5yZXNldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWRpdEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgIHRoaXMuZWRpdEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucy5mb3JtR3JvdXAgPSB0aGlzLmVkaXRGb3JtIGFzIGFueTtcclxuICAgIHRoaXMuZWRpdEZvcm1PcHRpb25zLnBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgIHRoaXMuZWRpdEZvcm1PcHRpb25zLmdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZE1vZGVsO1xyXG4gICAgdGhpcy5lZGl0Rm9ybU9wdGlvbnMuc2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRTdWJtaXRGdW5jdGlvbjtcclxuICAgIHRoaXMuZWRpdEZvcm1PcHRpb25zLmRpc2FibGVTdWNjZXNzTm90aWZpY2F0aW9uID0gZmFsc2U7XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucy5vblN1Y2Nlc3NIYW5kbGVyID0gdGhpcy5vblN1Y2Nlc3NIYW5kbGVyO1xyXG5cclxuICAgIHN3aXRjaCAobW9kZSkge1xyXG4gICAgICBjYXNlIEF1dGhlbnRpY2F0aW9uTW9kZS5VQUVQYXNzOlxyXG4gICAgICAgIHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbCA9IGF1dGhDb25maWdPYmplY3QudWFlUGFzc0NvbmZpZztcclxuXHJcbiAgICAgICAgdGhpcy5iYXNlVVJMVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYmFzZVVSTFRleHRCb3gubmFtZSA9IFwiYmFzZVVybFwiO1xyXG4gICAgICAgIHRoaXMuYmFzZVVSTFRleHRCb3gubGFiZWxLZXkgPSBcIkJhc2VVcmxcIjtcclxuICAgICAgICB0aGlzLmJhc2VVUkxUZXh0Qm94LnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLmJhc2VVUkxUZXh0Qm94LnZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgICAgICB0aGlzLmJhc2VVUkxUZXh0Qm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmJhc2VVcmw7XHJcblxyXG4gICAgICAgIHRoaXMuY2xpZW50SWRUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZFRleHRCb3gubmFtZSA9IFwiY2xpZW50SURcIjtcclxuICAgICAgICB0aGlzLmNsaWVudElkVGV4dEJveC5sYWJlbEtleSA9IFwiQ2xpZW50SURcIjtcclxuICAgICAgICB0aGlzLmNsaWVudElkVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZFRleHRCb3gudmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWRUZXh0Qm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmNsaWVudElEO1xyXG5cclxuICAgICAgICB0aGlzLnNlY3JldEtleVRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnNlY3JldEtleVRleHRCb3gubmFtZSA9IFwic2VjcmV0S2V5XCI7XHJcbiAgICAgICAgdGhpcy5zZWNyZXRLZXlUZXh0Qm94LmxhYmVsS2V5ID0gXCJTZWNyZXRLZXlcIjtcclxuICAgICAgICB0aGlzLnNlY3JldEtleVRleHRCb3gudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuc2VjcmV0S2V5VGV4dEJveC52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgICAgdGhpcy5zZWNyZXRLZXlUZXh0Qm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnNlY3JldEtleTtcclxuXHJcbiAgICAgICAgdGhpcy5yZWRpcmVjdFVSTFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnJlZGlyZWN0VVJMVGV4dEJveC5uYW1lID0gXCJyZWRpcmVjdFVybFwiO1xyXG4gICAgICAgIHRoaXMucmVkaXJlY3RVUkxUZXh0Qm94LmxhYmVsS2V5ID0gXCJSZWRpcmVjdFVybFwiO1xyXG4gICAgICAgIHRoaXMucmVkaXJlY3RVUkxUZXh0Qm94LnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLnJlZGlyZWN0VVJMVGV4dEJveC52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgICAgdGhpcy5yZWRpcmVjdFVSTFRleHRCb3gudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwucmVkaXJlY3RVcmw7XHJcblxyXG4gICAgICAgIHRoaXMuYWNjZXNzTGV2ZWxEcm9wZG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFjY2Vzc0xldmVsRHJvcGRvd24ubmFtZSA9IFwiYWNjZXNzTGV2ZWxzXCI7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NMZXZlbERyb3Bkb3duLmxhYmVsS2V5ID0gXCJBY2Nlc3NMZXZlbFwiO1xyXG4gICAgICAgIHRoaXMuYWNjZXNzTGV2ZWxEcm9wZG93bi5zaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmFjY2Vzc0xldmVsRHJvcGRvd24uc2VsZWN0ZWRJdGVtcyA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5hY2Nlc3NMZXZlbHM7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NMZXZlbERyb3Bkb3duLmRhdGFTb3VyY2UgPSB0aGlzLmxvYWRVQUVQYXNzVXNlclR5cGVzKCk7XHJcblxyXG4gICAgICAgIHRoaXMubGlua2luZ01vZGVEcm9wZG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmxpbmtpbmdNb2RlRHJvcGRvd24ubmFtZSA9IFwibGlua2luZ01vZGVcIjtcclxuICAgICAgICB0aGlzLmxpbmtpbmdNb2RlRHJvcGRvd24ubGFiZWxLZXkgPSBcIkxpbmtpbmdNb2RlXCI7XHJcbiAgICAgICAgdGhpcy5saW5raW5nTW9kZURyb3Bkb3duLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5saW5raW5nTW9kZURyb3Bkb3duLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwubGlua2luZ01vZGU7XHJcbiAgICAgICAgdGhpcy5saW5raW5nTW9kZURyb3Bkb3duLmRhdGFTb3VyY2UgPSB0aGlzLmxvYWRVQUVQYXNzTGlua2luZ01vZGUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5zb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnNvcFBlcm1pc3Npb25NYXBwaW5nVG9nZ2xlLm5hbWUgPSBcInNvcFBlcm1pc3Npb25NYXBwaW5nXCI7XHJcbiAgICAgICAgdGhpcy5zb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZS5sYWJlbEtleSA9IFwiU09QUGVybWlzc2lvbk1hcHBpbmdcIjtcclxuICAgICAgICB0aGlzLnNvcFBlcm1pc3Npb25NYXBwaW5nVG9nZ2xlLnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmVuYWJsZVNPUFBlcm1pc3Npb25NYXBwaW5nO1xyXG5cclxuICAgICAgICB0aGlzLmxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMubGlua2luZ0V4aXN0aW5nVXNlcnNUb2dnbGUubmFtZSA9IFwibGlua2luZ0V4aXN0aW5nVXNlcnNcIjtcclxuICAgICAgICB0aGlzLmxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlLmxhYmVsS2V5ID0gXCJMaW5raW5nRXhpc3RpbmdVc2Vyc1wiO1xyXG4gICAgICAgIHRoaXMubGlua2luZ0V4aXN0aW5nVXNlcnNUb2dnbGUudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZW5hYmxlTGlua2luZ0V4aXN0aW5nVXNlcnM7XHJcblxyXG4gICAgICAgIHRoaXMuaW1wb3J0aW5nTmV3VXNlclRvZ2dsZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmltcG9ydGluZ05ld1VzZXJUb2dnbGUubmFtZSA9IFwiaW1wb3J0aW5nTmV3VXNlclwiO1xyXG4gICAgICAgIHRoaXMuaW1wb3J0aW5nTmV3VXNlclRvZ2dsZS5sYWJlbEtleSA9IFwiSW1wb3J0aW5nTmV3VXNlclwiO1xyXG4gICAgICAgIHRoaXMuaW1wb3J0aW5nTmV3VXNlclRvZ2dsZS52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5lbmFibGVJbXBvcnRpbmdOZXdVc2VyO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW5Ub2dnbGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlLm5hbWUgPSBcInVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW5cIjtcclxuICAgICAgICB0aGlzLnVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW5Ub2dnbGUubGFiZWxLZXkgPSBcIlVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW5cIjtcclxuICAgICAgICB0aGlzLnVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW5Ub2dnbGUudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZW5hYmxlVXBkYXRlVXNlckluZm9ybWF0aW9uT25Mb2dpbjtcclxuXHJcbiAgICAgICAgdGhpcy51c2VyUGVybWlzc2lvblNldERyb3Bkb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5uYW1lID0gXCJQZXJtaXNzaW9uU2V0c1wiO1xyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5sYWJlbEtleSA9IFwiUGVybWlzc2lvblNldHNcIjtcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd24uc2VsZWN0ZWRJdGVtcyA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5kZWZhdWx0UGVybWlzc2lvblNldDtcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd24uc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd24uYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5uYW1lQXJDaGVja2JveCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLm5hbWVBckNoZWNrYm94Lm5hbWUgPSBcIm5hbWVBclwiO1xyXG4gICAgICAgIHRoaXMubmFtZUFyQ2hlY2tib3gubGFiZWxLZXkgPSBcIk5hbWVBUlwiO1xyXG4gICAgICAgIHRoaXMubmFtZUFyQ2hlY2tib3gudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlckluZm9NYXBwaW5nLm5hbWVBUjtcclxuXHJcbiAgICAgICAgdGhpcy5uYW1lRW5DaGVja2JveCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLm5hbWVFbkNoZWNrYm94Lm5hbWUgPSBcIm5hbWVFblwiO1xyXG4gICAgICAgIHRoaXMubmFtZUVuQ2hlY2tib3gubGFiZWxLZXkgPSBcIk5hbWVFTlwiO1xyXG4gICAgICAgIHRoaXMubmFtZUVuQ2hlY2tib3gudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlckluZm9NYXBwaW5nLm5hbWVFTjtcclxuXHJcbiAgICAgICAgdGhpcy5lbWFpbENoZWNrYm94ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZW1haWxDaGVja2JveC5uYW1lID0gXCJlbWFpbFwiO1xyXG4gICAgICAgIHRoaXMuZW1haWxDaGVja2JveC5sYWJlbEtleSA9IFwiRW1haWxcIjtcclxuICAgICAgICB0aGlzLmVtYWlsQ2hlY2tib3gudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlckluZm9NYXBwaW5nLmVtYWlsO1xyXG5cclxuICAgICAgICB0aGlzLmVJZENoZWNrYm94ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZUlkQ2hlY2tib3gubmFtZSA9IFwiZUlkXCI7XHJcbiAgICAgICAgdGhpcy5lSWRDaGVja2JveC5sYWJlbEtleSA9IFwiRUlEXCI7XHJcbiAgICAgICAgdGhpcy5lSWRDaGVja2JveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VySW5mb01hcHBpbmcuRUlEO1xyXG5cclxuICAgICAgICB0aGlzLm1vYmlsZUNoZWNrYm94ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMubW9iaWxlQ2hlY2tib3gubmFtZSA9IFwibW9iaWxlXCI7XHJcbiAgICAgICAgdGhpcy5tb2JpbGVDaGVja2JveC5sYWJlbEtleSA9IFwiTW9iaWxlXCI7XHJcbiAgICAgICAgdGhpcy5tb2JpbGVDaGVja2JveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VySW5mb01hcHBpbmcubW9iaWxlO1xyXG5cclxuICAgICAgICB0aGlzLm5hdGlvbmFsaXR5Q2hlY2tib3ggPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5uYXRpb25hbGl0eUNoZWNrYm94Lm5hbWUgPSBcIm5hdGlvbmFsaXR5XCI7XHJcbiAgICAgICAgdGhpcy5uYXRpb25hbGl0eUNoZWNrYm94LmxhYmVsS2V5ID0gXCJOYXRpb25hbGl0eVwiO1xyXG4gICAgICAgIHRoaXMubmF0aW9uYWxpdHlDaGVja2JveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VySW5mb01hcHBpbmcubmF0aW9uYWxpdHk7XHJcblxyXG4gICAgICAgIHRoaXMuZ2VuZGVyQ2hlY2tib3ggPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5nZW5kZXJDaGVja2JveC5uYW1lID0gXCJnZW5kZXJcIjtcclxuICAgICAgICB0aGlzLmdlbmRlckNoZWNrYm94LmxhYmVsS2V5ID0gXCJHZW5kZXJcIjtcclxuICAgICAgICB0aGlzLmdlbmRlckNoZWNrYm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnVzZXJJbmZvTWFwcGluZy5nZW5kZXI7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0UGVybWlzc2lvblNldHMoKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlU09QUGVybWlzc2lvblRvZ2dsZVZhbHVlKHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5lbmFibGVTT1BQZXJtaXNzaW9uTWFwcGluZyk7XHJcbiAgICAgICAgdGhpcy5vbkxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlVmFsdWUodGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmVuYWJsZUxpbmtpbmdFeGlzdGluZ1VzZXJzKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlQWNjZXNzTGV2ZWxzKHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5hY2Nlc3NMZXZlbHMpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmRlZmF1bHRQZXJtaXNzaW9uU2V0KVxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VQZXJtaXNzaW9uU2V0KHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5kZWZhdWx0UGVybWlzc2lvblNldCk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEF1dGhlbnRpY2F0aW9uTW9kZS5BenVyZUFEOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5tb2RhbCwgeyBzaXplOiAneGwnIH0gYXMgTmdiTW9kYWxPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGdldEFkZE1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHJlc3VsdE1vZGVsID0gdGhpcy5lZGl0Rm9ybS52YWx1ZSBhcyBhbnk7XHJcbiAgICBsZXQgZWRpdE1vZGVsOiBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uID0gbmV3IEJCU0ZBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oKTtcclxuICAgIGVkaXRNb2RlbC5tb2RlSWQgPSB0aGlzLm1vZGVJZDtcclxuICAgIGVkaXRNb2RlbC51YWVQYXNzQ29uZmlnID0gdGhpcy5idWlsZFVBRVBhc3NDb25maWdPYmplY3QocmVzdWx0TW9kZWwpO1xyXG4gICAgcmV0dXJuIEFycmF5KGVkaXRNb2RlbCk7XHJcbiAgfTtcclxuXHJcbiAgZ2V0U3VibWl0RnVuY3Rpb24gPSAoZWRpdE1vZGVsOiBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25zU2VydmljZS51cGRhdGVBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb25EYXRhKGVkaXRNb2RlbCk7XHJcbiAgfTtcclxuXHJcbiAgb25TdWNjZXNzSGFuZGxlciA9ICgpOiB2b2lkID0+IHtcclxuICAgIHRoaXMubWFzdGVyTGF5b3V0U2VydmljZS5yZWxvYWRDb21wb25lbnQoKTtcclxuICB9O1xyXG5cclxuICBidWlsZFVBRVBhc3NDb25maWdPYmplY3QoZm9ybVZhbHVlOiBhbnkpOiBVQUVQYXNzQ29uZmlndXJhdGlvbiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBiYXNlVXJsOiBmb3JtVmFsdWVbdGhpcy5iYXNlVVJMVGV4dEJveC5uYW1lXSxcclxuICAgICAgY2xpZW50SUQ6IGZvcm1WYWx1ZVt0aGlzLmNsaWVudElkVGV4dEJveC5uYW1lXSxcclxuICAgICAgc2VjcmV0S2V5OiBmb3JtVmFsdWVbdGhpcy5zZWNyZXRLZXlUZXh0Qm94Lm5hbWVdLFxyXG4gICAgICByZWRpcmVjdFVybDogZm9ybVZhbHVlW3RoaXMucmVkaXJlY3RVUkxUZXh0Qm94Lm5hbWVdLFxyXG4gICAgICBhY2Nlc3NMZXZlbHM6IGZvcm1WYWx1ZVt0aGlzLmFjY2Vzc0xldmVsRHJvcGRvd24ubmFtZV0sXHJcbiAgICAgIGVuYWJsZUxpbmtpbmdFeGlzdGluZ1VzZXJzOiBmb3JtVmFsdWVbdGhpcy5saW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZS5uYW1lXSxcclxuICAgICAgZW5hYmxlSW1wb3J0aW5nTmV3VXNlcjogZm9ybVZhbHVlW3RoaXMuaW1wb3J0aW5nTmV3VXNlclRvZ2dsZS5uYW1lXSxcclxuICAgICAgZW5hYmxlVXBkYXRlVXNlckluZm9ybWF0aW9uT25Mb2dpbjogZm9ybVZhbHVlW3RoaXMudXBkYXRlVXNlckluZm9ybWF0aW9uT25Mb2dpblRvZ2dsZS5uYW1lXSxcclxuICAgICAgZGVmYXVsdFBlcm1pc3Npb25TZXQ6IGZvcm1WYWx1ZVt0aGlzLnVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd24ubmFtZV0sXHJcbiAgICAgIGVuYWJsZVNPUFBlcm1pc3Npb25NYXBwaW5nOiBmb3JtVmFsdWVbdGhpcy5zb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZS5uYW1lXSxcclxuICAgICAgdXNlclR5cGVQZXJtaXNzaW9uczogdGhpcy5idWlsZFVzZXJUeXBlUGVybWlzc2lvbigpLFxyXG4gICAgICB1c2VySW5mb01hcHBpbmc6IHRoaXMuYnVpbGRVc2VySW5mb01hcHBpbmcoZm9ybVZhbHVlKSxcclxuICAgICAgbGlua2luZ01vZGU6IGZvcm1WYWx1ZVt0aGlzLmxpbmtpbmdNb2RlRHJvcGRvd24ubmFtZV0sXHJcbiAgICB9IGFzIFVBRVBhc3NDb25maWd1cmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRVc2VySW5mb01hcHBpbmcoZm9ybVZhbHVlOiBhbnkpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5hbWVFTjogZm9ybVZhbHVlW3RoaXMubmFtZUVuQ2hlY2tib3gubmFtZV0sXHJcbiAgICAgIG5hbWVBUjogZm9ybVZhbHVlW3RoaXMubmFtZUFyQ2hlY2tib3gubmFtZV0sXHJcbiAgICAgIGVtYWlsOiBmb3JtVmFsdWVbdGhpcy5lbWFpbENoZWNrYm94Lm5hbWVdLFxyXG4gICAgICBFSUQ6IGZvcm1WYWx1ZVt0aGlzLmVJZENoZWNrYm94Lm5hbWVdLFxyXG4gICAgICBtb2JpbGU6IGZvcm1WYWx1ZVt0aGlzLm1vYmlsZUNoZWNrYm94Lm5hbWVdLFxyXG4gICAgICBuYXRpb25hbGl0eTogZm9ybVZhbHVlW3RoaXMubmF0aW9uYWxpdHlDaGVja2JveC5uYW1lXSxcclxuICAgICAgZ2VuZGVyOiBmb3JtVmFsdWVbdGhpcy5nZW5kZXJDaGVja2JveC5uYW1lXVxyXG4gICAgfSBhcyBVQUVQYXNzVXNlckluZm9NYXBwaW5nO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRVc2VyVHlwZVBlcm1pc3Npb24oKTogVUFFUGFzc1VzZXJUeXBlUGVybWlzc2lvbltdIHtcclxuICAgIGxldCByZXNMaXN0OiBVQUVQYXNzVXNlclR5cGVQZXJtaXNzaW9uW10gPSBbXTtcclxuICAgIGlmICh0aGlzLnNob3dVc2VyVHlwZVBlcm1pc3Npb25zTWFwcGluZykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQWNjZXNzTGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4ge1xyXG4gICAgICAgIHJlc0xpc3QucHVzaCh7XHJcbiAgICAgICAgICB1c2VyVHlwZTogbGV2ZWwsXHJcbiAgICAgICAgICBwZXJtaXNzaW9uczogdGhpcy5lZGl0Rm9ybS5jb250cm9sc1tgcGVybWlzc2lvbnMtdXNlci10eXBlLSR7bGV2ZWx9YF0/LnZhbHVlLFxyXG4gICAgICAgIH0gYXMgVUFFUGFzc1VzZXJUeXBlUGVybWlzc2lvbik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXNMaXN0O1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIFVBRSBQYXNzIEZ1bmN0aW9uc1xyXG5cclxuICBvbkxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5zaG93VXNlclR5cGVMaW5raW5nTWFwcGluZyA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuc2hvd1VzZXJUeXBlTGlua2luZ01hcHBpbmcpXHJcbiAgICAgIHRoaXMuYWRkUmVxdWlyZWRWYWxpZGF0aW9uKFt0aGlzLmxpbmtpbmdNb2RlRHJvcGRvd25dLCB0aGlzLmVkaXRGb3JtLCB0aGlzLmVkaXRGb3JtT3B0aW9ucyk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKFt0aGlzLmxpbmtpbmdNb2RlRHJvcGRvd25dLCB0aGlzLmVkaXRGb3JtLCB0aGlzLmVkaXRGb3JtT3B0aW9ucyk7XHJcblxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VTT1BQZXJtaXNzaW9uVG9nZ2xlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5zaG93VXNlclR5cGVQZXJtaXNzaW9uc01hcHBpbmcgPSB2YWx1ZTtcclxuICAgIGlmICghdGhpcy5zaG93VXNlclR5cGVQZXJtaXNzaW9uc01hcHBpbmcpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEFjY2Vzc0xldmVscy5mb3JFYWNoKGxldmVsID0+IHtcclxuICAgICAgICB0aGlzLnJlbW92ZUNvbnRyb2woYHBlcm1pc3Npb25zLXVzZXItdHlwZS0ke2xldmVsfWAsIHRoaXMuZWRpdEZvcm0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVBlcm1pc3Npb25TZXQoaWQ6IGFueSkge1xyXG4gICAgaWYgKCFpZCkge1xyXG4gICAgICB0aGlzLnBlcm1pc3Npb25zTGlzdCA9IFtdO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGlkcyA9IEFycmF5KGlkKTtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuTG9hZFBlcm1pc3Npb25zRHJvcERvd24oaWRzKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLnBlcm1pc3Npb25zTGlzdCA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFBlcm1pc3Npb25TZXRzKCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5nZXRQZXJtaXNzaW9uU2V0c0xpc3QoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0TGlzdCA9IHJlcy5wZXJtZXNzaW9uc2V0cztcclxuICAgICAgdGhpcy51c2VyUGVybWlzc2lvblNldERyb3Bkb3duLmRhdGFTb3VyY2UgPSB0aGlzLnBlcm1pc3Npb25TZXRMaXN0O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpbml0RHJvcERvd25PcHRpb25zKHVzZXJUeXBlOiBhbnkpIHtcclxuICAgIHZhciBwZXJtaXNzaW9uRHJvcERvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucy5uYW1lID0gYHBlcm1pc3Npb25zLXVzZXItdHlwZS0ke3VzZXJUeXBlfWA7XHJcbiAgICBwZXJtaXNzaW9uRHJvcERvd25PcHRpb25zLmxhYmVsVmFsdWUgPSB0aGlzLnRyYW5zbGF0ZShVQUVQYXNzVXNlclR5cGVzW3VzZXJUeXBlXSkgKyBcIi1cIiArIHRoaXMudHJhbnNsYXRlKFwiUGVybWlzc2lvbnNcIik7XHJcbiAgICBwZXJtaXNzaW9uRHJvcERvd25PcHRpb25zLmlzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnMudmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucy5kYXRhU291cmNlID0gdGhpcy5wZXJtaXNzaW9uc0xpc3Q7XHJcbiAgICBwZXJtaXNzaW9uRHJvcERvd25PcHRpb25zLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNldFBlcm1pc3Npb25Gb3JVQUVQYXNzVXNlclR5cGVzKHVzZXJUeXBlKTtcclxuXHJcbiAgICByZXR1cm4gcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucztcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlQWNjZXNzTGV2ZWxzKHNlbGVjdGVkSXRlbXM6IGFueSkge1xyXG4gICAgbGV0IHVzZXJUeXBlc0tleXMgPSB0aGlzLnVhZVBhc3NVc2VyVHlwZUxpc3QubWFwKGl0ZW0gPT4geyByZXR1cm4gaXRlbS5rZXk7IH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZEFjY2Vzc0xldmVscyA9IHNlbGVjdGVkSXRlbXM7XHJcblxyXG4gICAgbGV0IG5vdFNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEFjY2Vzc0xldmVscy5maWx0ZXIoaXRlbSA9PiB1c2VyVHlwZXNLZXlzLmluZGV4T2YoaXRlbSkgPCAwKTtcclxuICAgIG5vdFNlbGVjdGVkLmZvckVhY2goaSA9PiB7XHJcbiAgICAgIHRoaXMucmVtb3ZlQ29udHJvbChgcGVybWlzc2lvbnMtdXNlci10eXBlLSR7aX1gLCB0aGlzLmVkaXRGb3JtKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHNldFBlcm1pc3Npb25Gb3JVQUVQYXNzVXNlclR5cGVzKHVzZXJUeXBlOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlclR5cGVQZXJtaXNzaW9ucy5maW5kKGkgPT4gaS51c2VyVHlwZSA9PSB1c2VyVHlwZSk/LnBlcm1pc3Npb25zO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vI3JlZ2lvbiB2YWxpZGF0aW9uIGFjdGlvbnNcclxuXHJcbiAgYWRkUmVxdWlyZWRWYWxpZGF0aW9uKGN1c3RvbUNvbnRyb2xPcHRpb246IGFueVtdLCBmb3JtOiBGb3JtR3JvdXAsIGZvcm1PcHRpb25zOiBGb3JtT3B0aW9ucyk6IHZvaWQge1xyXG4gICAgY3VzdG9tQ29udHJvbE9wdGlvbi5mb3JFYWNoKGNvbnRyb2wgPT4ge1xyXG4gICAgICBpZiAoZm9ybS5nZXQoY29udHJvbC5OYW1lKSlcclxuICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShmb3JtLmdldChjb250cm9sLk5hbWUpLCBmb3JtT3B0aW9ucyk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBjb250cm9sLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24oY3VzdG9tQ29udHJvbE9wdGlvbjogYW55W10sIGZvcm06IEZvcm1Hcm91cCwgZm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zKTogdm9pZCB7XHJcbiAgICBjdXN0b21Db250cm9sT3B0aW9uLmZvckVhY2goY29udHJvbCA9PiB7XHJcbiAgICAgIGlmIChmb3JtLmdldChjb250cm9sLk5hbWUpKVxyXG4gICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKGZvcm0uZ2V0KGNvbnRyb2wuTmFtZSksIGZvcm1PcHRpb25zKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGNvbnRyb2wuSXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZXNldEZvcm1Db250cm9sc1ZhbHVlKGN1c3RvbUNvbnRyb2xzT3B0aW9uczogYW55W10sIGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xyXG4gICAgY3VzdG9tQ29udHJvbHNPcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcclxuICAgICAgbGV0IGZvcm1Db250cm9sID0gZm9ybS5nZXQob3B0aW9uLk5hbWUpO1xyXG4gICAgICBpZiAoZm9ybUNvbnRyb2wpXHJcbiAgICAgICAgZm9ybUNvbnRyb2wucmVzZXQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuXHJcblxyXG4iLCI8bmctdGVtcGxhdGUgI2VkaXRNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cclxuICAgICAge3sgdHJhbnNsYXRlKCdFZGl0QXV0aENvbmZpZ3VyYXRpb24nKSB9fVxyXG4gICAgPC9oND5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLXNtXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNCBzdmctaWNvbi1ob3Zlci1icmFuZFwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2Nsb3NlLW1vZGFsLnN2ZydcIj48L2Rpdj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiZWRpdEZvcm1PcHRpb25zXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZUlkID09IGF1dGhlbnRpY2F0aW9uTW9kZUVudW1WYWx1ZS5VQUVQYXNzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiYmFzZVVSTFRleHRCb3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiY2xpZW50SWRUZXh0Qm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNlY3JldEtleVRleHRCb3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwicmVkaXJlY3RVUkxUZXh0Qm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgKG9uQ2hhbmdlKT1cIm9uQ2hhbmdlQWNjZXNzTGV2ZWxzKCRldmVudClcIiBbb3B0aW9uc109XCJhY2Nlc3NMZXZlbERyb3Bkb3duXCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAob25DaGFuZ2UpPVwiY2hhbmdlUGVybWlzc2lvblNldCgkZXZlbnQpXCIgW29wdGlvbnNdPVwidXNlclBlcm1pc3Npb25TZXREcm9wZG93blwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZVxyXG4gICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkNoYW5nZVNPUFBlcm1pc3Npb25Ub2dnbGVWYWx1ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJzb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZVwiXHJcbiAgICAgICAgICAgICAgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGVcclxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJsaW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZVwiXHJcbiAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uTGlua2luZ0V4aXN0aW5nVXNlcnNUb2dnbGVWYWx1ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJpbXBvcnRpbmdOZXdVc2VyVG9nZ2xlXCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwidXBkYXRlVXNlckluZm9ybWF0aW9uT25Mb2dpblRvZ2dsZVwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJhdGlvbi1oZWFkZXJcIiAqbmdJZj1cInNob3dVc2VyVHlwZVBlcm1pc3Npb25zTWFwcGluZ1wiPlxyXG4gICAgICAgICAgPGg1Pnt7IHRyYW5zbGF0ZSgnQWNjZXNzTGV2ZWxzUGVybWlzc2lvbk1hcHBpbmcnKSB9fTwvaDU+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0Zvcj1cImxldCBsZXZlbCBvZiBzZWxlY3RlZEFjY2Vzc0xldmVsc1wiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJpbml0RHJvcERvd25PcHRpb25zKGxldmVsKVwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dVc2VyVHlwZUxpbmtpbmdNYXBwaW5nXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJhdGlvbi1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGg1Pnt7IHRyYW5zbGF0ZSgnTGlua2luZ09wdGlvbnMnKSB9fTwvaDU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdGb3I9XCJsZXQgbGV2ZWwgb2Ygc2VsZWN0ZWRBY2Nlc3NMZXZlbHNcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJsaW5raW5nTW9kZURyb3Bkb3duXCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmF0aW9uLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8aDU+e3sgdHJhbnNsYXRlKCdMaW5raW5nQXR0cmlidXRlc09wdGlvbnMnKSB9fTwvaDU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm5hbWVBckNoZWNrYm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwibmFtZUVuQ2hlY2tib3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJlbWFpbENoZWNrYm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiZUlkQ2hlY2tib3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJtb2JpbGVDaGVja2JveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm5hdGlvbmFsaXR5Q2hlY2tib3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJnZW5kZXJDaGVja2JveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJtb2RlSWQgPT0gYXV0aGVudGljYXRpb25Nb2RlRW51bVZhbHVlLkF6dXJlQURcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgIHt7IHRyYW5zbGF0ZSgnQ2FuY2VsJykgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gYXBwUHJldmVudERvdWJsZUNsaWNrIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWJyYW5kXCI+XHJcbiAgICAgICAge3sgdHJhbnNsYXRlKCdTYXZlJykgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L0JCU0YtRm9ybT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9jb25maWd1cmF0aW9ucy9hdXRoLWNvbmZpZ3VyYXRpb24vYXV0aC1jb25maWd1cmF0aW9uLWVkaXQvYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9jb25maWd1cmF0aW9ucy9hdXRoLWNvbmZpZ3VyYXRpb24vYXV0aC1jb25maWd1cmF0aW9uLWVkaXQvYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBd0IsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHeEssT0FBTyxFQUFFLCtCQUErQixFQUFFLG9CQUFvQixFQUFxRCxNQUFNLCtEQUErRCxDQUFDO0FBQ3pMLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFDOzs7Ozs7OztBQVU1SSxNQUFNLE9BQU8sOEJBQStCLFNBQVEsZ0JBQWdCO0lBK0NsRSxZQUFZO0lBRVosWUFBWTtJQUVaLFlBQ1UsUUFBa0IsRUFDbEIsbUJBQXdDLEVBQ3hDLHFCQUE0QyxFQUM1QyxXQUF3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c0JBQW5DLEtBQUs7Z0JBSXFDLEtBQUs7c0JBQS9DLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQsIENoZWNrQm94T3B0aW9ucywgQ29udHJvbExheW91dCwgRHJvcGRvd25PcHRpb25zLCBGb3JtT3B0aW9ucywgSW5wdXRUeXBlLCBUZXh0Qm94T3B0aW9ucywgVG9nZ2xlU2xpZGVPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBNYXN0ZXJMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLCBVQUVQYXNzQ29uZmlndXJhdGlvbiwgVUFFUGFzc1VzZXJJbmZvTWFwcGluZywgVUFFUGFzc1VzZXJUeXBlUGVybWlzc2lvbiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMvQ29uZmlndXJhdGlvbk1vZGVscy9Db25maWd1cmF0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbk1vZGUsIFVBRVBhc3NMaW5raW5nTW9kZSwgVUFFUGFzc1VzZXJUeXBlcyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9FbnVtcy9jb25maWd1cmF0aW9uL2F1dGhlbnRlY2F0aW9uLWNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvU2VydmljZXMvQ29uZmlndXJhdGlvbnNTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbE9wdGlvbnMgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL1NlcnZpY2VzL3VzZXJTZXJ2aWNlLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2F1dGgtY29uZmlndXJhdGlvbi1lZGl0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hdXRoLWNvbmZpZ3VyYXRpb24tZWRpdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdEF1dGhDb25maWd1cmF0aW9uQ29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgcGFnaW5nRWxlbWVudDtcclxuICBASW5wdXQoKSBvblN1Y2Nlc3NUYWtlUGVuYWx0eUhhbmRsZXI6IEZ1bmN0aW9uO1xyXG5cclxuICBlZGl0Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGVkaXRGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gIEBWaWV3Q2hpbGQoXCJlZGl0TW9kYWxcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIG1vZGFsOiBFbGVtZW50UmVmO1xyXG5cclxuICBtb2RlSWQ6IG51bWJlciA9IHVuZGVmaW5lZDtcclxuICBhdXRoZW50aWNhdGlvbk1vZGVFbnVtVmFsdWUgPSBBdXRoZW50aWNhdGlvbk1vZGU7XHJcblxyXG4gIC8vI3JlZ2lvbiB1YWUgcGFzcyBwcm9wc1xyXG4gIGJhc2VVUkxUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBjbGllbnRJZFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIHNlY3JldEtleVRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIHJlZGlyZWN0VVJMVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWNjZXNzTGV2ZWxEcm9wZG93bjogRHJvcGRvd25PcHRpb25zO1xyXG4gIGxpbmtpbmdNb2RlRHJvcGRvd246IERyb3Bkb3duT3B0aW9ucztcclxuXHJcbiAgbGlua2luZ0V4aXN0aW5nVXNlcnNUb2dnbGU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBpbXBvcnRpbmdOZXdVc2VyVG9nZ2xlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgdXBkYXRlVXNlckluZm9ybWF0aW9uT25Mb2dpblRvZ2dsZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIHNvcFBlcm1pc3Npb25NYXBwaW5nVG9nZ2xlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcblxyXG4gIHVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd246IERyb3Bkb3duT3B0aW9ucztcclxuICB1c2VyUGVybWlzc2lvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuXHJcbiAgdWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbDogVUFFUGFzc0NvbmZpZ3VyYXRpb24gPSBuZXcgVUFFUGFzc0NvbmZpZ3VyYXRpb24oKTtcclxuXHJcbiAgcGVybWlzc2lvblNldExpc3QgPSBbXTtcclxuICBwZXJtaXNzaW9uc0xpc3QgPSBbXTtcclxuXHJcbiAgc2hvd1VzZXJUeXBlUGVybWlzc2lvbnNNYXBwaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd1VzZXJUeXBlTGlua2luZ01hcHBpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB1YWVQYXNzVXNlclR5cGVFbnVtOiBVQUVQYXNzVXNlclR5cGVzO1xyXG4gIHVhZVBhc3NVc2VyVHlwZUxpc3Q6IGFueVtdID0gW107XHJcbiAgc2VsZWN0ZWRBY2Nlc3NMZXZlbHM6IGFueVtdID0gW107XHJcblxyXG4gIC8vI3JlZ2lvbiBsaW5raW5nIG1hcHBpbmdcclxuICBuYW1lQXJDaGVja2JveDogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIG5hbWVFbkNoZWNrYm94OiBDaGVja0JveE9wdGlvbnM7XHJcbiAgZW1haWxDaGVja2JveDogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIGVJZENoZWNrYm94OiBDaGVja0JveE9wdGlvbnM7XHJcbiAgbW9iaWxlQ2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuICBuYXRpb25hbGl0eUNoZWNrYm94OiBDaGVja0JveE9wdGlvbnM7XHJcbiAgZ2VuZGVyQ2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSBtYXN0ZXJMYXlvdXRTZXJ2aWNlOiBNYXN0ZXJMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uc1NlcnZpY2U6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG4gIC8vI3JlZ2lvbiBoZWxwZXJcclxuXHJcbiAgdHJhbnNsYXRlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoa2V5KTtcclxuICB9XHJcblxyXG4gIGxvYWRVQUVQYXNzVXNlclR5cGVzKCkge1xyXG4gICAgbGV0IGxpc3Q6IGFueVtdID0gW107XHJcbiAgICBmb3IgKHZhciBpdGVtIGluIFVBRVBhc3NVc2VyVHlwZXMpIHtcclxuICAgICAgaWYgKHBhcnNlSW50KGl0ZW0pKVxyXG4gICAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgICBrZXk6ICtpdGVtLFxyXG4gICAgICAgICAgdmFsdWU6IFVBRVBhc3NVc2VyVHlwZXNbaXRlbV1cclxuICAgICAgICB9IGFzIGFueSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVhZVBhc3NVc2VyVHlwZUxpc3QgPSBsaXN0O1xyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbiAgfVxyXG5cclxuICBsb2FkVUFFUGFzc0xpbmtpbmdNb2RlKCkge1xyXG4gICAgbGV0IGxpc3Q6IGFueVtdID0gW107XHJcbiAgICBmb3IgKHZhciBpdGVtIGluIFVBRVBhc3NMaW5raW5nTW9kZSkge1xyXG4gICAgICBpZiAocGFyc2VJbnQoaXRlbSkpXHJcbiAgICAgICAgbGlzdC5wdXNoKHtcclxuICAgICAgICAgIGtleTogK2l0ZW0sXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy50cmFuc2xhdGUoVUFFUGFzc0xpbmtpbmdNb2RlW2l0ZW1dKVxyXG4gICAgICAgIH0gYXMgYW55KTtcclxuICAgIH1cclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgZ2V0VUFFUGFzc1VzZXJUeXBlVmFsdWUoa2V5OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLnVhZVBhc3NVc2VyVHlwZUxpc3QuZmluZChpID0+IGkua2V5ID09IGtleSkudmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgc2hvd01vZGFsKG1vZGU6IEF1dGhlbnRpY2F0aW9uTW9kZSwgYXV0aENvbmZpZ09iamVjdDogQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbikge1xyXG4gICAgdGhpcy5tb2RlSWQgPSBtb2RlO1xyXG4gICAgaWYgKHRoaXMuZWRpdEZvcm0pIHtcclxuICAgICAgdGhpcy5lZGl0Rm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMuZWRpdEZvcm0ucmVzZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVkaXRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgdGhpcy5lZGl0Rm9ybU9wdGlvbnMuZm9ybUdyb3VwID0gdGhpcy5lZGl0Rm9ybSBhcyBhbnk7XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucy5wYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucy5nZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRNb2RlbDtcclxuICAgIHRoaXMuZWRpdEZvcm1PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0U3VibWl0RnVuY3Rpb247XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucy5kaXNhYmxlU3VjY2Vzc05vdGlmaWNhdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5lZGl0Rm9ybU9wdGlvbnMub25TdWNjZXNzSGFuZGxlciA9IHRoaXMub25TdWNjZXNzSGFuZGxlcjtcclxuXHJcbiAgICBzd2l0Y2ggKG1vZGUpIHtcclxuICAgICAgY2FzZSBBdXRoZW50aWNhdGlvbk1vZGUuVUFFUGFzczpcclxuICAgICAgICB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwgPSBhdXRoQ29uZmlnT2JqZWN0LnVhZVBhc3NDb25maWc7XHJcblxyXG4gICAgICAgIHRoaXMuYmFzZVVSTFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmJhc2VVUkxUZXh0Qm94Lm5hbWUgPSBcImJhc2VVcmxcIjtcclxuICAgICAgICB0aGlzLmJhc2VVUkxUZXh0Qm94LmxhYmVsS2V5ID0gXCJCYXNlVXJsXCI7XHJcbiAgICAgICAgdGhpcy5iYXNlVVJMVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5iYXNlVVJMVGV4dEJveC52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgICAgdGhpcy5iYXNlVVJMVGV4dEJveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5iYXNlVXJsO1xyXG5cclxuICAgICAgICB0aGlzLmNsaWVudElkVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWRUZXh0Qm94Lm5hbWUgPSBcImNsaWVudElEXCI7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZFRleHRCb3gubGFiZWxLZXkgPSBcIkNsaWVudElEXCI7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZFRleHRCb3gudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWRUZXh0Qm94LnZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgICAgICB0aGlzLmNsaWVudElkVGV4dEJveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5jbGllbnRJRDtcclxuXHJcbiAgICAgICAgdGhpcy5zZWNyZXRLZXlUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5zZWNyZXRLZXlUZXh0Qm94Lm5hbWUgPSBcInNlY3JldEtleVwiO1xyXG4gICAgICAgIHRoaXMuc2VjcmV0S2V5VGV4dEJveC5sYWJlbEtleSA9IFwiU2VjcmV0S2V5XCI7XHJcbiAgICAgICAgdGhpcy5zZWNyZXRLZXlUZXh0Qm94LnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLnNlY3JldEtleVRleHRCb3gudmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIHRoaXMuc2VjcmV0S2V5VGV4dEJveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5zZWNyZXRLZXk7XHJcblxyXG4gICAgICAgIHRoaXMucmVkaXJlY3RVUkxUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5yZWRpcmVjdFVSTFRleHRCb3gubmFtZSA9IFwicmVkaXJlY3RVcmxcIjtcclxuICAgICAgICB0aGlzLnJlZGlyZWN0VVJMVGV4dEJveC5sYWJlbEtleSA9IFwiUmVkaXJlY3RVcmxcIjtcclxuICAgICAgICB0aGlzLnJlZGlyZWN0VVJMVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5yZWRpcmVjdFVSTFRleHRCb3gudmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIHRoaXMucmVkaXJlY3RVUkxUZXh0Qm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnJlZGlyZWN0VXJsO1xyXG5cclxuICAgICAgICB0aGlzLmFjY2Vzc0xldmVsRHJvcGRvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NMZXZlbERyb3Bkb3duLm5hbWUgPSBcImFjY2Vzc0xldmVsc1wiO1xyXG4gICAgICAgIHRoaXMuYWNjZXNzTGV2ZWxEcm9wZG93bi5sYWJlbEtleSA9IFwiQWNjZXNzTGV2ZWxcIjtcclxuICAgICAgICB0aGlzLmFjY2Vzc0xldmVsRHJvcGRvd24uc2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NMZXZlbERyb3Bkb3duLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuYWNjZXNzTGV2ZWxzO1xyXG4gICAgICAgIHRoaXMuYWNjZXNzTGV2ZWxEcm9wZG93bi5kYXRhU291cmNlID0gdGhpcy5sb2FkVUFFUGFzc1VzZXJUeXBlcygpO1xyXG5cclxuICAgICAgICB0aGlzLmxpbmtpbmdNb2RlRHJvcGRvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5saW5raW5nTW9kZURyb3Bkb3duLm5hbWUgPSBcImxpbmtpbmdNb2RlXCI7XHJcbiAgICAgICAgdGhpcy5saW5raW5nTW9kZURyb3Bkb3duLmxhYmVsS2V5ID0gXCJMaW5raW5nTW9kZVwiO1xyXG4gICAgICAgIHRoaXMubGlua2luZ01vZGVEcm9wZG93bi5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubGlua2luZ01vZGVEcm9wZG93bi5zZWxlY3RlZEl0ZW1zID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmxpbmtpbmdNb2RlO1xyXG4gICAgICAgIHRoaXMubGlua2luZ01vZGVEcm9wZG93bi5kYXRhU291cmNlID0gdGhpcy5sb2FkVUFFUGFzc0xpbmtpbmdNb2RlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuc29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5zb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZS5uYW1lID0gXCJzb3BQZXJtaXNzaW9uTWFwcGluZ1wiO1xyXG4gICAgICAgIHRoaXMuc29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGUubGFiZWxLZXkgPSBcIlNPUFBlcm1pc3Npb25NYXBwaW5nXCI7XHJcbiAgICAgICAgdGhpcy5zb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZS52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5lbmFibGVTT1BQZXJtaXNzaW9uTWFwcGluZztcclxuXHJcbiAgICAgICAgdGhpcy5saW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlLm5hbWUgPSBcImxpbmtpbmdFeGlzdGluZ1VzZXJzXCI7XHJcbiAgICAgICAgdGhpcy5saW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZS5sYWJlbEtleSA9IFwiTGlua2luZ0V4aXN0aW5nVXNlcnNcIjtcclxuICAgICAgICB0aGlzLmxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlLnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmVuYWJsZUxpbmtpbmdFeGlzdGluZ1VzZXJzO1xyXG5cclxuICAgICAgICB0aGlzLmltcG9ydGluZ05ld1VzZXJUb2dnbGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5pbXBvcnRpbmdOZXdVc2VyVG9nZ2xlLm5hbWUgPSBcImltcG9ydGluZ05ld1VzZXJcIjtcclxuICAgICAgICB0aGlzLmltcG9ydGluZ05ld1VzZXJUb2dnbGUubGFiZWxLZXkgPSBcIkltcG9ydGluZ05ld1VzZXJcIjtcclxuICAgICAgICB0aGlzLmltcG9ydGluZ05ld1VzZXJUb2dnbGUudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZW5hYmxlSW1wb3J0aW5nTmV3VXNlcjtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVXNlckluZm9ybWF0aW9uT25Mb2dpblRvZ2dsZS5uYW1lID0gXCJ1cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luXCI7XHJcbiAgICAgICAgdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlLmxhYmVsS2V5ID0gXCJVcGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luXCI7XHJcbiAgICAgICAgdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlLnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmVuYWJsZVVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW47XHJcblxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd24ubmFtZSA9IFwiUGVybWlzc2lvblNldHNcIjtcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd24ubGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRzXCI7XHJcbiAgICAgICAgdGhpcy51c2VyUGVybWlzc2lvblNldERyb3Bkb3duLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZGVmYXVsdFBlcm1pc3Npb25TZXQ7XHJcbiAgICAgICAgdGhpcy51c2VyUGVybWlzc2lvblNldERyb3Bkb3duLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51c2VyUGVybWlzc2lvblNldERyb3Bkb3duLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd24uaXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMubmFtZUFyQ2hlY2tib3ggPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5uYW1lQXJDaGVja2JveC5uYW1lID0gXCJuYW1lQXJcIjtcclxuICAgICAgICB0aGlzLm5hbWVBckNoZWNrYm94LmxhYmVsS2V5ID0gXCJOYW1lQVJcIjtcclxuICAgICAgICB0aGlzLm5hbWVBckNoZWNrYm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnVzZXJJbmZvTWFwcGluZy5uYW1lQVI7XHJcblxyXG4gICAgICAgIHRoaXMubmFtZUVuQ2hlY2tib3ggPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5uYW1lRW5DaGVja2JveC5uYW1lID0gXCJuYW1lRW5cIjtcclxuICAgICAgICB0aGlzLm5hbWVFbkNoZWNrYm94LmxhYmVsS2V5ID0gXCJOYW1lRU5cIjtcclxuICAgICAgICB0aGlzLm5hbWVFbkNoZWNrYm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnVzZXJJbmZvTWFwcGluZy5uYW1lRU47XHJcblxyXG4gICAgICAgIHRoaXMuZW1haWxDaGVja2JveCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmVtYWlsQ2hlY2tib3gubmFtZSA9IFwiZW1haWxcIjtcclxuICAgICAgICB0aGlzLmVtYWlsQ2hlY2tib3gubGFiZWxLZXkgPSBcIkVtYWlsXCI7XHJcbiAgICAgICAgdGhpcy5lbWFpbENoZWNrYm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnVzZXJJbmZvTWFwcGluZy5lbWFpbDtcclxuXHJcbiAgICAgICAgdGhpcy5lSWRDaGVja2JveCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmVJZENoZWNrYm94Lm5hbWUgPSBcImVJZFwiO1xyXG4gICAgICAgIHRoaXMuZUlkQ2hlY2tib3gubGFiZWxLZXkgPSBcIkVJRFwiO1xyXG4gICAgICAgIHRoaXMuZUlkQ2hlY2tib3gudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlckluZm9NYXBwaW5nLkVJRDtcclxuXHJcbiAgICAgICAgdGhpcy5tb2JpbGVDaGVja2JveCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLm1vYmlsZUNoZWNrYm94Lm5hbWUgPSBcIm1vYmlsZVwiO1xyXG4gICAgICAgIHRoaXMubW9iaWxlQ2hlY2tib3gubGFiZWxLZXkgPSBcIk1vYmlsZVwiO1xyXG4gICAgICAgIHRoaXMubW9iaWxlQ2hlY2tib3gudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlckluZm9NYXBwaW5nLm1vYmlsZTtcclxuXHJcbiAgICAgICAgdGhpcy5uYXRpb25hbGl0eUNoZWNrYm94ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMubmF0aW9uYWxpdHlDaGVja2JveC5uYW1lID0gXCJuYXRpb25hbGl0eVwiO1xyXG4gICAgICAgIHRoaXMubmF0aW9uYWxpdHlDaGVja2JveC5sYWJlbEtleSA9IFwiTmF0aW9uYWxpdHlcIjtcclxuICAgICAgICB0aGlzLm5hdGlvbmFsaXR5Q2hlY2tib3gudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlckluZm9NYXBwaW5nLm5hdGlvbmFsaXR5O1xyXG5cclxuICAgICAgICB0aGlzLmdlbmRlckNoZWNrYm94ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZ2VuZGVyQ2hlY2tib3gubmFtZSA9IFwiZ2VuZGVyXCI7XHJcbiAgICAgICAgdGhpcy5nZW5kZXJDaGVja2JveC5sYWJlbEtleSA9IFwiR2VuZGVyXCI7XHJcbiAgICAgICAgdGhpcy5nZW5kZXJDaGVja2JveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VySW5mb01hcHBpbmcuZ2VuZGVyO1xyXG5cclxuICAgICAgICB0aGlzLmdldFBlcm1pc3Npb25TZXRzKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZVNPUFBlcm1pc3Npb25Ub2dnbGVWYWx1ZSh0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZW5hYmxlU09QUGVybWlzc2lvbk1hcHBpbmcpO1xyXG4gICAgICAgIHRoaXMub25MaW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZVZhbHVlKHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5lbmFibGVMaW5raW5nRXhpc3RpbmdVc2Vycyk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZUFjY2Vzc0xldmVscyh0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuYWNjZXNzTGV2ZWxzKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5kZWZhdWx0UGVybWlzc2lvblNldClcclxuICAgICAgICAgIHRoaXMuY2hhbmdlUGVybWlzc2lvblNldCh0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZGVmYXVsdFBlcm1pc3Npb25TZXQpO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBBdXRoZW50aWNhdGlvbk1vZGUuQXp1cmVBRDpcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMubW9kYWwsIHsgc2l6ZTogJ3hsJyB9IGFzIE5nYk1vZGFsT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRBZGRNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCByZXN1bHRNb2RlbCA9IHRoaXMuZWRpdEZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IGVkaXRNb2RlbDogQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiA9IG5ldyBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKCk7XHJcbiAgICBlZGl0TW9kZWwubW9kZUlkID0gdGhpcy5tb2RlSWQ7XHJcbiAgICBlZGl0TW9kZWwudWFlUGFzc0NvbmZpZyA9IHRoaXMuYnVpbGRVQUVQYXNzQ29uZmlnT2JqZWN0KHJlc3VsdE1vZGVsKTtcclxuICAgIHJldHVybiBBcnJheShlZGl0TW9kZWwpO1xyXG4gIH07XHJcblxyXG4gIGdldFN1Ym1pdEZ1bmN0aW9uID0gKGVkaXRNb2RlbDogQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbik6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uc1NlcnZpY2UudXBkYXRlQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uRGF0YShlZGl0TW9kZWwpO1xyXG4gIH07XHJcblxyXG4gIG9uU3VjY2Vzc0hhbmRsZXIgPSAoKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLm1hc3RlckxheW91dFNlcnZpY2UucmVsb2FkQ29tcG9uZW50KCk7XHJcbiAgfTtcclxuXHJcbiAgYnVpbGRVQUVQYXNzQ29uZmlnT2JqZWN0KGZvcm1WYWx1ZTogYW55KTogVUFFUGFzc0NvbmZpZ3VyYXRpb24ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYmFzZVVybDogZm9ybVZhbHVlW3RoaXMuYmFzZVVSTFRleHRCb3gubmFtZV0sXHJcbiAgICAgIGNsaWVudElEOiBmb3JtVmFsdWVbdGhpcy5jbGllbnRJZFRleHRCb3gubmFtZV0sXHJcbiAgICAgIHNlY3JldEtleTogZm9ybVZhbHVlW3RoaXMuc2VjcmV0S2V5VGV4dEJveC5uYW1lXSxcclxuICAgICAgcmVkaXJlY3RVcmw6IGZvcm1WYWx1ZVt0aGlzLnJlZGlyZWN0VVJMVGV4dEJveC5uYW1lXSxcclxuICAgICAgYWNjZXNzTGV2ZWxzOiBmb3JtVmFsdWVbdGhpcy5hY2Nlc3NMZXZlbERyb3Bkb3duLm5hbWVdLFxyXG4gICAgICBlbmFibGVMaW5raW5nRXhpc3RpbmdVc2VyczogZm9ybVZhbHVlW3RoaXMubGlua2luZ0V4aXN0aW5nVXNlcnNUb2dnbGUubmFtZV0sXHJcbiAgICAgIGVuYWJsZUltcG9ydGluZ05ld1VzZXI6IGZvcm1WYWx1ZVt0aGlzLmltcG9ydGluZ05ld1VzZXJUb2dnbGUubmFtZV0sXHJcbiAgICAgIGVuYWJsZVVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW46IGZvcm1WYWx1ZVt0aGlzLnVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW5Ub2dnbGUubmFtZV0sXHJcbiAgICAgIGRlZmF1bHRQZXJtaXNzaW9uU2V0OiBmb3JtVmFsdWVbdGhpcy51c2VyUGVybWlzc2lvblNldERyb3Bkb3duLm5hbWVdLFxyXG4gICAgICBlbmFibGVTT1BQZXJtaXNzaW9uTWFwcGluZzogZm9ybVZhbHVlW3RoaXMuc29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGUubmFtZV0sXHJcbiAgICAgIHVzZXJUeXBlUGVybWlzc2lvbnM6IHRoaXMuYnVpbGRVc2VyVHlwZVBlcm1pc3Npb24oKSxcclxuICAgICAgdXNlckluZm9NYXBwaW5nOiB0aGlzLmJ1aWxkVXNlckluZm9NYXBwaW5nKGZvcm1WYWx1ZSksXHJcbiAgICAgIGxpbmtpbmdNb2RlOiBmb3JtVmFsdWVbdGhpcy5saW5raW5nTW9kZURyb3Bkb3duLm5hbWVdLFxyXG4gICAgfSBhcyBVQUVQYXNzQ29uZmlndXJhdGlvbjtcclxuICB9XHJcblxyXG4gIGJ1aWxkVXNlckluZm9NYXBwaW5nKGZvcm1WYWx1ZTogYW55KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuYW1lRU46IGZvcm1WYWx1ZVt0aGlzLm5hbWVFbkNoZWNrYm94Lm5hbWVdLFxyXG4gICAgICBuYW1lQVI6IGZvcm1WYWx1ZVt0aGlzLm5hbWVBckNoZWNrYm94Lm5hbWVdLFxyXG4gICAgICBlbWFpbDogZm9ybVZhbHVlW3RoaXMuZW1haWxDaGVja2JveC5uYW1lXSxcclxuICAgICAgRUlEOiBmb3JtVmFsdWVbdGhpcy5lSWRDaGVja2JveC5uYW1lXSxcclxuICAgICAgbW9iaWxlOiBmb3JtVmFsdWVbdGhpcy5tb2JpbGVDaGVja2JveC5uYW1lXSxcclxuICAgICAgbmF0aW9uYWxpdHk6IGZvcm1WYWx1ZVt0aGlzLm5hdGlvbmFsaXR5Q2hlY2tib3gubmFtZV0sXHJcbiAgICAgIGdlbmRlcjogZm9ybVZhbHVlW3RoaXMuZ2VuZGVyQ2hlY2tib3gubmFtZV1cclxuICAgIH0gYXMgVUFFUGFzc1VzZXJJbmZvTWFwcGluZztcclxuICB9XHJcblxyXG4gIGJ1aWxkVXNlclR5cGVQZXJtaXNzaW9uKCk6IFVBRVBhc3NVc2VyVHlwZVBlcm1pc3Npb25bXSB7XHJcbiAgICBsZXQgcmVzTGlzdDogVUFFUGFzc1VzZXJUeXBlUGVybWlzc2lvbltdID0gW107XHJcbiAgICBpZiAodGhpcy5zaG93VXNlclR5cGVQZXJtaXNzaW9uc01hcHBpbmcpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEFjY2Vzc0xldmVscy5mb3JFYWNoKGxldmVsID0+IHtcclxuICAgICAgICByZXNMaXN0LnB1c2goe1xyXG4gICAgICAgICAgdXNlclR5cGU6IGxldmVsLFxyXG4gICAgICAgICAgcGVybWlzc2lvbnM6IHRoaXMuZWRpdEZvcm0uY29udHJvbHNbYHBlcm1pc3Npb25zLXVzZXItdHlwZS0ke2xldmVsfWBdPy52YWx1ZSxcclxuICAgICAgICB9IGFzIFVBRVBhc3NVc2VyVHlwZVBlcm1pc3Npb24pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzTGlzdDtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBVQUUgUGFzcyBGdW5jdGlvbnNcclxuXHJcbiAgb25MaW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1VzZXJUeXBlTGlua2luZ01hcHBpbmcgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLnNob3dVc2VyVHlwZUxpbmtpbmdNYXBwaW5nKVxyXG4gICAgICB0aGlzLmFkZFJlcXVpcmVkVmFsaWRhdGlvbihbdGhpcy5saW5raW5nTW9kZURyb3Bkb3duXSwgdGhpcy5lZGl0Rm9ybSwgdGhpcy5lZGl0Rm9ybU9wdGlvbnMpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbihbdGhpcy5saW5raW5nTW9kZURyb3Bkb3duXSwgdGhpcy5lZGl0Rm9ybSwgdGhpcy5lZGl0Rm9ybU9wdGlvbnMpO1xyXG5cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlU09QUGVybWlzc2lvblRvZ2dsZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1VzZXJUeXBlUGVybWlzc2lvbnNNYXBwaW5nID0gdmFsdWU7XHJcbiAgICBpZiAoIXRoaXMuc2hvd1VzZXJUeXBlUGVybWlzc2lvbnNNYXBwaW5nKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBY2Nlc3NMZXZlbHMuZm9yRWFjaChsZXZlbCA9PiB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVDb250cm9sKGBwZXJtaXNzaW9ucy11c2VyLXR5cGUtJHtsZXZlbH1gLCB0aGlzLmVkaXRGb3JtKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VQZXJtaXNzaW9uU2V0KGlkOiBhbnkpIHtcclxuICAgIGlmICghaWQpIHtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uc0xpc3QgPSBbXTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpZHMgPSBBcnJheShpZCk7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLkxvYWRQZXJtaXNzaW9uc0Ryb3BEb3duKGlkcykuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uc0xpc3QgPSByZXN1bHQgYXMgYW55O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRQZXJtaXNzaW9uU2V0cygpIHtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuZ2V0UGVybWlzc2lvblNldHNMaXN0KCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMucGVybWlzc2lvblNldExpc3QgPSByZXMucGVybWVzc2lvbnNldHM7XHJcbiAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5kYXRhU291cmNlID0gdGhpcy5wZXJtaXNzaW9uU2V0TGlzdDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaW5pdERyb3BEb3duT3B0aW9ucyh1c2VyVHlwZTogYW55KSB7XHJcbiAgICB2YXIgcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnMubmFtZSA9IGBwZXJtaXNzaW9ucy11c2VyLXR5cGUtJHt1c2VyVHlwZX1gO1xyXG4gICAgcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucy5sYWJlbFZhbHVlID0gdGhpcy50cmFuc2xhdGUoVUFFUGFzc1VzZXJUeXBlc1t1c2VyVHlwZV0pICsgXCItXCIgKyB0aGlzLnRyYW5zbGF0ZShcIlBlcm1pc3Npb25zXCIpO1xyXG4gICAgcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucy5pc1JlcXVpcmVkID0gZmFsc2U7XHJcbiAgICBwZXJtaXNzaW9uRHJvcERvd25PcHRpb25zLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnMuZGF0YVNvdXJjZSA9IHRoaXMucGVybWlzc2lvbnNMaXN0O1xyXG4gICAgcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZXRQZXJtaXNzaW9uRm9yVUFFUGFzc1VzZXJUeXBlcyh1c2VyVHlwZSk7XHJcblxyXG4gICAgcmV0dXJuIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZUFjY2Vzc0xldmVscyhzZWxlY3RlZEl0ZW1zOiBhbnkpIHtcclxuICAgIGxldCB1c2VyVHlwZXNLZXlzID0gdGhpcy51YWVQYXNzVXNlclR5cGVMaXN0Lm1hcChpdGVtID0+IHsgcmV0dXJuIGl0ZW0ua2V5OyB9KTtcclxuICAgIHRoaXMuc2VsZWN0ZWRBY2Nlc3NMZXZlbHMgPSBzZWxlY3RlZEl0ZW1zO1xyXG5cclxuICAgIGxldCBub3RTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRBY2Nlc3NMZXZlbHMuZmlsdGVyKGl0ZW0gPT4gdXNlclR5cGVzS2V5cy5pbmRleE9mKGl0ZW0pIDwgMCk7XHJcbiAgICBub3RTZWxlY3RlZC5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICB0aGlzLnJlbW92ZUNvbnRyb2woYHBlcm1pc3Npb25zLXVzZXItdHlwZS0ke2l9YCwgdGhpcy5lZGl0Rm9ybSk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBzZXRQZXJtaXNzaW9uRm9yVUFFUGFzc1VzZXJUeXBlcyh1c2VyVHlwZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnVzZXJUeXBlUGVybWlzc2lvbnMuZmluZChpID0+IGkudXNlclR5cGUgPT0gdXNlclR5cGUpPy5wZXJtaXNzaW9ucztcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG5cclxuICAvLyNyZWdpb24gdmFsaWRhdGlvbiBhY3Rpb25zXHJcblxyXG4gIGFkZFJlcXVpcmVkVmFsaWRhdGlvbihjdXN0b21Db250cm9sT3B0aW9uOiBhbnlbXSwgZm9ybTogRm9ybUdyb3VwLCBmb3JtT3B0aW9uczogRm9ybU9wdGlvbnMpOiB2b2lkIHtcclxuICAgIGN1c3RvbUNvbnRyb2xPcHRpb24uZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgaWYgKGZvcm0uZ2V0KGNvbnRyb2wuTmFtZSkpXHJcbiAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoZm9ybS5nZXQoY29udHJvbC5OYW1lKSwgZm9ybU9wdGlvbnMpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgY29udHJvbC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKGN1c3RvbUNvbnRyb2xPcHRpb246IGFueVtdLCBmb3JtOiBGb3JtR3JvdXAsIGZvcm1PcHRpb25zOiBGb3JtT3B0aW9ucyk6IHZvaWQge1xyXG4gICAgY3VzdG9tQ29udHJvbE9wdGlvbi5mb3JFYWNoKGNvbnRyb2wgPT4ge1xyXG4gICAgICBpZiAoZm9ybS5nZXQoY29udHJvbC5OYW1lKSlcclxuICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShmb3JtLmdldChjb250cm9sLk5hbWUpLCBmb3JtT3B0aW9ucyk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBjb250cm9sLklzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRGb3JtQ29udHJvbHNWYWx1ZShjdXN0b21Db250cm9sc09wdGlvbnM6IGFueVtdLCBmb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcclxuICAgIGN1c3RvbUNvbnRyb2xzT3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XHJcbiAgICAgIGxldCBmb3JtQ29udHJvbCA9IGZvcm0uZ2V0KG9wdGlvbi5OYW1lKTtcclxuICAgICAgaWYgKGZvcm1Db250cm9sKVxyXG4gICAgICAgIGZvcm1Db250cm9sLnJlc2V0KCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG59XHJcblxyXG5cclxuIiwiPG5nLXRlbXBsYXRlICNlZGl0TW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+XHJcbiAgICAgIHt7IHRyYW5zbGF0ZSgnRWRpdEF1dGhDb25maWd1cmF0aW9uJykgfX1cclxuICAgIDwvaDQ+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1zbVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgc3ZnLWljb24taG92ZXItYnJhbmRcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9jbG9zZS1tb2RhbC5zdmcnXCI+PC9kaXY+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cImVkaXRGb3JtT3B0aW9uc1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGVJZCA9PSBhdXRoZW50aWNhdGlvbk1vZGVFbnVtVmFsdWUuVUFFUGFzc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImJhc2VVUkxUZXh0Qm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImNsaWVudElkVGV4dEJveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzZWNyZXRLZXlUZXh0Qm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInJlZGlyZWN0VVJMVGV4dEJveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IChvbkNoYW5nZSk9XCJvbkNoYW5nZUFjY2Vzc0xldmVscygkZXZlbnQpXCIgW29wdGlvbnNdPVwiYWNjZXNzTGV2ZWxEcm9wZG93blwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgKG9uQ2hhbmdlKT1cImNoYW5nZVBlcm1pc3Npb25TZXQoJGV2ZW50KVwiIFtvcHRpb25zXT1cInVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd25cIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGVcclxuICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25DaGFuZ2VTT1BQZXJtaXNzaW9uVG9nZ2xlVmFsdWUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgW29wdGlvbnNdPVwic29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGVcIlxyXG4gICAgICAgICAgICAgIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlXHJcbiAgICAgICAgICAgICAgW29wdGlvbnNdPVwibGlua2luZ0V4aXN0aW5nVXNlcnNUb2dnbGVcIlxyXG4gICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlVmFsdWUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiaW1wb3J0aW5nTmV3VXNlclRvZ2dsZVwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cInVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW5Ub2dnbGVcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZ3VyYXRpb24taGVhZGVyXCIgKm5nSWY9XCJzaG93VXNlclR5cGVQZXJtaXNzaW9uc01hcHBpbmdcIj5cclxuICAgICAgICAgIDxoNT57eyB0cmFuc2xhdGUoJ0FjY2Vzc0xldmVsc1Blcm1pc3Npb25NYXBwaW5nJykgfX08L2g1PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdGb3I9XCJsZXQgbGV2ZWwgb2Ygc2VsZWN0ZWRBY2Nlc3NMZXZlbHNcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiaW5pdERyb3BEb3duT3B0aW9ucyhsZXZlbClcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VXNlclR5cGVMaW5raW5nTWFwcGluZ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZ3VyYXRpb24taGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxoNT57eyB0cmFuc2xhdGUoJ0xpbmtpbmdPcHRpb25zJykgfX08L2g1PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nRm9yPVwibGV0IGxldmVsIG9mIHNlbGVjdGVkQWNjZXNzTGV2ZWxzXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwibGlua2luZ01vZGVEcm9wZG93blwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJhdGlvbi1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGg1Pnt7IHRyYW5zbGF0ZSgnTGlua2luZ0F0dHJpYnV0ZXNPcHRpb25zJykgfX08L2g1PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJuYW1lQXJDaGVja2JveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm5hbWVFbkNoZWNrYm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiZW1haWxDaGVja2JveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cImVJZENoZWNrYm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwibW9iaWxlQ2hlY2tib3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJuYXRpb25hbGl0eUNoZWNrYm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiZ2VuZGVyQ2hlY2tib3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwibW9kZUlkID09IGF1dGhlbnRpY2F0aW9uTW9kZUVudW1WYWx1ZS5BenVyZUFEXCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICB7eyB0cmFuc2xhdGUoJ0NhbmNlbCcpIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGFwcFByZXZlbnREb3VibGVDbGljayB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1icmFuZFwiPlxyXG4gICAgICAgIHt7IHRyYW5zbGF0ZSgnU2F2ZScpIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9CQlNGLUZvcm0+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -138,12 +138,12 @@ export class AuthenticationConfigurationComponent extends AppBaseComponent {
138
138
  //#region AzureADConfigurationData
139
139
  loadAzureADConfigurationConfigurations() {
140
140
  }
141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthenticationConfigurationComponent, deps: [{ token: i0.Injector }, { token: i1.PageInfoService }, { token: i2.UtilityService }, { token: i3.ConfigurationsService }, { token: i2.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AuthenticationConfigurationComponent, selector: "lib-auth-configuration", viewQueries: [{ propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }, { propertyName: "reloadConfirmationModalControl", first: true, predicate: ["reloadConfirmationModalControl"], descendants: true }, { propertyName: "editBoardMemberModal", first: true, predicate: ["editAuthConfigurationModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<block-ui></block-ui>\r\n\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-body\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder\">\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"loadUAEPassConfigurations()\">{{\r\n utilityService.getResourceValue('UAEPassConfigurationData')\r\n }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\" *ngIf=\"uaePassConfigurationIsLoaded\">\r\n <div class=\"card-body py-3 px-0\">\r\n <div class=\"col-xl-12 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center\">\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light py-10 px-10 h-100\">\r\n <div class=\"w-100 mb-10\">\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3\">\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('BaseUrl') }}</p>\r\n <span>{{ uaePassConfiguration.baseUrl }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('ClientID') }}</p>\r\n <span>{{ uaePassConfiguration.clientID }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('RedirectUrl') }}</p>\r\n <span>{{ uaePassConfiguration.redirectUrl }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('DefaultPermissionSet') }}</p>\r\n <span>{{ uaePassConfiguration.defaultPermissionSetLocalization }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('AccessLevels') }}</p>\r\n <span *ngFor=\"let level of uaePassConfiguration.accessLevels\">{{ getUAEPassUserTypeValue(level) }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableLinkingExistingUsers') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableLinkingExistingUsers\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableImportingNewUser') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableImportingNewUser\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableUpdateUserInformationOnLogin') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableUpdateUserInformationOnLogin\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableSOPPermissionMapping') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableSOPPermissionMapping\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"uaePassConfiguration.enableLinkingExistingUsers\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('LinkingMode') }}</p>\r\n <span>{{ getUAEPassLinkingModeValue(uaePassConfiguration.linkingMode) }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a\r\n (click)=\"showEditModal(authenticationModeEnumValues.UAEPass)\"\r\n routerLinkActive=\"router-link-active\"\r\n class=\"btn btn-primary btn-sm\">\r\n Edit <i class=\"fa fa-pen ms-1\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"loadAzureADConfigurationConfigurations()\">{{\r\n utilityService.getResourceValue('AzureADConfigurationData')\r\n }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-body py-3 px-0\">\r\n <p>\r\n Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse.\r\n Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater\r\n eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american\r\n apparel, butcher voluptate nisi qui.\r\n </p>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<auth-configuration-edit #editAuthConfigurationModal></auth-configuration-edit>\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"reloadControlLoaded\"\r\n [options]=\"reloadConfirmationOptions\"\r\n id=\"reloadConfirmationModalControl\"\r\n #reloadConfirmationModalControl></BBSF-ConfirmationModal>\r\n", dependencies: [{ kind: "component", type: i4.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i7.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { kind: "directive", type: i8.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i8.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i8.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i8.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i8.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i8.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i8.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i9.EditAuthConfigurationComponent, selector: "auth-configuration-edit", inputs: ["pagingElement", "onSuccessTakePenaltyHandler"] }] }); }
141
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AuthenticationConfigurationComponent, deps: [{ token: i0.Injector }, { token: i1.PageInfoService }, { token: i2.UtilityService }, { token: i3.ConfigurationsService }, { token: i2.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: AuthenticationConfigurationComponent, selector: "lib-auth-configuration", viewQueries: [{ propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }, { propertyName: "reloadConfirmationModalControl", first: true, predicate: ["reloadConfirmationModalControl"], descendants: true }, { propertyName: "editBoardMemberModal", first: true, predicate: ["editAuthConfigurationModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<block-ui></block-ui>\r\n\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-body\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder\">\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"loadUAEPassConfigurations()\">{{\r\n utilityService.getResourceValue('UAEPassConfigurationData')\r\n }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\" *ngIf=\"uaePassConfigurationIsLoaded\">\r\n <div class=\"card-body py-3 px-0\">\r\n <div class=\"col-xl-12 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center\">\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light py-10 px-10 h-100\">\r\n <div class=\"w-100 mb-10\">\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3\">\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('BaseUrl') }}</p>\r\n <span>{{ uaePassConfiguration.baseUrl }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('ClientID') }}</p>\r\n <span>{{ uaePassConfiguration.clientID }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('RedirectUrl') }}</p>\r\n <span>{{ uaePassConfiguration.redirectUrl }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('DefaultPermissionSet') }}</p>\r\n <span>{{ uaePassConfiguration.defaultPermissionSetLocalization }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('AccessLevels') }}</p>\r\n <span *ngFor=\"let level of uaePassConfiguration.accessLevels\">{{ getUAEPassUserTypeValue(level) }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableLinkingExistingUsers') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableLinkingExistingUsers\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableImportingNewUser') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableImportingNewUser\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableUpdateUserInformationOnLogin') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableUpdateUserInformationOnLogin\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableSOPPermissionMapping') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableSOPPermissionMapping\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"uaePassConfiguration.enableLinkingExistingUsers\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('LinkingMode') }}</p>\r\n <span>{{ getUAEPassLinkingModeValue(uaePassConfiguration.linkingMode) }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a\r\n (click)=\"showEditModal(authenticationModeEnumValues.UAEPass)\"\r\n routerLinkActive=\"router-link-active\"\r\n class=\"btn btn-primary btn-sm\">\r\n Edit <i class=\"fa fa-pen ms-1\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"loadAzureADConfigurationConfigurations()\">{{\r\n utilityService.getResourceValue('AzureADConfigurationData')\r\n }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-body py-3 px-0\">\r\n <p>\r\n Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse.\r\n Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater\r\n eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american\r\n apparel, butcher voluptate nisi qui.\r\n </p>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<auth-configuration-edit #editAuthConfigurationModal></auth-configuration-edit>\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"reloadControlLoaded\"\r\n [options]=\"reloadConfirmationOptions\"\r\n id=\"reloadConfirmationModalControl\"\r\n #reloadConfirmationModalControl></BBSF-ConfirmationModal>\r\n", dependencies: [{ kind: "component", type: i4.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i7.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { kind: "directive", type: i8.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i8.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i8.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i8.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i8.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i8.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i8.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i9.EditAuthConfigurationComponent, selector: "auth-configuration-edit", inputs: ["pagingElement", "onSuccessTakePenaltyHandler"] }] }); }
143
143
  }
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthenticationConfigurationComponent, decorators: [{
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AuthenticationConfigurationComponent, decorators: [{
145
145
  type: Component,
146
- args: [{ selector: 'lib-auth-configuration', template: "<block-ui></block-ui>\r\n\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-body\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder\">\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"loadUAEPassConfigurations()\">{{\r\n utilityService.getResourceValue('UAEPassConfigurationData')\r\n }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\" *ngIf=\"uaePassConfigurationIsLoaded\">\r\n <div class=\"card-body py-3 px-0\">\r\n <div class=\"col-xl-12 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center\">\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light py-10 px-10 h-100\">\r\n <div class=\"w-100 mb-10\">\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3\">\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('BaseUrl') }}</p>\r\n <span>{{ uaePassConfiguration.baseUrl }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('ClientID') }}</p>\r\n <span>{{ uaePassConfiguration.clientID }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('RedirectUrl') }}</p>\r\n <span>{{ uaePassConfiguration.redirectUrl }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('DefaultPermissionSet') }}</p>\r\n <span>{{ uaePassConfiguration.defaultPermissionSetLocalization }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('AccessLevels') }}</p>\r\n <span *ngFor=\"let level of uaePassConfiguration.accessLevels\">{{ getUAEPassUserTypeValue(level) }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableLinkingExistingUsers') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableLinkingExistingUsers\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableImportingNewUser') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableImportingNewUser\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableUpdateUserInformationOnLogin') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableUpdateUserInformationOnLogin\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableSOPPermissionMapping') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableSOPPermissionMapping\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"uaePassConfiguration.enableLinkingExistingUsers\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('LinkingMode') }}</p>\r\n <span>{{ getUAEPassLinkingModeValue(uaePassConfiguration.linkingMode) }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a\r\n (click)=\"showEditModal(authenticationModeEnumValues.UAEPass)\"\r\n routerLinkActive=\"router-link-active\"\r\n class=\"btn btn-primary btn-sm\">\r\n Edit <i class=\"fa fa-pen ms-1\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"loadAzureADConfigurationConfigurations()\">{{\r\n utilityService.getResourceValue('AzureADConfigurationData')\r\n }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-body py-3 px-0\">\r\n <p>\r\n Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse.\r\n Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater\r\n eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american\r\n apparel, butcher voluptate nisi qui.\r\n </p>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<auth-configuration-edit #editAuthConfigurationModal></auth-configuration-edit>\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"reloadControlLoaded\"\r\n [options]=\"reloadConfirmationOptions\"\r\n id=\"reloadConfirmationModalControl\"\r\n #reloadConfirmationModalControl></BBSF-ConfirmationModal>\r\n" }]
146
+ args: [{ selector: 'lib-auth-configuration', standalone: false, template: "<block-ui></block-ui>\r\n\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-body\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder\">\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"loadUAEPassConfigurations()\">{{\r\n utilityService.getResourceValue('UAEPassConfigurationData')\r\n }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\" *ngIf=\"uaePassConfigurationIsLoaded\">\r\n <div class=\"card-body py-3 px-0\">\r\n <div class=\"col-xl-12 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center\">\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light py-10 px-10 h-100\">\r\n <div class=\"w-100 mb-10\">\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3\">\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('BaseUrl') }}</p>\r\n <span>{{ uaePassConfiguration.baseUrl }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('ClientID') }}</p>\r\n <span>{{ uaePassConfiguration.clientID }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('RedirectUrl') }}</p>\r\n <span>{{ uaePassConfiguration.redirectUrl }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('DefaultPermissionSet') }}</p>\r\n <span>{{ uaePassConfiguration.defaultPermissionSetLocalization }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('AccessLevels') }}</p>\r\n <span *ngFor=\"let level of uaePassConfiguration.accessLevels\">{{ getUAEPassUserTypeValue(level) }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableLinkingExistingUsers') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableLinkingExistingUsers\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableImportingNewUser') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableImportingNewUser\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableUpdateUserInformationOnLogin') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableUpdateUserInformationOnLogin\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableSOPPermissionMapping') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableSOPPermissionMapping\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"uaePassConfiguration.enableLinkingExistingUsers\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('LinkingMode') }}</p>\r\n <span>{{ getUAEPassLinkingModeValue(uaePassConfiguration.linkingMode) }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a\r\n (click)=\"showEditModal(authenticationModeEnumValues.UAEPass)\"\r\n routerLinkActive=\"router-link-active\"\r\n class=\"btn btn-primary btn-sm\">\r\n Edit <i class=\"fa fa-pen ms-1\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"loadAzureADConfigurationConfigurations()\">{{\r\n utilityService.getResourceValue('AzureADConfigurationData')\r\n }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-body py-3 px-0\">\r\n <p>\r\n Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse.\r\n Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater\r\n eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american\r\n apparel, butcher voluptate nisi qui.\r\n </p>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<auth-configuration-edit #editAuthConfigurationModal></auth-configuration-edit>\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"reloadControlLoaded\"\r\n [options]=\"reloadConfirmationOptions\"\r\n id=\"reloadConfirmationModalControl\"\r\n #reloadConfirmationModalControl></BBSF-ConfirmationModal>\r\n" }]
147
147
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.PageInfoService }, { type: i2.UtilityService }, { type: i3.ConfigurationsService }, { type: i2.RequestHandlerService }], propDecorators: { ConfirmationModalControl: [{
148
148
  type: ViewChild,
149
149
  args: ['ConfirmationModalControl', { static: false }]
@@ -154,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
154
154
  type: ViewChild,
155
155
  args: ["editAuthConfigurationModal", { static: false }]
156
156
  }] } });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvY29uZmlndXJhdGlvbnMvYXV0aC1jb25maWd1cmF0aW9uL2F1dGgtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2NvbmZpZ3VyYXRpb25zL2F1dGgtY29uZmlndXJhdGlvbi9hdXRoLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQThCLHdCQUF3QixFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUE4QixNQUFNLHlCQUF5QixDQUFDO0FBRXBLLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ25JLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUlyRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQzs7Ozs7Ozs7Ozs7QUFNekksTUFBTSxPQUFPLG9DQUFxQyxTQUFRLGdCQUFnQjtJQTJDeEUsWUFBb0IsUUFBa0IsRUFDNUIsZUFBZ0MsRUFDakMsY0FBOEIsRUFDN0IscUJBQTRDLEVBQzVDLHFCQUE0QztRQUNwRCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFMRSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzVCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtR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QWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUk5RCxvQkFBb0I7c0JBRG5CLFNBQVM7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJJdGVtLCBUZXh0Qm94T3B0aW9ucywgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBTdHlsZUNvbmZpcm1hdGlvbk1vZGUsIEFwcEJhc2VDb21wb25lbnQsIENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvQ29uZmlndXJhdGlvbnNTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLCBVQUVQYXNzQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvQ29uZmlndXJhdGlvbk1vZGVscy9Db25maWd1cmF0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVkaXRBdXRoQ29uZmlndXJhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vYXV0aC1jb25maWd1cmF0aW9uLWVkaXQvYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Nb2RlLCBVQUVQYXNzTGlua2luZ01vZGUsIFVBRVBhc3NVc2VyVHlwZXMgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvY29uZmlndXJhdGlvbi9hdXRoZW50ZWNhdGlvbi1jb25maWd1cmF0aW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWF1dGgtY29uZmlndXJhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dGgtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbkNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvLyNyZWdpb24gcHJvcHNcclxuICBhdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb25Nb2RlbDogQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiA9IG5ldyBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKCk7XHJcbiAgdWFlUGFzc0NvbmZpZ3VyYXRpb246IFVBRVBhc3NDb25maWd1cmF0aW9uID0gbmV3IFVBRVBhc3NDb25maWd1cmF0aW9uKCk7XHJcbiAgdWFlUGFzc0NvbmZpZ3VyYXRpb25Jc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGF1dGhlbnRpY2F0aW9uTW9kZUVudW1WYWx1ZXMgPSBBdXRoZW50aWNhdGlvbk1vZGU7XHJcblxyXG4gIHVhZVBhc3NMaW5raW5nTW9kZUVudW06IFVBRVBhc3NMaW5raW5nTW9kZTtcclxuICB1YWVQYXNzVXNlclR5cGVFbnVtOiBVQUVQYXNzVXNlclR5cGVzO1xyXG5cclxuICB1YWVQYXNzVXNlclR5cGVMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHVhZVBhc3NMaW5raW5nTW9kZUxpc3Q6IGFueVtdID0gW107XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vUGFnZSByZXF1aXJlbWVudHNcclxuICBTaG93UGFnZUNvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBBcGlVcmwgPSBcIi9hcGkvYWRtaW4vQ29uZmlndXJhdGlvbi9cIjtcclxuICBQcm9kdWN0aW9uTW9kZTogYm9vbGVhbjtcclxuXHJcbiAgLy9GaWx0ZXIgYW5kIHBhZ2luZyBjb21wb25lbnRzXHJcbiAgQ29uZmlndXJhdGlvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuXHJcbiAgLy9kZWxldGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgZGVsZXRlQ29uZmlndXJhdGlvbklkOiBzdHJpbmc7XHJcbiAgRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIGRlbGV0ZUNvbnRyb2xMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdDb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuXHJcbiAgLy9SZWxvYWQgSnNvbiBNb2RlbCBDb250cm9sc1xyXG4gIHJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnM6IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucztcclxuICByZWxvYWRDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3JlbG9hZENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHJlbG9hZENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJlZGl0QXV0aENvbmZpZ3VyYXRpb25Nb2RhbFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBlZGl0Qm9hcmRNZW1iZXJNb2RhbDogRWRpdEF1dGhDb25maWd1cmF0aW9uQ29tcG9uZW50O1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgQ29uZmlndXJhdGlvbnNTZXJ2aWNlOiBDb25maWd1cmF0aW9uc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gRXZlbnRzXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy50cmFuc2xhdGUoXCJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb25cIik7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlKFwiSG9tZVwiKSxcclxuICAgICAgICBwYXRoOiAnL0FkbWluL0hvbWUnLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2VcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgICBwYXRoOiAnJyxcclxuICAgICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2VcclxuICAgICAgfVxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8jcmVnaW9uIGhlbHBlclxyXG5cclxuICB0cmFuc2xhdGUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShrZXkpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0VkaXRNb2RhbCA9IChtb2RlOiBBdXRoZW50aWNhdGlvbk1vZGUpID0+IHtcclxuICAgIHRoaXMuZWRpdEJvYXJkTWVtYmVyTW9kYWwuc2hvd01vZGFsKG1vZGUsIHRoaXMuYXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uTW9kZWwpO1xyXG4gIH07XHJcblxyXG4gIGxvYWRVQUVQYXNzVXNlclR5cGVzKCkge1xyXG4gICAgbGV0IGxpc3Q6IGFueVtdID0gW107XHJcbiAgICBmb3IgKHZhciBpdGVtIGluIFVBRVBhc3NVc2VyVHlwZXMpIHtcclxuICAgICAgaWYgKHBhcnNlSW50KGl0ZW0pKVxyXG4gICAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgICBrZXk6ICtpdGVtLFxyXG4gICAgICAgICAgdmFsdWU6IFVBRVBhc3NVc2VyVHlwZXNbaXRlbV1cclxuICAgICAgICB9IGFzIGFueSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVhZVBhc3NVc2VyVHlwZUxpc3QgPSBsaXN0O1xyXG4gIH1cclxuXHJcbiAgbG9hZFVBRVBhc3NMaW5raW5nTW9kZSgpIHtcclxuICAgIGxldCBsaXN0OiBhbnlbXSA9IFtdO1xyXG4gICAgZm9yICh2YXIgaXRlbSBpbiBVQUVQYXNzTGlua2luZ01vZGUpIHtcclxuICAgICAgaWYgKHBhcnNlSW50KGl0ZW0pKVxyXG4gICAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgICBrZXk6ICtpdGVtLFxyXG4gICAgICAgICAgdmFsdWU6IHRoaXMudHJhbnNsYXRlKFVBRVBhc3NMaW5raW5nTW9kZVtpdGVtXSlcclxuICAgICAgICB9IGFzIGFueSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVhZVBhc3NMaW5raW5nTW9kZUxpc3QgPSBsaXN0O1xyXG4gIH1cclxuXHJcbiAgZ2V0VUFFUGFzc1VzZXJUeXBlVmFsdWUoa2V5OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLnVhZVBhc3NVc2VyVHlwZUxpc3QuZmluZChpID0+IGkua2V5ID09IGtleSkudmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXRVQUVQYXNzTGlua2luZ01vZGVWYWx1ZShrZXk6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMudWFlUGFzc0xpbmtpbmdNb2RlTGlzdC5maW5kKGkgPT4gaS5rZXkgPT0ga2V5KS52YWx1ZTtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBpbml0aWFsaXplUGFnZSgpIHtcclxuICAgIHRoaXMubG9hZFVBRVBhc3NDb25maWd1cmF0aW9ucygpO1xyXG4gICAgdGhpcy5sb2FkVUFFUGFzc1VzZXJUeXBlcygpO1xyXG4gICAgdGhpcy5sb2FkVUFFUGFzc0xpbmtpbmdNb2RlKCk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gU3RhcnQgb2YgIFJlbG9hZCBSZXNvdXJjZSBwYXJ0XHJcbiAgc2hvd1JlbG9hZFJlc291cmNlTW9kYWwoKSB7XHJcbiAgICB0aGlzLnJlbG9hZENvbnRyb2xMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucyA9IG5ldyBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMoKTtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5zZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLnJlbG9hZEpzb25GdW5jdGlvbjtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5jb25maXJtYXRpb25Cb2R5ID0gdGhpcy50cmFuc2xhdGUoXCJSZWxvYWRDb25maWd1cmF0aW9uc0NvbmZpcm1hdGlvblwiKTtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5jb25maXJtYXRpb25IZWFkZXIgPSB0aGlzLnRyYW5zbGF0ZShcIlJlbG9hZENvbmZpZ3VyYXRpb25zXCIpO1xyXG4gICAgdGhpcy5yZWxvYWRDb25maXJtYXRpb25PcHRpb25zLnN1Ym1pdEJ1dHRvblRleHQgPSB0aGlzLnRyYW5zbGF0ZShcIlJlbG9hZFwiKTtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5zdHlsZUNvbmZpcm1hdGlvbk1vZGUgPSBTdHlsZUNvbmZpcm1hdGlvbk1vZGUuRGFuZ2VyO1xyXG4gICAgdGhpcy5yZWxvYWRDb25maXJtYXRpb25PcHRpb25zLnN1Y2Nlc3NOb3RpZmljYXRpb25NZXNzYWdlID0gdGhpcy50cmFuc2xhdGUoXCJTdWNjZXNzTWVzc2FnZVwiKTtcclxuICAgIHRoaXMucmVsb2FkQ29udHJvbExvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIHJlbG9hZEpzb25GdW5jdGlvbiA9ICgpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLnJlbG9hZEpzb25GaWxlKCk7XHJcbiAgfTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vI3JlZ2lvbiBVQUVQYXNzIEZ1bmN0aW9uc1xyXG5cclxuICBsb2FkVUFFUGFzc0NvbmZpZ3VyYXRpb25zKCkge1xyXG4gICAgdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbklzTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5nZXRBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb25EYXRhKClcclxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uTW9kZWwgPSByZXM7XHJcbiAgICAgICAgdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbiA9IHJlcy51YWVQYXNzQ29uZmlnO1xyXG4gICAgICAgIHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Jc0xvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIEF6dXJlQURDb25maWd1cmF0aW9uRGF0YVxyXG5cclxuICBsb2FkQXp1cmVBRENvbmZpZ3VyYXRpb25Db25maWd1cmF0aW9ucygpIHtcclxuXHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcblxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICA8dWwgbmdiTmF2ICNuYXY9XCJuZ2JOYXZcIiBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzIG5hdi1saW5lLXRhYnMtMnggYm9yZGVyLXRyYW5zcGFyZW50IGZzLTUgZnctYm9sZGVyXCI+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbSBtdC0yXCI+XHJcbiAgICAgICAgICA8YSBuZ2JOYXZMaW5rIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1hY3RpdmUtcHJpbWFyeSBtcy0wIG1lLTEwIHB5LTVcIiAoY2xpY2spPVwibG9hZFVBRVBhc3NDb25maWd1cmF0aW9ucygpXCI+e3tcclxuICAgICAgICAgICAgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnVUFFUGFzc0NvbmZpZ3VyYXRpb25EYXRhJylcclxuICAgICAgICAgIH19PC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCIgKm5nSWY9XCJ1YWVQYXNzQ29uZmlndXJhdGlvbklzTG9hZGVkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtMTIgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtY2VudGVyIHJvdW5kZWQtMyBiZy1saWdodCBweS0xMCBweC0xMCBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtZ3JheS04MDAgZmxleC1ncm93LTEgcGUtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkT25seS12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdCYXNlVXJsJykgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB1YWVQYXNzQ29uZmlndXJhdGlvbi5iYXNlVXJsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRPbmx5LXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0NsaWVudElEJykgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB1YWVQYXNzQ29uZmlndXJhdGlvbi5jbGllbnRJRCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkT25seS12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdSZWRpcmVjdFVybCcpIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdWFlUGFzc0NvbmZpZ3VyYXRpb24ucmVkaXJlY3RVcmwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhZE9ubHktdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRGVmYXVsdFBlcm1pc3Npb25TZXQnKSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHVhZVBhc3NDb25maWd1cmF0aW9uLmRlZmF1bHRQZXJtaXNzaW9uU2V0TG9jYWxpemF0aW9uIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRPbmx5LXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0FjY2Vzc0xldmVscycpIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGxldmVsIG9mIHVhZVBhc3NDb25maWd1cmF0aW9uLmFjY2Vzc0xldmVsc1wiPnt7IGdldFVBRVBhc3NVc2VyVHlwZVZhbHVlKGxldmVsKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkT25seS12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdFbmFibGVMaW5raW5nRXhpc3RpbmdVc2VycycpIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWFlUGFzc0NvbmZpZ3VyYXRpb24uZW5hYmxlTGlua2luZ0V4aXN0aW5nVXNlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1RydWUnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRmFsc2UnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhZE9ubHktdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRW5hYmxlSW1wb3J0aW5nTmV3VXNlcicpIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWFlUGFzc0NvbmZpZ3VyYXRpb24uZW5hYmxlSW1wb3J0aW5nTmV3VXNlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnVHJ1ZScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdGYWxzZScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkT25seS12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdFbmFibGVVcGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luJykgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YWVQYXNzQ29uZmlndXJhdGlvbi5lbmFibGVVcGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdUcnVlJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0ZhbHNlJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRPbmx5LXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0VuYWJsZVNPUFBlcm1pc3Npb25NYXBwaW5nJykgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YWVQYXNzQ29uZmlndXJhdGlvbi5lbmFibGVTT1BQZXJtaXNzaW9uTWFwcGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnVHJ1ZScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdGYWxzZScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwidWFlUGFzc0NvbmZpZ3VyYXRpb24uZW5hYmxlTGlua2luZ0V4aXN0aW5nVXNlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhZE9ubHktdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnTGlua2luZ01vZGUnKSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGdldFVBRVBhc3NMaW5raW5nTW9kZVZhbHVlKHVhZVBhc3NDb25maWd1cmF0aW9uLmxpbmtpbmdNb2RlKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdE1vZGFsKGF1dGhlbnRpY2F0aW9uTW9kZUVudW1WYWx1ZXMuVUFFUGFzcylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQgPGkgY2xhc3M9XCJmYSBmYS1wZW4gbXMtMVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCIgKGNsaWNrKT1cImxvYWRBenVyZUFEQ29uZmlndXJhdGlvbkNvbmZpZ3VyYXRpb25zKClcIj57e1xyXG4gICAgICAgICAgICB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBenVyZUFEQ29uZmlndXJhdGlvbkRhdGEnKVxyXG4gICAgICAgICAgfX08L2E+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgIFJhdyBkZW5pbSB5b3UgcHJvYmFibHkgaGF2ZW4ndCBoZWFyZCBvZiB0aGVtIGplYW4gc2hvcnRzIEF1c3Rpbi4gTmVzY2l1bnQgdG9mdSBzdHVtcHRvd24gYWxpcXVhLCByZXRybyBzeW50aCBtYXN0ZXIgY2xlYW5zZS5cclxuICAgICAgICAgICAgICAgICAgTXVzdGFjaGUgY2xpY2hlIHRlbXBvciwgd2lsbGlhbXNidXJnIGNhcmxlcyB2ZWdhbiBoZWx2ZXRpY2EuIFJlcHJlaGVuZGVyaXQgYnV0Y2hlciByZXRybyBrZWZmaXllaCBkcmVhbWNhdGNoZXIgc3ludGguIENvc2J5IHN3ZWF0ZXJcclxuICAgICAgICAgICAgICAgICAgZXUgYmFuaCBtaSwgcXVpIGlydXJlIHRlcnJ5IHJpY2hhcmRzb24gZXggc3F1aWQuIEFsaXF1aXAgcGxhY2VhdCBzYWx2aWEgY2lsbHVtIGlwaG9uZS4gU2VpdGFuIGFsaXF1aXAgcXVpcyBjYXJkaWdhbiBhbWVyaWNhblxyXG4gICAgICAgICAgICAgICAgICBhcHBhcmVsLCBidXRjaGVyIHZvbHVwdGF0ZSBuaXNpIHF1aS5cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICAgIDxkaXYgW25nYk5hdk91dGxldF09XCJuYXZcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxhdXRoLWNvbmZpZ3VyYXRpb24tZWRpdCAjZWRpdEF1dGhDb25maWd1cmF0aW9uTW9kYWw+PC9hdXRoLWNvbmZpZ3VyYXRpb24tZWRpdD5cclxuPEJCU0YtQ29uZmlybWF0aW9uTW9kYWxcclxuICAqbmdJZj1cInJlbG9hZENvbnRyb2xMb2FkZWRcIlxyXG4gIFtvcHRpb25zXT1cInJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnNcIlxyXG4gIGlkPVwicmVsb2FkQ29uZmlybWF0aW9uTW9kYWxDb250cm9sXCJcclxuICAjcmVsb2FkQ29uZmlybWF0aW9uTW9kYWxDb250cm9sPjwvQkJTRi1Db25maXJtYXRpb25Nb2RhbD5cclxuIl19
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvY29uZmlndXJhdGlvbnMvYXV0aC1jb25maWd1cmF0aW9uL2F1dGgtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2NvbmZpZ3VyYXRpb25zL2F1dGgtY29uZmlndXJhdGlvbi9hdXRoLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQThCLHdCQUF3QixFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUE4QixNQUFNLHlCQUF5QixDQUFDO0FBRXBLLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ25JLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUlyRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQzs7Ozs7Ozs7Ozs7QUFPekksTUFBTSxPQUFPLG9DQUFxQyxTQUFRLGdCQUFnQjtJQTJDeEUsWUFBb0IsUUFBa0IsRUFDNUIsZUFBZ0MsRUFDakMsY0FBOEIsRUFDN0IscUJBQTRDLEVBQzVDLHFCQUE0QztRQUNwRCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFMRSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzVCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtR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QVM7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUk5RCxvQkFBb0I7c0JBRG5CLFNBQVM7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJJdGVtLCBUZXh0Qm94T3B0aW9ucywgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBTdHlsZUNvbmZpcm1hdGlvbk1vZGUsIEFwcEJhc2VDb21wb25lbnQsIENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvQ29uZmlndXJhdGlvbnNTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLCBVQUVQYXNzQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvQ29uZmlndXJhdGlvbk1vZGVscy9Db25maWd1cmF0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVkaXRBdXRoQ29uZmlndXJhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vYXV0aC1jb25maWd1cmF0aW9uLWVkaXQvYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Nb2RlLCBVQUVQYXNzTGlua2luZ01vZGUsIFVBRVBhc3NVc2VyVHlwZXMgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvY29uZmlndXJhdGlvbi9hdXRoZW50ZWNhdGlvbi1jb25maWd1cmF0aW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItYXV0aC1jb25maWd1cmF0aW9uJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hdXRoLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbkNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvLyNyZWdpb24gcHJvcHNcclxuICBhdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb25Nb2RlbDogQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiA9IG5ldyBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKCk7XHJcbiAgdWFlUGFzc0NvbmZpZ3VyYXRpb246IFVBRVBhc3NDb25maWd1cmF0aW9uID0gbmV3IFVBRVBhc3NDb25maWd1cmF0aW9uKCk7XHJcbiAgdWFlUGFzc0NvbmZpZ3VyYXRpb25Jc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGF1dGhlbnRpY2F0aW9uTW9kZUVudW1WYWx1ZXMgPSBBdXRoZW50aWNhdGlvbk1vZGU7XHJcblxyXG4gIHVhZVBhc3NMaW5raW5nTW9kZUVudW06IFVBRVBhc3NMaW5raW5nTW9kZTtcclxuICB1YWVQYXNzVXNlclR5cGVFbnVtOiBVQUVQYXNzVXNlclR5cGVzO1xyXG5cclxuICB1YWVQYXNzVXNlclR5cGVMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHVhZVBhc3NMaW5raW5nTW9kZUxpc3Q6IGFueVtdID0gW107XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vUGFnZSByZXF1aXJlbWVudHNcclxuICBTaG93UGFnZUNvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBBcGlVcmwgPSBcIi9hcGkvYWRtaW4vQ29uZmlndXJhdGlvbi9cIjtcclxuICBQcm9kdWN0aW9uTW9kZTogYm9vbGVhbjtcclxuXHJcbiAgLy9GaWx0ZXIgYW5kIHBhZ2luZyBjb21wb25lbnRzXHJcbiAgQ29uZmlndXJhdGlvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuXHJcbiAgLy9kZWxldGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgZGVsZXRlQ29uZmlndXJhdGlvbklkOiBzdHJpbmc7XHJcbiAgRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIGRlbGV0ZUNvbnRyb2xMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdDb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuXHJcbiAgLy9SZWxvYWQgSnNvbiBNb2RlbCBDb250cm9sc1xyXG4gIHJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnM6IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucztcclxuICByZWxvYWRDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3JlbG9hZENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHJlbG9hZENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJlZGl0QXV0aENvbmZpZ3VyYXRpb25Nb2RhbFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBlZGl0Qm9hcmRNZW1iZXJNb2RhbDogRWRpdEF1dGhDb25maWd1cmF0aW9uQ29tcG9uZW50O1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgQ29uZmlndXJhdGlvbnNTZXJ2aWNlOiBDb25maWd1cmF0aW9uc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gRXZlbnRzXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy50cmFuc2xhdGUoXCJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb25cIik7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlKFwiSG9tZVwiKSxcclxuICAgICAgICBwYXRoOiAnL0FkbWluL0hvbWUnLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2VcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgICBwYXRoOiAnJyxcclxuICAgICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2VcclxuICAgICAgfVxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8jcmVnaW9uIGhlbHBlclxyXG5cclxuICB0cmFuc2xhdGUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShrZXkpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0VkaXRNb2RhbCA9IChtb2RlOiBBdXRoZW50aWNhdGlvbk1vZGUpID0+IHtcclxuICAgIHRoaXMuZWRpdEJvYXJkTWVtYmVyTW9kYWwuc2hvd01vZGFsKG1vZGUsIHRoaXMuYXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uTW9kZWwpO1xyXG4gIH07XHJcblxyXG4gIGxvYWRVQUVQYXNzVXNlclR5cGVzKCkge1xyXG4gICAgbGV0IGxpc3Q6IGFueVtdID0gW107XHJcbiAgICBmb3IgKHZhciBpdGVtIGluIFVBRVBhc3NVc2VyVHlwZXMpIHtcclxuICAgICAgaWYgKHBhcnNlSW50KGl0ZW0pKVxyXG4gICAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgICBrZXk6ICtpdGVtLFxyXG4gICAgICAgICAgdmFsdWU6IFVBRVBhc3NVc2VyVHlwZXNbaXRlbV1cclxuICAgICAgICB9IGFzIGFueSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVhZVBhc3NVc2VyVHlwZUxpc3QgPSBsaXN0O1xyXG4gIH1cclxuXHJcbiAgbG9hZFVBRVBhc3NMaW5raW5nTW9kZSgpIHtcclxuICAgIGxldCBsaXN0OiBhbnlbXSA9IFtdO1xyXG4gICAgZm9yICh2YXIgaXRlbSBpbiBVQUVQYXNzTGlua2luZ01vZGUpIHtcclxuICAgICAgaWYgKHBhcnNlSW50KGl0ZW0pKVxyXG4gICAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgICBrZXk6ICtpdGVtLFxyXG4gICAgICAgICAgdmFsdWU6IHRoaXMudHJhbnNsYXRlKFVBRVBhc3NMaW5raW5nTW9kZVtpdGVtXSlcclxuICAgICAgICB9IGFzIGFueSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVhZVBhc3NMaW5raW5nTW9kZUxpc3QgPSBsaXN0O1xyXG4gIH1cclxuXHJcbiAgZ2V0VUFFUGFzc1VzZXJUeXBlVmFsdWUoa2V5OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLnVhZVBhc3NVc2VyVHlwZUxpc3QuZmluZChpID0+IGkua2V5ID09IGtleSkudmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXRVQUVQYXNzTGlua2luZ01vZGVWYWx1ZShrZXk6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMudWFlUGFzc0xpbmtpbmdNb2RlTGlzdC5maW5kKGkgPT4gaS5rZXkgPT0ga2V5KS52YWx1ZTtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBpbml0aWFsaXplUGFnZSgpIHtcclxuICAgIHRoaXMubG9hZFVBRVBhc3NDb25maWd1cmF0aW9ucygpO1xyXG4gICAgdGhpcy5sb2FkVUFFUGFzc1VzZXJUeXBlcygpO1xyXG4gICAgdGhpcy5sb2FkVUFFUGFzc0xpbmtpbmdNb2RlKCk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gU3RhcnQgb2YgIFJlbG9hZCBSZXNvdXJjZSBwYXJ0XHJcbiAgc2hvd1JlbG9hZFJlc291cmNlTW9kYWwoKSB7XHJcbiAgICB0aGlzLnJlbG9hZENvbnRyb2xMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucyA9IG5ldyBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMoKTtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5zZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLnJlbG9hZEpzb25GdW5jdGlvbjtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5jb25maXJtYXRpb25Cb2R5ID0gdGhpcy50cmFuc2xhdGUoXCJSZWxvYWRDb25maWd1cmF0aW9uc0NvbmZpcm1hdGlvblwiKTtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5jb25maXJtYXRpb25IZWFkZXIgPSB0aGlzLnRyYW5zbGF0ZShcIlJlbG9hZENvbmZpZ3VyYXRpb25zXCIpO1xyXG4gICAgdGhpcy5yZWxvYWRDb25maXJtYXRpb25PcHRpb25zLnN1Ym1pdEJ1dHRvblRleHQgPSB0aGlzLnRyYW5zbGF0ZShcIlJlbG9hZFwiKTtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5zdHlsZUNvbmZpcm1hdGlvbk1vZGUgPSBTdHlsZUNvbmZpcm1hdGlvbk1vZGUuRGFuZ2VyO1xyXG4gICAgdGhpcy5yZWxvYWRDb25maXJtYXRpb25PcHRpb25zLnN1Y2Nlc3NOb3RpZmljYXRpb25NZXNzYWdlID0gdGhpcy50cmFuc2xhdGUoXCJTdWNjZXNzTWVzc2FnZVwiKTtcclxuICAgIHRoaXMucmVsb2FkQ29udHJvbExvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIHJlbG9hZEpzb25GdW5jdGlvbiA9ICgpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLnJlbG9hZEpzb25GaWxlKCk7XHJcbiAgfTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vI3JlZ2lvbiBVQUVQYXNzIEZ1bmN0aW9uc1xyXG5cclxuICBsb2FkVUFFUGFzc0NvbmZpZ3VyYXRpb25zKCkge1xyXG4gICAgdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbklzTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5nZXRBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb25EYXRhKClcclxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uTW9kZWwgPSByZXM7XHJcbiAgICAgICAgdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbiA9IHJlcy51YWVQYXNzQ29uZmlnO1xyXG4gICAgICAgIHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Jc0xvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIEF6dXJlQURDb25maWd1cmF0aW9uRGF0YVxyXG5cclxuICBsb2FkQXp1cmVBRENvbmZpZ3VyYXRpb25Db25maWd1cmF0aW9ucygpIHtcclxuXHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcblxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICA8dWwgbmdiTmF2ICNuYXY9XCJuZ2JOYXZcIiBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzIG5hdi1saW5lLXRhYnMtMnggYm9yZGVyLXRyYW5zcGFyZW50IGZzLTUgZnctYm9sZGVyXCI+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbSBtdC0yXCI+XHJcbiAgICAgICAgICA8YSBuZ2JOYXZMaW5rIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1hY3RpdmUtcHJpbWFyeSBtcy0wIG1lLTEwIHB5LTVcIiAoY2xpY2spPVwibG9hZFVBRVBhc3NDb25maWd1cmF0aW9ucygpXCI+e3tcclxuICAgICAgICAgICAgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnVUFFUGFzc0NvbmZpZ3VyYXRpb25EYXRhJylcclxuICAgICAgICAgIH19PC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCIgKm5nSWY9XCJ1YWVQYXNzQ29uZmlndXJhdGlvbklzTG9hZGVkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtMTIgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtY2VudGVyIHJvdW5kZWQtMyBiZy1saWdodCBweS0xMCBweC0xMCBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtZ3JheS04MDAgZmxleC1ncm93LTEgcGUtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkT25seS12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdCYXNlVXJsJykgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB1YWVQYXNzQ29uZmlndXJhdGlvbi5iYXNlVXJsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRPbmx5LXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0NsaWVudElEJykgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB1YWVQYXNzQ29uZmlndXJhdGlvbi5jbGllbnRJRCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkT25seS12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdSZWRpcmVjdFVybCcpIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdWFlUGFzc0NvbmZpZ3VyYXRpb24ucmVkaXJlY3RVcmwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhZE9ubHktdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRGVmYXVsdFBlcm1pc3Npb25TZXQnKSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHVhZVBhc3NDb25maWd1cmF0aW9uLmRlZmF1bHRQZXJtaXNzaW9uU2V0TG9jYWxpemF0aW9uIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRPbmx5LXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0FjY2Vzc0xldmVscycpIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGxldmVsIG9mIHVhZVBhc3NDb25maWd1cmF0aW9uLmFjY2Vzc0xldmVsc1wiPnt7IGdldFVBRVBhc3NVc2VyVHlwZVZhbHVlKGxldmVsKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkT25seS12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdFbmFibGVMaW5raW5nRXhpc3RpbmdVc2VycycpIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWFlUGFzc0NvbmZpZ3VyYXRpb24uZW5hYmxlTGlua2luZ0V4aXN0aW5nVXNlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1RydWUnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRmFsc2UnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhZE9ubHktdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRW5hYmxlSW1wb3J0aW5nTmV3VXNlcicpIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWFlUGFzc0NvbmZpZ3VyYXRpb24uZW5hYmxlSW1wb3J0aW5nTmV3VXNlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnVHJ1ZScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdGYWxzZScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkT25seS12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdFbmFibGVVcGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luJykgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YWVQYXNzQ29uZmlndXJhdGlvbi5lbmFibGVVcGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdUcnVlJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0ZhbHNlJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRPbmx5LXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0VuYWJsZVNPUFBlcm1pc3Npb25NYXBwaW5nJykgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YWVQYXNzQ29uZmlndXJhdGlvbi5lbmFibGVTT1BQZXJtaXNzaW9uTWFwcGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnVHJ1ZScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdGYWxzZScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwidWFlUGFzc0NvbmZpZ3VyYXRpb24uZW5hYmxlTGlua2luZ0V4aXN0aW5nVXNlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhZE9ubHktdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnTGlua2luZ01vZGUnKSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGdldFVBRVBhc3NMaW5raW5nTW9kZVZhbHVlKHVhZVBhc3NDb25maWd1cmF0aW9uLmxpbmtpbmdNb2RlKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdE1vZGFsKGF1dGhlbnRpY2F0aW9uTW9kZUVudW1WYWx1ZXMuVUFFUGFzcylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQgPGkgY2xhc3M9XCJmYSBmYS1wZW4gbXMtMVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCIgKGNsaWNrKT1cImxvYWRBenVyZUFEQ29uZmlndXJhdGlvbkNvbmZpZ3VyYXRpb25zKClcIj57e1xyXG4gICAgICAgICAgICB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBenVyZUFEQ29uZmlndXJhdGlvbkRhdGEnKVxyXG4gICAgICAgICAgfX08L2E+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgIFJhdyBkZW5pbSB5b3UgcHJvYmFibHkgaGF2ZW4ndCBoZWFyZCBvZiB0aGVtIGplYW4gc2hvcnRzIEF1c3Rpbi4gTmVzY2l1bnQgdG9mdSBzdHVtcHRvd24gYWxpcXVhLCByZXRybyBzeW50aCBtYXN0ZXIgY2xlYW5zZS5cclxuICAgICAgICAgICAgICAgICAgTXVzdGFjaGUgY2xpY2hlIHRlbXBvciwgd2lsbGlhbXNidXJnIGNhcmxlcyB2ZWdhbiBoZWx2ZXRpY2EuIFJlcHJlaGVuZGVyaXQgYnV0Y2hlciByZXRybyBrZWZmaXllaCBkcmVhbWNhdGNoZXIgc3ludGguIENvc2J5IHN3ZWF0ZXJcclxuICAgICAgICAgICAgICAgICAgZXUgYmFuaCBtaSwgcXVpIGlydXJlIHRlcnJ5IHJpY2hhcmRzb24gZXggc3F1aWQuIEFsaXF1aXAgcGxhY2VhdCBzYWx2aWEgY2lsbHVtIGlwaG9uZS4gU2VpdGFuIGFsaXF1aXAgcXVpcyBjYXJkaWdhbiBhbWVyaWNhblxyXG4gICAgICAgICAgICAgICAgICBhcHBhcmVsLCBidXRjaGVyIHZvbHVwdGF0ZSBuaXNpIHF1aS5cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICAgIDxkaXYgW25nYk5hdk91dGxldF09XCJuYXZcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxhdXRoLWNvbmZpZ3VyYXRpb24tZWRpdCAjZWRpdEF1dGhDb25maWd1cmF0aW9uTW9kYWw+PC9hdXRoLWNvbmZpZ3VyYXRpb24tZWRpdD5cclxuPEJCU0YtQ29uZmlybWF0aW9uTW9kYWxcclxuICAqbmdJZj1cInJlbG9hZENvbnRyb2xMb2FkZWRcIlxyXG4gIFtvcHRpb25zXT1cInJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnNcIlxyXG4gIGlkPVwicmVsb2FkQ29uZmlybWF0aW9uTW9kYWxDb250cm9sXCJcclxuICAjcmVsb2FkQ29uZmlybWF0aW9uTW9kYWxDb250cm9sPjwvQkJTRi1Db25maXJtYXRpb25Nb2RhbD5cclxuIl19