@bnsights/bbsf-admin-portal 1.1.2 → 1.1.3
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.
- package/README.md +4 -0
- package/{esm2020 → esm2022}/bnsights-bbsf-admin-portal.mjs +4 -4
- package/{esm2020 → esm2022}/lib/Pages/ActiveDirectories/active-directories.component.mjs +14 -14
- package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +421 -0
- package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +528 -0
- package/{esm2020 → esm2022}/lib/Pages/ActiveDirectories/active-directory-routing.module.mjs +29 -29
- package/esm2022/lib/Pages/ActiveDirectories/active-directory.module.mjs +108 -0
- package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +23 -0
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/aside/aside.component.mjs +65 -65
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/content/content.component.mjs +31 -31
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/footer/footer.component.mjs +32 -32
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/header/header.component.mjs +57 -57
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/header/page-title/page-title.component.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/scripts-init/scripts-init.component.mjs +58 -58
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/subheader/subheader.component.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/subheader/subheader.module.mjs +26 -26
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/toolbar/toolbar.component.mjs +41 -41
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/toolbar/toolbar.module.mjs +25 -25
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/topbar/topbar.component.mjs +71 -71
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/activation/activation.component.mjs +92 -92
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/anonymouslayout-routing.module.mjs +37 -37
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +54 -54
- package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +100 -0
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/error/error.component.mjs +48 -48
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +59 -59
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/login/login.component.mjs +94 -94
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +90 -90
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +71 -71
- package/{esm2020 → esm2022}/lib/Pages/authentication/auth-callback/auth-callback.component.mjs +43 -43
- package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.component.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.module.mjs +41 -41
- package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.routing.mjs +31 -31
- package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +330 -0
- package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +157 -0
- package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +801 -0
- package/{esm2020 → esm2022}/lib/Pages/configurations/configurations.component.mjs +15 -15
- package/esm2022/lib/Pages/configurations/configurations.module.mjs +104 -0
- package/{esm2020 → esm2022}/lib/Pages/configurations/configurations.routing.mjs +41 -41
- package/{esm2020 → esm2022}/lib/Pages/configurations/index.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/core/auth.module.mjs +30 -30
- package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +17 -0
- package/{esm2020 → esm2022}/lib/Pages/core/authentication/auth.guard.mjs +46 -46
- package/esm2022/lib/Pages/core/authentication/auth.service.mjs +147 -0
- package/esm2022/lib/Pages/departments/department/department.component.mjs +220 -0
- package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +185 -0
- package/{esm2020 → esm2022}/lib/Pages/departments/departments-routing.module.mjs +27 -27
- package/{esm2020 → esm2022}/lib/Pages/departments/departments.component.mjs +15 -15
- package/esm2022/lib/Pages/departments/departments.module.mjs +94 -0
- package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +136 -0
- package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +148 -0
- package/{esm2020 → esm2022}/lib/Pages/documents/document-template-info/document-template-info.component.mjs +332 -332
- package/esm2022/lib/Pages/documents/document-templates/document-templates.component.mjs +437 -0
- package/{esm2020 → esm2022}/lib/Pages/documents/documents.component.mjs +15 -15
- package/esm2022/lib/Pages/documents/documents.module.mjs +114 -0
- package/esm2022/lib/Pages/documents/documents.routing.mjs +37 -0
- package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +169 -0
- package/{esm2020 → esm2022}/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +123 -123
- package/{esm2020 → esm2022}/lib/Pages/empty-data/empty-data.component.mjs +31 -31
- package/{esm2020 → esm2022}/lib/Pages/empty-data/empty-data.module.mjs +28 -28
- package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +294 -0
- package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +43 -0
- package/{esm2020 → esm2022}/lib/Pages/helpCenter/help-center-routing.module.mjs +31 -31
- package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +242 -0
- package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +243 -0
- package/esm2022/lib/Pages/helpCenter/help-center.module.mjs +99 -0
- package/{esm2020 → esm2022}/lib/Pages/helpCenter/help-centers.component.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Pages/home/filter-pipe.mjs +23 -23
- package/esm2022/lib/Pages/home/home.component.mjs +158 -0
- package/esm2022/lib/Pages/home/home.module.mjs +48 -0
- package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +443 -0
- package/esm2022/lib/Pages/impersonation-rules/impersonation-rules.module.mjs +95 -0
- package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +223 -0
- package/esm2022/lib/Pages/jobs/jobs.module.mjs +87 -0
- package/{esm2020 → esm2022}/lib/Pages/license/license/license.component.mjs +163 -163
- package/esm2022/lib/Pages/license/license.module.mjs +71 -0
- package/{esm2020 → esm2022}/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +215 -215
- package/esm2022/lib/Pages/localizations/localizations.component.mjs +516 -0
- package/esm2022/lib/Pages/localizations/localizations.module.mjs +79 -0
- package/{esm2020 → esm2022}/lib/Pages/logs/log/log.component.mjs +93 -93
- package/{esm2020 → esm2022}/lib/Pages/logs/logs-routing.module.mjs +27 -27
- package/{esm2020 → esm2022}/lib/Pages/logs/logs.component.mjs +15 -15
- package/esm2022/lib/Pages/logs/logs.module.mjs +87 -0
- package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +367 -0
- package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +187 -0
- package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +297 -0
- package/{esm2020 → esm2022}/lib/Pages/lookups/lookups-routing.module.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Pages/lookups/lookups.component.mjs +15 -15
- package/esm2022/lib/Pages/lookups/lookups.module.mjs +100 -0
- package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +104 -0
- package/{esm2020 → esm2022}/lib/Pages/notifications/edit-email/edit-email.component.mjs +158 -158
- package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +133 -0
- package/{esm2020 → esm2022}/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +115 -115
- package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +148 -0
- package/esm2022/lib/Pages/notifications/notifications-routing.module.mjs +39 -0
- package/{esm2020 → esm2022}/lib/Pages/notifications/notifications.component.mjs +15 -15
- package/esm2022/lib/Pages/notifications/notifications.module.mjs +101 -0
- package/{esm2020 → esm2022}/lib/Pages/notifications/template-info/template-info.component.mjs +391 -391
- package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +495 -0
- package/esm2022/lib/Pages/providers/provider/provider.component.mjs +615 -0
- package/{esm2020 → esm2022}/lib/Pages/providers/providers-routing.module.mjs +27 -27
- package/{esm2020 → esm2022}/lib/Pages/providers/providers.component.mjs +15 -15
- package/esm2022/lib/Pages/providers/providers.module.mjs +91 -0
- package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +334 -0
- package/{esm2020 → esm2022}/lib/Pages/publicHolidays/public-holidays-routing.module.mjs +25 -25
- package/{esm2020 → esm2022}/lib/Pages/publicHolidays/public-holidays.component.mjs +15 -15
- package/esm2022/lib/Pages/publicHolidays/public-holidays.module.mjs +94 -0
- package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +187 -0
- package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +226 -0
- package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +277 -0
- package/{esm2020 → esm2022}/lib/Pages/roles/roles-routing.module.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Pages/roles/roles.component.mjs +15 -15
- package/esm2022/lib/Pages/roles/roles.module.mjs +105 -0
- package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +193 -0
- package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +180 -0
- package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +187 -0
- package/{esm2020 → esm2022}/lib/Pages/sectors/sectors-routing.module.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Pages/sectors/sectors.component.mjs +15 -15
- package/esm2022/lib/Pages/sectors/sectors.module.mjs +96 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/ADType.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/Enums.mjs +54 -54
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/ProviderType.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/WFActivityType.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/configuration/ConditionRHSType.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/configuration/authentecation-configuration.mjs +18 -18
- package/{esm2020 → esm2022}/lib/Pages/shared/Pipes/survey-date.pipe.mjs +22 -22
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/AccountService.service.mjs +55 -55
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +51 -51
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/ConfigurationsService.service.mjs +61 -61
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/DepartmentService.service.mjs +46 -46
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +81 -81
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +37 -37
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/ErrorService.service.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/GlobalErrorHandler.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/HelpCenterService.service.mjs +47 -47
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/HttpErrorInterceptor.service.mjs +47 -47
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/JobsService.service.mjs +21 -21
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/LicenseService.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/LogsService.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/LookupGroupsService.service.mjs +33 -33
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/LookupService.service.mjs +67 -67
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/PermissionSetService.service.mjs +50 -50
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/PermissionsService.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/PublicHolidayService.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/SectorService.service.mjs +46 -46
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/TemplateService.service.mjs +90 -90
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkFlowVersionService.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +54 -54
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowInstanceService.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowLogVariablesService.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowService.service.mjs +38 -38
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/data.service.mjs +27 -27
- package/esm2022/lib/Pages/shared/Services/injectionModuleService.service.mjs +163 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/localizationsService.service .mjs +77 -77
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/provider.service.mjs +62 -62
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/survey-question.service.mjs +57 -57
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/survey.service.mjs +140 -140
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/userService.service.mjs +80 -80
- package/{esm2020 → esm2022}/lib/Pages/shared/base.service.mjs +19 -19
- package/{esm2020 → esm2022}/lib/Pages/shared/components/AdDirective.mjs +16 -16
- package/{esm2020 → esm2022}/lib/Pages/shared/components/external-url/external-url.component.mjs +168 -168
- package/{esm2020 → esm2022}/lib/Pages/shared/components/no-results/no-results.component.mjs +19 -19
- package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +192 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +48 -48
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +50 -50
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +217 -217
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +47 -47
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +49 -49
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +50 -50
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +624 -624
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +47 -47
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +683 -683
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +138 -138
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +102 -102
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +56 -56
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/survey-info.component.mjs +532 -532
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +113 -113
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +114 -114
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey.component.mjs +292 -292
- package/esm2022/lib/Pages/shared/components/survey-form/survey-form.component.mjs +696 -0
- package/esm2022/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +84 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey-layout/survey-layout.component.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Pages/shared/config/environment.mjs +11 -11
- package/esm2022/lib/Pages/shared/constants.mjs +130 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/filter/filter.component.mjs +14 -14
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ADModels/ADMappingModel.mjs +3 -3
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/AccountModels/forgotPasswordModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.mjs +50 -50
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DepartmentModels/DepartmentModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentExportDTO.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentHeaderAndFooterTemplate.mjs +9 -9
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentTemplateDTO.mjs +9 -9
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentTemplateInfoDTO.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/InjectedModuleModel/InjectedModule.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/JobModels/JobCountsModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/LicenseModel/LicenseModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/EditResourceModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/UploadJsonVM.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupGroupModel.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupItem.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.mjs +10 -10
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/TemplateDTO.mjs +9 -9
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/ProviderAttributeModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/ProviderModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SectorModels/SectorModel.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/DeleteSurveyDTO.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/add-survey-submissio.mjs +13 -13
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/add-survey.mjs +10 -10
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/model.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-field-options.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-filed-value.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-form-options.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-publish.mjs +4 -4
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-question-option.mjs +17 -17
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-question.mjs +10 -10
- package/esm2022/lib/Pages/shared/models/SurveyModels/survey-utils.mjs +8 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/ActivationModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/AddUserModel.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/DropdownsResponseModel.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/EditUserModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/IdentityModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/UserSearchParamDTO.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/UsersIDRequestModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityModel.mjs +16 -16
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFCreationModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFVariableModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/user.registration.mjs +7 -7
- package/esm2022/lib/Pages/shared/modules/public-survey.module.mjs +68 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/modules/survey-routing.module.mjs +39 -39
- package/esm2022/lib/Pages/shared/modules/survey.module.mjs +129 -0
- package/esm2022/lib/Pages/shared/shared.module.mjs +31 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/stylesbundle.service.mjs +44 -44
- package/{esm2020 → esm2022}/lib/Pages/start/index/index.component.mjs +25 -25
- package/{esm2020 → esm2022}/lib/Pages/start/start-routing.module.mjs +22 -22
- package/{esm2020 → esm2022}/lib/Pages/start/start.module.mjs +31 -31
- package/esm2022/lib/Pages/users/users.component.mjs +806 -0
- package/esm2022/lib/Pages/users/users.module.mjs +86 -0
- package/{esm2020 → esm2022}/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +535 -535
- package/{esm2020 → esm2022}/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +840 -840
- package/{esm2020 → esm2022}/lib/Pages/workflows/instance-info/instance-info.component.mjs +302 -302
- package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +793 -0
- package/{esm2020 → esm2022}/lib/Pages/workflows/version-info/version-info.component.mjs +137 -137
- package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +209 -0
- package/{esm2020 → esm2022}/lib/Pages/workflows/workflows-routing.module.mjs +35 -35
- package/{esm2020 → esm2022}/lib/Pages/workflows/workflows.component.mjs +15 -15
- package/esm2022/lib/Pages/workflows/workflows.module.mjs +103 -0
- package/{esm2020 → esm2022}/lib/_metronic/configs/default-layout.config.mjs +95 -95
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/DomHelpers.mjs +270 -270
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/ElementAnimateUtil.mjs +166 -166
- package/esm2022/lib/_metronic/core/_utils/EventHandlerUtil.mjs +90 -0
- package/esm2022/lib/_metronic/core/_utils/_DOMEventHandlerUtil.mjs +49 -0
- package/esm2022/lib/_metronic/core/_utils/_DataUtil.mjs +48 -0
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/_ElementStyleUtil.mjs +16 -16
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/_TypesHelpers.mjs +48 -48
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/models/OffsetModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/models/ViewPortModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/_metronic/core/components/MenuComponent.mjs +827 -827
- package/{esm2020 → esm2022}/lib/_metronic/core/components/_CookieComponent.mjs +52 -52
- package/esm2022/lib/_metronic/core/components/_DrawerComponent.mjs +288 -0
- package/{esm2020 → esm2022}/lib/_metronic/core/components/_ScrollComponent.mjs +252 -252
- package/esm2022/lib/_metronic/core/components/_ScrollTopComponent.mjs +113 -0
- package/esm2022/lib/_metronic/core/components/_ToggleComponent.mjs +157 -0
- package/{esm2020 → esm2022}/lib/_metronic/core/services/layout-init.service.mjs +155 -155
- package/{esm2020 → esm2022}/lib/_metronic/core/services/layout.service.mjs +150 -150
- package/esm2022/lib/_metronic/core/services/page-info.service.mjs +119 -0
- package/esm2022/lib/masterlayout-routing.module.mjs +41 -0
- package/{esm2020 → esm2022}/lib/masterlayout.component.mjs +118 -118
- package/esm2022/lib/masterlayout.module.mjs +188 -0
- package/{esm2020 → esm2022}/public-api.mjs +48 -48
- package/{fesm2020 → fesm2022}/bnsights-bbsf-admin-portal.mjs +26884 -26881
- package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/Pages/ActiveDirectories/active-directories.component.d.ts +8 -8
- package/lib/Pages/ActiveDirectories/active-directory/active-directory.component.d.ts +85 -87
- package/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.d.ts +97 -99
- package/lib/Pages/ActiveDirectories/active-directory-routing.module.d.ts +7 -7
- package/lib/Pages/ActiveDirectories/active-directory.module.d.ts +26 -26
- package/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.d.ts +13 -13
- package/lib/Pages/_layout/components/aside/aside.component.d.ts +24 -24
- package/lib/Pages/_layout/components/content/content.component.d.ts +13 -13
- package/lib/Pages/_layout/components/footer/footer.component.d.ts +14 -14
- package/lib/Pages/_layout/components/header/header.component.d.ts +24 -24
- package/lib/Pages/_layout/components/header/page-title/page-title.component.d.ts +22 -22
- package/lib/Pages/_layout/components/scripts-init/scripts-init.component.d.ts +18 -18
- package/lib/Pages/_layout/components/subheader/subheader.component.d.ts +17 -17
- package/lib/Pages/_layout/components/subheader/subheader.module.d.ts +9 -9
- package/lib/Pages/_layout/components/toolbar/toolbar.component.d.ts +18 -18
- package/lib/Pages/_layout/components/toolbar/toolbar.module.d.ts +10 -10
- package/lib/Pages/_layout/components/topbar/topbar.component.d.ts +44 -44
- package/lib/Pages/anonymouslayout/activation/activation.component.d.ts +32 -32
- package/lib/Pages/anonymouslayout/anonymouslayout-routing.module.d.ts +7 -7
- package/lib/Pages/anonymouslayout/anonymouslayout.component.d.ts +24 -24
- package/lib/Pages/anonymouslayout/anonymouslayout.module.d.ts +21 -21
- package/lib/Pages/anonymouslayout/error/error.component.d.ts +25 -25
- package/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.d.ts +24 -24
- package/lib/Pages/anonymouslayout/login/login.component.d.ts +36 -36
- package/lib/Pages/anonymouslayout/rest-password/rest-password.component.d.ts +32 -32
- package/lib/Pages/anonymouslayout/upload-license/upload-license.component.d.ts +25 -25
- package/lib/Pages/authentication/auth-callback/auth-callback.component.d.ts +21 -21
- package/lib/Pages/authentication/authentication.component.d.ts +8 -8
- package/lib/Pages/authentication/authentication.module.d.ts +12 -12
- package/lib/Pages/authentication/authentication.routing.d.ts +7 -7
- package/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.d.ts +75 -75
- package/lib/Pages/configurations/auth-configuration/auth-configuration.component.d.ts +57 -58
- package/lib/Pages/configurations/configuration/configuration.component.d.ts +127 -129
- package/lib/Pages/configurations/configurations.component.d.ts +8 -8
- package/lib/Pages/configurations/configurations.module.d.ts +24 -24
- package/lib/Pages/configurations/configurations.routing.d.ts +7 -7
- package/lib/Pages/configurations/index.d.ts +6 -6
- package/lib/Pages/core/auth.module.d.ts +8 -8
- package/lib/Pages/core/authentication/admin.guard.d.ts +9 -9
- package/lib/Pages/core/authentication/auth.guard.d.ts +14 -14
- package/lib/Pages/core/authentication/auth.service.d.ts +35 -35
- package/lib/Pages/departments/department/department.component.d.ts +66 -68
- package/lib/Pages/departments/department-info/department-info.component.d.ts +58 -60
- package/lib/Pages/departments/departments-routing.module.d.ts +7 -7
- package/lib/Pages/departments/departments.component.d.ts +8 -8
- package/lib/Pages/departments/departments.module.d.ts +21 -21
- package/lib/Pages/documents/{add/add.component.d.ts → add-document/add-document.component.d.ts} +40 -40
- package/lib/Pages/documents/document-master-layouts/document-master-layouts.component.d.ts +51 -53
- package/lib/Pages/documents/document-template-info/document-template-info.component.d.ts +67 -67
- package/lib/Pages/documents/document-templates/document-templates.component.d.ts +87 -89
- package/lib/Pages/documents/documents.component.d.ts +8 -8
- package/lib/Pages/documents/documents.module.d.ts +27 -27
- package/lib/Pages/documents/documents.routing.d.ts +7 -7
- package/lib/Pages/documents/{edit/edit.component.d.ts → edit-document/edit-document.component.d.ts} +42 -42
- package/lib/Pages/documents/edit-document-template/edit-document-template.component.d.ts +39 -39
- package/lib/Pages/empty-data/empty-data.component.d.ts +14 -14
- package/lib/Pages/empty-data/empty-data.module.d.ts +8 -8
- package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +69 -71
- package/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.d.ts +23 -23
- package/lib/Pages/helpCenter/help-center-routing.module.d.ts +7 -7
- package/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.d.ts +65 -67
- package/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.d.ts +64 -66
- package/lib/Pages/helpCenter/help-center.module.d.ts +25 -25
- package/lib/Pages/helpCenter/help-centers.component.d.ts +8 -8
- package/lib/Pages/home/filter-pipe.d.ts +7 -7
- package/lib/Pages/home/home.component.d.ts +19 -19
- package/lib/Pages/home/home.module.d.ts +14 -14
- package/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.d.ts +86 -88
- package/lib/Pages/impersonation-rules/impersonation-rules.module.d.ts +19 -19
- package/lib/Pages/jobs/jobs/jobs.component.d.ts +76 -77
- package/lib/Pages/jobs/jobs.module.d.ts +17 -17
- package/lib/Pages/license/license/license.component.d.ts +59 -59
- package/lib/Pages/license/license.module.d.ts +15 -15
- package/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.d.ts +53 -53
- package/lib/Pages/localizations/localizations.component.d.ts +108 -110
- package/lib/Pages/localizations/localizations.module.d.ts +18 -18
- package/lib/Pages/logs/log/log.component.d.ts +34 -34
- package/lib/Pages/logs/logs-routing.module.d.ts +7 -7
- package/lib/Pages/logs/logs.component.d.ts +8 -8
- package/lib/Pages/logs/logs.module.d.ts +20 -20
- package/lib/Pages/lookups/lookup/lookup.component.d.ts +83 -85
- package/lib/Pages/lookups/lookup-group/lookup-group.component.d.ts +58 -60
- package/lib/Pages/lookups/lookup-item/lookup-item.component.d.ts +84 -86
- package/lib/Pages/lookups/lookups-routing.module.d.ts +7 -7
- package/lib/Pages/lookups/lookups.component.d.ts +8 -8
- package/lib/Pages/lookups/lookups.module.d.ts +24 -24
- package/lib/Pages/notifications/{add/add.component.d.ts → add-notification/add-notification.component.d.ts} +33 -33
- package/lib/Pages/notifications/edit-email/edit-email.component.d.ts +43 -43
- package/lib/Pages/notifications/{edit/edit.component.d.ts → edit-notification/edit-notification.component.d.ts} +35 -35
- package/lib/Pages/notifications/edit-sms/edit-sms.component.d.ts +37 -37
- package/lib/Pages/notifications/master-layouts/master-layouts.component.d.ts +51 -53
- package/lib/Pages/notifications/notifications-routing.module.d.ts +7 -7
- package/lib/Pages/notifications/notifications.component.d.ts +8 -8
- package/lib/Pages/notifications/notifications.module.d.ts +28 -28
- package/lib/Pages/notifications/template-info/template-info.component.d.ts +86 -86
- package/lib/Pages/notifications/templates/templates.component.d.ts +100 -102
- package/lib/Pages/providers/provider/provider.component.d.ts +118 -120
- package/lib/Pages/providers/providers-routing.module.d.ts +7 -7
- package/lib/Pages/providers/providers.component.d.ts +8 -8
- package/lib/Pages/providers/providers.module.d.ts +21 -21
- package/lib/Pages/publicHolidays/public-holiday/public-holiday.component.d.ts +73 -75
- package/lib/Pages/publicHolidays/public-holidays-routing.module.d.ts +7 -7
- package/lib/Pages/publicHolidays/public-holidays.component.d.ts +8 -8
- package/lib/Pages/publicHolidays/public-holidays.module.d.ts +21 -21
- package/lib/Pages/roles/permission-set-info/permission-set-info.component.d.ts +56 -58
- package/lib/Pages/roles/permissions/permissions.component.d.ts +63 -65
- package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +67 -69
- package/lib/Pages/roles/roles-routing.module.d.ts +7 -7
- package/lib/Pages/roles/roles.component.d.ts +8 -8
- package/lib/Pages/roles/roles.module.d.ts +24 -24
- package/lib/Pages/sectors/sector/sector.component.d.ts +62 -64
- package/lib/Pages/sectors/sector-info/sector-info.component.d.ts +60 -62
- package/lib/Pages/sectors/{department-info/department-info.component.d.ts → sectors-department-info/sectors-department-info.component.d.ts} +61 -63
- package/lib/Pages/sectors/sectors-routing.module.d.ts +7 -7
- package/lib/Pages/sectors/sectors.component.d.ts +8 -8
- package/lib/Pages/sectors/sectors.module.d.ts +23 -23
- package/lib/Pages/shared/Enums/ADType.d.ts +4 -4
- package/lib/Pages/shared/Enums/Enums.d.ts +47 -47
- package/lib/Pages/shared/Enums/ProviderType.d.ts +5 -5
- package/lib/Pages/shared/Enums/WFActivityType.d.ts +10 -10
- package/lib/Pages/shared/Enums/configuration/ConditionRHSType.d.ts +4 -4
- package/lib/Pages/shared/Enums/configuration/authentecation-configuration.d.ts +15 -15
- package/lib/Pages/shared/Pipes/survey-date.pipe.d.ts +12 -12
- package/lib/Pages/shared/Services/AccountService.service.d.ts +21 -21
- package/lib/Pages/shared/Services/ActiveDirectoryService.service.d.ts +18 -18
- package/lib/Pages/shared/Services/AnonymousLayoutService.service.d.ts +17 -17
- package/lib/Pages/shared/Services/ConfigurationsService.service.d.ts +20 -20
- package/lib/Pages/shared/Services/DepartmentService.service.d.ts +18 -18
- package/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.d.ts +15 -15
- package/lib/Pages/shared/Services/DocumentTemplateService.service.d.ts +26 -26
- package/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.d.ts +15 -15
- package/lib/Pages/shared/Services/ErrorService.service.d.ts +8 -8
- package/lib/Pages/shared/Services/GlobalErrorHandler.service.d.ts +10 -10
- package/lib/Pages/shared/Services/HelpCenterService.service.d.ts +18 -18
- package/lib/Pages/shared/Services/HttpErrorInterceptor.service.d.ts +12 -12
- package/lib/Pages/shared/Services/ImpersonationRuleService.service.d.ts +15 -15
- package/lib/Pages/shared/Services/JobsService.service.d.ts +10 -10
- package/lib/Pages/shared/Services/LicenseService.service.d.ts +12 -12
- package/lib/Pages/shared/Services/LogsService.d.ts +10 -10
- package/lib/Pages/shared/Services/LookupGroupsService.service.d.ts +14 -14
- package/lib/Pages/shared/Services/LookupService.service.d.ts +25 -25
- package/lib/Pages/shared/Services/PermissionSetService.service.d.ts +19 -19
- package/lib/Pages/shared/Services/PermissionsService.service.d.ts +15 -15
- package/lib/Pages/shared/Services/PublicHolidayService.service.d.ts +16 -16
- package/lib/Pages/shared/Services/SectorService.service.d.ts +18 -18
- package/lib/Pages/shared/Services/TemplateService.service.d.ts +34 -34
- package/lib/Pages/shared/Services/WorkFlowVersionService.service.d.ts +10 -10
- package/lib/Pages/shared/Services/WorkflowActivityService.service.d.ts +19 -19
- package/lib/Pages/shared/Services/WorkflowInstanceService.service.d.ts +10 -10
- package/lib/Pages/shared/Services/WorkflowLogVariablesService.service.d.ts +10 -10
- package/lib/Pages/shared/Services/WorkflowService.service.d.ts +15 -15
- package/lib/Pages/shared/Services/WorkflowVariablesService.service.d.ts +15 -15
- package/lib/Pages/shared/Services/data.service.d.ts +9 -9
- package/lib/Pages/shared/Services/injectionModuleService.service.d.ts +50 -50
- package/lib/Pages/shared/Services/localizationsService.service .d.ts +28 -28
- package/lib/Pages/shared/Services/provider.service.d.ts +25 -25
- package/lib/Pages/shared/Services/survey-question.service.d.ts +19 -19
- package/lib/Pages/shared/Services/survey.service.d.ts +38 -38
- package/lib/Pages/shared/Services/userService.service.d.ts +29 -29
- package/lib/Pages/shared/base.service.d.ts +4 -4
- package/lib/Pages/shared/components/AdDirective.d.ts +8 -8
- package/lib/Pages/shared/components/external-url/external-url.component.d.ts +61 -61
- package/lib/Pages/shared/components/no-results/no-results.component.d.ts +10 -10
- package/lib/Pages/shared/components/survey/add-survey/add-survey.component.d.ts +40 -40
- package/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.d.ts +43 -43
- package/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.d.ts +83 -83
- package/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.d.ts +84 -84
- package/lib/Pages/shared/components/survey/survey-info/preview/preview.component.d.ts +40 -40
- package/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.d.ts +31 -31
- package/lib/Pages/shared/components/survey/survey-info/result-question/result.component.d.ts +27 -27
- package/lib/Pages/shared/components/survey/survey-info/survey-info.component.d.ts +119 -119
- package/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.d.ts +39 -39
- package/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.d.ts +32 -32
- package/lib/Pages/shared/components/survey/survey.component.d.ts +65 -65
- package/lib/Pages/shared/components/survey-form/survey-form.component.d.ts +41 -41
- package/lib/Pages/shared/components/survey-form-item/survey-form-item.component.d.ts +23 -23
- package/lib/Pages/shared/components/survey-layout/survey-layout.component.d.ts +8 -8
- package/lib/Pages/shared/config/environment.d.ts +1 -1
- package/lib/Pages/shared/constants.d.ts +129 -129
- package/lib/Pages/shared/filter/filter.component.d.ts +8 -8
- package/lib/Pages/shared/models/ADModels/ADMappingModel.d.ts +6 -6
- package/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.d.ts +28 -28
- package/lib/Pages/shared/models/AccountModels/forgotPasswordModel.d.ts +3 -3
- package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +64 -64
- package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +9 -9
- package/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.d.ts +4 -4
- package/lib/Pages/shared/models/DocumentsModels/DocumentExportDTO.d.ts +8 -8
- package/lib/Pages/shared/models/DocumentsModels/DocumentHeaderAndFooterTemplate.d.ts +16 -16
- package/lib/Pages/shared/models/DocumentsModels/DocumentTemplateDTO.d.ts +13 -13
- package/lib/Pages/shared/models/DocumentsModels/DocumentTemplateInfoDTO.d.ts +7 -7
- package/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.d.ts +17 -17
- package/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.d.ts +9 -9
- package/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.d.ts +15 -15
- package/lib/Pages/shared/models/InjectedModuleModel/InjectedModule.d.ts +5 -5
- package/lib/Pages/shared/models/JobModels/JobCountsModel.d.ts +8 -8
- package/lib/Pages/shared/models/LicenseModel/LicenseModel.d.ts +5 -5
- package/lib/Pages/shared/models/LocalizationModels/EditResourceModel.d.ts +7 -7
- package/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.d.ts +9 -9
- package/lib/Pages/shared/models/LocalizationModels/UploadJsonVM.d.ts +5 -5
- package/lib/Pages/shared/models/Lookups/LookupGroupModel.d.ts +5 -5
- package/lib/Pages/shared/models/Lookups/LookupItem.d.ts +13 -13
- package/lib/Pages/shared/models/Lookups/LookupModel.d.ts +13 -13
- package/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.d.ts +9 -9
- package/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.d.ts +15 -15
- package/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.d.ts +9 -9
- package/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.d.ts +9 -9
- package/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.d.ts +9 -9
- package/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.d.ts +8 -8
- package/lib/Pages/shared/models/NotificationsModels/TemplateDTO.d.ts +22 -22
- package/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.d.ts +11 -11
- package/lib/Pages/shared/models/PermissionsModels/PermissionModel.d.ts +8 -8
- package/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.d.ts +10 -10
- package/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.d.ts +4 -4
- package/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.d.ts +6 -6
- package/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.d.ts +7 -7
- package/lib/Pages/shared/models/ProviderModels/ProviderAttributeModel.d.ts +7 -7
- package/lib/Pages/shared/models/ProviderModels/ProviderModel.d.ts +13 -13
- package/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.d.ts +6 -6
- package/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.d.ts +15 -15
- package/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.d.ts +4 -4
- package/lib/Pages/shared/models/SectorModels/SectorModel.d.ts +6 -6
- package/lib/Pages/shared/models/SurveyModels/DeleteSurveyDTO.d.ts +3 -3
- package/lib/Pages/shared/models/SurveyModels/add-survey-submissio.d.ts +21 -21
- package/lib/Pages/shared/models/SurveyModels/add-survey.d.ts +18 -18
- package/lib/Pages/shared/models/SurveyModels/model.d.ts +3 -3
- package/lib/Pages/shared/models/SurveyModels/survey-field-options.d.ts +24 -24
- package/lib/Pages/shared/models/SurveyModels/survey-filed-value.d.ts +22 -22
- package/lib/Pages/shared/models/SurveyModels/survey-form-options.d.ts +8 -8
- package/lib/Pages/shared/models/SurveyModels/survey-publish.d.ts +15 -15
- package/lib/Pages/shared/models/SurveyModels/survey-question-option.d.ts +9 -9
- package/lib/Pages/shared/models/SurveyModels/survey-question.d.ts +21 -21
- package/lib/Pages/shared/models/SurveyModels/survey-utils.d.ts +5 -5
- package/lib/Pages/shared/models/UserModels/ActivationModel.d.ts +10 -10
- package/lib/Pages/shared/models/UserModels/AddUserModel.d.ts +33 -33
- package/lib/Pages/shared/models/UserModels/DropdownsResponseModel.d.ts +9 -9
- package/lib/Pages/shared/models/UserModels/EditUserModel.d.ts +25 -25
- package/lib/Pages/shared/models/UserModels/IdentityModel.d.ts +9 -9
- package/lib/Pages/shared/models/UserModels/UserSearchParamDTO.d.ts +8 -8
- package/lib/Pages/shared/models/UserModels/UsersIDRequestModel.d.ts +3 -3
- package/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.d.ts +9 -9
- package/lib/Pages/shared/models/WorkflowModels/WFActivityModel.d.ts +40 -40
- package/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.d.ts +13 -13
- package/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.d.ts +13 -13
- package/lib/Pages/shared/models/WorkflowModels/WFCreationModel.d.ts +10 -10
- package/lib/Pages/shared/models/WorkflowModels/WFVariableModel.d.ts +23 -23
- package/lib/Pages/shared/models/user.registration.d.ts +6 -6
- package/lib/Pages/shared/modules/public-survey.module.d.ts +15 -15
- package/lib/Pages/shared/modules/survey-routing.module.d.ts +7 -7
- package/lib/Pages/shared/modules/survey.module.d.ts +35 -35
- package/lib/Pages/shared/shared.module.d.ts +8 -8
- package/lib/Pages/shared/stylesbundle.service.d.ts +9 -9
- package/lib/Pages/start/index/index.component.d.ts +15 -15
- package/lib/Pages/start/start-routing.module.d.ts +7 -7
- package/lib/Pages/start/start.module.d.ts +11 -11
- package/lib/Pages/users/users.component.d.ts +138 -139
- package/lib/Pages/users/users.module.d.ts +18 -18
- package/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.d.ts +77 -77
- package/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.d.ts +82 -82
- package/lib/Pages/workflows/instance-info/instance-info.component.d.ts +81 -81
- package/lib/Pages/workflows/tabs/tabs.component.d.ts +126 -128
- package/lib/Pages/workflows/version-info/version-info.component.d.ts +41 -41
- package/lib/Pages/workflows/workflow/workflow.component.d.ts +54 -55
- package/lib/Pages/workflows/workflows-routing.module.d.ts +7 -7
- package/lib/Pages/workflows/workflows.component.d.ts +8 -8
- package/lib/Pages/workflows/workflows.module.d.ts +27 -27
- package/lib/_metronic/configs/default-layout.config.d.ts +139 -139
- package/lib/_metronic/core/_utils/DomHelpers.d.ts +26 -26
- package/lib/_metronic/core/_utils/ElementAnimateUtil.d.ts +13 -13
- package/lib/_metronic/core/_utils/EventHandlerUtil.d.ts +20 -20
- package/lib/_metronic/core/_utils/_DOMEventHandlerUtil.d.ts +6 -6
- package/lib/_metronic/core/_utils/_DataUtil.d.ts +8 -8
- package/lib/_metronic/core/_utils/_ElementStyleUtil.d.ts +5 -5
- package/lib/_metronic/core/_utils/_TypesHelpers.d.ts +10 -10
- package/lib/_metronic/core/_utils/models/OffsetModel.d.ts +4 -4
- package/lib/_metronic/core/_utils/models/ViewPortModel.d.ts +4 -4
- package/lib/_metronic/core/components/MenuComponent.d.ts +88 -88
- package/lib/_metronic/core/components/_CookieComponent.d.ts +25 -25
- package/lib/_metronic/core/components/_DrawerComponent.d.ts +49 -49
- package/lib/_metronic/core/components/_ScrollComponent.d.ts +31 -31
- package/lib/_metronic/core/components/_ScrollTopComponent.d.ts +24 -24
- package/lib/_metronic/core/components/_ToggleComponent.d.ts +36 -36
- package/lib/_metronic/core/services/layout-init.service.d.ts +18 -18
- package/lib/_metronic/core/services/layout.service.d.ts +38 -38
- package/lib/_metronic/core/services/page-info.service.d.ts +32 -32
- package/lib/masterlayout-routing.module.d.ts +11 -13
- package/lib/masterlayout.component.d.ts +63 -63
- package/lib/masterlayout.module.d.ts +34 -34
- package/package.json +25 -30
- package/public-api.d.ts +41 -41
- package/src/lib/assets/images/menu/Tools.svg +10 -4
- package/src/lib/assets/images/menu/authentication.svg +9 -0
- package/src/lib/assets/sass/style-rtl.scss +3 -3
- package/src/lib/assets/sass/style.scss +3 -3
- package/bnsights-bbsf-admin-portal-1.1.2.tgz +0 -0
- package/esm2020/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +0 -421
- package/esm2020/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +0 -528
- package/esm2020/lib/Pages/ActiveDirectories/active-directory.module.mjs +0 -108
- package/esm2020/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +0 -23
- package/esm2020/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +0 -100
- package/esm2020/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +0 -330
- package/esm2020/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +0 -157
- package/esm2020/lib/Pages/configurations/configuration/configuration.component.mjs +0 -801
- package/esm2020/lib/Pages/configurations/configurations.module.mjs +0 -104
- package/esm2020/lib/Pages/core/authentication/admin.guard.mjs +0 -17
- package/esm2020/lib/Pages/core/authentication/auth.service.mjs +0 -147
- package/esm2020/lib/Pages/departments/department/department.component.mjs +0 -220
- package/esm2020/lib/Pages/departments/department-info/department-info.component.mjs +0 -185
- package/esm2020/lib/Pages/departments/departments.module.mjs +0 -94
- package/esm2020/lib/Pages/documents/add/add.component.mjs +0 -136
- package/esm2020/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +0 -148
- package/esm2020/lib/Pages/documents/document-templates/document-templates.component.mjs +0 -437
- package/esm2020/lib/Pages/documents/documents.module.mjs +0 -114
- package/esm2020/lib/Pages/documents/documents.routing.mjs +0 -37
- package/esm2020/lib/Pages/documents/edit/edit.component.mjs +0 -169
- package/esm2020/lib/Pages/helpCenter/help-center/help-center.component.mjs +0 -294
- package/esm2020/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +0 -43
- package/esm2020/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +0 -242
- package/esm2020/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +0 -243
- package/esm2020/lib/Pages/helpCenter/help-center.module.mjs +0 -98
- package/esm2020/lib/Pages/home/home.component.mjs +0 -153
- package/esm2020/lib/Pages/home/home.module.mjs +0 -48
- package/esm2020/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +0 -443
- package/esm2020/lib/Pages/impersonation-rules/impersonation-rules.module.mjs +0 -95
- package/esm2020/lib/Pages/jobs/jobs/jobs.component.mjs +0 -223
- package/esm2020/lib/Pages/jobs/jobs.module.mjs +0 -87
- package/esm2020/lib/Pages/license/license.module.mjs +0 -71
- package/esm2020/lib/Pages/localizations/localizations.component.mjs +0 -516
- package/esm2020/lib/Pages/localizations/localizations.module.mjs +0 -79
- package/esm2020/lib/Pages/logs/logs.module.mjs +0 -87
- package/esm2020/lib/Pages/lookups/lookup/lookup.component.mjs +0 -367
- package/esm2020/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +0 -187
- package/esm2020/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +0 -297
- package/esm2020/lib/Pages/lookups/lookups.module.mjs +0 -100
- package/esm2020/lib/Pages/notifications/add/add.component.mjs +0 -104
- package/esm2020/lib/Pages/notifications/edit/edit.component.mjs +0 -133
- package/esm2020/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +0 -148
- package/esm2020/lib/Pages/notifications/notifications-routing.module.mjs +0 -39
- package/esm2020/lib/Pages/notifications/notifications.module.mjs +0 -101
- package/esm2020/lib/Pages/notifications/templates/templates.component.mjs +0 -495
- package/esm2020/lib/Pages/providers/provider/provider.component.mjs +0 -615
- package/esm2020/lib/Pages/providers/providers.module.mjs +0 -91
- package/esm2020/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +0 -334
- package/esm2020/lib/Pages/publicHolidays/public-holidays.module.mjs +0 -94
- package/esm2020/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +0 -187
- package/esm2020/lib/Pages/roles/permissions/permissions.component.mjs +0 -226
- package/esm2020/lib/Pages/roles/permissionsets/permissionsets.component.mjs +0 -277
- package/esm2020/lib/Pages/roles/roles.module.mjs +0 -105
- package/esm2020/lib/Pages/sectors/department-info/department-info.component.mjs +0 -187
- package/esm2020/lib/Pages/sectors/sector/sector.component.mjs +0 -193
- package/esm2020/lib/Pages/sectors/sector-info/sector-info.component.mjs +0 -180
- package/esm2020/lib/Pages/sectors/sectors.module.mjs +0 -96
- package/esm2020/lib/Pages/shared/Enums/WFVariableDataType.mjs +0 -14
- package/esm2020/lib/Pages/shared/Services/injectionModuleService.service.mjs +0 -163
- package/esm2020/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +0 -192
- package/esm2020/lib/Pages/shared/components/survey-form/survey-form.component.mjs +0 -696
- package/esm2020/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +0 -84
- package/esm2020/lib/Pages/shared/constants.mjs +0 -130
- package/esm2020/lib/Pages/shared/models/SurveyModels/survey-utils.mjs +0 -8
- package/esm2020/lib/Pages/shared/modules/public-survey.module.mjs +0 -68
- package/esm2020/lib/Pages/shared/modules/survey.module.mjs +0 -126
- package/esm2020/lib/Pages/shared/shared.module.mjs +0 -31
- package/esm2020/lib/Pages/users/users.component.mjs +0 -806
- package/esm2020/lib/Pages/users/users.module.mjs +0 -86
- package/esm2020/lib/Pages/workflows/tabs/tabs.component.mjs +0 -793
- package/esm2020/lib/Pages/workflows/workflow/workflow.component.mjs +0 -209
- package/esm2020/lib/Pages/workflows/workflows.module.mjs +0 -103
- package/esm2020/lib/_metronic/core/_utils/EventHandlerUtil.mjs +0 -90
- package/esm2020/lib/_metronic/core/_utils/_DOMEventHandlerUtil.mjs +0 -49
- package/esm2020/lib/_metronic/core/_utils/_DataUtil.mjs +0 -48
- package/esm2020/lib/_metronic/core/components/_DrawerComponent.mjs +0 -290
- package/esm2020/lib/_metronic/core/components/_ScrollTopComponent.mjs +0 -113
- package/esm2020/lib/_metronic/core/components/_ToggleComponent.mjs +0 -157
- package/esm2020/lib/_metronic/core/services/page-info.service.mjs +0 -119
- package/esm2020/lib/masterlayout-routing.module.mjs +0 -45
- package/esm2020/lib/masterlayout.module.mjs +0 -188
- package/fesm2015/bnsights-bbsf-admin-portal.mjs +0 -27293
- package/fesm2015/bnsights-bbsf-admin-portal.mjs.map +0 -1
- package/fesm2020/bnsights-bbsf-admin-portal.mjs.map +0 -1
- package/lib/Pages/shared/Enums/WFVariableDataType.d.ts +0 -12
|
@@ -1,840 +1,840 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { FormGroup } from '@angular/forms';
|
|
3
|
-
import { CheckBoxOptions, ControlLayout, DropdownOptions, EnglishArabicDTO, FormOptions, InputType, MultiLingualTextAreaOptions, MultiLingualTextBoxOptions, TextBoxOptions, ToggleSlideOptions } from '@bnsights/bbsf-controls';
|
|
4
|
-
import { PageInfoService } from '../../../../_metronic/core/services/page-info.service';
|
|
5
|
-
import { ActivityType, ParticipantType, Righthandsidetype } from '../../../shared/constants';
|
|
6
|
-
import { ParticipantModel } from '../../../shared/models/ImpersonationRuleModels/ParticipantModel';
|
|
7
|
-
import { WFActivityModel } from '../../../shared/models/WorkflowModels/WFActivityModel';
|
|
8
|
-
import { WFActivityOutcomeModel } from '../../../shared/models/WorkflowModels/WFActivityOutcomeModel';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "../../../shared/Services/WorkflowActivityService.service";
|
|
11
|
-
import * as i2 from "../../../../_metronic/core/services/page-info.service";
|
|
12
|
-
import * as i3 from "@bnsights/bbsf-utilities";
|
|
13
|
-
import * as i4 from "@angular/router";
|
|
14
|
-
import * as i5 from "@angular/common";
|
|
15
|
-
import * as i6 from "@bnsights/bbsf-controls";
|
|
16
|
-
export class WorkflowActivityEditComponent {
|
|
17
|
-
constructor(workflowActivityService, pageInfoService, utilityService, activatedRoute, router, requestHandlerService, bbsfTranslateService) {
|
|
18
|
-
this.workflowActivityService = workflowActivityService;
|
|
19
|
-
this.pageInfoService = pageInfoService;
|
|
20
|
-
this.utilityService = utilityService;
|
|
21
|
-
this.activatedRoute = activatedRoute;
|
|
22
|
-
this.router = router;
|
|
23
|
-
this.requestHandlerService = requestHandlerService;
|
|
24
|
-
this.bbsfTranslateService = bbsfTranslateService;
|
|
25
|
-
//Page requirements
|
|
26
|
-
this.isEditFormLoaded = false;
|
|
27
|
-
//Edit Activity shared controls
|
|
28
|
-
this.editworkflowActivityForm = new FormGroup({});
|
|
29
|
-
this.editworkflowActivityFormOptions = new FormOptions;
|
|
30
|
-
this.showActivityType = false;
|
|
31
|
-
//Shared Participant type and data (Non Published only)
|
|
32
|
-
this.showParticipantContainer = false;
|
|
33
|
-
this.showParticipantPermssionSet = false;
|
|
34
|
-
//Dynamic Types Controls //(Approval,Action,Percentage)
|
|
35
|
-
this.showDynamicControls = false;
|
|
36
|
-
//Static types controls (Email,Sleep) (Non published only)
|
|
37
|
-
//Email Type Controls //+ initialize participant
|
|
38
|
-
this.showStaticControls = false;
|
|
39
|
-
//Condition type controls
|
|
40
|
-
this.showConditionControls = false;
|
|
41
|
-
this.showConditionRHSWFVariable = false;
|
|
42
|
-
//Shared required lists
|
|
43
|
-
this.ActivityTypeList = [];
|
|
44
|
-
//Outcomes (dynamic,condition)
|
|
45
|
-
this.outcomesOptions = [];
|
|
46
|
-
this.outcomesCount = 0;
|
|
47
|
-
this.showOutcomesContainer = false;
|
|
48
|
-
//RequiredLists
|
|
49
|
-
this.taskTypeList = [];
|
|
50
|
-
this.participantTypeList = [];
|
|
51
|
-
this.participantDataList = [];
|
|
52
|
-
this.nextActivityList = [];
|
|
53
|
-
//ConditionTypeRequiredLists
|
|
54
|
-
this.conditionLHSWFVariableList = [];
|
|
55
|
-
this.conditionRHSWFVariableList = [];
|
|
56
|
-
this.conditionRHSTypeList = [];
|
|
57
|
-
this.conditionList = [];
|
|
58
|
-
//Edit functions
|
|
59
|
-
this.getEditWFActivityModel = () => {
|
|
60
|
-
let paramArray = [];
|
|
61
|
-
let ResultModel = this.editworkflowActivityForm.value;
|
|
62
|
-
let editModel = new WFActivityModel();
|
|
63
|
-
editModel.ID_GUID = this.activityID;
|
|
64
|
-
editModel.Name.English = ResultModel.name.English;
|
|
65
|
-
editModel.Name.Arabic = ResultModel.name.Arabic;
|
|
66
|
-
editModel.VersionID_GUID = this.versionID;
|
|
67
|
-
editModel.ActivityTypeItemID_GUID = this.activityTypeID;
|
|
68
|
-
editModel.SysName = ResultModel.sysName;
|
|
69
|
-
//If participant exists
|
|
70
|
-
if (ResultModel.participantTypes != undefined) {
|
|
71
|
-
editModel.ParticipantDTO = new ParticipantModel();
|
|
72
|
-
editModel.ParticipantDTO = new ParticipantModel();
|
|
73
|
-
editModel.ParticipantDTO.ParticipantTypeItemIDsString = ResultModel.participantTypes.toString();
|
|
74
|
-
if (ResultModel.participantTypes.includes(ParticipantType.PermissionSet)) {
|
|
75
|
-
editModel.ParticipantDTO.PermissionSetIDsString = ResultModel.participantPermissionSet.toString();
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
switch (this.activityTypeID) {
|
|
79
|
-
case ActivityType.Approval:
|
|
80
|
-
case ActivityType.Action:
|
|
81
|
-
case ActivityType.PercentageTask:
|
|
82
|
-
editModel.TaskName.English = ResultModel.dynamicTaskName.English;
|
|
83
|
-
editModel.TaskName.Arabic = ResultModel.dynamicTaskName.Arabic;
|
|
84
|
-
editModel.TaskDescription.English = ResultModel.dynamicTaskDescription.English;
|
|
85
|
-
editModel.TaskDescription.Arabic = ResultModel.dynamicTaskDescription.Arabic;
|
|
86
|
-
editModel.TaskURL = ResultModel.dynamicTaskURL;
|
|
87
|
-
editModel.TaskCorrlTypeID = ResultModel.dynamicTaskType != null ? Number(ResultModel.dynamicTaskType) : null;
|
|
88
|
-
editModel.CanCompleteFromTME = ResultModel.dynamicCanComplete;
|
|
89
|
-
break;
|
|
90
|
-
case ActivityType.Start:
|
|
91
|
-
case ActivityType.Email:
|
|
92
|
-
case ActivityType.Sleep:
|
|
93
|
-
if (!this.isPublished) {
|
|
94
|
-
editModel.NormalOutcomeName.English = ResultModel.staticOutcomeName.English;
|
|
95
|
-
editModel.NormalOutcomeName.Arabic = ResultModel.staticOutcomeName.Arabic;
|
|
96
|
-
editModel.OutcomeSysName = ResultModel.staticOutcomeSysName;
|
|
97
|
-
editModel.NextActivityID_GUID = ResultModel.staticOutcomeNextActivity;
|
|
98
|
-
editModel.CanAddComment = ResultModel.staticOutcomeCanAddComment;
|
|
99
|
-
}
|
|
100
|
-
break;
|
|
101
|
-
case ActivityType.Condition:
|
|
102
|
-
editModel.LHSVariableID_GUID = ResultModel.conditionLHSDropDown;
|
|
103
|
-
editModel.RHSVariableID_GUID = ResultModel.conditionRHSDropDown;
|
|
104
|
-
editModel.RHSTypeItemID_GUID = ResultModel.conditionRHSTypeDropDown;
|
|
105
|
-
editModel.OperatorTypeItemID_GUID = ResultModel.conditionsDropDown;
|
|
106
|
-
editModel.RHSValue = ResultModel.conditionRHSValue != undefined ? ResultModel.conditionRHSValue : null;
|
|
107
|
-
break;
|
|
108
|
-
}
|
|
109
|
-
//Set Outcomes (dynamic,condition types)
|
|
110
|
-
for (let j = 0; j < this.outcomesCount; j++) {
|
|
111
|
-
let outcomeID = ResultModel["outcomeID" + j];
|
|
112
|
-
if (outcomeID == undefined)
|
|
113
|
-
continue;
|
|
114
|
-
let outcomeName = ResultModel["outcomeName" + j];
|
|
115
|
-
let outcomeSysName;
|
|
116
|
-
let outComeCanEditSysName = ResultModel["outcomeCanEditSysName" + j];
|
|
117
|
-
if (outComeCanEditSysName)
|
|
118
|
-
outcomeSysName = ResultModel["outcomeDecisionSysName" + j];
|
|
119
|
-
else
|
|
120
|
-
outcomeSysName = ResultModel["outcomeHiddeneSysName" + j];
|
|
121
|
-
let outcomeActivity = ResultModel["outcomeNextActivityTypes" + j];
|
|
122
|
-
let outcomeCanAddComment = ResultModel["outcomeCanAddComment" + j];
|
|
123
|
-
let activityOutcome = new WFActivityOutcomeModel();
|
|
124
|
-
activityOutcome.ID_GUID = outcomeID;
|
|
125
|
-
activityOutcome.NameEN = outcomeName.English;
|
|
126
|
-
activityOutcome.NameAR = outcomeName.Arabic;
|
|
127
|
-
activityOutcome.OutcomeSysName = outcomeSysName;
|
|
128
|
-
activityOutcome.NextActivityID_GUID = outcomeActivity;
|
|
129
|
-
activityOutcome.CanAddComment = outcomeCanAddComment;
|
|
130
|
-
editModel.Outcomes.push(activityOutcome);
|
|
131
|
-
}
|
|
132
|
-
paramArray.push(editModel);
|
|
133
|
-
return paramArray;
|
|
134
|
-
};
|
|
135
|
-
this.getEditWFActivityFunction = (editModel) => {
|
|
136
|
-
if (this.isPublished)
|
|
137
|
-
return this.workflowActivityService.editPublishedActivity(editModel);
|
|
138
|
-
else
|
|
139
|
-
return this.workflowActivityService.editActivity(editModel);
|
|
140
|
-
};
|
|
141
|
-
this.onEditSuccess = (result) => {
|
|
142
|
-
this.cancelEdit();
|
|
143
|
-
};
|
|
144
|
-
this.activatedRoute.params.subscribe(params => {
|
|
145
|
-
this.activityID = params['activityid'];
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
async ngOnInit() {
|
|
149
|
-
this.bbsfTranslateService.onLangChange.subscribe((event) => {
|
|
150
|
-
this.ngOnInit();
|
|
151
|
-
});
|
|
152
|
-
PageInfoService.PageTitle = this.utilityService.getResourceValue("EditWorkflowActivity");
|
|
153
|
-
PageInfoService.PageBreadcrumbs = [
|
|
154
|
-
{ title: this.utilityService.getResourceValue("Home"), path: '/Admin/Home', isSeparator: false, isActive: false },
|
|
155
|
-
{ title: '', path: '', isSeparator: true, isActive: false },
|
|
156
|
-
{ title: this.utilityService.getResourceValue("WorkFlows"), path: '/Admin/Workflows/workflow', isSeparator: false, isActive: false },
|
|
157
|
-
{ title: '', path: '', isSeparator: true, isActive: false }
|
|
158
|
-
];
|
|
159
|
-
this.pageInfoService.calculateTitle();
|
|
160
|
-
this.pageInfoService.calculateBreadcrumbs();
|
|
161
|
-
this.initializePage();
|
|
162
|
-
}
|
|
163
|
-
//Initialize edit model and required DDLs
|
|
164
|
-
initializePage() {
|
|
165
|
-
this.workflowActivityService.getEditWorkFlowActivityData(this.activityID).subscribe((result) => {
|
|
166
|
-
let resultObj = result;
|
|
167
|
-
this.activityModel = resultObj.model;
|
|
168
|
-
var list = resultObj.list;
|
|
169
|
-
this.ActivityTypeList = resultObj.activityList;
|
|
170
|
-
this.nextActivityList = list.activities;
|
|
171
|
-
this.activityTypeID = this.activityModel.activityTypeItemID_GUID?.toLowerCase();
|
|
172
|
-
this.isPublished = this.activityModel.isPublished;
|
|
173
|
-
this.versionID = this.activityModel.versionID_GUID;
|
|
174
|
-
this.editworkflowActivityForm = new FormGroup({});
|
|
175
|
-
this.editworkflowActivityFormOptions = new FormOptions();
|
|
176
|
-
this.editworkflowActivityFormOptions.FormGroup = this.editworkflowActivityForm;
|
|
177
|
-
this.editworkflowActivityFormOptions.GetModelFunction = this.getEditWFActivityModel;
|
|
178
|
-
this.editworkflowActivityFormOptions.ServiceSubmitFunction = this.getEditWFActivityFunction;
|
|
179
|
-
this.editworkflowActivityFormOptions.OnSuccessHandler = this.onEditSuccess;
|
|
180
|
-
let name = new EnglishArabicDTO();
|
|
181
|
-
name.English = this.activityModel.name.english;
|
|
182
|
-
name.Arabic = this.activityModel.name.arabic;
|
|
183
|
-
this.name = new MultiLingualTextBoxOptions();
|
|
184
|
-
this.name.Name = "name";
|
|
185
|
-
this.name.ArabicLabelKey = "NameInArabic";
|
|
186
|
-
this.name.EnglishLabelKey = "NameInEnglish";
|
|
187
|
-
this.name.IsRequired = true;
|
|
188
|
-
this.name.Value = name;
|
|
189
|
-
this.name.MaxLength = 255;
|
|
190
|
-
let outcomesResult = this.getActivityOutcomesOptions(this.activityModel.outcomes, this.isPublished);
|
|
191
|
-
this.outcomesOptions = outcomesResult[0];
|
|
192
|
-
this.outcomesCount = outcomesResult[1];
|
|
193
|
-
this.showActivityType = false;
|
|
194
|
-
if (this.isPublished) {
|
|
195
|
-
switch (this.activityTypeID) {
|
|
196
|
-
case ActivityType.Approval:
|
|
197
|
-
case ActivityType.Action:
|
|
198
|
-
case ActivityType.PercentageTask:
|
|
199
|
-
this.taskTypeList = list.tasks;
|
|
200
|
-
let taskName = new EnglishArabicDTO();
|
|
201
|
-
taskName.English = this.activityModel.taskName.english;
|
|
202
|
-
taskName.Arabic = this.activityModel.taskName.arabic;
|
|
203
|
-
let taskDescription = new EnglishArabicDTO();
|
|
204
|
-
taskDescription.English = this.activityModel.taskDescription.english;
|
|
205
|
-
taskDescription.Arabic = this.activityModel.taskDescription.arabic;
|
|
206
|
-
this.dynamicTaskName = new MultiLingualTextBoxOptions();
|
|
207
|
-
this.dynamicTaskName.Name = "dynamicTaskName";
|
|
208
|
-
this.dynamicTaskName.ArabicLabelKey = "TaskNameInArabic";
|
|
209
|
-
this.dynamicTaskName.EnglishLabelKey = "TaskNameInEnglish";
|
|
210
|
-
this.dynamicTaskName.Value = taskName;
|
|
211
|
-
this.dynamicTaskName.MaxLength = 255;
|
|
212
|
-
this.dynamicTaskDescription = new MultiLingualTextAreaOptions();
|
|
213
|
-
this.dynamicTaskDescription.Name = "dynamicTaskDescription";
|
|
214
|
-
this.dynamicTaskDescription.ArabicLabelKey = "TaskDescriptionInArabic";
|
|
215
|
-
this.dynamicTaskDescription.EnglishLabelKey = "TaskDescriptionInEnglish";
|
|
216
|
-
this.dynamicTaskDescription.Value = taskDescription;
|
|
217
|
-
this.dynamicTaskDescription.MaxLength = 255;
|
|
218
|
-
this.dynamicTaskURL = new TextBoxOptions();
|
|
219
|
-
this.dynamicTaskURL.Name = "dynamicTaskURL";
|
|
220
|
-
this.dynamicTaskURL.LabelKey = "TaskURL";
|
|
221
|
-
this.dynamicTaskURL.Type = InputType.Text;
|
|
222
|
-
this.dynamicTaskURL.Value = this.activityModel.taskURL;
|
|
223
|
-
this.dynamicTaskURL.MaxLength = 2083;
|
|
224
|
-
this.dynamicTaskType = new DropdownOptions();
|
|
225
|
-
this.dynamicTaskType.Name = "dynamicTaskType";
|
|
226
|
-
this.dynamicTaskType.LabelKey = "TaskType";
|
|
227
|
-
this.dynamicTaskType.DataSource = this.taskTypeList;
|
|
228
|
-
this.dynamicTaskType.SingleSelection = true;
|
|
229
|
-
this.dynamicTaskType.AllowSearchFilter = true;
|
|
230
|
-
this.dynamicTaskType.IsRequired = true;
|
|
231
|
-
this.dynamicTaskType.SelectedItems = this.activityModel.taskCorrlTypeID?.toLowerCase();
|
|
232
|
-
this.dynamicCanComplete = new ToggleSlideOptions();
|
|
233
|
-
this.dynamicCanComplete.Name = "dynamicCanComplete";
|
|
234
|
-
this.dynamicCanComplete.LabelKey = "CanCompleteFromTME";
|
|
235
|
-
this.dynamicCanComplete.ViewType = ControlLayout.Horizontal;
|
|
236
|
-
this.dynamicCanComplete.Value = this.activityModel.canCompleteFromTME;
|
|
237
|
-
this.showDynamicControls = true;
|
|
238
|
-
break;
|
|
239
|
-
case ActivityType.Condition:
|
|
240
|
-
this.conditionLHSWFVariableList = list.wfVariables;
|
|
241
|
-
this.conditionRHSWFVariableList = list.wfVariables;
|
|
242
|
-
this.conditionRHSTypeList = list.rhsTypes;
|
|
243
|
-
this.conditionList = list.conditions;
|
|
244
|
-
this.conditionLHSDropDown = new DropdownOptions();
|
|
245
|
-
this.conditionLHSDropDown.Name = "conditionLHSDropDown";
|
|
246
|
-
this.conditionLHSDropDown.HideLabel = true;
|
|
247
|
-
this.conditionLHSDropDown.Placeholder = "WorkflowVariables";
|
|
248
|
-
this.conditionLHSDropDown.DataSource = this.conditionLHSWFVariableList;
|
|
249
|
-
this.conditionLHSDropDown.SingleSelection = true;
|
|
250
|
-
this.conditionLHSDropDown.AllowSearchFilter = true;
|
|
251
|
-
this.conditionLHSDropDown.IsRequired = true;
|
|
252
|
-
this.conditionLHSDropDown.SelectedItems = this.activityModel.lhsVariableID_GUID?.toLowerCase();
|
|
253
|
-
this.conditionsDropDown = new DropdownOptions();
|
|
254
|
-
this.conditionsDropDown.Name = "conditionsDropDown";
|
|
255
|
-
this.conditionsDropDown.HideLabel = true;
|
|
256
|
-
this.conditionsDropDown.Placeholder = "Condition";
|
|
257
|
-
this.conditionsDropDown.DataSource = this.conditionList;
|
|
258
|
-
this.conditionsDropDown.SingleSelection = true;
|
|
259
|
-
this.conditionsDropDown.IsRequired = true;
|
|
260
|
-
this.conditionsDropDown.SelectedItems = this.activityModel.operatorTypeItemID_GUID?.toLowerCase();
|
|
261
|
-
this.conditionRHSTypeDropDown = new DropdownOptions();
|
|
262
|
-
this.conditionRHSTypeDropDown.Name = "conditionRHSTypeDropDown";
|
|
263
|
-
this.conditionRHSTypeDropDown.HideLabel = true;
|
|
264
|
-
this.conditionRHSTypeDropDown.DataSource = this.conditionRHSTypeList;
|
|
265
|
-
this.conditionRHSTypeDropDown.SingleSelection = true;
|
|
266
|
-
this.conditionRHSTypeDropDown.IsRequired = true;
|
|
267
|
-
this.conditionRHSTypeDropDown.SelectedItems = this.activityModel.rhsTypeItemID_GUID?.toLowerCase();
|
|
268
|
-
if (this.activityModel.RHSTypeItemID_GUID?.toLowerCase() == Righthandsidetype.Variable) {
|
|
269
|
-
this.conditionRHSDropDown = new DropdownOptions();
|
|
270
|
-
this.conditionRHSDropDown.Name = "conditionRHSDropDown";
|
|
271
|
-
this.conditionRHSDropDown.HideLabel = true;
|
|
272
|
-
this.conditionRHSDropDown.Placeholder = "WorkflowVariables";
|
|
273
|
-
this.conditionRHSDropDown.DataSource = this.conditionRHSWFVariableList;
|
|
274
|
-
this.conditionRHSDropDown.SingleSelection = true;
|
|
275
|
-
this.conditionRHSDropDown.IsRequired = true;
|
|
276
|
-
this.conditionRHSDropDown.SelectedItems = this.activityModel.rhsVariableID_GUID?.toLowerCase();
|
|
277
|
-
this.showConditionRHSWFVariable = true;
|
|
278
|
-
}
|
|
279
|
-
else {
|
|
280
|
-
this.conditionRHSValue = new TextBoxOptions();
|
|
281
|
-
this.conditionRHSValue.Name = "conditionRHSValue";
|
|
282
|
-
this.conditionRHSValue.HideLabel = true;
|
|
283
|
-
this.conditionRHSValue.Placeholder = "Value";
|
|
284
|
-
this.conditionRHSValue.Type = InputType.Text;
|
|
285
|
-
this.conditionRHSValue.IsRequired = true;
|
|
286
|
-
this.conditionRHSValue.Value = this.activityModel.rhsValue;
|
|
287
|
-
this.conditionRHSValue.MaxLength = 512;
|
|
288
|
-
this.showConditionRHSWFVariable = false;
|
|
289
|
-
}
|
|
290
|
-
this.showConditionControls = true;
|
|
291
|
-
break;
|
|
292
|
-
}
|
|
293
|
-
this.showOutcomesContainer = true;
|
|
294
|
-
}
|
|
295
|
-
else {
|
|
296
|
-
this.sysName = new TextBoxOptions();
|
|
297
|
-
this.sysName.Name = "sysName";
|
|
298
|
-
this.sysName.LabelKey = "SysName";
|
|
299
|
-
this.sysName.Type = InputType.Text;
|
|
300
|
-
this.sysName.IsRequired = true;
|
|
301
|
-
this.sysName.Value = this.activityModel.sysName;
|
|
302
|
-
this.sysName.MaxLength = 100;
|
|
303
|
-
if (this.activityTypeID != ActivityType.Start) {
|
|
304
|
-
this.showActivityType = true;
|
|
305
|
-
this.activityType = new DropdownOptions();
|
|
306
|
-
this.activityType.Name = "activityType";
|
|
307
|
-
this.activityType.LabelKey = "ActivityType";
|
|
308
|
-
this.activityType.DataSource = this.ActivityTypeList;
|
|
309
|
-
this.activityType.SingleSelection = true;
|
|
310
|
-
this.activityType.AllowSearchFilter = true;
|
|
311
|
-
this.activityType.IsRequired = true;
|
|
312
|
-
this.activityType.SelectedItems = this.activityTypeID;
|
|
313
|
-
}
|
|
314
|
-
switch (this.activityTypeID) {
|
|
315
|
-
case ActivityType.Approval:
|
|
316
|
-
case ActivityType.Action:
|
|
317
|
-
case ActivityType.PercentageTask:
|
|
318
|
-
this.taskTypeList = list.tasks;
|
|
319
|
-
this.participantTypeList = list.participants.participantTypes;
|
|
320
|
-
this.participantDataList = list.participants.participantData;
|
|
321
|
-
let taskName = new EnglishArabicDTO();
|
|
322
|
-
taskName.English = this.activityModel.taskName.english;
|
|
323
|
-
taskName.Arabic = this.activityModel.taskName.arabic;
|
|
324
|
-
let taskDescription = new EnglishArabicDTO();
|
|
325
|
-
taskDescription.English = this.activityModel.taskDescription.english;
|
|
326
|
-
taskDescription.Arabic = this.activityModel.taskDescription.arabic;
|
|
327
|
-
//Initialize required controls for approval
|
|
328
|
-
this.participantTypes = new DropdownOptions();
|
|
329
|
-
this.participantTypes.Name = "participantTypes";
|
|
330
|
-
this.participantTypes.LabelKey = "ParticipantTypes";
|
|
331
|
-
this.participantTypes.DataSource = this.participantTypeList;
|
|
332
|
-
this.participantTypes.SingleSelection = false;
|
|
333
|
-
this.participantTypes.AllowSearchFilter = true;
|
|
334
|
-
this.participantTypes.IsRequired = true;
|
|
335
|
-
this.participantTypes.SelectedItems = this.activityModel.participantTypeItemIDsStringList;
|
|
336
|
-
if (this.activityModel.participantTypeItemIDsStringList.includes(ParticipantType.PermissionSet)) {
|
|
337
|
-
this.participantPermissionSet = new DropdownOptions();
|
|
338
|
-
this.participantPermissionSet.Name = "participantPermissionSet";
|
|
339
|
-
this.participantPermissionSet.LabelKey = "PermissionSet";
|
|
340
|
-
this.participantPermissionSet.DataSource = this.participantDataList;
|
|
341
|
-
this.participantPermissionSet.SingleSelection = false;
|
|
342
|
-
this.participantPermissionSet.AllowSearchFilter = true;
|
|
343
|
-
this.participantPermissionSet.SelectedItems = this.activityModel.participantPermsetsIDsString;
|
|
344
|
-
this.showParticipantPermssionSet = true;
|
|
345
|
-
}
|
|
346
|
-
this.dynamicTaskName = new MultiLingualTextBoxOptions();
|
|
347
|
-
this.dynamicTaskName.Name = "dynamicTaskName";
|
|
348
|
-
this.dynamicTaskName.ArabicLabelKey = "TaskNameInArabic";
|
|
349
|
-
this.dynamicTaskName.EnglishLabelKey = "TaskNameInEnglish";
|
|
350
|
-
this.dynamicTaskName.Value = taskName;
|
|
351
|
-
this.dynamicTaskName.MaxLength = 255;
|
|
352
|
-
this.dynamicTaskDescription = new MultiLingualTextAreaOptions();
|
|
353
|
-
this.dynamicTaskDescription.Name = "dynamicTaskDescription";
|
|
354
|
-
this.dynamicTaskDescription.ArabicLabelKey = "TaskDescriptionInArabic";
|
|
355
|
-
this.dynamicTaskDescription.EnglishLabelKey = "TaskDescriptionInEnglish";
|
|
356
|
-
this.dynamicTaskDescription.Value = taskDescription;
|
|
357
|
-
this.dynamicTaskDescription.MaxLength = 255;
|
|
358
|
-
this.dynamicTaskURL = new TextBoxOptions();
|
|
359
|
-
this.dynamicTaskURL.Name = "dynamicTaskURL";
|
|
360
|
-
this.dynamicTaskURL.LabelKey = "TaskURL";
|
|
361
|
-
this.dynamicTaskURL.Type = InputType.Text;
|
|
362
|
-
this.dynamicTaskURL.Value = this.activityModel.taskURL;
|
|
363
|
-
this.dynamicTaskURL.MaxLength = 2083;
|
|
364
|
-
this.dynamicTaskType = new DropdownOptions();
|
|
365
|
-
this.dynamicTaskType.Name = "dynamicTaskType";
|
|
366
|
-
this.dynamicTaskType.LabelKey = "TaskType";
|
|
367
|
-
this.dynamicTaskType.DataSource = this.taskTypeList;
|
|
368
|
-
this.dynamicTaskType.SingleSelection = true;
|
|
369
|
-
this.dynamicTaskType.AllowSearchFilter = true;
|
|
370
|
-
this.dynamicTaskType.IsRequired = true;
|
|
371
|
-
this.dynamicTaskType.SelectedItems = this.activityModel.taskCorrlTypeID?.toString();
|
|
372
|
-
this.dynamicCanComplete = new ToggleSlideOptions();
|
|
373
|
-
this.dynamicCanComplete.Name = "dynamicCanComplete";
|
|
374
|
-
this.dynamicCanComplete.LabelKey = "CanCompleteFromTME";
|
|
375
|
-
this.dynamicCanComplete.ViewType = ControlLayout.Horizontal;
|
|
376
|
-
this.dynamicCanComplete.Value = this.activityModel.canCompleteFromTME;
|
|
377
|
-
this.showDynamicControls = true;
|
|
378
|
-
this.showParticipantContainer = true;
|
|
379
|
-
this.showOutcomesContainer = true;
|
|
380
|
-
break;
|
|
381
|
-
case ActivityType.Start:
|
|
382
|
-
case ActivityType.Email:
|
|
383
|
-
case ActivityType.Sleep:
|
|
384
|
-
if (this.activityTypeID == ActivityType.Email) {
|
|
385
|
-
this.participantTypeList = list.participants.participantTypes;
|
|
386
|
-
this.participantDataList = list.participants.participantData;
|
|
387
|
-
this.participantTypes = new DropdownOptions();
|
|
388
|
-
this.participantTypes.Name = "participantTypes";
|
|
389
|
-
this.participantTypes.LabelKey = "ParticipantTypes";
|
|
390
|
-
this.participantTypes.DataSource = this.participantTypeList;
|
|
391
|
-
this.participantTypes.SingleSelection = false;
|
|
392
|
-
this.participantTypes.AllowSearchFilter = true;
|
|
393
|
-
this.participantTypes.IsRequired = true;
|
|
394
|
-
this.participantTypes.SelectedItems = this.activityModel.participantTypeItemIDsStringList;
|
|
395
|
-
if (this.activityModel.participantTypeItemIDsStringList.includes(ParticipantType.PermissionSet)) {
|
|
396
|
-
this.participantPermissionSet = new DropdownOptions();
|
|
397
|
-
this.participantPermissionSet.Name = "participantPermissionSet";
|
|
398
|
-
this.participantPermissionSet.LabelKey = "PermissionSet";
|
|
399
|
-
this.participantPermissionSet.DataSource = this.participantDataList;
|
|
400
|
-
this.participantPermissionSet.SingleSelection = false;
|
|
401
|
-
this.participantPermissionSet.AllowSearchFilter = true;
|
|
402
|
-
this.participantPermissionSet.SelectedItems = this.activityModel.participantPermsetsIDsString;
|
|
403
|
-
this.showParticipantPermssionSet = true;
|
|
404
|
-
}
|
|
405
|
-
this.showParticipantContainer = true;
|
|
406
|
-
}
|
|
407
|
-
let name = new EnglishArabicDTO();
|
|
408
|
-
name.Arabic = this.activityModel.normalOutcomeName.arabic;
|
|
409
|
-
name.English = this.activityModel.normalOutcomeName.english;
|
|
410
|
-
this.staticOutcomeName = new MultiLingualTextBoxOptions();
|
|
411
|
-
this.staticOutcomeName.Name = "staticOutcomeName";
|
|
412
|
-
this.staticOutcomeName.ArabicLabelKey = "OutcomeNameInArabic";
|
|
413
|
-
this.staticOutcomeName.EnglishLabelKey = "OutcomeNameInEnglish";
|
|
414
|
-
this.staticOutcomeName.IsRequired = true;
|
|
415
|
-
this.staticOutcomeName.Value = name;
|
|
416
|
-
this.staticOutcomeName.MaxLength = 255;
|
|
417
|
-
this.staticOutcomeSysName = new TextBoxOptions();
|
|
418
|
-
this.staticOutcomeSysName.Name = "staticOutcomeSysName";
|
|
419
|
-
this.staticOutcomeSysName.LabelKey = "DecisionSysName";
|
|
420
|
-
this.staticOutcomeSysName.Type = InputType.Text;
|
|
421
|
-
this.staticOutcomeSysName.IsRequired = true;
|
|
422
|
-
this.staticOutcomeSysName.Value = this.activityModel.outcomeSysName;
|
|
423
|
-
this.staticOutcomeSysName.MaxLength = 100;
|
|
424
|
-
this.staticOutcomeNextActivity = new DropdownOptions();
|
|
425
|
-
this.staticOutcomeNextActivity.Name = "staticOutcomeNextActivity";
|
|
426
|
-
this.staticOutcomeNextActivity.LabelKey = "NextActivity";
|
|
427
|
-
this.staticOutcomeNextActivity.DataSource = this.nextActivityList;
|
|
428
|
-
this.staticOutcomeNextActivity.SingleSelection = true;
|
|
429
|
-
this.staticOutcomeNextActivity.AllowSearchFilter = true;
|
|
430
|
-
this.staticOutcomeNextActivity.IsRequired = true;
|
|
431
|
-
this.staticOutcomeNextActivity.SelectedItems = this.activityModel.nextActivityID_GUID?.toLowerCase();
|
|
432
|
-
this.staticOutcomeCanAddComment = new ToggleSlideOptions();
|
|
433
|
-
this.staticOutcomeCanAddComment.Name = "staticOutcomeCanAddComment";
|
|
434
|
-
this.staticOutcomeCanAddComment.LabelKey = "CanAddComment";
|
|
435
|
-
this.staticOutcomeCanAddComment.ViewType = ControlLayout.Horizontal;
|
|
436
|
-
this.staticOutcomeCanAddComment.Value = this.activityModel.canAddComment;
|
|
437
|
-
this.showStaticControls = true;
|
|
438
|
-
break;
|
|
439
|
-
case ActivityType.Condition:
|
|
440
|
-
this.conditionLHSWFVariableList = list.wfVariables;
|
|
441
|
-
this.conditionRHSWFVariableList = list.wfVariables;
|
|
442
|
-
this.conditionRHSTypeList = list.rhsTypes;
|
|
443
|
-
this.conditionList = list.conditions;
|
|
444
|
-
this.conditionLHSDropDown = new DropdownOptions();
|
|
445
|
-
this.conditionLHSDropDown.Name = "conditionLHSDropDown";
|
|
446
|
-
this.conditionLHSDropDown.HideLabel = true;
|
|
447
|
-
this.conditionLHSDropDown.Placeholder = "WorkflowVariables";
|
|
448
|
-
this.conditionLHSDropDown.DataSource = this.conditionLHSWFVariableList;
|
|
449
|
-
this.conditionLHSDropDown.SingleSelection = true;
|
|
450
|
-
this.conditionLHSDropDown.AllowSearchFilter = true;
|
|
451
|
-
this.conditionLHSDropDown.IsRequired = true;
|
|
452
|
-
this.conditionLHSDropDown.SelectedItems = this.activityModel.lhsVariableID_GUID?.toLowerCase();
|
|
453
|
-
this.conditionsDropDown = new DropdownOptions();
|
|
454
|
-
this.conditionsDropDown.Name = "conditionsDropDown";
|
|
455
|
-
this.conditionsDropDown.HideLabel = true;
|
|
456
|
-
this.conditionsDropDown.Placeholder = "Condition";
|
|
457
|
-
this.conditionsDropDown.DataSource = this.conditionList;
|
|
458
|
-
this.conditionsDropDown.SingleSelection = true;
|
|
459
|
-
this.conditionsDropDown.IsRequired = true;
|
|
460
|
-
this.conditionsDropDown.SelectedItems = this.activityModel.operatorTypeItemID_GUID?.toLowerCase();
|
|
461
|
-
this.conditionRHSTypeDropDown = new DropdownOptions();
|
|
462
|
-
this.conditionRHSTypeDropDown.Name = "conditionRHSTypeDropDown";
|
|
463
|
-
this.conditionRHSTypeDropDown.HideLabel = true;
|
|
464
|
-
this.conditionRHSTypeDropDown.DataSource = this.conditionRHSTypeList;
|
|
465
|
-
this.conditionRHSTypeDropDown.SingleSelection = true;
|
|
466
|
-
this.conditionRHSTypeDropDown.IsRequired = true;
|
|
467
|
-
this.conditionRHSTypeDropDown.SelectedItems = this.activityModel.rhsTypeItemID_GUID?.toLowerCase();
|
|
468
|
-
if (this.activityModel.rhsTypeItemID_GUID?.toLowerCase() == Righthandsidetype.Variable) {
|
|
469
|
-
this.conditionRHSDropDown = new DropdownOptions();
|
|
470
|
-
this.conditionRHSDropDown.Name = "conditionRHSDropDown";
|
|
471
|
-
this.conditionRHSDropDown.HideLabel = true;
|
|
472
|
-
this.conditionRHSDropDown.Placeholder = "WorkflowVariables";
|
|
473
|
-
this.conditionRHSDropDown.DataSource = this.conditionRHSWFVariableList;
|
|
474
|
-
this.conditionRHSDropDown.SingleSelection = true;
|
|
475
|
-
this.conditionRHSDropDown.IsRequired = true;
|
|
476
|
-
this.conditionRHSDropDown.SelectedItems = this.activityModel.rhsVariableID_GUID?.toLowerCase();
|
|
477
|
-
this.showConditionRHSWFVariable = true;
|
|
478
|
-
}
|
|
479
|
-
else {
|
|
480
|
-
this.conditionRHSValue = new TextBoxOptions();
|
|
481
|
-
this.conditionRHSValue.Name = "conditionRHSValue";
|
|
482
|
-
this.conditionRHSValue.HideLabel = true;
|
|
483
|
-
this.conditionRHSValue.Placeholder = "Value";
|
|
484
|
-
this.conditionRHSValue.Type = InputType.Text;
|
|
485
|
-
this.conditionRHSValue.IsRequired = true;
|
|
486
|
-
this.conditionRHSValue.Value = this.activityModel.rhsValue;
|
|
487
|
-
this.conditionRHSValue.MaxLength = 512;
|
|
488
|
-
this.showConditionRHSWFVariable = false;
|
|
489
|
-
}
|
|
490
|
-
this.showConditionControls = true;
|
|
491
|
-
this.showOutcomesContainer = true;
|
|
492
|
-
break;
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
this.isEditFormLoaded = true;
|
|
496
|
-
});
|
|
497
|
-
}
|
|
498
|
-
//Outcome functions
|
|
499
|
-
getActivityOutcomesOptions(outComes, isPublished) {
|
|
500
|
-
let outcomesOptions = [];
|
|
501
|
-
let outcomesCount = 0;
|
|
502
|
-
for (let i = 0; i < outComes.length; i++) {
|
|
503
|
-
let currentOutcome = outComes[i];
|
|
504
|
-
let objectOutcomeOptions = [];
|
|
505
|
-
let outcomeID = new TextBoxOptions();
|
|
506
|
-
outcomeID.Name = "outcomeID" + i;
|
|
507
|
-
outcomeID.HideLabel = true;
|
|
508
|
-
outcomeID.Type = InputType.Text;
|
|
509
|
-
outcomeID.Value = currentOutcome.iD_GUID;
|
|
510
|
-
let name = new EnglishArabicDTO();
|
|
511
|
-
name.English = currentOutcome.nameEN;
|
|
512
|
-
name.Arabic = currentOutcome.nameAR;
|
|
513
|
-
let outcomeName = new MultiLingualTextBoxOptions();
|
|
514
|
-
outcomeName.Name = "outcomeName" + i;
|
|
515
|
-
outcomeName.ArabicLabelKey = "NameInArabic";
|
|
516
|
-
outcomeName.EnglishLabelKey = "NameInEnglish";
|
|
517
|
-
outcomeName.Value = name;
|
|
518
|
-
outcomeName.IsRequired = true;
|
|
519
|
-
outcomeName.MaxLength = 255;
|
|
520
|
-
let outcomeNextActivityTypes = new DropdownOptions();
|
|
521
|
-
outcomeNextActivityTypes.Name = "outcomeNextActivityTypes" + i;
|
|
522
|
-
outcomeNextActivityTypes.LabelKey = "Activity";
|
|
523
|
-
outcomeNextActivityTypes.DataSource = this.nextActivityList;
|
|
524
|
-
outcomeNextActivityTypes.SingleSelection = true;
|
|
525
|
-
outcomeNextActivityTypes.AllowSearchFilter = true;
|
|
526
|
-
outcomeNextActivityTypes.SelectedItems = currentOutcome.nextActivityID_GUID?.toLowerCase();
|
|
527
|
-
let outcomeCanEdit;
|
|
528
|
-
outcomeCanEdit = currentOutcome.canEdit;
|
|
529
|
-
let outcomeHiddeneSysName = new TextBoxOptions();
|
|
530
|
-
outcomeHiddeneSysName.Name = "outcomeHiddeneSysName" + i;
|
|
531
|
-
outcomeHiddeneSysName.Type = InputType.Text;
|
|
532
|
-
outcomeHiddeneSysName.Value = currentOutcome.outcomeSysName;
|
|
533
|
-
let outcomeCanEditSysName = new CheckBoxOptions();
|
|
534
|
-
outcomeCanEditSysName.Name = "outcomeCanEditSysName" + i;
|
|
535
|
-
outcomeCanEditSysName.Value = currentOutcome.canEditSysName;
|
|
536
|
-
if (!isPublished) {
|
|
537
|
-
let outcomeDecisionSysName = new TextBoxOptions();
|
|
538
|
-
outcomeDecisionSysName.Name = "outcomeDecisionSysName" + i;
|
|
539
|
-
outcomeDecisionSysName.LabelKey = "DecisionSysName";
|
|
540
|
-
outcomeDecisionSysName.Type = InputType.Text;
|
|
541
|
-
outcomeDecisionSysName.Value = currentOutcome.outcomeSysName;
|
|
542
|
-
outcomeDecisionSysName.IsDisabled = !currentOutcome.canEditSysName;
|
|
543
|
-
outcomeDecisionSysName.IsRequired = true;
|
|
544
|
-
outcomeDecisionSysName.MaxLength = 100;
|
|
545
|
-
let outcomeCanAddComment = new CheckBoxOptions();
|
|
546
|
-
outcomeCanAddComment.Name = "outcomeCanAddComment" + i;
|
|
547
|
-
outcomeCanAddComment.Value = currentOutcome.canAddComment;
|
|
548
|
-
outcomeCanAddComment.LabelKey = "CanAddComment";
|
|
549
|
-
objectOutcomeOptions.push(outcomeID, outcomeName, outcomeDecisionSysName, outcomeNextActivityTypes, outcomeCanAddComment, outcomeCanEdit, outcomeHiddeneSysName, outcomeCanEditSysName);
|
|
550
|
-
}
|
|
551
|
-
else
|
|
552
|
-
objectOutcomeOptions.push(outcomeID, outcomeName, outcomeNextActivityTypes, outcomeCanEdit, outcomeHiddeneSysName, outcomeCanEditSysName);
|
|
553
|
-
outcomesOptions.push(objectOutcomeOptions);
|
|
554
|
-
outcomesCount += 1;
|
|
555
|
-
}
|
|
556
|
-
return [outcomesOptions, outcomesCount];
|
|
557
|
-
}
|
|
558
|
-
addWFActivityOutcome() {
|
|
559
|
-
let index = this.outcomesCount;
|
|
560
|
-
let objectOutcomeOptions = [];
|
|
561
|
-
let outcomeID = new TextBoxOptions();
|
|
562
|
-
outcomeID.Name = "outcomeID" + index;
|
|
563
|
-
outcomeID.HideLabel = true;
|
|
564
|
-
outcomeID.Type = InputType.Text;
|
|
565
|
-
let outcomeName = new MultiLingualTextBoxOptions();
|
|
566
|
-
outcomeName.Name = "outcomeName" + index;
|
|
567
|
-
outcomeName.ArabicLabelKey = "NameInArabic";
|
|
568
|
-
outcomeName.EnglishLabelKey = "NameInEnglish";
|
|
569
|
-
outcomeName.IsRequired = true;
|
|
570
|
-
let outcomeDecisionSysName = new TextBoxOptions();
|
|
571
|
-
outcomeDecisionSysName.Name = "outcomeDecisionSysName" + index;
|
|
572
|
-
outcomeDecisionSysName.LabelKey = "DecisionSysName";
|
|
573
|
-
outcomeDecisionSysName.Type = InputType.Text;
|
|
574
|
-
outcomeDecisionSysName.IsRequired = true;
|
|
575
|
-
let outcomeNextActivityTypes = new DropdownOptions();
|
|
576
|
-
outcomeNextActivityTypes.Name = "outcomeNextActivityTypes" + index;
|
|
577
|
-
outcomeNextActivityTypes.LabelKey = "Activity";
|
|
578
|
-
outcomeNextActivityTypes.DataSource = this.nextActivityList;
|
|
579
|
-
outcomeNextActivityTypes.SingleSelection = true;
|
|
580
|
-
outcomeNextActivityTypes.AllowSearchFilter = true;
|
|
581
|
-
let outcomeCanAddComment = new CheckBoxOptions();
|
|
582
|
-
outcomeCanAddComment.Name = "outcomeCanAddComment" + index;
|
|
583
|
-
outcomeCanAddComment.LabelKey = "CanAddComment";
|
|
584
|
-
let outcomeCanEdit;
|
|
585
|
-
outcomeCanEdit = true;
|
|
586
|
-
let outcomeHiddeneSysName = new TextBoxOptions();
|
|
587
|
-
outcomeHiddeneSysName.Name = "outcomeHiddeneSysName" + index;
|
|
588
|
-
outcomeHiddeneSysName.Type = InputType.Text;
|
|
589
|
-
let outcomeCanEditSysName = new CheckBoxOptions();
|
|
590
|
-
outcomeCanEditSysName.Name = "outcomeCanEditSysName" + index;
|
|
591
|
-
outcomeCanEditSysName.Value = true;
|
|
592
|
-
objectOutcomeOptions.push(outcomeID, outcomeName, outcomeDecisionSysName, outcomeNextActivityTypes, outcomeCanAddComment, outcomeCanEdit, outcomeHiddeneSysName, outcomeCanEditSysName);
|
|
593
|
-
this.outcomesOptions.push(objectOutcomeOptions);
|
|
594
|
-
this.outcomesCount += 1;
|
|
595
|
-
}
|
|
596
|
-
deleteOutcome(deletedOutcome) {
|
|
597
|
-
let deletedOutcomeIndex = this.outcomesOptions.indexOf(deletedOutcome);
|
|
598
|
-
if (deletedOutcomeIndex !== -1) {
|
|
599
|
-
this.outcomesOptions.splice(deletedOutcomeIndex, 1);
|
|
600
|
-
for (var i = 0; i < deletedOutcome.length; i++) {
|
|
601
|
-
this.editworkflowActivityForm.removeControl(deletedOutcome[i].Name);
|
|
602
|
-
}
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
//On changes events
|
|
606
|
-
activityTypeOnChange(activityType) {
|
|
607
|
-
activityType = activityType?.toLowerCase();
|
|
608
|
-
//Reset controls, outcomes and flags
|
|
609
|
-
this.resetAllActivityTypeControls();
|
|
610
|
-
this.outcomesOptions = [];
|
|
611
|
-
this.outcomesCount = 0;
|
|
612
|
-
this.showParticipantContainer = false;
|
|
613
|
-
this.showDynamicControls = false;
|
|
614
|
-
this.showStaticControls = false;
|
|
615
|
-
this.showConditionControls = false;
|
|
616
|
-
this.showConditionRHSWFVariable = false;
|
|
617
|
-
this.showOutcomesContainer = false;
|
|
618
|
-
this.activityTypeID = activityType;
|
|
619
|
-
this.workflowActivityService.getActivityOutcomes(this.versionID, activityType).subscribe((result) => {
|
|
620
|
-
var resultObj = result;
|
|
621
|
-
var model = resultObj.model;
|
|
622
|
-
var list = resultObj.list;
|
|
623
|
-
this.nextActivityList = list.activities;
|
|
624
|
-
switch (activityType) {
|
|
625
|
-
case ActivityType.Approval:
|
|
626
|
-
case ActivityType.Action:
|
|
627
|
-
case ActivityType.PercentageTask:
|
|
628
|
-
this.taskTypeList = list.tasks;
|
|
629
|
-
this.participantTypeList = list.participants.participantTypes;
|
|
630
|
-
this.participantDataList = list.participants.participantData;
|
|
631
|
-
//Initialize required controls for approval
|
|
632
|
-
this.participantTypes = new DropdownOptions();
|
|
633
|
-
this.participantTypes.Name = "participantTypes";
|
|
634
|
-
this.participantTypes.LabelKey = "ParticipantTypes";
|
|
635
|
-
this.participantTypes.DataSource = this.participantTypeList;
|
|
636
|
-
this.participantTypes.SingleSelection = false;
|
|
637
|
-
this.participantTypes.AllowSearchFilter = true;
|
|
638
|
-
this.participantTypes.IsRequired = true;
|
|
639
|
-
this.dynamicTaskName = new MultiLingualTextBoxOptions();
|
|
640
|
-
this.dynamicTaskName.Name = "dynamicTaskName";
|
|
641
|
-
this.dynamicTaskName.ArabicLabelKey = "TaskNameInArabic";
|
|
642
|
-
this.dynamicTaskName.EnglishLabelKey = "TaskNameInEnglish";
|
|
643
|
-
this.dynamicTaskName.MaxLength = 255;
|
|
644
|
-
this.dynamicTaskDescription = new MultiLingualTextAreaOptions();
|
|
645
|
-
this.dynamicTaskDescription.Name = "dynamicTaskDescription";
|
|
646
|
-
this.dynamicTaskDescription.ArabicLabelKey = "TaskDescriptionInArabic";
|
|
647
|
-
this.dynamicTaskDescription.EnglishLabelKey = "TaskDescriptionInEnglish";
|
|
648
|
-
this.dynamicTaskDescription.MaxLength = 255;
|
|
649
|
-
this.dynamicTaskURL = new TextBoxOptions();
|
|
650
|
-
this.dynamicTaskURL.Name = "dynamicTaskURL";
|
|
651
|
-
this.dynamicTaskURL.LabelKey = "TaskURL";
|
|
652
|
-
this.dynamicTaskURL.Type = InputType.Text;
|
|
653
|
-
this.dynamicTaskURL.MaxLength = 2083;
|
|
654
|
-
this.dynamicTaskType = new DropdownOptions();
|
|
655
|
-
this.dynamicTaskType.Name = "dynamicTaskType";
|
|
656
|
-
this.dynamicTaskType.LabelKey = "TaskType";
|
|
657
|
-
this.dynamicTaskType.DataSource = this.taskTypeList;
|
|
658
|
-
this.dynamicTaskType.SingleSelection = true;
|
|
659
|
-
this.dynamicTaskType.AllowSearchFilter = true;
|
|
660
|
-
this.dynamicTaskType.IsRequired = true;
|
|
661
|
-
this.dynamicCanComplete = new ToggleSlideOptions();
|
|
662
|
-
this.dynamicCanComplete.Name = "dynamicCanComplete";
|
|
663
|
-
this.dynamicCanComplete.LabelKey = "CanCompleteFromTME";
|
|
664
|
-
this.dynamicCanComplete.ViewType = ControlLayout.Horizontal;
|
|
665
|
-
this.dynamicCanComplete.Value = model.canCompleteFromTME;
|
|
666
|
-
let outcomesResult = this.getActivityOutcomesOptions(model.outcomes, false);
|
|
667
|
-
this.outcomesOptions = outcomesResult[0];
|
|
668
|
-
this.outcomesCount = outcomesResult[1];
|
|
669
|
-
this.showDynamicControls = true;
|
|
670
|
-
this.showParticipantContainer = true;
|
|
671
|
-
this.showOutcomesContainer = true;
|
|
672
|
-
break;
|
|
673
|
-
case ActivityType.Email:
|
|
674
|
-
case ActivityType.Sleep:
|
|
675
|
-
let name = new EnglishArabicDTO();
|
|
676
|
-
name.Arabic = model.normalOutcomeName.arabic;
|
|
677
|
-
name.English = model.normalOutcomeName.english;
|
|
678
|
-
this.staticOutcomeName = new MultiLingualTextBoxOptions();
|
|
679
|
-
this.staticOutcomeName.Name = "staticOutcomeName";
|
|
680
|
-
this.staticOutcomeName.ArabicLabelKey = "OutcomeNameInArabic";
|
|
681
|
-
this.staticOutcomeName.EnglishLabelKey = "OutcomeNameInEnglish";
|
|
682
|
-
this.staticOutcomeName.IsRequired = true;
|
|
683
|
-
this.staticOutcomeName.Value = name;
|
|
684
|
-
this.staticOutcomeName.MaxLength = 255;
|
|
685
|
-
this.staticOutcomeSysName = new TextBoxOptions();
|
|
686
|
-
this.staticOutcomeSysName.Name = "staticOutcomeSysName";
|
|
687
|
-
this.staticOutcomeSysName.LabelKey = "DecisionSysName";
|
|
688
|
-
this.staticOutcomeSysName.Type = InputType.Text;
|
|
689
|
-
this.staticOutcomeSysName.IsRequired = true;
|
|
690
|
-
this.staticOutcomeSysName.MaxLength = 100;
|
|
691
|
-
this.staticOutcomeNextActivity = new DropdownOptions();
|
|
692
|
-
this.staticOutcomeNextActivity.Name = "staticOutcomeNextActivity";
|
|
693
|
-
this.staticOutcomeNextActivity.LabelKey = "NextActivity";
|
|
694
|
-
this.staticOutcomeNextActivity.DataSource = this.nextActivityList;
|
|
695
|
-
this.staticOutcomeNextActivity.SingleSelection = true;
|
|
696
|
-
this.staticOutcomeNextActivity.AllowSearchFilter = true;
|
|
697
|
-
this.staticOutcomeNextActivity.IsRequired = true;
|
|
698
|
-
this.staticOutcomeCanAddComment = new ToggleSlideOptions();
|
|
699
|
-
this.staticOutcomeCanAddComment.Name = "staticOutcomeCanAddComment";
|
|
700
|
-
this.staticOutcomeCanAddComment.LabelKey = "CanAddComment";
|
|
701
|
-
this.staticOutcomeCanAddComment.ViewType = ControlLayout.Horizontal;
|
|
702
|
-
this.staticOutcomeCanAddComment.Value = model.canAddComment;
|
|
703
|
-
this.showStaticControls = true;
|
|
704
|
-
break;
|
|
705
|
-
case ActivityType.Condition:
|
|
706
|
-
this.conditionLHSWFVariableList = list.wfVariables;
|
|
707
|
-
this.conditionRHSWFVariableList = list.wfVariables;
|
|
708
|
-
this.conditionRHSTypeList = list.rhsTypes;
|
|
709
|
-
this.conditionList = list.conditions;
|
|
710
|
-
this.conditionLHSDropDown = new DropdownOptions();
|
|
711
|
-
this.conditionLHSDropDown.Name = "conditionLHSDropDown";
|
|
712
|
-
this.conditionLHSDropDown.HideLabel = true;
|
|
713
|
-
this.conditionLHSDropDown.Placeholder = "WorkflowVariables";
|
|
714
|
-
this.conditionLHSDropDown.DataSource = this.conditionLHSWFVariableList;
|
|
715
|
-
this.conditionLHSDropDown.SingleSelection = true;
|
|
716
|
-
this.conditionLHSDropDown.AllowSearchFilter = true;
|
|
717
|
-
this.conditionLHSDropDown.IsRequired = true;
|
|
718
|
-
this.conditionsDropDown = new DropdownOptions();
|
|
719
|
-
this.conditionsDropDown.Name = "conditionsDropDown";
|
|
720
|
-
this.conditionsDropDown.HideLabel = true;
|
|
721
|
-
this.conditionsDropDown.Placeholder = "Condition";
|
|
722
|
-
this.conditionsDropDown.DataSource = this.conditionList;
|
|
723
|
-
this.conditionsDropDown.SingleSelection = true;
|
|
724
|
-
this.conditionsDropDown.IsRequired = true;
|
|
725
|
-
let selectedRHSType = this.conditionRHSTypeList.filter((item) => { return item.key?.toLowerCase() == Righthandsidetype.Variable; }).map((item) => item.key)[0];
|
|
726
|
-
this.conditionRHSTypeDropDown = new DropdownOptions();
|
|
727
|
-
this.conditionRHSTypeDropDown.Name = "conditionRHSTypeDropDown";
|
|
728
|
-
this.conditionRHSTypeDropDown.HideLabel = true;
|
|
729
|
-
this.conditionRHSTypeDropDown.DataSource = this.conditionRHSTypeList;
|
|
730
|
-
this.conditionRHSTypeDropDown.SingleSelection = true;
|
|
731
|
-
this.conditionRHSTypeDropDown.IsRequired = true;
|
|
732
|
-
this.conditionRHSTypeDropDown.SelectedItems = selectedRHSType;
|
|
733
|
-
this.conditionRHSDropDown = new DropdownOptions();
|
|
734
|
-
this.conditionRHSDropDown.Name = "conditionRHSDropDown";
|
|
735
|
-
this.conditionRHSDropDown.HideLabel = true;
|
|
736
|
-
this.conditionRHSDropDown.Placeholder = "WorkflowVariables";
|
|
737
|
-
this.conditionRHSDropDown.DataSource = this.conditionRHSWFVariableList;
|
|
738
|
-
this.conditionRHSDropDown.SingleSelection = true;
|
|
739
|
-
this.conditionRHSDropDown.IsRequired = true;
|
|
740
|
-
let conditionOutcomesResult = this.getActivityOutcomesOptions(model.outcomes, false);
|
|
741
|
-
this.outcomesOptions = conditionOutcomesResult[0];
|
|
742
|
-
this.outcomesCount = conditionOutcomesResult[1];
|
|
743
|
-
this.showConditionControls = true;
|
|
744
|
-
this.showConditionRHSWFVariable = true;
|
|
745
|
-
this.showOutcomesContainer = true;
|
|
746
|
-
break;
|
|
747
|
-
}
|
|
748
|
-
this.canAddOutcome = this.showOutcomesContainer ? model.canAddOutcome : false;
|
|
749
|
-
});
|
|
750
|
-
}
|
|
751
|
-
conditionRHSTypeOnChange(type) {
|
|
752
|
-
type = type?.toLowerCase();
|
|
753
|
-
if (type == Righthandsidetype.Variable) {
|
|
754
|
-
this.editworkflowActivityForm.removeControl("conditionRHSValue");
|
|
755
|
-
this.conditionRHSDropDown = new DropdownOptions();
|
|
756
|
-
this.conditionRHSDropDown.Name = "conditionRHSDropDown";
|
|
757
|
-
this.conditionRHSDropDown.HideLabel = true;
|
|
758
|
-
this.conditionRHSDropDown.Placeholder = "WorkflowVariables";
|
|
759
|
-
this.conditionRHSDropDown.DataSource = this.conditionRHSWFVariableList;
|
|
760
|
-
this.conditionRHSDropDown.SingleSelection = true;
|
|
761
|
-
this.conditionRHSDropDown.IsRequired = true;
|
|
762
|
-
this.showConditionRHSWFVariable = true;
|
|
763
|
-
}
|
|
764
|
-
else {
|
|
765
|
-
this.editworkflowActivityForm.removeControl("conditionRHSDropDown");
|
|
766
|
-
this.conditionRHSValue = new TextBoxOptions();
|
|
767
|
-
this.conditionRHSValue.Name = "conditionRHSValue";
|
|
768
|
-
this.conditionRHSValue.HideLabel = true;
|
|
769
|
-
this.conditionRHSValue.Placeholder = "Value";
|
|
770
|
-
this.conditionRHSValue.Type = InputType.Text;
|
|
771
|
-
this.conditionRHSValue.IsRequired = true;
|
|
772
|
-
this.conditionRHSValue.MaxLength = 512;
|
|
773
|
-
this.showConditionRHSWFVariable = false;
|
|
774
|
-
}
|
|
775
|
-
}
|
|
776
|
-
participantTypeOnChange(participantType) {
|
|
777
|
-
participantType = participantType?.toLowerCase();
|
|
778
|
-
if (participantType == ParticipantType.PermissionSet) {
|
|
779
|
-
this.participantPermissionSet = new DropdownOptions();
|
|
780
|
-
this.participantPermissionSet.Name = "participantPermissionSet";
|
|
781
|
-
this.participantPermissionSet.LabelKey = "PermissionSet";
|
|
782
|
-
this.participantPermissionSet.DataSource = this.participantDataList;
|
|
783
|
-
this.participantPermissionSet.SingleSelection = false;
|
|
784
|
-
this.participantPermissionSet.AllowSearchFilter = true;
|
|
785
|
-
this.showParticipantPermssionSet = true;
|
|
786
|
-
}
|
|
787
|
-
else {
|
|
788
|
-
this.editworkflowActivityForm.removeControl("participantPermissionSet");
|
|
789
|
-
this.showParticipantPermssionSet = false;
|
|
790
|
-
}
|
|
791
|
-
}
|
|
792
|
-
//Reset type
|
|
793
|
-
resetAllActivityTypeControls() {
|
|
794
|
-
this.editworkflowActivityForm.removeControl("participantTypes");
|
|
795
|
-
this.editworkflowActivityForm.removeControl("participantPermissionSet");
|
|
796
|
-
this.editworkflowActivityForm.removeControl("participantPermissionSet");
|
|
797
|
-
this.editworkflowActivityForm.removeControl("dynamicTaskName");
|
|
798
|
-
this.editworkflowActivityForm.removeControl("dynamicTaskDescription");
|
|
799
|
-
this.editworkflowActivityForm.removeControl("dynamicTaskURL");
|
|
800
|
-
this.editworkflowActivityForm.removeControl("dynamicTaskType");
|
|
801
|
-
this.editworkflowActivityForm.removeControl("dynamicCanComplete");
|
|
802
|
-
this.editworkflowActivityForm.removeControl("staticOutcomeName");
|
|
803
|
-
this.editworkflowActivityForm.removeControl("staticOutcomeSysName");
|
|
804
|
-
this.editworkflowActivityForm.removeControl("staticOutcomeNextActivity");
|
|
805
|
-
this.editworkflowActivityForm.removeControl("staticOutcomeCanAddComment");
|
|
806
|
-
this.editworkflowActivityForm.removeControl("conditionLHSDropDown");
|
|
807
|
-
this.editworkflowActivityForm.removeControl("conditionsDropDown");
|
|
808
|
-
this.editworkflowActivityForm.removeControl("conditionRHSTypeDropDown");
|
|
809
|
-
this.editworkflowActivityForm.removeControl("conditionRHSDropDown");
|
|
810
|
-
this.editworkflowActivityForm.removeControl("conditionRHSValue");
|
|
811
|
-
//Remove outcomes controls
|
|
812
|
-
let ResultModel = this.editworkflowActivityForm.value;
|
|
813
|
-
for (let i = 0; i < this.outcomesCount; i++) {
|
|
814
|
-
let outcomeID = ResultModel["outcomeID" + i];
|
|
815
|
-
if (outcomeID == undefined)
|
|
816
|
-
continue;
|
|
817
|
-
this.editworkflowActivityForm.removeControl("outcomeID" + i);
|
|
818
|
-
this.editworkflowActivityForm.removeControl("outcomeName" + i);
|
|
819
|
-
this.editworkflowActivityForm.removeControl("outcomeDecisionSysName" + i);
|
|
820
|
-
this.editworkflowActivityForm.removeControl("outcomeHiddeneSysName" + i);
|
|
821
|
-
this.editworkflowActivityForm.removeControl("outcomeNextActivityTypes" + i);
|
|
822
|
-
this.editworkflowActivityForm.removeControl("outcomeCanAddComment" + i);
|
|
823
|
-
}
|
|
824
|
-
}
|
|
825
|
-
//Cancel
|
|
826
|
-
cancelEdit() {
|
|
827
|
-
this.router.navigate(['/Admin/Workflows/workflow/']);
|
|
828
|
-
}
|
|
829
|
-
//On destroy
|
|
830
|
-
ngOnDestroy() {
|
|
831
|
-
this.requestHandlerService.destroyHandler();
|
|
832
|
-
}
|
|
833
|
-
}
|
|
834
|
-
WorkflowActivityEditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkflowActivityEditComponent, deps: [{ token: i1.WorkflowActivityService }, { token: i2.PageInfoService }, { token: i3.UtilityService }, { token: i4.ActivatedRoute }, { token: i4.Router }, { token: i3.RequestHandlerService }, { token: i3.BBSFTranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
835
|
-
WorkflowActivityEditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkflowActivityEditComponent, selector: "lib-workflow-activity-edit", ngImport: i0, template: "<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\" *ngIf=\"isEditFormLoaded\">\r\n <div class=\"card-body py-3\">\r\n <BBSF-Form [options]=\"editworkflowActivityFormOptions\">\r\n <!--Start shared controls container-->\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"name\" [group]=\"editworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row\" *ngIf=\"!isPublished\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"sysName\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\" *ngIf=\"showActivityType\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"activityType\" [group]=\"editworkflowActivityForm\" (OnChange)=\"activityTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <!--End shared controls container-->\r\n <!--Start participant container-->\r\n <div id=\"participantContainer\" *ngIf=\"showParticipantContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantTypes\" [group]=\"editworkflowActivityForm\" (OnChange)=\"participantTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showParticipantPermssionSet\" class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantPermissionSet\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End participant container-->\r\n <!--Start static controls-->\r\n <div *ngIf=\"showStaticControls\" id=\"staticContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"staticOutcomeName\" [group]=\"editworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"staticOutcomeSysName\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"staticOutcomeNextActivity\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"staticOutcomeCanAddComment\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End static controls-->\r\n <!--Start dynamic controls-->\r\n <div *ngIf=\"showDynamicControls\" id=\"dynamicContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"dynamicTaskName\" [group]=\"editworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"dynamicTaskDescription\" [group]=\"editworkflowActivityForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"dynamicTaskURL\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"dynamicTaskType\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"dynamicCanComplete\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End dynamic controls-->\r\n <!--Start condition controls-->\r\n <div *ngIf=\"showConditionControls\" id=\"conditionContainer\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"LeftHandSide\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Condition\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSideType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSide\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionLHSDropDown\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionsDropDown\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionRHSTypeDropDown\" [group]=\"editworkflowActivityForm\" (OnChange)=\"conditionRHSTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td *ngIf=\"showConditionRHSWFVariable; else conditionTxtValue\">\r\n <BBSF-DropdownList [options]=\"conditionRHSDropDown\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <ng-template #conditionTxtValue>\r\n <td>\r\n <BBSF-TextBox [options]=\"conditionRHSValue\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n </ng-template>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!--End condition controls-->\r\n <!--Start outcomes container-->\r\n <div *ngIf=\"showOutcomesContainer\" id=\"outcomesContainer\" class=\"row\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Decision\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n <th *ngIf=\"!isPublished\" class=\"min-w-150px\"></th>\r\n <th *ngIf=\"!isPublished\" class=\"min-w-150px\"></th>\r\n <th *ngIf=\"!isPublished\" class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\" *ngIf=\"isPublished;else notPublishedOutcomes\">\r\n <tr *ngFor=\"let option of outcomesOptions;let i=index;\">\r\n <td>\r\n <!--ID-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--Name-->\r\n <BBSF-MultiLingualTextBox [options]=\"option[1]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </td>\r\n <td>\r\n <!--NextActivity-->\r\n <BBSF-DropdownList [options]=\"option[2]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n </tr>\r\n </tbody>\r\n\r\n <ng-template #notPublishedOutcomes>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of outcomesOptions;let i=index;\">\r\n\r\n <td>\r\n <!--ID-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--Name-->\r\n <BBSF-MultiLingualTextBox [options]=\"option[1]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </td>\r\n <td>\r\n <!--SysName-->\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--hidden SysName-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[6]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--can edit SysName-->\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[7]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--NextActivity-->\r\n <BBSF-DropdownList [options]=\"option[3]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <!--CanAddComment-->\r\n <BBSF-CheckBox [options]=\"option[4]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n\r\n <td>\r\n <!--if outcome Can Edit-->\r\n <a *ngIf=\"option[5]\" class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteOutcome(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"canAddOutcome\">\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFActivityOutcome()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </ng-template>\r\n\r\n </table>\r\n </div>\r\n\r\n </div>\r\n <!--End outcomes container-->\r\n\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" class=\"btn btn-light me-3 btn-sm\" (click)=\"cancelEdit()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i6.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { kind: "component", type: i6.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }] });
|
|
836
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
837
|
-
type: Component,
|
|
838
|
-
args: [{ selector: 'lib-workflow-activity-edit', template: "<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\" *ngIf=\"isEditFormLoaded\">\r\n <div class=\"card-body py-3\">\r\n <BBSF-Form [options]=\"editworkflowActivityFormOptions\">\r\n <!--Start shared controls container-->\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"name\" [group]=\"editworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row\" *ngIf=\"!isPublished\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"sysName\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\" *ngIf=\"showActivityType\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"activityType\" [group]=\"editworkflowActivityForm\" (OnChange)=\"activityTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <!--End shared controls container-->\r\n <!--Start participant container-->\r\n <div id=\"participantContainer\" *ngIf=\"showParticipantContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantTypes\" [group]=\"editworkflowActivityForm\" (OnChange)=\"participantTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showParticipantPermssionSet\" class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantPermissionSet\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End participant container-->\r\n <!--Start static controls-->\r\n <div *ngIf=\"showStaticControls\" id=\"staticContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"staticOutcomeName\" [group]=\"editworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"staticOutcomeSysName\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"staticOutcomeNextActivity\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"staticOutcomeCanAddComment\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End static controls-->\r\n <!--Start dynamic controls-->\r\n <div *ngIf=\"showDynamicControls\" id=\"dynamicContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"dynamicTaskName\" [group]=\"editworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"dynamicTaskDescription\" [group]=\"editworkflowActivityForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"dynamicTaskURL\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"dynamicTaskType\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"dynamicCanComplete\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End dynamic controls-->\r\n <!--Start condition controls-->\r\n <div *ngIf=\"showConditionControls\" id=\"conditionContainer\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"LeftHandSide\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Condition\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSideType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSide\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionLHSDropDown\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionsDropDown\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionRHSTypeDropDown\" [group]=\"editworkflowActivityForm\" (OnChange)=\"conditionRHSTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td *ngIf=\"showConditionRHSWFVariable; else conditionTxtValue\">\r\n <BBSF-DropdownList [options]=\"conditionRHSDropDown\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <ng-template #conditionTxtValue>\r\n <td>\r\n <BBSF-TextBox [options]=\"conditionRHSValue\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n </ng-template>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!--End condition controls-->\r\n <!--Start outcomes container-->\r\n <div *ngIf=\"showOutcomesContainer\" id=\"outcomesContainer\" class=\"row\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Decision\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n <th *ngIf=\"!isPublished\" class=\"min-w-150px\"></th>\r\n <th *ngIf=\"!isPublished\" class=\"min-w-150px\"></th>\r\n <th *ngIf=\"!isPublished\" class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\" *ngIf=\"isPublished;else notPublishedOutcomes\">\r\n <tr *ngFor=\"let option of outcomesOptions;let i=index;\">\r\n <td>\r\n <!--ID-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--Name-->\r\n <BBSF-MultiLingualTextBox [options]=\"option[1]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </td>\r\n <td>\r\n <!--NextActivity-->\r\n <BBSF-DropdownList [options]=\"option[2]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n </tr>\r\n </tbody>\r\n\r\n <ng-template #notPublishedOutcomes>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of outcomesOptions;let i=index;\">\r\n\r\n <td>\r\n <!--ID-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--Name-->\r\n <BBSF-MultiLingualTextBox [options]=\"option[1]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </td>\r\n <td>\r\n <!--SysName-->\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--hidden SysName-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[6]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--can edit SysName-->\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[7]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--NextActivity-->\r\n <BBSF-DropdownList [options]=\"option[3]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <!--CanAddComment-->\r\n <BBSF-CheckBox [options]=\"option[4]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n\r\n <td>\r\n <!--if outcome Can Edit-->\r\n <a *ngIf=\"option[5]\" class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteOutcome(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"canAddOutcome\">\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFActivityOutcome()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </ng-template>\r\n\r\n </table>\r\n </div>\r\n\r\n </div>\r\n <!--End outcomes container-->\r\n\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" class=\"btn btn-light me-3 btn-sm\" (click)=\"cancelEdit()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n" }]
|
|
839
|
-
}], ctorParameters:
|
|
840
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctYWN0aXZpdHktZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3dvcmtmbG93cy9hY3Rpdml0eS93b3JrZmxvdy1hY3Rpdml0eS1lZGl0L3dvcmtmbG93LWFjdGl2aXR5LWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy93b3JrZmxvd3MvYWN0aXZpdHkvd29ya2Zsb3ctYWN0aXZpdHktZWRpdC93b3JrZmxvdy1hY3Rpdml0eS1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLDJCQUEyQixFQUFFLDBCQUEwQixFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR2pPLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7Ozs7QUFPdEcsTUFBTSxPQUFPLDZCQUE2QjtJQXNF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a0VDbEIxQyw4MVhBMlBBOzRGRHpPYSw2QkFBNkI7a0JBSnpDLFNBQVM7K0JBQ0UsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ2hlY2tCb3hPcHRpb25zLCBDb250cm9sTGF5b3V0LCBEcm9wZG93bk9wdGlvbnMsIEVuZ2xpc2hBcmFiaWNEVE8sIEZvcm1PcHRpb25zLCBJbnB1dFR5cGUsIE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucywgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMsIFRleHRCb3hPcHRpb25zLCBUb2dnbGVTbGlkZU9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2aXR5VHlwZSwgUGFydGljaXBhbnRUeXBlLCBSaWdodGhhbmRzaWRldHlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBDb25kaXRpb25SSFNUeXBlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL0VudW1zL2NvbmZpZ3VyYXRpb24vQ29uZGl0aW9uUkhTVHlwZSc7XHJcbmltcG9ydCB7IFBhcnRpY2lwYW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL0ltcGVyc29uYXRpb25SdWxlTW9kZWxzL1BhcnRpY2lwYW50TW9kZWwnO1xyXG5pbXBvcnQgeyBXRkFjdGl2aXR5TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlNb2RlbCc7XHJcbmltcG9ydCB7IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlPdXRjb21lTW9kZWwnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd0FjdGl2aXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9Xb3JrZmxvd0FjdGl2aXR5U2VydmljZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXdvcmtmbG93LWFjdGl2aXR5LWVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1hY3Rpdml0eS1lZGl0LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dBY3Rpdml0eUVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vUGFnZSByZXF1aXJlbWVudHNcclxuICBpc0VkaXRGb3JtTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmVyc2lvbklEOiBzdHJpbmc7XHJcbiAgYWN0aXZpdHlJRDogc3RyaW5nO1xyXG4gIGFjdGl2aXR5TW9kZWw6IGFueTtcclxuICBpc1B1Ymxpc2hlZDogYm9vbGVhbjtcclxuXHJcbiAgLy9FZGl0IEFjdGl2aXR5IHNoYXJlZCBjb250cm9sc1xyXG4gIGVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgbmFtZTogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgY2FuQWRkT3V0Y29tZTogYm9vbGVhbjtcclxuICBhY3Rpdml0eVR5cGVJRDogc3RyaW5nO1xyXG4gIHNob3dBY3Rpdml0eVR5cGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy9Ob24gcHVibGlzaGVkIEFjdGl2aXR5IGNvbnRyb2xzXHJcbiAgc3lzTmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWN0aXZpdHlUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcblxyXG4gIC8vU2hhcmVkIFBhcnRpY2lwYW50IHR5cGUgYW5kIGRhdGEgKE5vbiBQdWJsaXNoZWQgb25seSlcclxuICBzaG93UGFydGljaXBhbnRDb250YWluZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwYXJ0aWNpcGFudFR5cGVzOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgcGFydGljaXBhbnRQZXJtaXNzaW9uU2V0OiBEcm9wZG93bk9wdGlvbnM7XHJcblxyXG4gIC8vRHluYW1pYyBUeXBlcyBDb250cm9scyAvLyhBcHByb3ZhbCxBY3Rpb24sUGVyY2VudGFnZSlcclxuICBzaG93RHluYW1pY0NvbnRyb2xzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHluYW1pY1Rhc2tOYW1lOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBkeW5hbWljVGFza0Rlc2NyaXB0aW9uOiBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnM7XHJcbiAgZHluYW1pY1Rhc2tVUkw6IFRleHRCb3hPcHRpb25zO1xyXG4gIGR5bmFtaWNUYXNrVHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGR5bmFtaWNDYW5Db21wbGV0ZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG5cclxuICAvL1N0YXRpYyB0eXBlcyBjb250cm9scyAoRW1haWwsU2xlZXApIChOb24gcHVibGlzaGVkIG9ubHkpXHJcbiAgLy9FbWFpbCBUeXBlIENvbnRyb2xzIC8vKyBpbml0aWFsaXplIHBhcnRpY2lwYW50XHJcbiAgc2hvd1N0YXRpY0NvbnRyb2xzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3RhdGljT3V0Y29tZU5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIHN0YXRpY091dGNvbWVTeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQ6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuXHJcbiAgLy9Db25kaXRpb24gdHlwZSBjb250cm9sc1xyXG4gIHNob3dDb25kaXRpb25Db250cm9sczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbmRpdGlvbkxIU0Ryb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uc0Ryb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uUkhTVHlwZURyb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uUkhTRHJvcERvd246IERyb3Bkb3duT3B0aW9ucztcclxuICBjb25kaXRpb25SSFNWYWx1ZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy9TaGFyZWQgcmVxdWlyZWQgbGlzdHNcclxuICBBY3Rpdml0eVR5cGVMaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAvL091dGNvbWVzIChkeW5hbWljLGNvbmRpdGlvbilcclxuICBvdXRjb21lc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgb3V0Y29tZXNDb3VudDogbnVtYmVyID0gMDtcclxuICBzaG93T3V0Y29tZXNDb250YWluZXIgPSBmYWxzZTtcclxuXHJcbiAgLy9SZXF1aXJlZExpc3RzXHJcbiAgdGFza1R5cGVMaXN0ID0gW107XHJcbiAgcGFydGljaXBhbnRUeXBlTGlzdCA9IFtdO1xyXG4gIHBhcnRpY2lwYW50RGF0YUxpc3QgPSBbXTtcclxuICBuZXh0QWN0aXZpdHlMaXN0ID0gW107XHJcblxyXG4gIC8vQ29uZGl0aW9uVHlwZVJlcXVpcmVkTGlzdHNcclxuICBjb25kaXRpb25MSFNXRlZhcmlhYmxlTGlzdCA9IFtdO1xyXG4gIGNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0ID0gW107XHJcbiAgY29uZGl0aW9uUkhTVHlwZUxpc3QgPSBbXTtcclxuICBjb25kaXRpb25MaXN0ID0gW107XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB3b3JrZmxvd0FjdGl2aXR5U2VydmljZTogV29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UsIHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5hY3Rpdml0eUlEID0gcGFyYW1zWydhY3Rpdml0eWlkJ107XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFdvcmtmbG93QWN0aXZpdHlcIik7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV29ya0Zsb3dzXCIpLCBwYXRoOiAnL0FkbWluL1dvcmtmbG93cy93b3JrZmxvdycsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICAvL0luaXRpYWxpemUgZWRpdCBtb2RlbCBhbmQgcmVxdWlyZWQgRERMc1xyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgdGhpcy53b3JrZmxvd0FjdGl2aXR5U2VydmljZS5nZXRFZGl0V29ya0Zsb3dBY3Rpdml0eURhdGEodGhpcy5hY3Rpdml0eUlEKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5hY3Rpdml0eU1vZGVsID0gcmVzdWx0T2JqLm1vZGVsO1xyXG4gICAgICB2YXIgbGlzdCA9IHJlc3VsdE9iai5saXN0O1xyXG4gICAgICB0aGlzLkFjdGl2aXR5VHlwZUxpc3QgPSByZXN1bHRPYmouYWN0aXZpdHlMaXN0O1xyXG4gICAgICB0aGlzLm5leHRBY3Rpdml0eUxpc3QgPSBsaXN0LmFjdGl2aXRpZXM7XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlSUQgPSB0aGlzLmFjdGl2aXR5TW9kZWwuYWN0aXZpdHlUeXBlSXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHRoaXMuaXNQdWJsaXNoZWQgPSB0aGlzLmFjdGl2aXR5TW9kZWwuaXNQdWJsaXNoZWQ7XHJcbiAgICAgIHRoaXMudmVyc2lvbklEID0gdGhpcy5hY3Rpdml0eU1vZGVsLnZlcnNpb25JRF9HVUlEO1xyXG5cclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXHJcbiAgICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0V0ZBY3Rpdml0eU1vZGVsO1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0V0ZBY3Rpdml0eUZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMuT25TdWNjZXNzSGFuZGxlciA9IHRoaXMub25FZGl0U3VjY2VzcztcclxuXHJcbiAgICAgIGxldCBuYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgbmFtZS5FbmdsaXNoID0gdGhpcy5hY3Rpdml0eU1vZGVsLm5hbWUuZW5nbGlzaDtcclxuICAgICAgbmFtZS5BcmFiaWMgPSB0aGlzLmFjdGl2aXR5TW9kZWwubmFtZS5hcmFiaWM7XHJcbiAgICAgIHRoaXMubmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLm5hbWUuTmFtZSA9IFwibmFtZVwiO1xyXG4gICAgICB0aGlzLm5hbWUuQXJhYmljTGFiZWxLZXkgPSBcIk5hbWVJbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLm5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMubmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5uYW1lLlZhbHVlID0gbmFtZTtcclxuICAgICAgdGhpcy5uYW1lLk1heExlbmd0aCA9IDI1NTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lc1Jlc3VsdDogYW55ID0gdGhpcy5nZXRBY3Rpdml0eU91dGNvbWVzT3B0aW9ucyh0aGlzLmFjdGl2aXR5TW9kZWwub3V0Y29tZXMsIHRoaXMuaXNQdWJsaXNoZWQpO1xyXG4gICAgICB0aGlzLm91dGNvbWVzT3B0aW9ucyA9IG91dGNvbWVzUmVzdWx0WzBdO1xyXG4gICAgICB0aGlzLm91dGNvbWVzQ291bnQgPSBvdXRjb21lc1Jlc3VsdFsxXTtcclxuXHJcbiAgICAgIHRoaXMuc2hvd0FjdGl2aXR5VHlwZSA9IGZhbHNlO1xyXG5cclxuICAgICAgaWYgKHRoaXMuaXNQdWJsaXNoZWQpIHtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMuYWN0aXZpdHlUeXBlSUQpIHtcclxuICAgICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkFwcHJvdmFsOlxyXG4gICAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQWN0aW9uOlxyXG4gICAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuUGVyY2VudGFnZVRhc2s6XHJcbiAgICAgICAgICAgIHRoaXMudGFza1R5cGVMaXN0ID0gbGlzdC50YXNrcztcclxuICAgICAgICAgICAgbGV0IHRhc2tOYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgICAgICAgdGFza05hbWUuRW5nbGlzaCA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrTmFtZS5lbmdsaXNoO1xyXG4gICAgICAgICAgICB0YXNrTmFtZS5BcmFiaWMgPSB0aGlzLmFjdGl2aXR5TW9kZWwudGFza05hbWUuYXJhYmljO1xyXG5cclxuICAgICAgICAgICAgbGV0IHRhc2tEZXNjcmlwdGlvbiA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgICAgICAgIHRhc2tEZXNjcmlwdGlvbi5FbmdsaXNoID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tEZXNjcmlwdGlvbi5lbmdsaXNoO1xyXG4gICAgICAgICAgICB0YXNrRGVzY3JpcHRpb24uQXJhYmljID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tEZXNjcmlwdGlvbi5hcmFiaWM7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5OYW1lID0gXCJkeW5hbWljVGFza05hbWVcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuQXJhYmljTGFiZWxLZXkgPSBcIlRhc2tOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJUYXNrTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5WYWx1ZSA9IHRhc2tOYW1lO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5OYW1lID0gXCJkeW5hbWljVGFza0Rlc2NyaXB0aW9uXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiVGFza0Rlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uLkVuZ2xpc2hMYWJlbEtleSA9IFwiVGFza0Rlc2NyaXB0aW9uSW5FbmdsaXNoXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5WYWx1ZSA9IHRhc2tEZXNjcmlwdGlvbjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uLk1heExlbmd0aCA9IDI1NTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5OYW1lID0gXCJkeW5hbWljVGFza1VSTFwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLkxhYmVsS2V5ID0gXCJUYXNrVVJMXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLlZhbHVlID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tVUkw7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuTWF4TGVuZ3RoID0gMjA4MztcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5OYW1lID0gXCJkeW5hbWljVGFza1R5cGVcIlxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5MYWJlbEtleSA9IFwiVGFza1R5cGVcIlxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5EYXRhU291cmNlID0gdGhpcy50YXNrVHlwZUxpc3RcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuU2VsZWN0ZWRJdGVtcyA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrQ29ycmxUeXBlSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuTmFtZSA9IFwiZHluYW1pY0NhbkNvbXBsZXRlXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLkxhYmVsS2V5ID0gXCJDYW5Db21wbGV0ZUZyb21UTUVcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLlZhbHVlID0gdGhpcy5hY3Rpdml0eU1vZGVsLmNhbkNvbXBsZXRlRnJvbVRNRTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0R5bmFtaWNDb250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQ29uZGl0aW9uOlxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU1dGVmFyaWFibGVMaXN0ID0gbGlzdC53ZlZhcmlhYmxlcztcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdCA9IGxpc3Qud2ZWYXJpYWJsZXM7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZUxpc3QgPSBsaXN0LnJoc1R5cGVzO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxpc3QgPSBsaXN0LmNvbmRpdGlvbnM7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvbkxIU0Ryb3BEb3duXCJcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25MSFNXRlZhcmlhYmxlTGlzdFxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwubGhzVmFyaWFibGVJRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvbnNEcm9wRG93blwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIkNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxpc3RcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwub3BlcmF0b3JUeXBlSXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uUkhTVHlwZURyb3BEb3duXCJcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25SSFNUeXBlTGlzdFxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uU2VsZWN0ZWRJdGVtcyA9IHRoaXMuYWN0aXZpdHlNb2RlbC5yaHNUeXBlSXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZpdHlNb2RlbC5SSFNUeXBlSXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCkgPT0gUmlnaHRoYW5kc2lkZXR5cGUuVmFyaWFibGUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uUkhTRHJvcERvd25cIlxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5TZWxlY3RlZEl0ZW1zID0gdGhpcy5hY3Rpdml0eU1vZGVsLnJoc1ZhcmlhYmxlSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuTmFtZSA9IFwiY29uZGl0aW9uUkhTVmFsdWVcIjtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5QbGFjZWhvbGRlciA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuVmFsdWUgPSB0aGlzLmFjdGl2aXR5TW9kZWwucmhzVmFsdWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5NYXhMZW5ndGggPSA1MTI7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5zaG93Q29uZGl0aW9uQ29udHJvbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnN5c05hbWUuTmFtZSA9IFwic3lzTmFtZVwiO1xyXG4gICAgICAgIHRoaXMuc3lzTmFtZS5MYWJlbEtleSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgICAgIHRoaXMuc3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5zeXNOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc3lzTmFtZS5WYWx1ZSA9IHRoaXMuYWN0aXZpdHlNb2RlbC5zeXNOYW1lO1xyXG4gICAgICAgIHRoaXMuc3lzTmFtZS5NYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2aXR5VHlwZUlEICE9IEFjdGl2aXR5VHlwZS5TdGFydCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93QWN0aXZpdHlUeXBlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5VHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLk5hbWUgPSBcImFjdGl2aXR5VHlwZVwiXHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5VHlwZS5MYWJlbEtleSA9IFwiQWN0aXZpdHlUeXBlXCJcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLkRhdGFTb3VyY2UgPSB0aGlzLkFjdGl2aXR5VHlwZUxpc3RcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5VHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5VHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5VHlwZUlEO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3dpdGNoICh0aGlzLmFjdGl2aXR5VHlwZUlEKSB7XHJcbiAgICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5BcHByb3ZhbDpcclxuICAgICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkFjdGlvbjpcclxuICAgICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLlBlcmNlbnRhZ2VUYXNrOlxyXG4gICAgICAgICAgICB0aGlzLnRhc2tUeXBlTGlzdCA9IGxpc3QudGFza3M7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50VHlwZXM7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnREYXRhTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50RGF0YTtcclxuXHJcbiAgICAgICAgICAgIGxldCB0YXNrTmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgICAgICAgIHRhc2tOYW1lLkVuZ2xpc2ggPSB0aGlzLmFjdGl2aXR5TW9kZWwudGFza05hbWUuZW5nbGlzaDtcclxuICAgICAgICAgICAgdGFza05hbWUuQXJhYmljID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tOYW1lLmFyYWJpYztcclxuXHJcbiAgICAgICAgICAgIGxldCB0YXNrRGVzY3JpcHRpb24gPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICAgICAgICB0YXNrRGVzY3JpcHRpb24uRW5nbGlzaCA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrRGVzY3JpcHRpb24uZW5nbGlzaDtcclxuICAgICAgICAgICAgdGFza0Rlc2NyaXB0aW9uLkFyYWJpYyA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrRGVzY3JpcHRpb24uYXJhYmljO1xyXG4gICAgICAgICAgICAvL0luaXRpYWxpemUgcmVxdWlyZWQgY29udHJvbHMgZm9yIGFwcHJvdmFsXHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLk5hbWUgPSBcInBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuTGFiZWxLZXkgPSBcIlBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuRGF0YVNvdXJjZSA9IHRoaXMucGFydGljaXBhbnRUeXBlTGlzdFxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwucGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ0xpc3Q7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5hY3Rpdml0eU1vZGVsLnBhcnRpY2lwYW50VHlwZUl0ZW1JRHNTdHJpbmdMaXN0LmluY2x1ZGVzKFBhcnRpY2lwYW50VHlwZS5QZXJtaXNzaW9uU2V0KSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0Lk5hbWUgPSBcInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiXHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuTGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRcIlxyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LkRhdGFTb3VyY2UgPSB0aGlzLnBhcnRpY2lwYW50RGF0YUxpc3RcclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuU2VsZWN0ZWRJdGVtcyA9IHRoaXMuYWN0aXZpdHlNb2RlbC5wYXJ0aWNpcGFudFBlcm1zZXRzSURzU3RyaW5nO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd1BhcnRpY2lwYW50UGVybXNzaW9uU2V0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuTmFtZSA9IFwiZHluYW1pY1Rhc2tOYW1lXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJUYXNrTmFtZUluQXJhYmljXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiVGFza05hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuVmFsdWUgPSB0YXNrTmFtZTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuTWF4TGVuZ3RoID0gMjU1O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uTmFtZSA9IFwiZHluYW1pY1Rhc2tEZXNjcmlwdGlvblwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uQXJhYmljTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluQXJhYmljXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uVmFsdWUgPSB0YXNrRGVzY3JpcHRpb247XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuTmFtZSA9IFwiZHluYW1pY1Rhc2tVUkxcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5MYWJlbEtleSA9IFwiVGFza1VSTFwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5WYWx1ZSA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrVVJMO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLk1heExlbmd0aCA9IDIwODM7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuTmFtZSA9IFwiZHluYW1pY1Rhc2tUeXBlXCJcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuTGFiZWxLZXkgPSBcIlRhc2tUeXBlXCJcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuRGF0YVNvdXJjZSA9IHRoaXMudGFza1R5cGVMaXN0XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwudGFza0NvcnJsVHlwZUlEPy50b1N0cmluZygpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLk5hbWUgPSBcImR5bmFtaWNDYW5Db21wbGV0ZVwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5MYWJlbEtleSA9IFwiQ2FuQ29tcGxldGVGcm9tVE1FXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5WYWx1ZSA9IHRoaXMuYWN0aXZpdHlNb2RlbC5jYW5Db21wbGV0ZUZyb21UTUU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNob3dEeW5hbWljQ29udHJvbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5TdGFydDpcclxuICAgICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkVtYWlsOlxyXG4gICAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuU2xlZXA6XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2aXR5VHlwZUlEID09IEFjdGl2aXR5VHlwZS5FbWFpbCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50VHlwZXM7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0ID0gbGlzdC5wYXJ0aWNpcGFudHMucGFydGljaXBhbnREYXRhO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLk5hbWUgPSBcInBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5MYWJlbEtleSA9IFwiUGFydGljaXBhbnRUeXBlc1wiXHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLkRhdGFTb3VyY2UgPSB0aGlzLnBhcnRpY2lwYW50VHlwZUxpc3RcclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwucGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ0xpc3RcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZpdHlNb2RlbC5wYXJ0aWNpcGFudFR5cGVJdGVtSURzU3RyaW5nTGlzdC5pbmNsdWRlcyhQYXJ0aWNpcGFudFR5cGUuUGVybWlzc2lvblNldCkpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0Lk5hbWUgPSBcInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5MYWJlbEtleSA9IFwiUGVybWlzc2lvblNldFwiXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5EYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwucGFydGljaXBhbnRQZXJtc2V0c0lEc1N0cmluZztcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1BhcnRpY2lwYW50UGVybXNzaW9uU2V0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRDb250YWluZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBuYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgICAgICAgbmFtZS5BcmFiaWMgPSB0aGlzLmFjdGl2aXR5TW9kZWwubm9ybWFsT3V0Y29tZU5hbWUuYXJhYmljO1xyXG4gICAgICAgICAgICBuYW1lLkVuZ2xpc2ggPSB0aGlzLmFjdGl2aXR5TW9kZWwubm9ybWFsT3V0Y29tZU5hbWUuZW5nbGlzaDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5OYW1lID0gXCJzdGF0aWNPdXRjb21lTmFtZVwiO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJPdXRjb21lTmFtZUluQXJhYmljXCI7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJPdXRjb21lTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLlZhbHVlID0gbmFtZTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuTmFtZSA9IFwic3RhdGljT3V0Y29tZVN5c05hbWVcIjtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5MYWJlbEtleSA9IFwiRGVjaXNpb25TeXNOYW1lXCI7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLlZhbHVlID0gdGhpcy5hY3Rpdml0eU1vZGVsLm91dGNvbWVTeXNOYW1lO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLk1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5Lk5hbWUgPSBcInN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHlcIlxyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuTGFiZWxLZXkgPSBcIk5leHRBY3Rpdml0eVwiXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5EYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5TZWxlY3RlZEl0ZW1zID0gdGhpcy5hY3Rpdml0eU1vZGVsLm5leHRBY3Rpdml0eUlEX0dVSUQ/LnRvTG93ZXJDYXNlKClcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuTmFtZSA9IFwic3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnRcIjtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5MYWJlbEtleSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50LlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50LlZhbHVlID0gdGhpcy5hY3Rpdml0eU1vZGVsLmNhbkFkZENvbW1lbnQ7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNob3dTdGF0aWNDb250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQ29uZGl0aW9uOlxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU1dGVmFyaWFibGVMaXN0ID0gbGlzdC53ZlZhcmlhYmxlcztcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdCA9IGxpc3Qud2ZWYXJpYWJsZXM7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZUxpc3QgPSBsaXN0LnJoc1R5cGVzO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxpc3QgPSBsaXN0LmNvbmRpdGlvbnM7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvbkxIU0Ryb3BEb3duXCJcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25MSFNXRlZhcmlhYmxlTGlzdFxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwubGhzVmFyaWFibGVJRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvbnNEcm9wRG93blwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIkNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxpc3RcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwub3BlcmF0b3JUeXBlSXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKClcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25SSFNUeXBlRHJvcERvd25cIlxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5TZWxlY3RlZEl0ZW1zID0gdGhpcy5hY3Rpdml0eU1vZGVsLnJoc1R5cGVJdGVtSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2aXR5TW9kZWwucmhzVHlwZUl0ZW1JRF9HVUlEPy50b0xvd2VyQ2FzZSgpID09IFJpZ2h0aGFuZHNpZGV0eXBlLlZhcmlhYmxlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvblJIU0Ryb3BEb3duXCJcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLlBsYWNlaG9sZGVyID0gXCJXb3JrZmxvd1ZhcmlhYmxlc1wiXHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdFxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uU2VsZWN0ZWRJdGVtcyA9IHRoaXMuYWN0aXZpdHlNb2RlbC5yaHNWYXJpYWJsZUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLk5hbWUgPSBcImNvbmRpdGlvblJIU1ZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuUGxhY2Vob2xkZXIgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLlZhbHVlID0gdGhpcy5hY3Rpdml0eU1vZGVsLnJoc1ZhbHVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuTWF4TGVuZ3RoID0gNTEyO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaG93Q29uZGl0aW9uQ29udHJvbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc0VkaXRGb3JtTG9hZGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9FZGl0IGZ1bmN0aW9uc1xyXG4gIGdldEVkaXRXRkFjdGl2aXR5TW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIGxldCBlZGl0TW9kZWwgPSBuZXcgV0ZBY3Rpdml0eU1vZGVsKCk7XHJcbiAgICBlZGl0TW9kZWwuSURfR1VJRCA9IHRoaXMuYWN0aXZpdHlJRDtcclxuICAgIGVkaXRNb2RlbC5OYW1lLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5uYW1lLkVuZ2xpc2g7XHJcbiAgICBlZGl0TW9kZWwuTmFtZS5BcmFiaWMgPSBSZXN1bHRNb2RlbC5uYW1lLkFyYWJpYztcclxuICAgIGVkaXRNb2RlbC5WZXJzaW9uSURfR1VJRCA9IHRoaXMudmVyc2lvbklEO1xyXG4gICAgZWRpdE1vZGVsLkFjdGl2aXR5VHlwZUl0ZW1JRF9HVUlEID0gdGhpcy5hY3Rpdml0eVR5cGVJRDtcclxuICAgIGVkaXRNb2RlbC5TeXNOYW1lID0gUmVzdWx0TW9kZWwuc3lzTmFtZVxyXG5cclxuICAgIC8vSWYgcGFydGljaXBhbnQgZXhpc3RzXHJcbiAgICBpZiAoUmVzdWx0TW9kZWwucGFydGljaXBhbnRUeXBlcyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgZWRpdE1vZGVsLlBhcnRpY2lwYW50RFRPID0gbmV3IFBhcnRpY2lwYW50TW9kZWwoKTtcclxuICAgICAgZWRpdE1vZGVsLlBhcnRpY2lwYW50RFRPID0gbmV3IFBhcnRpY2lwYW50TW9kZWwoKTtcclxuICAgICAgZWRpdE1vZGVsLlBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRHNTdHJpbmcgPSBSZXN1bHRNb2RlbC5wYXJ0aWNpcGFudFR5cGVzLnRvU3RyaW5nKCk7XHJcbiAgICAgIGlmIChSZXN1bHRNb2RlbC5wYXJ0aWNpcGFudFR5cGVzLmluY2x1ZGVzKFBhcnRpY2lwYW50VHlwZS5QZXJtaXNzaW9uU2V0KSkge1xyXG4gICAgICAgIGVkaXRNb2RlbC5QYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nID0gUmVzdWx0TW9kZWwucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LnRvU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHN3aXRjaCAodGhpcy5hY3Rpdml0eVR5cGVJRCkge1xyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5BcHByb3ZhbDpcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQWN0aW9uOlxyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5QZXJjZW50YWdlVGFzazpcclxuICAgICAgICBlZGl0TW9kZWwuVGFza05hbWUuRW5nbGlzaCA9IFJlc3VsdE1vZGVsLmR5bmFtaWNUYXNrTmFtZS5FbmdsaXNoO1xyXG4gICAgICAgIGVkaXRNb2RlbC5UYXNrTmFtZS5BcmFiaWMgPSBSZXN1bHRNb2RlbC5keW5hbWljVGFza05hbWUuQXJhYmljO1xyXG4gICAgICAgIGVkaXRNb2RlbC5UYXNrRGVzY3JpcHRpb24uRW5nbGlzaCA9IFJlc3VsdE1vZGVsLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uRW5nbGlzaDtcclxuICAgICAgICBlZGl0TW9kZWwuVGFza0Rlc2NyaXB0aW9uLkFyYWJpYyA9IFJlc3VsdE1vZGVsLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uQXJhYmljO1xyXG4gICAgICAgIGVkaXRNb2RlbC5UYXNrVVJMID0gUmVzdWx0TW9kZWwuZHluYW1pY1Rhc2tVUkw7XHJcbiAgICAgICAgZWRpdE1vZGVsLlRhc2tDb3JybFR5cGVJRCA9IFJlc3VsdE1vZGVsLmR5bmFtaWNUYXNrVHlwZSAhPSBudWxsID8gTnVtYmVyKFJlc3VsdE1vZGVsLmR5bmFtaWNUYXNrVHlwZSkgOiBudWxsO1xyXG4gICAgICAgIGVkaXRNb2RlbC5DYW5Db21wbGV0ZUZyb21UTUUgPSBSZXN1bHRNb2RlbC5keW5hbWljQ2FuQ29tcGxldGU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLlN0YXJ0OlxyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5FbWFpbDpcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuU2xlZXA6XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzUHVibGlzaGVkKSB7XHJcbiAgICAgICAgICBlZGl0TW9kZWwuTm9ybWFsT3V0Y29tZU5hbWUuRW5nbGlzaCA9IFJlc3VsdE1vZGVsLnN0YXRpY091dGNvbWVOYW1lLkVuZ2xpc2g7XHJcbiAgICAgICAgICBlZGl0TW9kZWwuTm9ybWFsT3V0Y29tZU5hbWUuQXJhYmljID0gUmVzdWx0TW9kZWwuc3RhdGljT3V0Y29tZU5hbWUuQXJhYmljO1xyXG4gICAgICAgICAgZWRpdE1vZGVsLk91dGNvbWVTeXNOYW1lID0gUmVzdWx0TW9kZWwuc3RhdGljT3V0Y29tZVN5c05hbWU7XHJcbiAgICAgICAgICBlZGl0TW9kZWwuTmV4dEFjdGl2aXR5SURfR1VJRCA9IFJlc3VsdE1vZGVsLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHk7XHJcbiAgICAgICAgICBlZGl0TW9kZWwuQ2FuQWRkQ29tbWVudCA9IFJlc3VsdE1vZGVsLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQ29uZGl0aW9uOlxyXG4gICAgICAgIGVkaXRNb2RlbC5MSFNWYXJpYWJsZUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5jb25kaXRpb25MSFNEcm9wRG93bjtcclxuICAgICAgICBlZGl0TW9kZWwuUkhTVmFyaWFibGVJRF9HVUlEID0gUmVzdWx0TW9kZWwuY29uZGl0aW9uUkhTRHJvcERvd247XHJcbiAgICAgICAgZWRpdE1vZGVsLlJIU1R5cGVJdGVtSURfR1VJRCA9IFJlc3VsdE1vZGVsLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93blxyXG4gICAgICAgIGVkaXRNb2RlbC5PcGVyYXRvclR5cGVJdGVtSURfR1VJRCA9IFJlc3VsdE1vZGVsLmNvbmRpdGlvbnNEcm9wRG93blxyXG4gICAgICAgIGVkaXRNb2RlbC5SSFNWYWx1ZSA9IFJlc3VsdE1vZGVsLmNvbmRpdGlvblJIU1ZhbHVlICE9IHVuZGVmaW5lZCA/IFJlc3VsdE1vZGVsLmNvbmRpdGlvblJIU1ZhbHVlIDogbnVsbDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIC8vU2V0IE91dGNvbWVzIChkeW5hbWljLGNvbmRpdGlvbiB0eXBlcylcclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5vdXRjb21lc0NvdW50OyBqKyspIHtcclxuICAgICAgbGV0IG91dGNvbWVJRCA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZUlEXCIgKyBqXTtcclxuICAgICAgaWYgKG91dGNvbWVJRCA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZU5hbWUgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVOYW1lXCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lU3lzTmFtZTogc3RyaW5nO1xyXG4gICAgICBsZXQgb3V0Q29tZUNhbkVkaXRTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lQ2FuRWRpdFN5c05hbWVcIiArIGpdO1xyXG4gICAgICBpZiAob3V0Q29tZUNhbkVkaXRTeXNOYW1lKVxyXG4gICAgICAgIG91dGNvbWVTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lRGVjaXNpb25TeXNOYW1lXCIgKyBqXTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIG91dGNvbWVTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVBY3Rpdml0eSA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzXCIgKyBqXTtcclxuICAgICAgbGV0IG91dGNvbWVDYW5BZGRDb21tZW50ID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lQ2FuQWRkQ29tbWVudFwiICsgal07XHJcbiAgICAgIGxldCBhY3Rpdml0eU91dGNvbWU6IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwgPSBuZXcgV0ZBY3Rpdml0eU91dGNvbWVNb2RlbCgpO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuSURfR1VJRCA9IG91dGNvbWVJRDtcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLk5hbWVFTiA9IG91dGNvbWVOYW1lLkVuZ2xpc2g7XHJcbiAgICAgIGFjdGl2aXR5T3V0Y29tZS5OYW1lQVIgPSBvdXRjb21lTmFtZS5BcmFiaWM7XHJcbiAgICAgIGFjdGl2aXR5T3V0Y29tZS5PdXRjb21lU3lzTmFtZSA9IG91dGNvbWVTeXNOYW1lO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuTmV4dEFjdGl2aXR5SURfR1VJRCA9IG91dGNvbWVBY3Rpdml0eVxyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuQ2FuQWRkQ29tbWVudCA9IG91dGNvbWVDYW5BZGRDb21tZW50O1xyXG4gICAgICBlZGl0TW9kZWwuT3V0Y29tZXMucHVzaChhY3Rpdml0eU91dGNvbWUpO1xyXG4gICAgfVxyXG4gICAgcGFyYW1BcnJheS5wdXNoKGVkaXRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcbiAgZ2V0RWRpdFdGQWN0aXZpdHlGdW5jdGlvbiA9IChlZGl0TW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgaWYgKHRoaXMuaXNQdWJsaXNoZWQpXHJcbiAgICAgIHJldHVybiB0aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLmVkaXRQdWJsaXNoZWRBY3Rpdml0eShlZGl0TW9kZWwpO1xyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gdGhpcy53b3JrZmxvd0FjdGl2aXR5U2VydmljZS5lZGl0QWN0aXZpdHkoZWRpdE1vZGVsKTtcclxuICB9XHJcbiAgb25FZGl0U3VjY2VzcyA9IChyZXN1bHQpID0+IHtcclxuICAgIHRoaXMuY2FuY2VsRWRpdCgpO1xyXG4gIH1cclxuXHJcbiAgLy9PdXRjb21lIGZ1bmN0aW9uc1xyXG4gIGdldEFjdGl2aXR5T3V0Y29tZXNPcHRpb25zKG91dENvbWVzOiBhbnlbXSwgaXNQdWJsaXNoZWQ6IGJvb2xlYW4pIHtcclxuICAgIGxldCBvdXRjb21lc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBsZXQgb3V0Y29tZXNDb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG91dENvbWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjdXJyZW50T3V0Y29tZSA9IG91dENvbWVzW2ldO1xyXG4gICAgICBsZXQgb2JqZWN0T3V0Y29tZU9wdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUlEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVJRC5OYW1lID0gXCJvdXRjb21lSURcIiArIGk7XHJcbiAgICAgIG91dGNvbWVJRC5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBvdXRjb21lSUQuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBvdXRjb21lSUQuVmFsdWUgPSBjdXJyZW50T3V0Y29tZS5pRF9HVUlEO1xyXG5cclxuICAgICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBuYW1lLkVuZ2xpc2ggPSBjdXJyZW50T3V0Y29tZS5uYW1lRU47XHJcbiAgICAgIG5hbWUuQXJhYmljID0gY3VycmVudE91dGNvbWUubmFtZUFSO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVOYW1lLk5hbWUgPSBcIm91dGNvbWVOYW1lXCIgKyBpO1xyXG4gICAgICBvdXRjb21lTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICAgIG91dGNvbWVOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICBvdXRjb21lTmFtZS5WYWx1ZSA9IG5hbWU7XHJcbiAgICAgIG91dGNvbWVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICBvdXRjb21lTmFtZS5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuTmFtZSA9IFwib3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzXCIgKyBpO1xyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuTGFiZWxLZXkgPSBcIkFjdGl2aXR5XCJcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLkRhdGFTb3VyY2UgPSB0aGlzLm5leHRBY3Rpdml0eUxpc3RcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5TZWxlY3RlZEl0ZW1zID0gY3VycmVudE91dGNvbWUubmV4dEFjdGl2aXR5SURfR1VJRD8udG9Mb3dlckNhc2UoKVxyXG5cclxuICAgICAgbGV0IG91dGNvbWVDYW5FZGl0OiBib29sZWFuO1xyXG4gICAgICBvdXRjb21lQ2FuRWRpdCA9IGN1cnJlbnRPdXRjb21lLmNhbkVkaXQ7XHJcbiAgICAgIGxldCBvdXRjb21lSGlkZGVuZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVIaWRkZW5lU3lzTmFtZVwiICsgaTtcclxuICAgICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLlZhbHVlID0gY3VycmVudE91dGNvbWUub3V0Y29tZVN5c05hbWU7XHJcbiAgICAgIGxldCBvdXRjb21lQ2FuRWRpdFN5c05hbWUgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVDYW5FZGl0U3lzTmFtZS5OYW1lID0gXCJvdXRjb21lQ2FuRWRpdFN5c05hbWVcIiArIGk7XHJcbiAgICAgIG91dGNvbWVDYW5FZGl0U3lzTmFtZS5WYWx1ZSA9IGN1cnJlbnRPdXRjb21lLmNhbkVkaXRTeXNOYW1lO1xyXG5cclxuICAgICAgaWYgKCFpc1B1Ymxpc2hlZCkge1xyXG4gICAgICAgIGxldCBvdXRjb21lRGVjaXNpb25TeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5OYW1lID0gXCJvdXRjb21lRGVjaXNpb25TeXNOYW1lXCIgKyBpO1xyXG4gICAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuTGFiZWxLZXkgPSBcIkRlY2lzaW9uU3lzTmFtZVwiO1xyXG4gICAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuVmFsdWUgPSBjdXJyZW50T3V0Y29tZS5vdXRjb21lU3lzTmFtZTtcclxuICAgICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLklzRGlzYWJsZWQgPSAhY3VycmVudE91dGNvbWUuY2FuRWRpdFN5c05hbWU7XHJcbiAgICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLk1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgICAgbGV0IG91dGNvbWVDYW5BZGRDb21tZW50ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIG91dGNvbWVDYW5BZGRDb21tZW50Lk5hbWUgPSBcIm91dGNvbWVDYW5BZGRDb21tZW50XCIgKyBpO1xyXG4gICAgICAgIG91dGNvbWVDYW5BZGRDb21tZW50LlZhbHVlID0gY3VycmVudE91dGNvbWUuY2FuQWRkQ29tbWVudDtcclxuICAgICAgICBvdXRjb21lQ2FuQWRkQ29tbWVudC5MYWJlbEtleSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG5cclxuICAgICAgICBvYmplY3RPdXRjb21lT3B0aW9ucy5wdXNoKG91dGNvbWVJRCwgb3V0Y29tZU5hbWUsIG91dGNvbWVEZWNpc2lvblN5c05hbWUsIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcywgb3V0Y29tZUNhbkFkZENvbW1lbnQsIG91dGNvbWVDYW5FZGl0LCBvdXRjb21lSGlkZGVuZVN5c05hbWUsIG91dGNvbWVDYW5FZGl0U3lzTmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIG9iamVjdE91dGNvbWVPcHRpb25zLnB1c2gob3V0Y29tZUlELCBvdXRjb21lTmFtZSwgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLCBvdXRjb21lQ2FuRWRpdCwgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLCBvdXRjb21lQ2FuRWRpdFN5c05hbWUpO1xyXG5cclxuICAgICAgb3V0Y29tZXNPcHRpb25zLnB1c2gob2JqZWN0T3V0Y29tZU9wdGlvbnMpO1xyXG4gICAgICBvdXRjb21lc0NvdW50ICs9IDE7XHJcblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtvdXRjb21lc09wdGlvbnMsIG91dGNvbWVzQ291bnRdO1xyXG4gIH1cclxuICBhZGRXRkFjdGl2aXR5T3V0Y29tZSgpIHtcclxuICAgIGxldCBpbmRleCA9IHRoaXMub3V0Y29tZXNDb3VudDtcclxuXHJcbiAgICBsZXQgb2JqZWN0T3V0Y29tZU9wdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgbGV0IG91dGNvbWVJRCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZUlELk5hbWUgPSBcIm91dGNvbWVJRFwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lSUQuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIG91dGNvbWVJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcblxyXG4gICAgbGV0IG91dGNvbWVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lTmFtZS5OYW1lID0gXCJvdXRjb21lTmFtZVwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICBvdXRjb21lTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgIG91dGNvbWVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lRGVjaXNpb25TeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5MYWJlbEtleSA9IFwiRGVjaXNpb25TeXNOYW1lXCI7XHJcbiAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgbGV0IG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5OYW1lID0gXCJvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXNcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLkxhYmVsS2V5ID0gXCJBY3Rpdml0eVwiXHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuRGF0YVNvdXJjZSA9IHRoaXMubmV4dEFjdGl2aXR5TGlzdFxyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lQ2FuQWRkQ29tbWVudCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVDYW5BZGRDb21tZW50Lk5hbWUgPSBcIm91dGNvbWVDYW5BZGRDb21tZW50XCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVDYW5BZGRDb21tZW50LkxhYmVsS2V5ID0gXCJDYW5BZGRDb21tZW50XCI7XHJcblxyXG4gICAgbGV0IG91dGNvbWVDYW5FZGl0OiBib29sZWFuO1xyXG4gICAgb3V0Y29tZUNhbkVkaXQgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lSGlkZGVuZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5OYW1lID0gXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuXHJcbiAgICBsZXQgb3V0Y29tZUNhbkVkaXRTeXNOYW1lID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVDYW5FZGl0U3lzTmFtZVwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lQ2FuRWRpdFN5c05hbWUuVmFsdWUgPSB0cnVlO1xyXG5cclxuICAgIG9iamVjdE91dGNvbWVPcHRpb25zLnB1c2gob3V0Y29tZUlELCBvdXRjb21lTmFtZSwgb3V0Y29tZURlY2lzaW9uU3lzTmFtZSwgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLCBvdXRjb21lQ2FuQWRkQ29tbWVudCxcclxuICAgICAgb3V0Y29tZUNhbkVkaXQsIG91dGNvbWVIaWRkZW5lU3lzTmFtZSwgb3V0Y29tZUNhbkVkaXRTeXNOYW1lKTtcclxuXHJcbiAgICB0aGlzLm91dGNvbWVzT3B0aW9ucy5wdXNoKG9iamVjdE91dGNvbWVPcHRpb25zKTtcclxuICAgIHRoaXMub3V0Y29tZXNDb3VudCArPSAxO1xyXG5cclxuICB9XHJcbiAgZGVsZXRlT3V0Y29tZShkZWxldGVkT3V0Y29tZTogYW55KSB7XHJcbiAgICBsZXQgZGVsZXRlZE91dGNvbWVJbmRleDogbnVtYmVyID0gdGhpcy5vdXRjb21lc09wdGlvbnMuaW5kZXhPZihkZWxldGVkT3V0Y29tZSk7XHJcbiAgICBpZiAoZGVsZXRlZE91dGNvbWVJbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5vdXRjb21lc09wdGlvbnMuc3BsaWNlKGRlbGV0ZWRPdXRjb21lSW5kZXgsIDEpO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZWRPdXRjb21lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChkZWxldGVkT3V0Y29tZVtpXS5OYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9PbiBjaGFuZ2VzIGV2ZW50c1xyXG4gIGFjdGl2aXR5VHlwZU9uQ2hhbmdlKGFjdGl2aXR5VHlwZSkge1xyXG4gICAgYWN0aXZpdHlUeXBlID0gYWN0aXZpdHlUeXBlPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgLy9SZXNldCBjb250cm9scywgb3V0Y29tZXMgYW5kIGZsYWdzXHJcbiAgICB0aGlzLnJlc2V0QWxsQWN0aXZpdHlUeXBlQ29udHJvbHMoKTtcclxuICAgIHRoaXMub3V0Y29tZXNPcHRpb25zID0gW107XHJcbiAgICB0aGlzLm91dGNvbWVzQ291bnQgPSAwO1xyXG4gICAgdGhpcy5zaG93UGFydGljaXBhbnRDb250YWluZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0R5bmFtaWNDb250cm9scyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U3RhdGljQ29udHJvbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NvbmRpdGlvbkNvbnRyb2xzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuYWN0aXZpdHlUeXBlSUQgPSBhY3Rpdml0eVR5cGU7XHJcbiAgICB0aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLmdldEFjdGl2aXR5T3V0Y29tZXModGhpcy52ZXJzaW9uSUQsIGFjdGl2aXR5VHlwZSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdmFyIHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIHZhciBtb2RlbCA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgdmFyIGxpc3QgPSByZXN1bHRPYmoubGlzdDtcclxuICAgICAgdGhpcy5uZXh0QWN0aXZpdHlMaXN0ID0gbGlzdC5hY3Rpdml0aWVzO1xyXG5cclxuICAgICAgc3dpdGNoIChhY3Rpdml0eVR5cGUpIHtcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5BcHByb3ZhbDpcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5BY3Rpb246XHJcbiAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuUGVyY2VudGFnZVRhc2s6XHJcbiAgICAgICAgICB0aGlzLnRhc2tUeXBlTGlzdCA9IGxpc3QudGFza3M7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZUxpc3QgPSBsaXN0LnBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudFR5cGVzO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0ID0gbGlzdC5wYXJ0aWNpcGFudHMucGFydGljaXBhbnREYXRhO1xyXG5cclxuICAgICAgICAgIC8vSW5pdGlhbGl6ZSByZXF1aXJlZCBjb250cm9scyBmb3IgYXBwcm92YWxcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5OYW1lID0gXCJwYXJ0aWNpcGFudFR5cGVzXCJcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5MYWJlbEtleSA9IFwiUGFydGljaXBhbnRUeXBlc1wiXHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuRGF0YVNvdXJjZSA9IHRoaXMucGFydGljaXBhbnRUeXBlTGlzdFxyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuTmFtZSA9IFwiZHluYW1pY1Rhc2tOYW1lXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiVGFza05hbWVJbkFyYWJpY1wiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJUYXNrTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuTWF4TGVuZ3RoID0gMjU1O1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5OYW1lID0gXCJkeW5hbWljVGFza0Rlc2NyaXB0aW9uXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uQXJhYmljTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluQXJhYmljXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uRW5nbGlzaExhYmVsS2V5ID0gXCJUYXNrRGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5OYW1lID0gXCJkeW5hbWljVGFza1VSTFwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5MYWJlbEtleSA9IFwiVGFza1VSTFwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLk1heExlbmd0aCA9IDIwODM7XHJcblxyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5OYW1lID0gXCJkeW5hbWljVGFza1R5cGVcIlxyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuTGFiZWxLZXkgPSBcIlRhc2tUeXBlXCJcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLkRhdGFTb3VyY2UgPSB0aGlzLnRhc2tUeXBlTGlzdFxyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuTmFtZSA9IFwiZHluYW1pY0NhbkNvbXBsZXRlXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5MYWJlbEtleSA9IFwiQ2FuQ29tcGxldGVGcm9tVE1FXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLlZhbHVlID0gbW9kZWwuY2FuQ29tcGxldGVGcm9tVE1FO1xyXG5cclxuICAgICAgICAgIGxldCBvdXRjb21lc1Jlc3VsdDogYW55ID0gdGhpcy5nZXRBY3Rpdml0eU91dGNvbWVzT3B0aW9ucyhtb2RlbC5vdXRjb21lcywgZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5vdXRjb21lc09wdGlvbnMgPSBvdXRjb21lc1Jlc3VsdFswXTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNDb3VudCA9IG91dGNvbWVzUmVzdWx0WzFdO1xyXG5cclxuICAgICAgICAgIHRoaXMuc2hvd0R5bmFtaWNDb250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5FbWFpbDpcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5TbGVlcDpcclxuICAgICAgICAgIGxldCBuYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgICAgIG5hbWUuQXJhYmljID0gbW9kZWwubm9ybWFsT3V0Y29tZU5hbWUuYXJhYmljO1xyXG4gICAgICAgICAgbmFtZS5FbmdsaXNoID0gbW9kZWwubm9ybWFsT3V0Y29tZU5hbWUuZW5nbGlzaDtcclxuXHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLk5hbWUgPSBcInN0YXRpY091dGNvbWVOYW1lXCI7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJPdXRjb21lTmFtZUluQXJhYmljXCI7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiT3V0Y29tZU5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLlZhbHVlID0gbmFtZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuTWF4TGVuZ3RoID0gMjU1O1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuTmFtZSA9IFwic3RhdGljT3V0Y29tZVN5c05hbWVcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuTGFiZWxLZXkgPSBcIkRlY2lzaW9uU3lzTmFtZVwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5NYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5Lk5hbWUgPSBcInN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHlcIlxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5LkxhYmVsS2V5ID0gXCJOZXh0QWN0aXZpdHlcIlxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5LkRhdGFTb3VyY2UgPSB0aGlzLm5leHRBY3Rpdml0eUxpc3RcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50ID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5OYW1lID0gXCJzdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5MYWJlbEtleSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuVmFsdWUgPSBtb2RlbC5jYW5BZGRDb21tZW50O1xyXG5cclxuICAgICAgICAgIHRoaXMuc2hvd1N0YXRpY0NvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkNvbmRpdGlvbjpcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3QgPSBsaXN0LndmVmFyaWFibGVzO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdCA9IGxpc3Qud2ZWYXJpYWJsZXM7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0ID0gbGlzdC5yaHNUeXBlcztcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTGlzdCA9IGxpc3QuY29uZGl0aW9ucztcclxuXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25MSFNEcm9wRG93blwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvbnNEcm9wRG93blwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiQ29uZGl0aW9uXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRSSFNUeXBlID0gdGhpcy5jb25kaXRpb25SSFNUeXBlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5Py50b0xvd2VyQ2FzZSgpID09IFJpZ2h0aGFuZHNpZGV0eXBlLlZhcmlhYmxlOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uUkhTVHlwZURyb3BEb3duXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRSSFNUeXBlO1xyXG5cclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvblJIU0Ryb3BEb3duXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiV29ya2Zsb3dWYXJpYWJsZXNcIlxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdFxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICBsZXQgY29uZGl0aW9uT3V0Y29tZXNSZXN1bHQ6IGFueSA9IHRoaXMuZ2V0QWN0aXZpdHlPdXRjb21lc09wdGlvbnMobW9kZWwub3V0Y29tZXMsIGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNPcHRpb25zID0gY29uZGl0aW9uT3V0Y29tZXNSZXN1bHRbMF07XHJcbiAgICAgICAgICB0aGlzLm91dGNvbWVzQ291bnQgPSBjb25kaXRpb25PdXRjb21lc1Jlc3VsdFsxXTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25Db250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2FuQWRkT3V0Y29tZSA9IHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID8gbW9kZWwuY2FuQWRkT3V0Y29tZSA6IGZhbHNlO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgY29uZGl0aW9uUkhTVHlwZU9uQ2hhbmdlKHR5cGUpIHtcclxuICAgIHR5cGUgPSB0eXBlPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKHR5cGUgPT0gUmlnaHRoYW5kc2lkZXR5cGUuVmFyaWFibGUpIHtcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImNvbmRpdGlvblJIU1ZhbHVlXCIpXHJcblxyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvblJIU0Ryb3BEb3duXCJcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdFxyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiY29uZGl0aW9uUkhTRHJvcERvd25cIilcclxuXHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5OYW1lID0gXCJjb25kaXRpb25SSFNWYWx1ZVwiO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuUGxhY2Vob2xkZXIgPSBcIlZhbHVlXCI7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLk1heExlbmd0aCA9IDUxMjtcclxuXHJcbiAgICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSBmYWxzZTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIHBhcnRpY2lwYW50VHlwZU9uQ2hhbmdlKHBhcnRpY2lwYW50VHlwZSkge1xyXG4gICAgcGFydGljaXBhbnRUeXBlID0gcGFydGljaXBhbnRUeXBlPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKHBhcnRpY2lwYW50VHlwZSA9PSBQYXJ0aWNpcGFudFR5cGUuUGVybWlzc2lvblNldCkge1xyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuTmFtZSA9IFwicGFydGljaXBhbnRQZXJtaXNzaW9uU2V0XCJcclxuICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuTGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRcIlxyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5EYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0XHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudFBlcm1zc2lvblNldCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiKTtcclxuICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuXHJcbiAgLy9SZXNldCB0eXBlXHJcbiAgcmVzZXRBbGxBY3Rpdml0eVR5cGVDb250cm9scygpIHtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJwYXJ0aWNpcGFudFR5cGVzXCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJwYXJ0aWNpcGFudFBlcm1pc3Npb25TZXRcIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiZHluYW1pY1Rhc2tOYW1lXCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImR5bmFtaWNUYXNrRGVzY3JpcHRpb25cIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiZHluYW1pY1Rhc2tVUkxcIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiZHluYW1pY1Rhc2tUeXBlXCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImR5bmFtaWNDYW5Db21wbGV0ZVwiKTtcclxuXHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwic3RhdGljT3V0Y29tZU5hbWVcIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwic3RhdGljT3V0Y29tZVN5c05hbWVcIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwic3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eVwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJzdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudFwiKTtcclxuXHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiY29uZGl0aW9uTEhTRHJvcERvd25cIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiY29uZGl0aW9uc0Ryb3BEb3duXCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImNvbmRpdGlvblJIU1R5cGVEcm9wRG93blwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJjb25kaXRpb25SSFNEcm9wRG93blwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJjb25kaXRpb25SSFNWYWx1ZVwiKTtcclxuXHJcbiAgICAvL1JlbW92ZSBvdXRjb21lcyBjb250cm9sc1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0udmFsdWU7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3V0Y29tZXNDb3VudDsgaSsrKSB7XHJcbiAgICAgIGxldCBvdXRjb21lSUQgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVJRFwiICsgaV07XHJcbiAgICAgIGlmIChvdXRjb21lSUQgPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVJRFwiICsgaSk7XHJcbiAgICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lTmFtZVwiICsgaSk7XHJcbiAgICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lRGVjaXNpb25TeXNOYW1lXCIgKyBpKTtcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVIaWRkZW5lU3lzTmFtZVwiICsgaSk7XHJcbiAgICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXNcIiArIGkpO1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwib3V0Y29tZUNhbkFkZENvbW1lbnRcIiArIGkpO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vQ2FuY2VsXHJcbiAgY2FuY2VsRWRpdCgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL0FkbWluL1dvcmtmbG93cy93b3JrZmxvdy8nXSk7XHJcbiAgfVxyXG5cclxuICAvL09uIGRlc3Ryb3lcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCIgKm5nSWY9XCJpc0VkaXRGb3JtTG9hZGVkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zXCI+XHJcbiAgICAgICAgPCEtLVN0YXJ0IHNoYXJlZCBjb250cm9scyBjb250YWluZXItLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwibmFtZVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiIWlzUHVibGlzaGVkXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic3lzTmFtZVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2hvd0FjdGl2aXR5VHlwZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWN0aXZpdHlUeXBlXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiIChPbkNoYW5nZSk9XCJhY3Rpdml0eVR5cGVPbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIHNoYXJlZCBjb250cm9scyBjb250YWluZXItLT5cclxuICAgICAgICA8IS0tU3RhcnQgcGFydGljaXBhbnQgY29udGFpbmVyLS0+XHJcbiAgICAgICAgPGRpdiBpZD1cInBhcnRpY2lwYW50Q29udGFpbmVyXCIgKm5nSWY9XCJzaG93UGFydGljaXBhbnRDb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJwYXJ0aWNpcGFudFR5cGVzXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiIChPbkNoYW5nZSk9XCJwYXJ0aWNpcGFudFR5cGVPbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1BhcnRpY2lwYW50UGVybXNzaW9uU2V0XCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJwYXJ0aWNpcGFudFBlcm1pc3Npb25TZXRcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIHBhcnRpY2lwYW50IGNvbnRhaW5lci0tPlxyXG4gICAgICAgIDwhLS1TdGFydCBzdGF0aWMgY29udHJvbHMtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1N0YXRpY0NvbnRyb2xzXCIgaWQ9XCJzdGF0aWNDb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwic3RhdGljT3V0Y29tZU5hbWVcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lU3lzTmFtZVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwic3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cInN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50XCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIHN0YXRpYyBjb250cm9scy0tPlxyXG4gICAgICAgIDwhLS1TdGFydCBkeW5hbWljIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dEeW5hbWljQ29udHJvbHNcIiBpZD1cImR5bmFtaWNDb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiZHluYW1pY1Rhc2tOYW1lXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhIFtvcHRpb25zXT1cImR5bmFtaWNUYXNrRGVzY3JpcHRpb25cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZHluYW1pY1Rhc2tVUkxcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImR5bmFtaWNUYXNrVHlwZVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImR5bmFtaWNDYW5Db21wbGV0ZVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLUVuZCBkeW5hbWljIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPCEtLVN0YXJ0IGNvbmRpdGlvbiBjb250cm9scy0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93Q29uZGl0aW9uQ29udHJvbHNcIiBpZD1cImNvbmRpdGlvbkNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXIgdGFibGUtdy1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJMZWZ0SGFuZFNpZGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ29uZGl0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlJpZ2h0SGFuZFNpZGVUeXBlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlJpZ2h0SGFuZFNpZGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiY29uZGl0aW9uTEhTRHJvcERvd25cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25zRHJvcERvd25cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25SSFNUeXBlRHJvcERvd25cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCIgKE9uQ2hhbmdlKT1cImNvbmRpdGlvblJIU1R5cGVPbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwic2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGU7IGVsc2UgY29uZGl0aW9uVHh0VmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiY29uZGl0aW9uUkhTRHJvcERvd25cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25kaXRpb25UeHRWYWx1ZT5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImNvbmRpdGlvblJIU1ZhbHVlXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgY29uZGl0aW9uIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPCEtLVN0YXJ0IG91dGNvbWVzIGNvbnRhaW5lci0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93T3V0Y29tZXNDb250YWluZXJcIiBpZD1cIm91dGNvbWVzQ29udGFpbmVyXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlciB0YWJsZS13LWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlY2lzaW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIiFpc1B1Ymxpc2hlZFwiIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCIhaXNQdWJsaXNoZWRcIiBjbGFzcz1cIm1pbi13LTE1MHB4XCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiIWlzUHVibGlzaGVkXCIgY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCIgKm5nSWY9XCJpc1B1Ymxpc2hlZDtlbHNlIG5vdFB1Ymxpc2hlZE91dGNvbWVzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ciAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvdXRjb21lc09wdGlvbnM7bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLUlELS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtoaWRkZW5dPVwidHJ1ZVwiIFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLU5hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tTmV4dEFjdGl2aXR5LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwib3B0aW9uWzJdXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGJvZHk+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RQdWJsaXNoZWRPdXRjb21lcz5cclxuICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3V0Y29tZXNPcHRpb25zO2xldCBpPWluZGV4O1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLUlELS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzBdXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLU5hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMV1cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVN5c05hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMl1cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0taGlkZGVuIFN5c05hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bNl1cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tY2FuIGVkaXQgU3lzTmFtZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bN11cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1OZXh0QWN0aXZpdHktLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIm9wdGlvblszXVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1DYW5BZGRDb21tZW50LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm9wdGlvbls0XVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1pZiBvdXRjb21lIENhbiBFZGl0LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwib3B0aW9uWzVdXCIgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLWxpZ2h0LWRhbmdlciBidG4tc21cIiAoY2xpY2spPVwiZGVsZXRlT3V0Y29tZShvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiY2FuQWRkT3V0Y29tZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImFkZFdGQWN0aXZpdHlPdXRjb21lKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGROZXdSZWNvcmRcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgb3V0Y29tZXMgY29udGFpbmVyLS0+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIiAoY2xpY2spPVwiY2FuY2VsRWRpdCgpXCI+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9CQlNGLUZvcm0+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import { CheckBoxOptions, ControlLayout, DropdownOptions, EnglishArabicDTO, FormOptions, InputType, MultiLingualTextAreaOptions, MultiLingualTextBoxOptions, TextBoxOptions, ToggleSlideOptions } from '@bnsights/bbsf-controls';
|
|
4
|
+
import { PageInfoService } from '../../../../_metronic/core/services/page-info.service';
|
|
5
|
+
import { ActivityType, ParticipantType, Righthandsidetype } from '../../../shared/constants';
|
|
6
|
+
import { ParticipantModel } from '../../../shared/models/ImpersonationRuleModels/ParticipantModel';
|
|
7
|
+
import { WFActivityModel } from '../../../shared/models/WorkflowModels/WFActivityModel';
|
|
8
|
+
import { WFActivityOutcomeModel } from '../../../shared/models/WorkflowModels/WFActivityOutcomeModel';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../../../shared/Services/WorkflowActivityService.service";
|
|
11
|
+
import * as i2 from "../../../../_metronic/core/services/page-info.service";
|
|
12
|
+
import * as i3 from "@bnsights/bbsf-utilities";
|
|
13
|
+
import * as i4 from "@angular/router";
|
|
14
|
+
import * as i5 from "@angular/common";
|
|
15
|
+
import * as i6 from "@bnsights/bbsf-controls";
|
|
16
|
+
export class WorkflowActivityEditComponent {
|
|
17
|
+
constructor(workflowActivityService, pageInfoService, utilityService, activatedRoute, router, requestHandlerService, bbsfTranslateService) {
|
|
18
|
+
this.workflowActivityService = workflowActivityService;
|
|
19
|
+
this.pageInfoService = pageInfoService;
|
|
20
|
+
this.utilityService = utilityService;
|
|
21
|
+
this.activatedRoute = activatedRoute;
|
|
22
|
+
this.router = router;
|
|
23
|
+
this.requestHandlerService = requestHandlerService;
|
|
24
|
+
this.bbsfTranslateService = bbsfTranslateService;
|
|
25
|
+
//Page requirements
|
|
26
|
+
this.isEditFormLoaded = false;
|
|
27
|
+
//Edit Activity shared controls
|
|
28
|
+
this.editworkflowActivityForm = new FormGroup({});
|
|
29
|
+
this.editworkflowActivityFormOptions = new FormOptions;
|
|
30
|
+
this.showActivityType = false;
|
|
31
|
+
//Shared Participant type and data (Non Published only)
|
|
32
|
+
this.showParticipantContainer = false;
|
|
33
|
+
this.showParticipantPermssionSet = false;
|
|
34
|
+
//Dynamic Types Controls //(Approval,Action,Percentage)
|
|
35
|
+
this.showDynamicControls = false;
|
|
36
|
+
//Static types controls (Email,Sleep) (Non published only)
|
|
37
|
+
//Email Type Controls //+ initialize participant
|
|
38
|
+
this.showStaticControls = false;
|
|
39
|
+
//Condition type controls
|
|
40
|
+
this.showConditionControls = false;
|
|
41
|
+
this.showConditionRHSWFVariable = false;
|
|
42
|
+
//Shared required lists
|
|
43
|
+
this.ActivityTypeList = [];
|
|
44
|
+
//Outcomes (dynamic,condition)
|
|
45
|
+
this.outcomesOptions = [];
|
|
46
|
+
this.outcomesCount = 0;
|
|
47
|
+
this.showOutcomesContainer = false;
|
|
48
|
+
//RequiredLists
|
|
49
|
+
this.taskTypeList = [];
|
|
50
|
+
this.participantTypeList = [];
|
|
51
|
+
this.participantDataList = [];
|
|
52
|
+
this.nextActivityList = [];
|
|
53
|
+
//ConditionTypeRequiredLists
|
|
54
|
+
this.conditionLHSWFVariableList = [];
|
|
55
|
+
this.conditionRHSWFVariableList = [];
|
|
56
|
+
this.conditionRHSTypeList = [];
|
|
57
|
+
this.conditionList = [];
|
|
58
|
+
//Edit functions
|
|
59
|
+
this.getEditWFActivityModel = () => {
|
|
60
|
+
let paramArray = [];
|
|
61
|
+
let ResultModel = this.editworkflowActivityForm.value;
|
|
62
|
+
let editModel = new WFActivityModel();
|
|
63
|
+
editModel.ID_GUID = this.activityID;
|
|
64
|
+
editModel.Name.English = ResultModel.name.English;
|
|
65
|
+
editModel.Name.Arabic = ResultModel.name.Arabic;
|
|
66
|
+
editModel.VersionID_GUID = this.versionID;
|
|
67
|
+
editModel.ActivityTypeItemID_GUID = this.activityTypeID;
|
|
68
|
+
editModel.SysName = ResultModel.sysName;
|
|
69
|
+
//If participant exists
|
|
70
|
+
if (ResultModel.participantTypes != undefined) {
|
|
71
|
+
editModel.ParticipantDTO = new ParticipantModel();
|
|
72
|
+
editModel.ParticipantDTO = new ParticipantModel();
|
|
73
|
+
editModel.ParticipantDTO.ParticipantTypeItemIDsString = ResultModel.participantTypes.toString();
|
|
74
|
+
if (ResultModel.participantTypes.includes(ParticipantType.PermissionSet)) {
|
|
75
|
+
editModel.ParticipantDTO.PermissionSetIDsString = ResultModel.participantPermissionSet.toString();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
switch (this.activityTypeID) {
|
|
79
|
+
case ActivityType.Approval:
|
|
80
|
+
case ActivityType.Action:
|
|
81
|
+
case ActivityType.PercentageTask:
|
|
82
|
+
editModel.TaskName.English = ResultModel.dynamicTaskName.English;
|
|
83
|
+
editModel.TaskName.Arabic = ResultModel.dynamicTaskName.Arabic;
|
|
84
|
+
editModel.TaskDescription.English = ResultModel.dynamicTaskDescription.English;
|
|
85
|
+
editModel.TaskDescription.Arabic = ResultModel.dynamicTaskDescription.Arabic;
|
|
86
|
+
editModel.TaskURL = ResultModel.dynamicTaskURL;
|
|
87
|
+
editModel.TaskCorrlTypeID = ResultModel.dynamicTaskType != null ? Number(ResultModel.dynamicTaskType) : null;
|
|
88
|
+
editModel.CanCompleteFromTME = ResultModel.dynamicCanComplete;
|
|
89
|
+
break;
|
|
90
|
+
case ActivityType.Start:
|
|
91
|
+
case ActivityType.Email:
|
|
92
|
+
case ActivityType.Sleep:
|
|
93
|
+
if (!this.isPublished) {
|
|
94
|
+
editModel.NormalOutcomeName.English = ResultModel.staticOutcomeName.English;
|
|
95
|
+
editModel.NormalOutcomeName.Arabic = ResultModel.staticOutcomeName.Arabic;
|
|
96
|
+
editModel.OutcomeSysName = ResultModel.staticOutcomeSysName;
|
|
97
|
+
editModel.NextActivityID_GUID = ResultModel.staticOutcomeNextActivity;
|
|
98
|
+
editModel.CanAddComment = ResultModel.staticOutcomeCanAddComment;
|
|
99
|
+
}
|
|
100
|
+
break;
|
|
101
|
+
case ActivityType.Condition:
|
|
102
|
+
editModel.LHSVariableID_GUID = ResultModel.conditionLHSDropDown;
|
|
103
|
+
editModel.RHSVariableID_GUID = ResultModel.conditionRHSDropDown;
|
|
104
|
+
editModel.RHSTypeItemID_GUID = ResultModel.conditionRHSTypeDropDown;
|
|
105
|
+
editModel.OperatorTypeItemID_GUID = ResultModel.conditionsDropDown;
|
|
106
|
+
editModel.RHSValue = ResultModel.conditionRHSValue != undefined ? ResultModel.conditionRHSValue : null;
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
//Set Outcomes (dynamic,condition types)
|
|
110
|
+
for (let j = 0; j < this.outcomesCount; j++) {
|
|
111
|
+
let outcomeID = ResultModel["outcomeID" + j];
|
|
112
|
+
if (outcomeID == undefined)
|
|
113
|
+
continue;
|
|
114
|
+
let outcomeName = ResultModel["outcomeName" + j];
|
|
115
|
+
let outcomeSysName;
|
|
116
|
+
let outComeCanEditSysName = ResultModel["outcomeCanEditSysName" + j];
|
|
117
|
+
if (outComeCanEditSysName)
|
|
118
|
+
outcomeSysName = ResultModel["outcomeDecisionSysName" + j];
|
|
119
|
+
else
|
|
120
|
+
outcomeSysName = ResultModel["outcomeHiddeneSysName" + j];
|
|
121
|
+
let outcomeActivity = ResultModel["outcomeNextActivityTypes" + j];
|
|
122
|
+
let outcomeCanAddComment = ResultModel["outcomeCanAddComment" + j];
|
|
123
|
+
let activityOutcome = new WFActivityOutcomeModel();
|
|
124
|
+
activityOutcome.ID_GUID = outcomeID;
|
|
125
|
+
activityOutcome.NameEN = outcomeName.English;
|
|
126
|
+
activityOutcome.NameAR = outcomeName.Arabic;
|
|
127
|
+
activityOutcome.OutcomeSysName = outcomeSysName;
|
|
128
|
+
activityOutcome.NextActivityID_GUID = outcomeActivity;
|
|
129
|
+
activityOutcome.CanAddComment = outcomeCanAddComment;
|
|
130
|
+
editModel.Outcomes.push(activityOutcome);
|
|
131
|
+
}
|
|
132
|
+
paramArray.push(editModel);
|
|
133
|
+
return paramArray;
|
|
134
|
+
};
|
|
135
|
+
this.getEditWFActivityFunction = (editModel) => {
|
|
136
|
+
if (this.isPublished)
|
|
137
|
+
return this.workflowActivityService.editPublishedActivity(editModel);
|
|
138
|
+
else
|
|
139
|
+
return this.workflowActivityService.editActivity(editModel);
|
|
140
|
+
};
|
|
141
|
+
this.onEditSuccess = (result) => {
|
|
142
|
+
this.cancelEdit();
|
|
143
|
+
};
|
|
144
|
+
this.activatedRoute.params.subscribe(params => {
|
|
145
|
+
this.activityID = params['activityid'];
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
async ngOnInit() {
|
|
149
|
+
this.bbsfTranslateService.onLangChange.subscribe((event) => {
|
|
150
|
+
this.ngOnInit();
|
|
151
|
+
});
|
|
152
|
+
PageInfoService.PageTitle = this.utilityService.getResourceValue("EditWorkflowActivity");
|
|
153
|
+
PageInfoService.PageBreadcrumbs = [
|
|
154
|
+
{ title: this.utilityService.getResourceValue("Home"), path: '/Admin/Home', isSeparator: false, isActive: false },
|
|
155
|
+
{ title: '', path: '', isSeparator: true, isActive: false },
|
|
156
|
+
{ title: this.utilityService.getResourceValue("WorkFlows"), path: '/Admin/Workflows/workflow', isSeparator: false, isActive: false },
|
|
157
|
+
{ title: '', path: '', isSeparator: true, isActive: false }
|
|
158
|
+
];
|
|
159
|
+
this.pageInfoService.calculateTitle();
|
|
160
|
+
this.pageInfoService.calculateBreadcrumbs();
|
|
161
|
+
this.initializePage();
|
|
162
|
+
}
|
|
163
|
+
//Initialize edit model and required DDLs
|
|
164
|
+
initializePage() {
|
|
165
|
+
this.workflowActivityService.getEditWorkFlowActivityData(this.activityID).subscribe((result) => {
|
|
166
|
+
let resultObj = result;
|
|
167
|
+
this.activityModel = resultObj.model;
|
|
168
|
+
var list = resultObj.list;
|
|
169
|
+
this.ActivityTypeList = resultObj.activityList;
|
|
170
|
+
this.nextActivityList = list.activities;
|
|
171
|
+
this.activityTypeID = this.activityModel.activityTypeItemID_GUID?.toLowerCase();
|
|
172
|
+
this.isPublished = this.activityModel.isPublished;
|
|
173
|
+
this.versionID = this.activityModel.versionID_GUID;
|
|
174
|
+
this.editworkflowActivityForm = new FormGroup({});
|
|
175
|
+
this.editworkflowActivityFormOptions = new FormOptions();
|
|
176
|
+
this.editworkflowActivityFormOptions.FormGroup = this.editworkflowActivityForm;
|
|
177
|
+
this.editworkflowActivityFormOptions.GetModelFunction = this.getEditWFActivityModel;
|
|
178
|
+
this.editworkflowActivityFormOptions.ServiceSubmitFunction = this.getEditWFActivityFunction;
|
|
179
|
+
this.editworkflowActivityFormOptions.OnSuccessHandler = this.onEditSuccess;
|
|
180
|
+
let name = new EnglishArabicDTO();
|
|
181
|
+
name.English = this.activityModel.name.english;
|
|
182
|
+
name.Arabic = this.activityModel.name.arabic;
|
|
183
|
+
this.name = new MultiLingualTextBoxOptions();
|
|
184
|
+
this.name.Name = "name";
|
|
185
|
+
this.name.ArabicLabelKey = "NameInArabic";
|
|
186
|
+
this.name.EnglishLabelKey = "NameInEnglish";
|
|
187
|
+
this.name.IsRequired = true;
|
|
188
|
+
this.name.Value = name;
|
|
189
|
+
this.name.MaxLength = 255;
|
|
190
|
+
let outcomesResult = this.getActivityOutcomesOptions(this.activityModel.outcomes, this.isPublished);
|
|
191
|
+
this.outcomesOptions = outcomesResult[0];
|
|
192
|
+
this.outcomesCount = outcomesResult[1];
|
|
193
|
+
this.showActivityType = false;
|
|
194
|
+
if (this.isPublished) {
|
|
195
|
+
switch (this.activityTypeID) {
|
|
196
|
+
case ActivityType.Approval:
|
|
197
|
+
case ActivityType.Action:
|
|
198
|
+
case ActivityType.PercentageTask:
|
|
199
|
+
this.taskTypeList = list.tasks;
|
|
200
|
+
let taskName = new EnglishArabicDTO();
|
|
201
|
+
taskName.English = this.activityModel.taskName.english;
|
|
202
|
+
taskName.Arabic = this.activityModel.taskName.arabic;
|
|
203
|
+
let taskDescription = new EnglishArabicDTO();
|
|
204
|
+
taskDescription.English = this.activityModel.taskDescription.english;
|
|
205
|
+
taskDescription.Arabic = this.activityModel.taskDescription.arabic;
|
|
206
|
+
this.dynamicTaskName = new MultiLingualTextBoxOptions();
|
|
207
|
+
this.dynamicTaskName.Name = "dynamicTaskName";
|
|
208
|
+
this.dynamicTaskName.ArabicLabelKey = "TaskNameInArabic";
|
|
209
|
+
this.dynamicTaskName.EnglishLabelKey = "TaskNameInEnglish";
|
|
210
|
+
this.dynamicTaskName.Value = taskName;
|
|
211
|
+
this.dynamicTaskName.MaxLength = 255;
|
|
212
|
+
this.dynamicTaskDescription = new MultiLingualTextAreaOptions();
|
|
213
|
+
this.dynamicTaskDescription.Name = "dynamicTaskDescription";
|
|
214
|
+
this.dynamicTaskDescription.ArabicLabelKey = "TaskDescriptionInArabic";
|
|
215
|
+
this.dynamicTaskDescription.EnglishLabelKey = "TaskDescriptionInEnglish";
|
|
216
|
+
this.dynamicTaskDescription.Value = taskDescription;
|
|
217
|
+
this.dynamicTaskDescription.MaxLength = 255;
|
|
218
|
+
this.dynamicTaskURL = new TextBoxOptions();
|
|
219
|
+
this.dynamicTaskURL.Name = "dynamicTaskURL";
|
|
220
|
+
this.dynamicTaskURL.LabelKey = "TaskURL";
|
|
221
|
+
this.dynamicTaskURL.Type = InputType.Text;
|
|
222
|
+
this.dynamicTaskURL.Value = this.activityModel.taskURL;
|
|
223
|
+
this.dynamicTaskURL.MaxLength = 2083;
|
|
224
|
+
this.dynamicTaskType = new DropdownOptions();
|
|
225
|
+
this.dynamicTaskType.Name = "dynamicTaskType";
|
|
226
|
+
this.dynamicTaskType.LabelKey = "TaskType";
|
|
227
|
+
this.dynamicTaskType.DataSource = this.taskTypeList;
|
|
228
|
+
this.dynamicTaskType.SingleSelection = true;
|
|
229
|
+
this.dynamicTaskType.AllowSearchFilter = true;
|
|
230
|
+
this.dynamicTaskType.IsRequired = true;
|
|
231
|
+
this.dynamicTaskType.SelectedItems = this.activityModel.taskCorrlTypeID?.toLowerCase();
|
|
232
|
+
this.dynamicCanComplete = new ToggleSlideOptions();
|
|
233
|
+
this.dynamicCanComplete.Name = "dynamicCanComplete";
|
|
234
|
+
this.dynamicCanComplete.LabelKey = "CanCompleteFromTME";
|
|
235
|
+
this.dynamicCanComplete.ViewType = ControlLayout.Horizontal;
|
|
236
|
+
this.dynamicCanComplete.Value = this.activityModel.canCompleteFromTME;
|
|
237
|
+
this.showDynamicControls = true;
|
|
238
|
+
break;
|
|
239
|
+
case ActivityType.Condition:
|
|
240
|
+
this.conditionLHSWFVariableList = list.wfVariables;
|
|
241
|
+
this.conditionRHSWFVariableList = list.wfVariables;
|
|
242
|
+
this.conditionRHSTypeList = list.rhsTypes;
|
|
243
|
+
this.conditionList = list.conditions;
|
|
244
|
+
this.conditionLHSDropDown = new DropdownOptions();
|
|
245
|
+
this.conditionLHSDropDown.Name = "conditionLHSDropDown";
|
|
246
|
+
this.conditionLHSDropDown.HideLabel = true;
|
|
247
|
+
this.conditionLHSDropDown.Placeholder = "WorkflowVariables";
|
|
248
|
+
this.conditionLHSDropDown.DataSource = this.conditionLHSWFVariableList;
|
|
249
|
+
this.conditionLHSDropDown.SingleSelection = true;
|
|
250
|
+
this.conditionLHSDropDown.AllowSearchFilter = true;
|
|
251
|
+
this.conditionLHSDropDown.IsRequired = true;
|
|
252
|
+
this.conditionLHSDropDown.SelectedItems = this.activityModel.lhsVariableID_GUID?.toLowerCase();
|
|
253
|
+
this.conditionsDropDown = new DropdownOptions();
|
|
254
|
+
this.conditionsDropDown.Name = "conditionsDropDown";
|
|
255
|
+
this.conditionsDropDown.HideLabel = true;
|
|
256
|
+
this.conditionsDropDown.Placeholder = "Condition";
|
|
257
|
+
this.conditionsDropDown.DataSource = this.conditionList;
|
|
258
|
+
this.conditionsDropDown.SingleSelection = true;
|
|
259
|
+
this.conditionsDropDown.IsRequired = true;
|
|
260
|
+
this.conditionsDropDown.SelectedItems = this.activityModel.operatorTypeItemID_GUID?.toLowerCase();
|
|
261
|
+
this.conditionRHSTypeDropDown = new DropdownOptions();
|
|
262
|
+
this.conditionRHSTypeDropDown.Name = "conditionRHSTypeDropDown";
|
|
263
|
+
this.conditionRHSTypeDropDown.HideLabel = true;
|
|
264
|
+
this.conditionRHSTypeDropDown.DataSource = this.conditionRHSTypeList;
|
|
265
|
+
this.conditionRHSTypeDropDown.SingleSelection = true;
|
|
266
|
+
this.conditionRHSTypeDropDown.IsRequired = true;
|
|
267
|
+
this.conditionRHSTypeDropDown.SelectedItems = this.activityModel.rhsTypeItemID_GUID?.toLowerCase();
|
|
268
|
+
if (this.activityModel.RHSTypeItemID_GUID?.toLowerCase() == Righthandsidetype.Variable) {
|
|
269
|
+
this.conditionRHSDropDown = new DropdownOptions();
|
|
270
|
+
this.conditionRHSDropDown.Name = "conditionRHSDropDown";
|
|
271
|
+
this.conditionRHSDropDown.HideLabel = true;
|
|
272
|
+
this.conditionRHSDropDown.Placeholder = "WorkflowVariables";
|
|
273
|
+
this.conditionRHSDropDown.DataSource = this.conditionRHSWFVariableList;
|
|
274
|
+
this.conditionRHSDropDown.SingleSelection = true;
|
|
275
|
+
this.conditionRHSDropDown.IsRequired = true;
|
|
276
|
+
this.conditionRHSDropDown.SelectedItems = this.activityModel.rhsVariableID_GUID?.toLowerCase();
|
|
277
|
+
this.showConditionRHSWFVariable = true;
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
this.conditionRHSValue = new TextBoxOptions();
|
|
281
|
+
this.conditionRHSValue.Name = "conditionRHSValue";
|
|
282
|
+
this.conditionRHSValue.HideLabel = true;
|
|
283
|
+
this.conditionRHSValue.Placeholder = "Value";
|
|
284
|
+
this.conditionRHSValue.Type = InputType.Text;
|
|
285
|
+
this.conditionRHSValue.IsRequired = true;
|
|
286
|
+
this.conditionRHSValue.Value = this.activityModel.rhsValue;
|
|
287
|
+
this.conditionRHSValue.MaxLength = 512;
|
|
288
|
+
this.showConditionRHSWFVariable = false;
|
|
289
|
+
}
|
|
290
|
+
this.showConditionControls = true;
|
|
291
|
+
break;
|
|
292
|
+
}
|
|
293
|
+
this.showOutcomesContainer = true;
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
this.sysName = new TextBoxOptions();
|
|
297
|
+
this.sysName.Name = "sysName";
|
|
298
|
+
this.sysName.LabelKey = "SysName";
|
|
299
|
+
this.sysName.Type = InputType.Text;
|
|
300
|
+
this.sysName.IsRequired = true;
|
|
301
|
+
this.sysName.Value = this.activityModel.sysName;
|
|
302
|
+
this.sysName.MaxLength = 100;
|
|
303
|
+
if (this.activityTypeID != ActivityType.Start) {
|
|
304
|
+
this.showActivityType = true;
|
|
305
|
+
this.activityType = new DropdownOptions();
|
|
306
|
+
this.activityType.Name = "activityType";
|
|
307
|
+
this.activityType.LabelKey = "ActivityType";
|
|
308
|
+
this.activityType.DataSource = this.ActivityTypeList;
|
|
309
|
+
this.activityType.SingleSelection = true;
|
|
310
|
+
this.activityType.AllowSearchFilter = true;
|
|
311
|
+
this.activityType.IsRequired = true;
|
|
312
|
+
this.activityType.SelectedItems = this.activityTypeID;
|
|
313
|
+
}
|
|
314
|
+
switch (this.activityTypeID) {
|
|
315
|
+
case ActivityType.Approval:
|
|
316
|
+
case ActivityType.Action:
|
|
317
|
+
case ActivityType.PercentageTask:
|
|
318
|
+
this.taskTypeList = list.tasks;
|
|
319
|
+
this.participantTypeList = list.participants.participantTypes;
|
|
320
|
+
this.participantDataList = list.participants.participantData;
|
|
321
|
+
let taskName = new EnglishArabicDTO();
|
|
322
|
+
taskName.English = this.activityModel.taskName.english;
|
|
323
|
+
taskName.Arabic = this.activityModel.taskName.arabic;
|
|
324
|
+
let taskDescription = new EnglishArabicDTO();
|
|
325
|
+
taskDescription.English = this.activityModel.taskDescription.english;
|
|
326
|
+
taskDescription.Arabic = this.activityModel.taskDescription.arabic;
|
|
327
|
+
//Initialize required controls for approval
|
|
328
|
+
this.participantTypes = new DropdownOptions();
|
|
329
|
+
this.participantTypes.Name = "participantTypes";
|
|
330
|
+
this.participantTypes.LabelKey = "ParticipantTypes";
|
|
331
|
+
this.participantTypes.DataSource = this.participantTypeList;
|
|
332
|
+
this.participantTypes.SingleSelection = false;
|
|
333
|
+
this.participantTypes.AllowSearchFilter = true;
|
|
334
|
+
this.participantTypes.IsRequired = true;
|
|
335
|
+
this.participantTypes.SelectedItems = this.activityModel.participantTypeItemIDsStringList;
|
|
336
|
+
if (this.activityModel.participantTypeItemIDsStringList.includes(ParticipantType.PermissionSet)) {
|
|
337
|
+
this.participantPermissionSet = new DropdownOptions();
|
|
338
|
+
this.participantPermissionSet.Name = "participantPermissionSet";
|
|
339
|
+
this.participantPermissionSet.LabelKey = "PermissionSet";
|
|
340
|
+
this.participantPermissionSet.DataSource = this.participantDataList;
|
|
341
|
+
this.participantPermissionSet.SingleSelection = false;
|
|
342
|
+
this.participantPermissionSet.AllowSearchFilter = true;
|
|
343
|
+
this.participantPermissionSet.SelectedItems = this.activityModel.participantPermsetsIDsString;
|
|
344
|
+
this.showParticipantPermssionSet = true;
|
|
345
|
+
}
|
|
346
|
+
this.dynamicTaskName = new MultiLingualTextBoxOptions();
|
|
347
|
+
this.dynamicTaskName.Name = "dynamicTaskName";
|
|
348
|
+
this.dynamicTaskName.ArabicLabelKey = "TaskNameInArabic";
|
|
349
|
+
this.dynamicTaskName.EnglishLabelKey = "TaskNameInEnglish";
|
|
350
|
+
this.dynamicTaskName.Value = taskName;
|
|
351
|
+
this.dynamicTaskName.MaxLength = 255;
|
|
352
|
+
this.dynamicTaskDescription = new MultiLingualTextAreaOptions();
|
|
353
|
+
this.dynamicTaskDescription.Name = "dynamicTaskDescription";
|
|
354
|
+
this.dynamicTaskDescription.ArabicLabelKey = "TaskDescriptionInArabic";
|
|
355
|
+
this.dynamicTaskDescription.EnglishLabelKey = "TaskDescriptionInEnglish";
|
|
356
|
+
this.dynamicTaskDescription.Value = taskDescription;
|
|
357
|
+
this.dynamicTaskDescription.MaxLength = 255;
|
|
358
|
+
this.dynamicTaskURL = new TextBoxOptions();
|
|
359
|
+
this.dynamicTaskURL.Name = "dynamicTaskURL";
|
|
360
|
+
this.dynamicTaskURL.LabelKey = "TaskURL";
|
|
361
|
+
this.dynamicTaskURL.Type = InputType.Text;
|
|
362
|
+
this.dynamicTaskURL.Value = this.activityModel.taskURL;
|
|
363
|
+
this.dynamicTaskURL.MaxLength = 2083;
|
|
364
|
+
this.dynamicTaskType = new DropdownOptions();
|
|
365
|
+
this.dynamicTaskType.Name = "dynamicTaskType";
|
|
366
|
+
this.dynamicTaskType.LabelKey = "TaskType";
|
|
367
|
+
this.dynamicTaskType.DataSource = this.taskTypeList;
|
|
368
|
+
this.dynamicTaskType.SingleSelection = true;
|
|
369
|
+
this.dynamicTaskType.AllowSearchFilter = true;
|
|
370
|
+
this.dynamicTaskType.IsRequired = true;
|
|
371
|
+
this.dynamicTaskType.SelectedItems = this.activityModel.taskCorrlTypeID?.toString();
|
|
372
|
+
this.dynamicCanComplete = new ToggleSlideOptions();
|
|
373
|
+
this.dynamicCanComplete.Name = "dynamicCanComplete";
|
|
374
|
+
this.dynamicCanComplete.LabelKey = "CanCompleteFromTME";
|
|
375
|
+
this.dynamicCanComplete.ViewType = ControlLayout.Horizontal;
|
|
376
|
+
this.dynamicCanComplete.Value = this.activityModel.canCompleteFromTME;
|
|
377
|
+
this.showDynamicControls = true;
|
|
378
|
+
this.showParticipantContainer = true;
|
|
379
|
+
this.showOutcomesContainer = true;
|
|
380
|
+
break;
|
|
381
|
+
case ActivityType.Start:
|
|
382
|
+
case ActivityType.Email:
|
|
383
|
+
case ActivityType.Sleep:
|
|
384
|
+
if (this.activityTypeID == ActivityType.Email) {
|
|
385
|
+
this.participantTypeList = list.participants.participantTypes;
|
|
386
|
+
this.participantDataList = list.participants.participantData;
|
|
387
|
+
this.participantTypes = new DropdownOptions();
|
|
388
|
+
this.participantTypes.Name = "participantTypes";
|
|
389
|
+
this.participantTypes.LabelKey = "ParticipantTypes";
|
|
390
|
+
this.participantTypes.DataSource = this.participantTypeList;
|
|
391
|
+
this.participantTypes.SingleSelection = false;
|
|
392
|
+
this.participantTypes.AllowSearchFilter = true;
|
|
393
|
+
this.participantTypes.IsRequired = true;
|
|
394
|
+
this.participantTypes.SelectedItems = this.activityModel.participantTypeItemIDsStringList;
|
|
395
|
+
if (this.activityModel.participantTypeItemIDsStringList.includes(ParticipantType.PermissionSet)) {
|
|
396
|
+
this.participantPermissionSet = new DropdownOptions();
|
|
397
|
+
this.participantPermissionSet.Name = "participantPermissionSet";
|
|
398
|
+
this.participantPermissionSet.LabelKey = "PermissionSet";
|
|
399
|
+
this.participantPermissionSet.DataSource = this.participantDataList;
|
|
400
|
+
this.participantPermissionSet.SingleSelection = false;
|
|
401
|
+
this.participantPermissionSet.AllowSearchFilter = true;
|
|
402
|
+
this.participantPermissionSet.SelectedItems = this.activityModel.participantPermsetsIDsString;
|
|
403
|
+
this.showParticipantPermssionSet = true;
|
|
404
|
+
}
|
|
405
|
+
this.showParticipantContainer = true;
|
|
406
|
+
}
|
|
407
|
+
let name = new EnglishArabicDTO();
|
|
408
|
+
name.Arabic = this.activityModel.normalOutcomeName.arabic;
|
|
409
|
+
name.English = this.activityModel.normalOutcomeName.english;
|
|
410
|
+
this.staticOutcomeName = new MultiLingualTextBoxOptions();
|
|
411
|
+
this.staticOutcomeName.Name = "staticOutcomeName";
|
|
412
|
+
this.staticOutcomeName.ArabicLabelKey = "OutcomeNameInArabic";
|
|
413
|
+
this.staticOutcomeName.EnglishLabelKey = "OutcomeNameInEnglish";
|
|
414
|
+
this.staticOutcomeName.IsRequired = true;
|
|
415
|
+
this.staticOutcomeName.Value = name;
|
|
416
|
+
this.staticOutcomeName.MaxLength = 255;
|
|
417
|
+
this.staticOutcomeSysName = new TextBoxOptions();
|
|
418
|
+
this.staticOutcomeSysName.Name = "staticOutcomeSysName";
|
|
419
|
+
this.staticOutcomeSysName.LabelKey = "DecisionSysName";
|
|
420
|
+
this.staticOutcomeSysName.Type = InputType.Text;
|
|
421
|
+
this.staticOutcomeSysName.IsRequired = true;
|
|
422
|
+
this.staticOutcomeSysName.Value = this.activityModel.outcomeSysName;
|
|
423
|
+
this.staticOutcomeSysName.MaxLength = 100;
|
|
424
|
+
this.staticOutcomeNextActivity = new DropdownOptions();
|
|
425
|
+
this.staticOutcomeNextActivity.Name = "staticOutcomeNextActivity";
|
|
426
|
+
this.staticOutcomeNextActivity.LabelKey = "NextActivity";
|
|
427
|
+
this.staticOutcomeNextActivity.DataSource = this.nextActivityList;
|
|
428
|
+
this.staticOutcomeNextActivity.SingleSelection = true;
|
|
429
|
+
this.staticOutcomeNextActivity.AllowSearchFilter = true;
|
|
430
|
+
this.staticOutcomeNextActivity.IsRequired = true;
|
|
431
|
+
this.staticOutcomeNextActivity.SelectedItems = this.activityModel.nextActivityID_GUID?.toLowerCase();
|
|
432
|
+
this.staticOutcomeCanAddComment = new ToggleSlideOptions();
|
|
433
|
+
this.staticOutcomeCanAddComment.Name = "staticOutcomeCanAddComment";
|
|
434
|
+
this.staticOutcomeCanAddComment.LabelKey = "CanAddComment";
|
|
435
|
+
this.staticOutcomeCanAddComment.ViewType = ControlLayout.Horizontal;
|
|
436
|
+
this.staticOutcomeCanAddComment.Value = this.activityModel.canAddComment;
|
|
437
|
+
this.showStaticControls = true;
|
|
438
|
+
break;
|
|
439
|
+
case ActivityType.Condition:
|
|
440
|
+
this.conditionLHSWFVariableList = list.wfVariables;
|
|
441
|
+
this.conditionRHSWFVariableList = list.wfVariables;
|
|
442
|
+
this.conditionRHSTypeList = list.rhsTypes;
|
|
443
|
+
this.conditionList = list.conditions;
|
|
444
|
+
this.conditionLHSDropDown = new DropdownOptions();
|
|
445
|
+
this.conditionLHSDropDown.Name = "conditionLHSDropDown";
|
|
446
|
+
this.conditionLHSDropDown.HideLabel = true;
|
|
447
|
+
this.conditionLHSDropDown.Placeholder = "WorkflowVariables";
|
|
448
|
+
this.conditionLHSDropDown.DataSource = this.conditionLHSWFVariableList;
|
|
449
|
+
this.conditionLHSDropDown.SingleSelection = true;
|
|
450
|
+
this.conditionLHSDropDown.AllowSearchFilter = true;
|
|
451
|
+
this.conditionLHSDropDown.IsRequired = true;
|
|
452
|
+
this.conditionLHSDropDown.SelectedItems = this.activityModel.lhsVariableID_GUID?.toLowerCase();
|
|
453
|
+
this.conditionsDropDown = new DropdownOptions();
|
|
454
|
+
this.conditionsDropDown.Name = "conditionsDropDown";
|
|
455
|
+
this.conditionsDropDown.HideLabel = true;
|
|
456
|
+
this.conditionsDropDown.Placeholder = "Condition";
|
|
457
|
+
this.conditionsDropDown.DataSource = this.conditionList;
|
|
458
|
+
this.conditionsDropDown.SingleSelection = true;
|
|
459
|
+
this.conditionsDropDown.IsRequired = true;
|
|
460
|
+
this.conditionsDropDown.SelectedItems = this.activityModel.operatorTypeItemID_GUID?.toLowerCase();
|
|
461
|
+
this.conditionRHSTypeDropDown = new DropdownOptions();
|
|
462
|
+
this.conditionRHSTypeDropDown.Name = "conditionRHSTypeDropDown";
|
|
463
|
+
this.conditionRHSTypeDropDown.HideLabel = true;
|
|
464
|
+
this.conditionRHSTypeDropDown.DataSource = this.conditionRHSTypeList;
|
|
465
|
+
this.conditionRHSTypeDropDown.SingleSelection = true;
|
|
466
|
+
this.conditionRHSTypeDropDown.IsRequired = true;
|
|
467
|
+
this.conditionRHSTypeDropDown.SelectedItems = this.activityModel.rhsTypeItemID_GUID?.toLowerCase();
|
|
468
|
+
if (this.activityModel.rhsTypeItemID_GUID?.toLowerCase() == Righthandsidetype.Variable) {
|
|
469
|
+
this.conditionRHSDropDown = new DropdownOptions();
|
|
470
|
+
this.conditionRHSDropDown.Name = "conditionRHSDropDown";
|
|
471
|
+
this.conditionRHSDropDown.HideLabel = true;
|
|
472
|
+
this.conditionRHSDropDown.Placeholder = "WorkflowVariables";
|
|
473
|
+
this.conditionRHSDropDown.DataSource = this.conditionRHSWFVariableList;
|
|
474
|
+
this.conditionRHSDropDown.SingleSelection = true;
|
|
475
|
+
this.conditionRHSDropDown.IsRequired = true;
|
|
476
|
+
this.conditionRHSDropDown.SelectedItems = this.activityModel.rhsVariableID_GUID?.toLowerCase();
|
|
477
|
+
this.showConditionRHSWFVariable = true;
|
|
478
|
+
}
|
|
479
|
+
else {
|
|
480
|
+
this.conditionRHSValue = new TextBoxOptions();
|
|
481
|
+
this.conditionRHSValue.Name = "conditionRHSValue";
|
|
482
|
+
this.conditionRHSValue.HideLabel = true;
|
|
483
|
+
this.conditionRHSValue.Placeholder = "Value";
|
|
484
|
+
this.conditionRHSValue.Type = InputType.Text;
|
|
485
|
+
this.conditionRHSValue.IsRequired = true;
|
|
486
|
+
this.conditionRHSValue.Value = this.activityModel.rhsValue;
|
|
487
|
+
this.conditionRHSValue.MaxLength = 512;
|
|
488
|
+
this.showConditionRHSWFVariable = false;
|
|
489
|
+
}
|
|
490
|
+
this.showConditionControls = true;
|
|
491
|
+
this.showOutcomesContainer = true;
|
|
492
|
+
break;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
this.isEditFormLoaded = true;
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
//Outcome functions
|
|
499
|
+
getActivityOutcomesOptions(outComes, isPublished) {
|
|
500
|
+
let outcomesOptions = [];
|
|
501
|
+
let outcomesCount = 0;
|
|
502
|
+
for (let i = 0; i < outComes.length; i++) {
|
|
503
|
+
let currentOutcome = outComes[i];
|
|
504
|
+
let objectOutcomeOptions = [];
|
|
505
|
+
let outcomeID = new TextBoxOptions();
|
|
506
|
+
outcomeID.Name = "outcomeID" + i;
|
|
507
|
+
outcomeID.HideLabel = true;
|
|
508
|
+
outcomeID.Type = InputType.Text;
|
|
509
|
+
outcomeID.Value = currentOutcome.iD_GUID;
|
|
510
|
+
let name = new EnglishArabicDTO();
|
|
511
|
+
name.English = currentOutcome.nameEN;
|
|
512
|
+
name.Arabic = currentOutcome.nameAR;
|
|
513
|
+
let outcomeName = new MultiLingualTextBoxOptions();
|
|
514
|
+
outcomeName.Name = "outcomeName" + i;
|
|
515
|
+
outcomeName.ArabicLabelKey = "NameInArabic";
|
|
516
|
+
outcomeName.EnglishLabelKey = "NameInEnglish";
|
|
517
|
+
outcomeName.Value = name;
|
|
518
|
+
outcomeName.IsRequired = true;
|
|
519
|
+
outcomeName.MaxLength = 255;
|
|
520
|
+
let outcomeNextActivityTypes = new DropdownOptions();
|
|
521
|
+
outcomeNextActivityTypes.Name = "outcomeNextActivityTypes" + i;
|
|
522
|
+
outcomeNextActivityTypes.LabelKey = "Activity";
|
|
523
|
+
outcomeNextActivityTypes.DataSource = this.nextActivityList;
|
|
524
|
+
outcomeNextActivityTypes.SingleSelection = true;
|
|
525
|
+
outcomeNextActivityTypes.AllowSearchFilter = true;
|
|
526
|
+
outcomeNextActivityTypes.SelectedItems = currentOutcome.nextActivityID_GUID?.toLowerCase();
|
|
527
|
+
let outcomeCanEdit;
|
|
528
|
+
outcomeCanEdit = currentOutcome.canEdit;
|
|
529
|
+
let outcomeHiddeneSysName = new TextBoxOptions();
|
|
530
|
+
outcomeHiddeneSysName.Name = "outcomeHiddeneSysName" + i;
|
|
531
|
+
outcomeHiddeneSysName.Type = InputType.Text;
|
|
532
|
+
outcomeHiddeneSysName.Value = currentOutcome.outcomeSysName;
|
|
533
|
+
let outcomeCanEditSysName = new CheckBoxOptions();
|
|
534
|
+
outcomeCanEditSysName.Name = "outcomeCanEditSysName" + i;
|
|
535
|
+
outcomeCanEditSysName.Value = currentOutcome.canEditSysName;
|
|
536
|
+
if (!isPublished) {
|
|
537
|
+
let outcomeDecisionSysName = new TextBoxOptions();
|
|
538
|
+
outcomeDecisionSysName.Name = "outcomeDecisionSysName" + i;
|
|
539
|
+
outcomeDecisionSysName.LabelKey = "DecisionSysName";
|
|
540
|
+
outcomeDecisionSysName.Type = InputType.Text;
|
|
541
|
+
outcomeDecisionSysName.Value = currentOutcome.outcomeSysName;
|
|
542
|
+
outcomeDecisionSysName.IsDisabled = !currentOutcome.canEditSysName;
|
|
543
|
+
outcomeDecisionSysName.IsRequired = true;
|
|
544
|
+
outcomeDecisionSysName.MaxLength = 100;
|
|
545
|
+
let outcomeCanAddComment = new CheckBoxOptions();
|
|
546
|
+
outcomeCanAddComment.Name = "outcomeCanAddComment" + i;
|
|
547
|
+
outcomeCanAddComment.Value = currentOutcome.canAddComment;
|
|
548
|
+
outcomeCanAddComment.LabelKey = "CanAddComment";
|
|
549
|
+
objectOutcomeOptions.push(outcomeID, outcomeName, outcomeDecisionSysName, outcomeNextActivityTypes, outcomeCanAddComment, outcomeCanEdit, outcomeHiddeneSysName, outcomeCanEditSysName);
|
|
550
|
+
}
|
|
551
|
+
else
|
|
552
|
+
objectOutcomeOptions.push(outcomeID, outcomeName, outcomeNextActivityTypes, outcomeCanEdit, outcomeHiddeneSysName, outcomeCanEditSysName);
|
|
553
|
+
outcomesOptions.push(objectOutcomeOptions);
|
|
554
|
+
outcomesCount += 1;
|
|
555
|
+
}
|
|
556
|
+
return [outcomesOptions, outcomesCount];
|
|
557
|
+
}
|
|
558
|
+
addWFActivityOutcome() {
|
|
559
|
+
let index = this.outcomesCount;
|
|
560
|
+
let objectOutcomeOptions = [];
|
|
561
|
+
let outcomeID = new TextBoxOptions();
|
|
562
|
+
outcomeID.Name = "outcomeID" + index;
|
|
563
|
+
outcomeID.HideLabel = true;
|
|
564
|
+
outcomeID.Type = InputType.Text;
|
|
565
|
+
let outcomeName = new MultiLingualTextBoxOptions();
|
|
566
|
+
outcomeName.Name = "outcomeName" + index;
|
|
567
|
+
outcomeName.ArabicLabelKey = "NameInArabic";
|
|
568
|
+
outcomeName.EnglishLabelKey = "NameInEnglish";
|
|
569
|
+
outcomeName.IsRequired = true;
|
|
570
|
+
let outcomeDecisionSysName = new TextBoxOptions();
|
|
571
|
+
outcomeDecisionSysName.Name = "outcomeDecisionSysName" + index;
|
|
572
|
+
outcomeDecisionSysName.LabelKey = "DecisionSysName";
|
|
573
|
+
outcomeDecisionSysName.Type = InputType.Text;
|
|
574
|
+
outcomeDecisionSysName.IsRequired = true;
|
|
575
|
+
let outcomeNextActivityTypes = new DropdownOptions();
|
|
576
|
+
outcomeNextActivityTypes.Name = "outcomeNextActivityTypes" + index;
|
|
577
|
+
outcomeNextActivityTypes.LabelKey = "Activity";
|
|
578
|
+
outcomeNextActivityTypes.DataSource = this.nextActivityList;
|
|
579
|
+
outcomeNextActivityTypes.SingleSelection = true;
|
|
580
|
+
outcomeNextActivityTypes.AllowSearchFilter = true;
|
|
581
|
+
let outcomeCanAddComment = new CheckBoxOptions();
|
|
582
|
+
outcomeCanAddComment.Name = "outcomeCanAddComment" + index;
|
|
583
|
+
outcomeCanAddComment.LabelKey = "CanAddComment";
|
|
584
|
+
let outcomeCanEdit;
|
|
585
|
+
outcomeCanEdit = true;
|
|
586
|
+
let outcomeHiddeneSysName = new TextBoxOptions();
|
|
587
|
+
outcomeHiddeneSysName.Name = "outcomeHiddeneSysName" + index;
|
|
588
|
+
outcomeHiddeneSysName.Type = InputType.Text;
|
|
589
|
+
let outcomeCanEditSysName = new CheckBoxOptions();
|
|
590
|
+
outcomeCanEditSysName.Name = "outcomeCanEditSysName" + index;
|
|
591
|
+
outcomeCanEditSysName.Value = true;
|
|
592
|
+
objectOutcomeOptions.push(outcomeID, outcomeName, outcomeDecisionSysName, outcomeNextActivityTypes, outcomeCanAddComment, outcomeCanEdit, outcomeHiddeneSysName, outcomeCanEditSysName);
|
|
593
|
+
this.outcomesOptions.push(objectOutcomeOptions);
|
|
594
|
+
this.outcomesCount += 1;
|
|
595
|
+
}
|
|
596
|
+
deleteOutcome(deletedOutcome) {
|
|
597
|
+
let deletedOutcomeIndex = this.outcomesOptions.indexOf(deletedOutcome);
|
|
598
|
+
if (deletedOutcomeIndex !== -1) {
|
|
599
|
+
this.outcomesOptions.splice(deletedOutcomeIndex, 1);
|
|
600
|
+
for (var i = 0; i < deletedOutcome.length; i++) {
|
|
601
|
+
this.editworkflowActivityForm.removeControl(deletedOutcome[i].Name);
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
//On changes events
|
|
606
|
+
activityTypeOnChange(activityType) {
|
|
607
|
+
activityType = activityType?.toLowerCase();
|
|
608
|
+
//Reset controls, outcomes and flags
|
|
609
|
+
this.resetAllActivityTypeControls();
|
|
610
|
+
this.outcomesOptions = [];
|
|
611
|
+
this.outcomesCount = 0;
|
|
612
|
+
this.showParticipantContainer = false;
|
|
613
|
+
this.showDynamicControls = false;
|
|
614
|
+
this.showStaticControls = false;
|
|
615
|
+
this.showConditionControls = false;
|
|
616
|
+
this.showConditionRHSWFVariable = false;
|
|
617
|
+
this.showOutcomesContainer = false;
|
|
618
|
+
this.activityTypeID = activityType;
|
|
619
|
+
this.workflowActivityService.getActivityOutcomes(this.versionID, activityType).subscribe((result) => {
|
|
620
|
+
var resultObj = result;
|
|
621
|
+
var model = resultObj.model;
|
|
622
|
+
var list = resultObj.list;
|
|
623
|
+
this.nextActivityList = list.activities;
|
|
624
|
+
switch (activityType) {
|
|
625
|
+
case ActivityType.Approval:
|
|
626
|
+
case ActivityType.Action:
|
|
627
|
+
case ActivityType.PercentageTask:
|
|
628
|
+
this.taskTypeList = list.tasks;
|
|
629
|
+
this.participantTypeList = list.participants.participantTypes;
|
|
630
|
+
this.participantDataList = list.participants.participantData;
|
|
631
|
+
//Initialize required controls for approval
|
|
632
|
+
this.participantTypes = new DropdownOptions();
|
|
633
|
+
this.participantTypes.Name = "participantTypes";
|
|
634
|
+
this.participantTypes.LabelKey = "ParticipantTypes";
|
|
635
|
+
this.participantTypes.DataSource = this.participantTypeList;
|
|
636
|
+
this.participantTypes.SingleSelection = false;
|
|
637
|
+
this.participantTypes.AllowSearchFilter = true;
|
|
638
|
+
this.participantTypes.IsRequired = true;
|
|
639
|
+
this.dynamicTaskName = new MultiLingualTextBoxOptions();
|
|
640
|
+
this.dynamicTaskName.Name = "dynamicTaskName";
|
|
641
|
+
this.dynamicTaskName.ArabicLabelKey = "TaskNameInArabic";
|
|
642
|
+
this.dynamicTaskName.EnglishLabelKey = "TaskNameInEnglish";
|
|
643
|
+
this.dynamicTaskName.MaxLength = 255;
|
|
644
|
+
this.dynamicTaskDescription = new MultiLingualTextAreaOptions();
|
|
645
|
+
this.dynamicTaskDescription.Name = "dynamicTaskDescription";
|
|
646
|
+
this.dynamicTaskDescription.ArabicLabelKey = "TaskDescriptionInArabic";
|
|
647
|
+
this.dynamicTaskDescription.EnglishLabelKey = "TaskDescriptionInEnglish";
|
|
648
|
+
this.dynamicTaskDescription.MaxLength = 255;
|
|
649
|
+
this.dynamicTaskURL = new TextBoxOptions();
|
|
650
|
+
this.dynamicTaskURL.Name = "dynamicTaskURL";
|
|
651
|
+
this.dynamicTaskURL.LabelKey = "TaskURL";
|
|
652
|
+
this.dynamicTaskURL.Type = InputType.Text;
|
|
653
|
+
this.dynamicTaskURL.MaxLength = 2083;
|
|
654
|
+
this.dynamicTaskType = new DropdownOptions();
|
|
655
|
+
this.dynamicTaskType.Name = "dynamicTaskType";
|
|
656
|
+
this.dynamicTaskType.LabelKey = "TaskType";
|
|
657
|
+
this.dynamicTaskType.DataSource = this.taskTypeList;
|
|
658
|
+
this.dynamicTaskType.SingleSelection = true;
|
|
659
|
+
this.dynamicTaskType.AllowSearchFilter = true;
|
|
660
|
+
this.dynamicTaskType.IsRequired = true;
|
|
661
|
+
this.dynamicCanComplete = new ToggleSlideOptions();
|
|
662
|
+
this.dynamicCanComplete.Name = "dynamicCanComplete";
|
|
663
|
+
this.dynamicCanComplete.LabelKey = "CanCompleteFromTME";
|
|
664
|
+
this.dynamicCanComplete.ViewType = ControlLayout.Horizontal;
|
|
665
|
+
this.dynamicCanComplete.Value = model.canCompleteFromTME;
|
|
666
|
+
let outcomesResult = this.getActivityOutcomesOptions(model.outcomes, false);
|
|
667
|
+
this.outcomesOptions = outcomesResult[0];
|
|
668
|
+
this.outcomesCount = outcomesResult[1];
|
|
669
|
+
this.showDynamicControls = true;
|
|
670
|
+
this.showParticipantContainer = true;
|
|
671
|
+
this.showOutcomesContainer = true;
|
|
672
|
+
break;
|
|
673
|
+
case ActivityType.Email:
|
|
674
|
+
case ActivityType.Sleep:
|
|
675
|
+
let name = new EnglishArabicDTO();
|
|
676
|
+
name.Arabic = model.normalOutcomeName.arabic;
|
|
677
|
+
name.English = model.normalOutcomeName.english;
|
|
678
|
+
this.staticOutcomeName = new MultiLingualTextBoxOptions();
|
|
679
|
+
this.staticOutcomeName.Name = "staticOutcomeName";
|
|
680
|
+
this.staticOutcomeName.ArabicLabelKey = "OutcomeNameInArabic";
|
|
681
|
+
this.staticOutcomeName.EnglishLabelKey = "OutcomeNameInEnglish";
|
|
682
|
+
this.staticOutcomeName.IsRequired = true;
|
|
683
|
+
this.staticOutcomeName.Value = name;
|
|
684
|
+
this.staticOutcomeName.MaxLength = 255;
|
|
685
|
+
this.staticOutcomeSysName = new TextBoxOptions();
|
|
686
|
+
this.staticOutcomeSysName.Name = "staticOutcomeSysName";
|
|
687
|
+
this.staticOutcomeSysName.LabelKey = "DecisionSysName";
|
|
688
|
+
this.staticOutcomeSysName.Type = InputType.Text;
|
|
689
|
+
this.staticOutcomeSysName.IsRequired = true;
|
|
690
|
+
this.staticOutcomeSysName.MaxLength = 100;
|
|
691
|
+
this.staticOutcomeNextActivity = new DropdownOptions();
|
|
692
|
+
this.staticOutcomeNextActivity.Name = "staticOutcomeNextActivity";
|
|
693
|
+
this.staticOutcomeNextActivity.LabelKey = "NextActivity";
|
|
694
|
+
this.staticOutcomeNextActivity.DataSource = this.nextActivityList;
|
|
695
|
+
this.staticOutcomeNextActivity.SingleSelection = true;
|
|
696
|
+
this.staticOutcomeNextActivity.AllowSearchFilter = true;
|
|
697
|
+
this.staticOutcomeNextActivity.IsRequired = true;
|
|
698
|
+
this.staticOutcomeCanAddComment = new ToggleSlideOptions();
|
|
699
|
+
this.staticOutcomeCanAddComment.Name = "staticOutcomeCanAddComment";
|
|
700
|
+
this.staticOutcomeCanAddComment.LabelKey = "CanAddComment";
|
|
701
|
+
this.staticOutcomeCanAddComment.ViewType = ControlLayout.Horizontal;
|
|
702
|
+
this.staticOutcomeCanAddComment.Value = model.canAddComment;
|
|
703
|
+
this.showStaticControls = true;
|
|
704
|
+
break;
|
|
705
|
+
case ActivityType.Condition:
|
|
706
|
+
this.conditionLHSWFVariableList = list.wfVariables;
|
|
707
|
+
this.conditionRHSWFVariableList = list.wfVariables;
|
|
708
|
+
this.conditionRHSTypeList = list.rhsTypes;
|
|
709
|
+
this.conditionList = list.conditions;
|
|
710
|
+
this.conditionLHSDropDown = new DropdownOptions();
|
|
711
|
+
this.conditionLHSDropDown.Name = "conditionLHSDropDown";
|
|
712
|
+
this.conditionLHSDropDown.HideLabel = true;
|
|
713
|
+
this.conditionLHSDropDown.Placeholder = "WorkflowVariables";
|
|
714
|
+
this.conditionLHSDropDown.DataSource = this.conditionLHSWFVariableList;
|
|
715
|
+
this.conditionLHSDropDown.SingleSelection = true;
|
|
716
|
+
this.conditionLHSDropDown.AllowSearchFilter = true;
|
|
717
|
+
this.conditionLHSDropDown.IsRequired = true;
|
|
718
|
+
this.conditionsDropDown = new DropdownOptions();
|
|
719
|
+
this.conditionsDropDown.Name = "conditionsDropDown";
|
|
720
|
+
this.conditionsDropDown.HideLabel = true;
|
|
721
|
+
this.conditionsDropDown.Placeholder = "Condition";
|
|
722
|
+
this.conditionsDropDown.DataSource = this.conditionList;
|
|
723
|
+
this.conditionsDropDown.SingleSelection = true;
|
|
724
|
+
this.conditionsDropDown.IsRequired = true;
|
|
725
|
+
let selectedRHSType = this.conditionRHSTypeList.filter((item) => { return item.key?.toLowerCase() == Righthandsidetype.Variable; }).map((item) => item.key)[0];
|
|
726
|
+
this.conditionRHSTypeDropDown = new DropdownOptions();
|
|
727
|
+
this.conditionRHSTypeDropDown.Name = "conditionRHSTypeDropDown";
|
|
728
|
+
this.conditionRHSTypeDropDown.HideLabel = true;
|
|
729
|
+
this.conditionRHSTypeDropDown.DataSource = this.conditionRHSTypeList;
|
|
730
|
+
this.conditionRHSTypeDropDown.SingleSelection = true;
|
|
731
|
+
this.conditionRHSTypeDropDown.IsRequired = true;
|
|
732
|
+
this.conditionRHSTypeDropDown.SelectedItems = selectedRHSType;
|
|
733
|
+
this.conditionRHSDropDown = new DropdownOptions();
|
|
734
|
+
this.conditionRHSDropDown.Name = "conditionRHSDropDown";
|
|
735
|
+
this.conditionRHSDropDown.HideLabel = true;
|
|
736
|
+
this.conditionRHSDropDown.Placeholder = "WorkflowVariables";
|
|
737
|
+
this.conditionRHSDropDown.DataSource = this.conditionRHSWFVariableList;
|
|
738
|
+
this.conditionRHSDropDown.SingleSelection = true;
|
|
739
|
+
this.conditionRHSDropDown.IsRequired = true;
|
|
740
|
+
let conditionOutcomesResult = this.getActivityOutcomesOptions(model.outcomes, false);
|
|
741
|
+
this.outcomesOptions = conditionOutcomesResult[0];
|
|
742
|
+
this.outcomesCount = conditionOutcomesResult[1];
|
|
743
|
+
this.showConditionControls = true;
|
|
744
|
+
this.showConditionRHSWFVariable = true;
|
|
745
|
+
this.showOutcomesContainer = true;
|
|
746
|
+
break;
|
|
747
|
+
}
|
|
748
|
+
this.canAddOutcome = this.showOutcomesContainer ? model.canAddOutcome : false;
|
|
749
|
+
});
|
|
750
|
+
}
|
|
751
|
+
conditionRHSTypeOnChange(type) {
|
|
752
|
+
type = type?.toLowerCase();
|
|
753
|
+
if (type == Righthandsidetype.Variable) {
|
|
754
|
+
this.editworkflowActivityForm.removeControl("conditionRHSValue");
|
|
755
|
+
this.conditionRHSDropDown = new DropdownOptions();
|
|
756
|
+
this.conditionRHSDropDown.Name = "conditionRHSDropDown";
|
|
757
|
+
this.conditionRHSDropDown.HideLabel = true;
|
|
758
|
+
this.conditionRHSDropDown.Placeholder = "WorkflowVariables";
|
|
759
|
+
this.conditionRHSDropDown.DataSource = this.conditionRHSWFVariableList;
|
|
760
|
+
this.conditionRHSDropDown.SingleSelection = true;
|
|
761
|
+
this.conditionRHSDropDown.IsRequired = true;
|
|
762
|
+
this.showConditionRHSWFVariable = true;
|
|
763
|
+
}
|
|
764
|
+
else {
|
|
765
|
+
this.editworkflowActivityForm.removeControl("conditionRHSDropDown");
|
|
766
|
+
this.conditionRHSValue = new TextBoxOptions();
|
|
767
|
+
this.conditionRHSValue.Name = "conditionRHSValue";
|
|
768
|
+
this.conditionRHSValue.HideLabel = true;
|
|
769
|
+
this.conditionRHSValue.Placeholder = "Value";
|
|
770
|
+
this.conditionRHSValue.Type = InputType.Text;
|
|
771
|
+
this.conditionRHSValue.IsRequired = true;
|
|
772
|
+
this.conditionRHSValue.MaxLength = 512;
|
|
773
|
+
this.showConditionRHSWFVariable = false;
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
participantTypeOnChange(participantType) {
|
|
777
|
+
participantType = participantType?.toLowerCase();
|
|
778
|
+
if (participantType == ParticipantType.PermissionSet) {
|
|
779
|
+
this.participantPermissionSet = new DropdownOptions();
|
|
780
|
+
this.participantPermissionSet.Name = "participantPermissionSet";
|
|
781
|
+
this.participantPermissionSet.LabelKey = "PermissionSet";
|
|
782
|
+
this.participantPermissionSet.DataSource = this.participantDataList;
|
|
783
|
+
this.participantPermissionSet.SingleSelection = false;
|
|
784
|
+
this.participantPermissionSet.AllowSearchFilter = true;
|
|
785
|
+
this.showParticipantPermssionSet = true;
|
|
786
|
+
}
|
|
787
|
+
else {
|
|
788
|
+
this.editworkflowActivityForm.removeControl("participantPermissionSet");
|
|
789
|
+
this.showParticipantPermssionSet = false;
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
//Reset type
|
|
793
|
+
resetAllActivityTypeControls() {
|
|
794
|
+
this.editworkflowActivityForm.removeControl("participantTypes");
|
|
795
|
+
this.editworkflowActivityForm.removeControl("participantPermissionSet");
|
|
796
|
+
this.editworkflowActivityForm.removeControl("participantPermissionSet");
|
|
797
|
+
this.editworkflowActivityForm.removeControl("dynamicTaskName");
|
|
798
|
+
this.editworkflowActivityForm.removeControl("dynamicTaskDescription");
|
|
799
|
+
this.editworkflowActivityForm.removeControl("dynamicTaskURL");
|
|
800
|
+
this.editworkflowActivityForm.removeControl("dynamicTaskType");
|
|
801
|
+
this.editworkflowActivityForm.removeControl("dynamicCanComplete");
|
|
802
|
+
this.editworkflowActivityForm.removeControl("staticOutcomeName");
|
|
803
|
+
this.editworkflowActivityForm.removeControl("staticOutcomeSysName");
|
|
804
|
+
this.editworkflowActivityForm.removeControl("staticOutcomeNextActivity");
|
|
805
|
+
this.editworkflowActivityForm.removeControl("staticOutcomeCanAddComment");
|
|
806
|
+
this.editworkflowActivityForm.removeControl("conditionLHSDropDown");
|
|
807
|
+
this.editworkflowActivityForm.removeControl("conditionsDropDown");
|
|
808
|
+
this.editworkflowActivityForm.removeControl("conditionRHSTypeDropDown");
|
|
809
|
+
this.editworkflowActivityForm.removeControl("conditionRHSDropDown");
|
|
810
|
+
this.editworkflowActivityForm.removeControl("conditionRHSValue");
|
|
811
|
+
//Remove outcomes controls
|
|
812
|
+
let ResultModel = this.editworkflowActivityForm.value;
|
|
813
|
+
for (let i = 0; i < this.outcomesCount; i++) {
|
|
814
|
+
let outcomeID = ResultModel["outcomeID" + i];
|
|
815
|
+
if (outcomeID == undefined)
|
|
816
|
+
continue;
|
|
817
|
+
this.editworkflowActivityForm.removeControl("outcomeID" + i);
|
|
818
|
+
this.editworkflowActivityForm.removeControl("outcomeName" + i);
|
|
819
|
+
this.editworkflowActivityForm.removeControl("outcomeDecisionSysName" + i);
|
|
820
|
+
this.editworkflowActivityForm.removeControl("outcomeHiddeneSysName" + i);
|
|
821
|
+
this.editworkflowActivityForm.removeControl("outcomeNextActivityTypes" + i);
|
|
822
|
+
this.editworkflowActivityForm.removeControl("outcomeCanAddComment" + i);
|
|
823
|
+
}
|
|
824
|
+
}
|
|
825
|
+
//Cancel
|
|
826
|
+
cancelEdit() {
|
|
827
|
+
this.router.navigate(['/Admin/Workflows/workflow/']);
|
|
828
|
+
}
|
|
829
|
+
//On destroy
|
|
830
|
+
ngOnDestroy() {
|
|
831
|
+
this.requestHandlerService.destroyHandler();
|
|
832
|
+
}
|
|
833
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkflowActivityEditComponent, deps: [{ token: i1.WorkflowActivityService }, { token: i2.PageInfoService }, { token: i3.UtilityService }, { token: i4.ActivatedRoute }, { token: i4.Router }, { token: i3.RequestHandlerService }, { token: i3.BBSFTranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
834
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: WorkflowActivityEditComponent, selector: "lib-workflow-activity-edit", ngImport: i0, template: "<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\" *ngIf=\"isEditFormLoaded\">\r\n <div class=\"card-body py-3\">\r\n <BBSF-Form [options]=\"editworkflowActivityFormOptions\">\r\n <!--Start shared controls container-->\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"name\" [group]=\"editworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row\" *ngIf=\"!isPublished\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"sysName\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\" *ngIf=\"showActivityType\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"activityType\" [group]=\"editworkflowActivityForm\" (OnChange)=\"activityTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <!--End shared controls container-->\r\n <!--Start participant container-->\r\n <div id=\"participantContainer\" *ngIf=\"showParticipantContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantTypes\" [group]=\"editworkflowActivityForm\" (OnChange)=\"participantTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showParticipantPermssionSet\" class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantPermissionSet\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End participant container-->\r\n <!--Start static controls-->\r\n <div *ngIf=\"showStaticControls\" id=\"staticContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"staticOutcomeName\" [group]=\"editworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"staticOutcomeSysName\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"staticOutcomeNextActivity\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"staticOutcomeCanAddComment\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End static controls-->\r\n <!--Start dynamic controls-->\r\n <div *ngIf=\"showDynamicControls\" id=\"dynamicContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"dynamicTaskName\" [group]=\"editworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"dynamicTaskDescription\" [group]=\"editworkflowActivityForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"dynamicTaskURL\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"dynamicTaskType\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"dynamicCanComplete\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End dynamic controls-->\r\n <!--Start condition controls-->\r\n <div *ngIf=\"showConditionControls\" id=\"conditionContainer\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"LeftHandSide\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Condition\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSideType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSide\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionLHSDropDown\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionsDropDown\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionRHSTypeDropDown\" [group]=\"editworkflowActivityForm\" (OnChange)=\"conditionRHSTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td *ngIf=\"showConditionRHSWFVariable; else conditionTxtValue\">\r\n <BBSF-DropdownList [options]=\"conditionRHSDropDown\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <ng-template #conditionTxtValue>\r\n <td>\r\n <BBSF-TextBox [options]=\"conditionRHSValue\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n </ng-template>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!--End condition controls-->\r\n <!--Start outcomes container-->\r\n <div *ngIf=\"showOutcomesContainer\" id=\"outcomesContainer\" class=\"row\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Decision\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n <th *ngIf=\"!isPublished\" class=\"min-w-150px\"></th>\r\n <th *ngIf=\"!isPublished\" class=\"min-w-150px\"></th>\r\n <th *ngIf=\"!isPublished\" class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\" *ngIf=\"isPublished;else notPublishedOutcomes\">\r\n <tr *ngFor=\"let option of outcomesOptions;let i=index;\">\r\n <td>\r\n <!--ID-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--Name-->\r\n <BBSF-MultiLingualTextBox [options]=\"option[1]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </td>\r\n <td>\r\n <!--NextActivity-->\r\n <BBSF-DropdownList [options]=\"option[2]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n </tr>\r\n </tbody>\r\n\r\n <ng-template #notPublishedOutcomes>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of outcomesOptions;let i=index;\">\r\n\r\n <td>\r\n <!--ID-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--Name-->\r\n <BBSF-MultiLingualTextBox [options]=\"option[1]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </td>\r\n <td>\r\n <!--SysName-->\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--hidden SysName-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[6]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--can edit SysName-->\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[7]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--NextActivity-->\r\n <BBSF-DropdownList [options]=\"option[3]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <!--CanAddComment-->\r\n <BBSF-CheckBox [options]=\"option[4]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n\r\n <td>\r\n <!--if outcome Can Edit-->\r\n <a *ngIf=\"option[5]\" class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteOutcome(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"canAddOutcome\">\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFActivityOutcome()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </ng-template>\r\n\r\n </table>\r\n </div>\r\n\r\n </div>\r\n <!--End outcomes container-->\r\n\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" class=\"btn btn-light me-3 btn-sm\" (click)=\"cancelEdit()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i6.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { kind: "component", type: i6.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }] }); }
|
|
835
|
+
}
|
|
836
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkflowActivityEditComponent, decorators: [{
|
|
837
|
+
type: Component,
|
|
838
|
+
args: [{ selector: 'lib-workflow-activity-edit', template: "<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\" *ngIf=\"isEditFormLoaded\">\r\n <div class=\"card-body py-3\">\r\n <BBSF-Form [options]=\"editworkflowActivityFormOptions\">\r\n <!--Start shared controls container-->\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"name\" [group]=\"editworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row\" *ngIf=\"!isPublished\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"sysName\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\" *ngIf=\"showActivityType\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"activityType\" [group]=\"editworkflowActivityForm\" (OnChange)=\"activityTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <!--End shared controls container-->\r\n <!--Start participant container-->\r\n <div id=\"participantContainer\" *ngIf=\"showParticipantContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantTypes\" [group]=\"editworkflowActivityForm\" (OnChange)=\"participantTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showParticipantPermssionSet\" class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantPermissionSet\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End participant container-->\r\n <!--Start static controls-->\r\n <div *ngIf=\"showStaticControls\" id=\"staticContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"staticOutcomeName\" [group]=\"editworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"staticOutcomeSysName\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"staticOutcomeNextActivity\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"staticOutcomeCanAddComment\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End static controls-->\r\n <!--Start dynamic controls-->\r\n <div *ngIf=\"showDynamicControls\" id=\"dynamicContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"dynamicTaskName\" [group]=\"editworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"dynamicTaskDescription\" [group]=\"editworkflowActivityForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"dynamicTaskURL\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"dynamicTaskType\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"dynamicCanComplete\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End dynamic controls-->\r\n <!--Start condition controls-->\r\n <div *ngIf=\"showConditionControls\" id=\"conditionContainer\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"LeftHandSide\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Condition\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSideType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSide\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionLHSDropDown\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionsDropDown\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionRHSTypeDropDown\" [group]=\"editworkflowActivityForm\" (OnChange)=\"conditionRHSTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td *ngIf=\"showConditionRHSWFVariable; else conditionTxtValue\">\r\n <BBSF-DropdownList [options]=\"conditionRHSDropDown\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <ng-template #conditionTxtValue>\r\n <td>\r\n <BBSF-TextBox [options]=\"conditionRHSValue\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n </ng-template>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!--End condition controls-->\r\n <!--Start outcomes container-->\r\n <div *ngIf=\"showOutcomesContainer\" id=\"outcomesContainer\" class=\"row\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Decision\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n <th *ngIf=\"!isPublished\" class=\"min-w-150px\"></th>\r\n <th *ngIf=\"!isPublished\" class=\"min-w-150px\"></th>\r\n <th *ngIf=\"!isPublished\" class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\" *ngIf=\"isPublished;else notPublishedOutcomes\">\r\n <tr *ngFor=\"let option of outcomesOptions;let i=index;\">\r\n <td>\r\n <!--ID-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--Name-->\r\n <BBSF-MultiLingualTextBox [options]=\"option[1]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </td>\r\n <td>\r\n <!--NextActivity-->\r\n <BBSF-DropdownList [options]=\"option[2]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n </tr>\r\n </tbody>\r\n\r\n <ng-template #notPublishedOutcomes>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of outcomesOptions;let i=index;\">\r\n\r\n <td>\r\n <!--ID-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--Name-->\r\n <BBSF-MultiLingualTextBox [options]=\"option[1]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </td>\r\n <td>\r\n <!--SysName-->\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--hidden SysName-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[6]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--can edit SysName-->\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[7]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--NextActivity-->\r\n <BBSF-DropdownList [options]=\"option[3]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <!--CanAddComment-->\r\n <BBSF-CheckBox [options]=\"option[4]\" [group]=\"editworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n\r\n <td>\r\n <!--if outcome Can Edit-->\r\n <a *ngIf=\"option[5]\" class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteOutcome(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"canAddOutcome\">\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFActivityOutcome()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </ng-template>\r\n\r\n </table>\r\n </div>\r\n\r\n </div>\r\n <!--End outcomes container-->\r\n\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" class=\"btn btn-light me-3 btn-sm\" (click)=\"cancelEdit()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n" }]
|
|
839
|
+
}], ctorParameters: () => [{ type: i1.WorkflowActivityService }, { type: i2.PageInfoService }, { type: i3.UtilityService }, { type: i4.ActivatedRoute }, { type: i4.Router }, { type: i3.RequestHandlerService }, { type: i3.BBSFTranslateService }] });
|
|
840
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctYWN0aXZpdHktZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3dvcmtmbG93cy9hY3Rpdml0eS93b3JrZmxvdy1hY3Rpdml0eS1lZGl0L3dvcmtmbG93LWFjdGl2aXR5LWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy93b3JrZmxvd3MvYWN0aXZpdHkvd29ya2Zsb3ctYWN0aXZpdHktZWRpdC93b3JrZmxvdy1hY3Rpdml0eS1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLDJCQUEyQixFQUFFLDBCQUEwQixFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR2pPLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7Ozs7QUFPdEcsTUFBTSxPQUFPLDZCQUE2QjtJQXNF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RUNsQjFDLDgxWEEyUEE7OzJGRHpPYSw2QkFBNkI7a0JBSnpDLFNBQVM7K0JBQ0UsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ2hlY2tCb3hPcHRpb25zLCBDb250cm9sTGF5b3V0LCBEcm9wZG93bk9wdGlvbnMsIEVuZ2xpc2hBcmFiaWNEVE8sIEZvcm1PcHRpb25zLCBJbnB1dFR5cGUsIE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucywgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMsIFRleHRCb3hPcHRpb25zLCBUb2dnbGVTbGlkZU9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2aXR5VHlwZSwgUGFydGljaXBhbnRUeXBlLCBSaWdodGhhbmRzaWRldHlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBDb25kaXRpb25SSFNUeXBlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL0VudW1zL2NvbmZpZ3VyYXRpb24vQ29uZGl0aW9uUkhTVHlwZSc7XHJcbmltcG9ydCB7IFBhcnRpY2lwYW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL0ltcGVyc29uYXRpb25SdWxlTW9kZWxzL1BhcnRpY2lwYW50TW9kZWwnO1xyXG5pbXBvcnQgeyBXRkFjdGl2aXR5TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlNb2RlbCc7XHJcbmltcG9ydCB7IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlPdXRjb21lTW9kZWwnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd0FjdGl2aXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9Xb3JrZmxvd0FjdGl2aXR5U2VydmljZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXdvcmtmbG93LWFjdGl2aXR5LWVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1hY3Rpdml0eS1lZGl0LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dBY3Rpdml0eUVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vUGFnZSByZXF1aXJlbWVudHNcclxuICBpc0VkaXRGb3JtTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmVyc2lvbklEOiBzdHJpbmc7XHJcbiAgYWN0aXZpdHlJRDogc3RyaW5nO1xyXG4gIGFjdGl2aXR5TW9kZWw6IGFueTtcclxuICBpc1B1Ymxpc2hlZDogYm9vbGVhbjtcclxuXHJcbiAgLy9FZGl0IEFjdGl2aXR5IHNoYXJlZCBjb250cm9sc1xyXG4gIGVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgbmFtZTogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgY2FuQWRkT3V0Y29tZTogYm9vbGVhbjtcclxuICBhY3Rpdml0eVR5cGVJRDogc3RyaW5nO1xyXG4gIHNob3dBY3Rpdml0eVR5cGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy9Ob24gcHVibGlzaGVkIEFjdGl2aXR5IGNvbnRyb2xzXHJcbiAgc3lzTmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWN0aXZpdHlUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcblxyXG4gIC8vU2hhcmVkIFBhcnRpY2lwYW50IHR5cGUgYW5kIGRhdGEgKE5vbiBQdWJsaXNoZWQgb25seSlcclxuICBzaG93UGFydGljaXBhbnRDb250YWluZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwYXJ0aWNpcGFudFR5cGVzOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgcGFydGljaXBhbnRQZXJtaXNzaW9uU2V0OiBEcm9wZG93bk9wdGlvbnM7XHJcblxyXG4gIC8vRHluYW1pYyBUeXBlcyBDb250cm9scyAvLyhBcHByb3ZhbCxBY3Rpb24sUGVyY2VudGFnZSlcclxuICBzaG93RHluYW1pY0NvbnRyb2xzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHluYW1pY1Rhc2tOYW1lOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBkeW5hbWljVGFza0Rlc2NyaXB0aW9uOiBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnM7XHJcbiAgZHluYW1pY1Rhc2tVUkw6IFRleHRCb3hPcHRpb25zO1xyXG4gIGR5bmFtaWNUYXNrVHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGR5bmFtaWNDYW5Db21wbGV0ZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG5cclxuICAvL1N0YXRpYyB0eXBlcyBjb250cm9scyAoRW1haWwsU2xlZXApIChOb24gcHVibGlzaGVkIG9ubHkpXHJcbiAgLy9FbWFpbCBUeXBlIENvbnRyb2xzIC8vKyBpbml0aWFsaXplIHBhcnRpY2lwYW50XHJcbiAgc2hvd1N0YXRpY0NvbnRyb2xzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3RhdGljT3V0Y29tZU5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIHN0YXRpY091dGNvbWVTeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQ6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuXHJcbiAgLy9Db25kaXRpb24gdHlwZSBjb250cm9sc1xyXG4gIHNob3dDb25kaXRpb25Db250cm9sczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbmRpdGlvbkxIU0Ryb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uc0Ryb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uUkhTVHlwZURyb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uUkhTRHJvcERvd246IERyb3Bkb3duT3B0aW9ucztcclxuICBjb25kaXRpb25SSFNWYWx1ZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy9TaGFyZWQgcmVxdWlyZWQgbGlzdHNcclxuICBBY3Rpdml0eVR5cGVMaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAvL091dGNvbWVzIChkeW5hbWljLGNvbmRpdGlvbilcclxuICBvdXRjb21lc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgb3V0Y29tZXNDb3VudDogbnVtYmVyID0gMDtcclxuICBzaG93T3V0Y29tZXNDb250YWluZXIgPSBmYWxzZTtcclxuXHJcbiAgLy9SZXF1aXJlZExpc3RzXHJcbiAgdGFza1R5cGVMaXN0ID0gW107XHJcbiAgcGFydGljaXBhbnRUeXBlTGlzdCA9IFtdO1xyXG4gIHBhcnRpY2lwYW50RGF0YUxpc3QgPSBbXTtcclxuICBuZXh0QWN0aXZpdHlMaXN0ID0gW107XHJcblxyXG4gIC8vQ29uZGl0aW9uVHlwZVJlcXVpcmVkTGlzdHNcclxuICBjb25kaXRpb25MSFNXRlZhcmlhYmxlTGlzdCA9IFtdO1xyXG4gIGNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0ID0gW107XHJcbiAgY29uZGl0aW9uUkhTVHlwZUxpc3QgPSBbXTtcclxuICBjb25kaXRpb25MaXN0ID0gW107XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB3b3JrZmxvd0FjdGl2aXR5U2VydmljZTogV29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UsIHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5hY3Rpdml0eUlEID0gcGFyYW1zWydhY3Rpdml0eWlkJ107XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFdvcmtmbG93QWN0aXZpdHlcIik7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV29ya0Zsb3dzXCIpLCBwYXRoOiAnL0FkbWluL1dvcmtmbG93cy93b3JrZmxvdycsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICAvL0luaXRpYWxpemUgZWRpdCBtb2RlbCBhbmQgcmVxdWlyZWQgRERMc1xyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgdGhpcy53b3JrZmxvd0FjdGl2aXR5U2VydmljZS5nZXRFZGl0V29ya0Zsb3dBY3Rpdml0eURhdGEodGhpcy5hY3Rpdml0eUlEKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5hY3Rpdml0eU1vZGVsID0gcmVzdWx0T2JqLm1vZGVsO1xyXG4gICAgICB2YXIgbGlzdCA9IHJlc3VsdE9iai5saXN0O1xyXG4gICAgICB0aGlzLkFjdGl2aXR5VHlwZUxpc3QgPSByZXN1bHRPYmouYWN0aXZpdHlMaXN0O1xyXG4gICAgICB0aGlzLm5leHRBY3Rpdml0eUxpc3QgPSBsaXN0LmFjdGl2aXRpZXM7XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlSUQgPSB0aGlzLmFjdGl2aXR5TW9kZWwuYWN0aXZpdHlUeXBlSXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHRoaXMuaXNQdWJsaXNoZWQgPSB0aGlzLmFjdGl2aXR5TW9kZWwuaXNQdWJsaXNoZWQ7XHJcbiAgICAgIHRoaXMudmVyc2lvbklEID0gdGhpcy5hY3Rpdml0eU1vZGVsLnZlcnNpb25JRF9HVUlEO1xyXG5cclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXHJcbiAgICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0V0ZBY3Rpdml0eU1vZGVsO1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0V0ZBY3Rpdml0eUZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMuT25TdWNjZXNzSGFuZGxlciA9IHRoaXMub25FZGl0U3VjY2VzcztcclxuXHJcbiAgICAgIGxldCBuYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgbmFtZS5FbmdsaXNoID0gdGhpcy5hY3Rpdml0eU1vZGVsLm5hbWUuZW5nbGlzaDtcclxuICAgICAgbmFtZS5BcmFiaWMgPSB0aGlzLmFjdGl2aXR5TW9kZWwubmFtZS5hcmFiaWM7XHJcbiAgICAgIHRoaXMubmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLm5hbWUuTmFtZSA9IFwibmFtZVwiO1xyXG4gICAgICB0aGlzLm5hbWUuQXJhYmljTGFiZWxLZXkgPSBcIk5hbWVJbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLm5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMubmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5uYW1lLlZhbHVlID0gbmFtZTtcclxuICAgICAgdGhpcy5uYW1lLk1heExlbmd0aCA9IDI1NTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lc1Jlc3VsdDogYW55ID0gdGhpcy5nZXRBY3Rpdml0eU91dGNvbWVzT3B0aW9ucyh0aGlzLmFjdGl2aXR5TW9kZWwub3V0Y29tZXMsIHRoaXMuaXNQdWJsaXNoZWQpO1xyXG4gICAgICB0aGlzLm91dGNvbWVzT3B0aW9ucyA9IG91dGNvbWVzUmVzdWx0WzBdO1xyXG4gICAgICB0aGlzLm91dGNvbWVzQ291bnQgPSBvdXRjb21lc1Jlc3VsdFsxXTtcclxuXHJcbiAgICAgIHRoaXMuc2hvd0FjdGl2aXR5VHlwZSA9IGZhbHNlO1xyXG5cclxuICAgICAgaWYgKHRoaXMuaXNQdWJsaXNoZWQpIHtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMuYWN0aXZpdHlUeXBlSUQpIHtcclxuICAgICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkFwcHJvdmFsOlxyXG4gICAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQWN0aW9uOlxyXG4gICAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuUGVyY2VudGFnZVRhc2s6XHJcbiAgICAgICAgICAgIHRoaXMudGFza1R5cGVMaXN0ID0gbGlzdC50YXNrcztcclxuICAgICAgICAgICAgbGV0IHRhc2tOYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgICAgICAgdGFza05hbWUuRW5nbGlzaCA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrTmFtZS5lbmdsaXNoO1xyXG4gICAgICAgICAgICB0YXNrTmFtZS5BcmFiaWMgPSB0aGlzLmFjdGl2aXR5TW9kZWwudGFza05hbWUuYXJhYmljO1xyXG5cclxuICAgICAgICAgICAgbGV0IHRhc2tEZXNjcmlwdGlvbiA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgICAgICAgIHRhc2tEZXNjcmlwdGlvbi5FbmdsaXNoID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tEZXNjcmlwdGlvbi5lbmdsaXNoO1xyXG4gICAgICAgICAgICB0YXNrRGVzY3JpcHRpb24uQXJhYmljID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tEZXNjcmlwdGlvbi5hcmFiaWM7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5OYW1lID0gXCJkeW5hbWljVGFza05hbWVcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuQXJhYmljTGFiZWxLZXkgPSBcIlRhc2tOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJUYXNrTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5WYWx1ZSA9IHRhc2tOYW1lO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5OYW1lID0gXCJkeW5hbWljVGFza0Rlc2NyaXB0aW9uXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiVGFza0Rlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uLkVuZ2xpc2hMYWJlbEtleSA9IFwiVGFza0Rlc2NyaXB0aW9uSW5FbmdsaXNoXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5WYWx1ZSA9IHRhc2tEZXNjcmlwdGlvbjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uLk1heExlbmd0aCA9IDI1NTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5OYW1lID0gXCJkeW5hbWljVGFza1VSTFwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLkxhYmVsS2V5ID0gXCJUYXNrVVJMXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLlZhbHVlID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tVUkw7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuTWF4TGVuZ3RoID0gMjA4MztcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5OYW1lID0gXCJkeW5hbWljVGFza1R5cGVcIlxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5MYWJlbEtleSA9IFwiVGFza1R5cGVcIlxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5EYXRhU291cmNlID0gdGhpcy50YXNrVHlwZUxpc3RcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuU2VsZWN0ZWRJdGVtcyA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrQ29ycmxUeXBlSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuTmFtZSA9IFwiZHluYW1pY0NhbkNvbXBsZXRlXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLkxhYmVsS2V5ID0gXCJDYW5Db21wbGV0ZUZyb21UTUVcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLlZhbHVlID0gdGhpcy5hY3Rpdml0eU1vZGVsLmNhbkNvbXBsZXRlRnJvbVRNRTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0R5bmFtaWNDb250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQ29uZGl0aW9uOlxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU1dGVmFyaWFibGVMaXN0ID0gbGlzdC53ZlZhcmlhYmxlcztcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdCA9IGxpc3Qud2ZWYXJpYWJsZXM7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZUxpc3QgPSBsaXN0LnJoc1R5cGVzO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxpc3QgPSBsaXN0LmNvbmRpdGlvbnM7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvbkxIU0Ryb3BEb3duXCJcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25MSFNXRlZhcmlhYmxlTGlzdFxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwubGhzVmFyaWFibGVJRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvbnNEcm9wRG93blwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIkNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxpc3RcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwub3BlcmF0b3JUeXBlSXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uUkhTVHlwZURyb3BEb3duXCJcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25SSFNUeXBlTGlzdFxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uU2VsZWN0ZWRJdGVtcyA9IHRoaXMuYWN0aXZpdHlNb2RlbC5yaHNUeXBlSXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZpdHlNb2RlbC5SSFNUeXBlSXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCkgPT0gUmlnaHRoYW5kc2lkZXR5cGUuVmFyaWFibGUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uUkhTRHJvcERvd25cIlxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5TZWxlY3RlZEl0ZW1zID0gdGhpcy5hY3Rpdml0eU1vZGVsLnJoc1ZhcmlhYmxlSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuTmFtZSA9IFwiY29uZGl0aW9uUkhTVmFsdWVcIjtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5QbGFjZWhvbGRlciA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuVmFsdWUgPSB0aGlzLmFjdGl2aXR5TW9kZWwucmhzVmFsdWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5NYXhMZW5ndGggPSA1MTI7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5zaG93Q29uZGl0aW9uQ29udHJvbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnN5c05hbWUuTmFtZSA9IFwic3lzTmFtZVwiO1xyXG4gICAgICAgIHRoaXMuc3lzTmFtZS5MYWJlbEtleSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgICAgIHRoaXMuc3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5zeXNOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc3lzTmFtZS5WYWx1ZSA9IHRoaXMuYWN0aXZpdHlNb2RlbC5zeXNOYW1lO1xyXG4gICAgICAgIHRoaXMuc3lzTmFtZS5NYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2aXR5VHlwZUlEICE9IEFjdGl2aXR5VHlwZS5TdGFydCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93QWN0aXZpdHlUeXBlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5VHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLk5hbWUgPSBcImFjdGl2aXR5VHlwZVwiXHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5VHlwZS5MYWJlbEtleSA9IFwiQWN0aXZpdHlUeXBlXCJcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLkRhdGFTb3VyY2UgPSB0aGlzLkFjdGl2aXR5VHlwZUxpc3RcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5VHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5VHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5VHlwZUlEO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3dpdGNoICh0aGlzLmFjdGl2aXR5VHlwZUlEKSB7XHJcbiAgICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5BcHByb3ZhbDpcclxuICAgICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkFjdGlvbjpcclxuICAgICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLlBlcmNlbnRhZ2VUYXNrOlxyXG4gICAgICAgICAgICB0aGlzLnRhc2tUeXBlTGlzdCA9IGxpc3QudGFza3M7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50VHlwZXM7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnREYXRhTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50RGF0YTtcclxuXHJcbiAgICAgICAgICAgIGxldCB0YXNrTmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgICAgICAgIHRhc2tOYW1lLkVuZ2xpc2ggPSB0aGlzLmFjdGl2aXR5TW9kZWwudGFza05hbWUuZW5nbGlzaDtcclxuICAgICAgICAgICAgdGFza05hbWUuQXJhYmljID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tOYW1lLmFyYWJpYztcclxuXHJcbiAgICAgICAgICAgIGxldCB0YXNrRGVzY3JpcHRpb24gPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICAgICAgICB0YXNrRGVzY3JpcHRpb24uRW5nbGlzaCA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrRGVzY3JpcHRpb24uZW5nbGlzaDtcclxuICAgICAgICAgICAgdGFza0Rlc2NyaXB0aW9uLkFyYWJpYyA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrRGVzY3JpcHRpb24uYXJhYmljO1xyXG4gICAgICAgICAgICAvL0luaXRpYWxpemUgcmVxdWlyZWQgY29udHJvbHMgZm9yIGFwcHJvdmFsXHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLk5hbWUgPSBcInBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuTGFiZWxLZXkgPSBcIlBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuRGF0YVNvdXJjZSA9IHRoaXMucGFydGljaXBhbnRUeXBlTGlzdFxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwucGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ0xpc3Q7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5hY3Rpdml0eU1vZGVsLnBhcnRpY2lwYW50VHlwZUl0ZW1JRHNTdHJpbmdMaXN0LmluY2x1ZGVzKFBhcnRpY2lwYW50VHlwZS5QZXJtaXNzaW9uU2V0KSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0Lk5hbWUgPSBcInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiXHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuTGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRcIlxyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LkRhdGFTb3VyY2UgPSB0aGlzLnBhcnRpY2lwYW50RGF0YUxpc3RcclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuU2VsZWN0ZWRJdGVtcyA9IHRoaXMuYWN0aXZpdHlNb2RlbC5wYXJ0aWNpcGFudFBlcm1zZXRzSURzU3RyaW5nO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd1BhcnRpY2lwYW50UGVybXNzaW9uU2V0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuTmFtZSA9IFwiZHluYW1pY1Rhc2tOYW1lXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJUYXNrTmFtZUluQXJhYmljXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiVGFza05hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuVmFsdWUgPSB0YXNrTmFtZTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuTWF4TGVuZ3RoID0gMjU1O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uTmFtZSA9IFwiZHluYW1pY1Rhc2tEZXNjcmlwdGlvblwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uQXJhYmljTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluQXJhYmljXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uVmFsdWUgPSB0YXNrRGVzY3JpcHRpb247XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuTmFtZSA9IFwiZHluYW1pY1Rhc2tVUkxcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5MYWJlbEtleSA9IFwiVGFza1VSTFwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5WYWx1ZSA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrVVJMO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLk1heExlbmd0aCA9IDIwODM7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuTmFtZSA9IFwiZHluYW1pY1Rhc2tUeXBlXCJcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuTGFiZWxLZXkgPSBcIlRhc2tUeXBlXCJcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuRGF0YVNvdXJjZSA9IHRoaXMudGFza1R5cGVMaXN0XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwudGFza0NvcnJsVHlwZUlEPy50b1N0cmluZygpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLk5hbWUgPSBcImR5bmFtaWNDYW5Db21wbGV0ZVwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5MYWJlbEtleSA9IFwiQ2FuQ29tcGxldGVGcm9tVE1FXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5WYWx1ZSA9IHRoaXMuYWN0aXZpdHlNb2RlbC5jYW5Db21wbGV0ZUZyb21UTUU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNob3dEeW5hbWljQ29udHJvbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5TdGFydDpcclxuICAgICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkVtYWlsOlxyXG4gICAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuU2xlZXA6XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2aXR5VHlwZUlEID09IEFjdGl2aXR5VHlwZS5FbWFpbCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50VHlwZXM7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0ID0gbGlzdC5wYXJ0aWNpcGFudHMucGFydGljaXBhbnREYXRhO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLk5hbWUgPSBcInBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5MYWJlbEtleSA9IFwiUGFydGljaXBhbnRUeXBlc1wiXHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLkRhdGFTb3VyY2UgPSB0aGlzLnBhcnRpY2lwYW50VHlwZUxpc3RcclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwucGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ0xpc3RcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZpdHlNb2RlbC5wYXJ0aWNpcGFudFR5cGVJdGVtSURzU3RyaW5nTGlzdC5pbmNsdWRlcyhQYXJ0aWNpcGFudFR5cGUuUGVybWlzc2lvblNldCkpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0Lk5hbWUgPSBcInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5MYWJlbEtleSA9IFwiUGVybWlzc2lvblNldFwiXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5EYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwucGFydGljaXBhbnRQZXJtc2V0c0lEc1N0cmluZztcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1BhcnRpY2lwYW50UGVybXNzaW9uU2V0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRDb250YWluZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBuYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgICAgICAgbmFtZS5BcmFiaWMgPSB0aGlzLmFjdGl2aXR5TW9kZWwubm9ybWFsT3V0Y29tZU5hbWUuYXJhYmljO1xyXG4gICAgICAgICAgICBuYW1lLkVuZ2xpc2ggPSB0aGlzLmFjdGl2aXR5TW9kZWwubm9ybWFsT3V0Y29tZU5hbWUuZW5nbGlzaDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5OYW1lID0gXCJzdGF0aWNPdXRjb21lTmFtZVwiO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJPdXRjb21lTmFtZUluQXJhYmljXCI7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJPdXRjb21lTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLlZhbHVlID0gbmFtZTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuTmFtZSA9IFwic3RhdGljT3V0Y29tZVN5c05hbWVcIjtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5MYWJlbEtleSA9IFwiRGVjaXNpb25TeXNOYW1lXCI7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLlZhbHVlID0gdGhpcy5hY3Rpdml0eU1vZGVsLm91dGNvbWVTeXNOYW1lO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLk1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5Lk5hbWUgPSBcInN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHlcIlxyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuTGFiZWxLZXkgPSBcIk5leHRBY3Rpdml0eVwiXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5EYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5TZWxlY3RlZEl0ZW1zID0gdGhpcy5hY3Rpdml0eU1vZGVsLm5leHRBY3Rpdml0eUlEX0dVSUQ/LnRvTG93ZXJDYXNlKClcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuTmFtZSA9IFwic3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnRcIjtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5MYWJlbEtleSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50LlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50LlZhbHVlID0gdGhpcy5hY3Rpdml0eU1vZGVsLmNhbkFkZENvbW1lbnQ7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNob3dTdGF0aWNDb250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQ29uZGl0aW9uOlxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU1dGVmFyaWFibGVMaXN0ID0gbGlzdC53ZlZhcmlhYmxlcztcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdCA9IGxpc3Qud2ZWYXJpYWJsZXM7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZUxpc3QgPSBsaXN0LnJoc1R5cGVzO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxpc3QgPSBsaXN0LmNvbmRpdGlvbnM7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvbkxIU0Ryb3BEb3duXCJcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25MSFNXRlZhcmlhYmxlTGlzdFxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwubGhzVmFyaWFibGVJRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvbnNEcm9wRG93blwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIkNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxpc3RcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwub3BlcmF0b3JUeXBlSXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKClcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25SSFNUeXBlRHJvcERvd25cIlxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5TZWxlY3RlZEl0ZW1zID0gdGhpcy5hY3Rpdml0eU1vZGVsLnJoc1R5cGVJdGVtSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2aXR5TW9kZWwucmhzVHlwZUl0ZW1JRF9HVUlEPy50b0xvd2VyQ2FzZSgpID09IFJpZ2h0aGFuZHNpZGV0eXBlLlZhcmlhYmxlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvblJIU0Ryb3BEb3duXCJcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLlBsYWNlaG9sZGVyID0gXCJXb3JrZmxvd1ZhcmlhYmxlc1wiXHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdFxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uU2VsZWN0ZWRJdGVtcyA9IHRoaXMuYWN0aXZpdHlNb2RlbC5yaHNWYXJpYWJsZUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLk5hbWUgPSBcImNvbmRpdGlvblJIU1ZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuUGxhY2Vob2xkZXIgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLlZhbHVlID0gdGhpcy5hY3Rpdml0eU1vZGVsLnJoc1ZhbHVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuTWF4TGVuZ3RoID0gNTEyO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaG93Q29uZGl0aW9uQ29udHJvbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc0VkaXRGb3JtTG9hZGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9FZGl0IGZ1bmN0aW9uc1xyXG4gIGdldEVkaXRXRkFjdGl2aXR5TW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIGxldCBlZGl0TW9kZWwgPSBuZXcgV0ZBY3Rpdml0eU1vZGVsKCk7XHJcbiAgICBlZGl0TW9kZWwuSURfR1VJRCA9IHRoaXMuYWN0aXZpdHlJRDtcclxuICAgIGVkaXRNb2RlbC5OYW1lLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5uYW1lLkVuZ2xpc2g7XHJcbiAgICBlZGl0TW9kZWwuTmFtZS5BcmFiaWMgPSBSZXN1bHRNb2RlbC5uYW1lLkFyYWJpYztcclxuICAgIGVkaXRNb2RlbC5WZXJzaW9uSURfR1VJRCA9IHRoaXMudmVyc2lvbklEO1xyXG4gICAgZWRpdE1vZGVsLkFjdGl2aXR5VHlwZUl0ZW1JRF9HVUlEID0gdGhpcy5hY3Rpdml0eVR5cGVJRDtcclxuICAgIGVkaXRNb2RlbC5TeXNOYW1lID0gUmVzdWx0TW9kZWwuc3lzTmFtZVxyXG5cclxuICAgIC8vSWYgcGFydGljaXBhbnQgZXhpc3RzXHJcbiAgICBpZiAoUmVzdWx0TW9kZWwucGFydGljaXBhbnRUeXBlcyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgZWRpdE1vZGVsLlBhcnRpY2lwYW50RFRPID0gbmV3IFBhcnRpY2lwYW50TW9kZWwoKTtcclxuICAgICAgZWRpdE1vZGVsLlBhcnRpY2lwYW50RFRPID0gbmV3IFBhcnRpY2lwYW50TW9kZWwoKTtcclxuICAgICAgZWRpdE1vZGVsLlBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRHNTdHJpbmcgPSBSZXN1bHRNb2RlbC5wYXJ0aWNpcGFudFR5cGVzLnRvU3RyaW5nKCk7XHJcbiAgICAgIGlmIChSZXN1bHRNb2RlbC5wYXJ0aWNpcGFudFR5cGVzLmluY2x1ZGVzKFBhcnRpY2lwYW50VHlwZS5QZXJtaXNzaW9uU2V0KSkge1xyXG4gICAgICAgIGVkaXRNb2RlbC5QYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nID0gUmVzdWx0TW9kZWwucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LnRvU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHN3aXRjaCAodGhpcy5hY3Rpdml0eVR5cGVJRCkge1xyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5BcHByb3ZhbDpcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQWN0aW9uOlxyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5QZXJjZW50YWdlVGFzazpcclxuICAgICAgICBlZGl0TW9kZWwuVGFza05hbWUuRW5nbGlzaCA9IFJlc3VsdE1vZGVsLmR5bmFtaWNUYXNrTmFtZS5FbmdsaXNoO1xyXG4gICAgICAgIGVkaXRNb2RlbC5UYXNrTmFtZS5BcmFiaWMgPSBSZXN1bHRNb2RlbC5keW5hbWljVGFza05hbWUuQXJhYmljO1xyXG4gICAgICAgIGVkaXRNb2RlbC5UYXNrRGVzY3JpcHRpb24uRW5nbGlzaCA9IFJlc3VsdE1vZGVsLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uRW5nbGlzaDtcclxuICAgICAgICBlZGl0TW9kZWwuVGFza0Rlc2NyaXB0aW9uLkFyYWJpYyA9IFJlc3VsdE1vZGVsLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uQXJhYmljO1xyXG4gICAgICAgIGVkaXRNb2RlbC5UYXNrVVJMID0gUmVzdWx0TW9kZWwuZHluYW1pY1Rhc2tVUkw7XHJcbiAgICAgICAgZWRpdE1vZGVsLlRhc2tDb3JybFR5cGVJRCA9IFJlc3VsdE1vZGVsLmR5bmFtaWNUYXNrVHlwZSAhPSBudWxsID8gTnVtYmVyKFJlc3VsdE1vZGVsLmR5bmFtaWNUYXNrVHlwZSkgOiBudWxsO1xyXG4gICAgICAgIGVkaXRNb2RlbC5DYW5Db21wbGV0ZUZyb21UTUUgPSBSZXN1bHRNb2RlbC5keW5hbWljQ2FuQ29tcGxldGU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLlN0YXJ0OlxyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5FbWFpbDpcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuU2xlZXA6XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzUHVibGlzaGVkKSB7XHJcbiAgICAgICAgICBlZGl0TW9kZWwuTm9ybWFsT3V0Y29tZU5hbWUuRW5nbGlzaCA9IFJlc3VsdE1vZGVsLnN0YXRpY091dGNvbWVOYW1lLkVuZ2xpc2g7XHJcbiAgICAgICAgICBlZGl0TW9kZWwuTm9ybWFsT3V0Y29tZU5hbWUuQXJhYmljID0gUmVzdWx0TW9kZWwuc3RhdGljT3V0Y29tZU5hbWUuQXJhYmljO1xyXG4gICAgICAgICAgZWRpdE1vZGVsLk91dGNvbWVTeXNOYW1lID0gUmVzdWx0TW9kZWwuc3RhdGljT3V0Y29tZVN5c05hbWU7XHJcbiAgICAgICAgICBlZGl0TW9kZWwuTmV4dEFjdGl2aXR5SURfR1VJRCA9IFJlc3VsdE1vZGVsLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHk7XHJcbiAgICAgICAgICBlZGl0TW9kZWwuQ2FuQWRkQ29tbWVudCA9IFJlc3VsdE1vZGVsLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQ29uZGl0aW9uOlxyXG4gICAgICAgIGVkaXRNb2RlbC5MSFNWYXJpYWJsZUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5jb25kaXRpb25MSFNEcm9wRG93bjtcclxuICAgICAgICBlZGl0TW9kZWwuUkhTVmFyaWFibGVJRF9HVUlEID0gUmVzdWx0TW9kZWwuY29uZGl0aW9uUkhTRHJvcERvd247XHJcbiAgICAgICAgZWRpdE1vZGVsLlJIU1R5cGVJdGVtSURfR1VJRCA9IFJlc3VsdE1vZGVsLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93blxyXG4gICAgICAgIGVkaXRNb2RlbC5PcGVyYXRvclR5cGVJdGVtSURfR1VJRCA9IFJlc3VsdE1vZGVsLmNvbmRpdGlvbnNEcm9wRG93blxyXG4gICAgICAgIGVkaXRNb2RlbC5SSFNWYWx1ZSA9IFJlc3VsdE1vZGVsLmNvbmRpdGlvblJIU1ZhbHVlICE9IHVuZGVmaW5lZCA/IFJlc3VsdE1vZGVsLmNvbmRpdGlvblJIU1ZhbHVlIDogbnVsbDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIC8vU2V0IE91dGNvbWVzIChkeW5hbWljLGNvbmRpdGlvbiB0eXBlcylcclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5vdXRjb21lc0NvdW50OyBqKyspIHtcclxuICAgICAgbGV0IG91dGNvbWVJRCA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZUlEXCIgKyBqXTtcclxuICAgICAgaWYgKG91dGNvbWVJRCA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZU5hbWUgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVOYW1lXCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lU3lzTmFtZTogc3RyaW5nO1xyXG4gICAgICBsZXQgb3V0Q29tZUNhbkVkaXRTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lQ2FuRWRpdFN5c05hbWVcIiArIGpdO1xyXG4gICAgICBpZiAob3V0Q29tZUNhbkVkaXRTeXNOYW1lKVxyXG4gICAgICAgIG91dGNvbWVTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lRGVjaXNpb25TeXNOYW1lXCIgKyBqXTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIG91dGNvbWVTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVBY3Rpdml0eSA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzXCIgKyBqXTtcclxuICAgICAgbGV0IG91dGNvbWVDYW5BZGRDb21tZW50ID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lQ2FuQWRkQ29tbWVudFwiICsgal07XHJcbiAgICAgIGxldCBhY3Rpdml0eU91dGNvbWU6IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwgPSBuZXcgV0ZBY3Rpdml0eU91dGNvbWVNb2RlbCgpO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuSURfR1VJRCA9IG91dGNvbWVJRDtcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLk5hbWVFTiA9IG91dGNvbWVOYW1lLkVuZ2xpc2g7XHJcbiAgICAgIGFjdGl2aXR5T3V0Y29tZS5OYW1lQVIgPSBvdXRjb21lTmFtZS5BcmFiaWM7XHJcbiAgICAgIGFjdGl2aXR5T3V0Y29tZS5PdXRjb21lU3lzTmFtZSA9IG91dGNvbWVTeXNOYW1lO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuTmV4dEFjdGl2aXR5SURfR1VJRCA9IG91dGNvbWVBY3Rpdml0eVxyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuQ2FuQWRkQ29tbWVudCA9IG91dGNvbWVDYW5BZGRDb21tZW50O1xyXG4gICAgICBlZGl0TW9kZWwuT3V0Y29tZXMucHVzaChhY3Rpdml0eU91dGNvbWUpO1xyXG4gICAgfVxyXG4gICAgcGFyYW1BcnJheS5wdXNoKGVkaXRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcbiAgZ2V0RWRpdFdGQWN0aXZpdHlGdW5jdGlvbiA9IChlZGl0TW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgaWYgKHRoaXMuaXNQdWJsaXNoZWQpXHJcbiAgICAgIHJldHVybiB0aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLmVkaXRQdWJsaXNoZWRBY3Rpdml0eShlZGl0TW9kZWwpO1xyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gdGhpcy53b3JrZmxvd0FjdGl2aXR5U2VydmljZS5lZGl0QWN0aXZpdHkoZWRpdE1vZGVsKTtcclxuICB9XHJcbiAgb25FZGl0U3VjY2VzcyA9IChyZXN1bHQpID0+IHtcclxuICAgIHRoaXMuY2FuY2VsRWRpdCgpO1xyXG4gIH1cclxuXHJcbiAgLy9PdXRjb21lIGZ1bmN0aW9uc1xyXG4gIGdldEFjdGl2aXR5T3V0Y29tZXNPcHRpb25zKG91dENvbWVzOiBhbnlbXSwgaXNQdWJsaXNoZWQ6IGJvb2xlYW4pIHtcclxuICAgIGxldCBvdXRjb21lc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBsZXQgb3V0Y29tZXNDb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG91dENvbWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjdXJyZW50T3V0Y29tZSA9IG91dENvbWVzW2ldO1xyXG4gICAgICBsZXQgb2JqZWN0T3V0Y29tZU9wdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUlEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVJRC5OYW1lID0gXCJvdXRjb21lSURcIiArIGk7XHJcbiAgICAgIG91dGNvbWVJRC5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBvdXRjb21lSUQuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBvdXRjb21lSUQuVmFsdWUgPSBjdXJyZW50T3V0Y29tZS5pRF9HVUlEO1xyXG5cclxuICAgICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBuYW1lLkVuZ2xpc2ggPSBjdXJyZW50T3V0Y29tZS5uYW1lRU47XHJcbiAgICAgIG5hbWUuQXJhYmljID0gY3VycmVudE91dGNvbWUubmFtZUFSO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVOYW1lLk5hbWUgPSBcIm91dGNvbWVOYW1lXCIgKyBpO1xyXG4gICAgICBvdXRjb21lTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICAgIG91dGNvbWVOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICBvdXRjb21lTmFtZS5WYWx1ZSA9IG5hbWU7XHJcbiAgICAgIG91dGNvbWVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICBvdXRjb21lTmFtZS5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuTmFtZSA9IFwib3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzXCIgKyBpO1xyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuTGFiZWxLZXkgPSBcIkFjdGl2aXR5XCJcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLkRhdGFTb3VyY2UgPSB0aGlzLm5leHRBY3Rpdml0eUxpc3RcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5TZWxlY3RlZEl0ZW1zID0gY3VycmVudE91dGNvbWUubmV4dEFjdGl2aXR5SURfR1VJRD8udG9Mb3dlckNhc2UoKVxyXG5cclxuICAgICAgbGV0IG91dGNvbWVDYW5FZGl0OiBib29sZWFuO1xyXG4gICAgICBvdXRjb21lQ2FuRWRpdCA9IGN1cnJlbnRPdXRjb21lLmNhbkVkaXQ7XHJcbiAgICAgIGxldCBvdXRjb21lSGlkZGVuZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVIaWRkZW5lU3lzTmFtZVwiICsgaTtcclxuICAgICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLlZhbHVlID0gY3VycmVudE91dGNvbWUub3V0Y29tZVN5c05hbWU7XHJcbiAgICAgIGxldCBvdXRjb21lQ2FuRWRpdFN5c05hbWUgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVDYW5FZGl0U3lzTmFtZS5OYW1lID0gXCJvdXRjb21lQ2FuRWRpdFN5c05hbWVcIiArIGk7XHJcbiAgICAgIG91dGNvbWVDYW5FZGl0U3lzTmFtZS5WYWx1ZSA9IGN1cnJlbnRPdXRjb21lLmNhbkVkaXRTeXNOYW1lO1xyXG5cclxuICAgICAgaWYgKCFpc1B1Ymxpc2hlZCkge1xyXG4gICAgICAgIGxldCBvdXRjb21lRGVjaXNpb25TeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5OYW1lID0gXCJvdXRjb21lRGVjaXNpb25TeXNOYW1lXCIgKyBpO1xyXG4gICAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuTGFiZWxLZXkgPSBcIkRlY2lzaW9uU3lzTmFtZVwiO1xyXG4gICAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuVmFsdWUgPSBjdXJyZW50T3V0Y29tZS5vdXRjb21lU3lzTmFtZTtcclxuICAgICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLklzRGlzYWJsZWQgPSAhY3VycmVudE91dGNvbWUuY2FuRWRpdFN5c05hbWU7XHJcbiAgICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLk1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgICAgbGV0IG91dGNvbWVDYW5BZGRDb21tZW50ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIG91dGNvbWVDYW5BZGRDb21tZW50Lk5hbWUgPSBcIm91dGNvbWVDYW5BZGRDb21tZW50XCIgKyBpO1xyXG4gICAgICAgIG91dGNvbWVDYW5BZGRDb21tZW50LlZhbHVlID0gY3VycmVudE91dGNvbWUuY2FuQWRkQ29tbWVudDtcclxuICAgICAgICBvdXRjb21lQ2FuQWRkQ29tbWVudC5MYWJlbEtleSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG5cclxuICAgICAgICBvYmplY3RPdXRjb21lT3B0aW9ucy5wdXNoKG91dGNvbWVJRCwgb3V0Y29tZU5hbWUsIG91dGNvbWVEZWNpc2lvblN5c05hbWUsIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcywgb3V0Y29tZUNhbkFkZENvbW1lbnQsIG91dGNvbWVDYW5FZGl0LCBvdXRjb21lSGlkZGVuZVN5c05hbWUsIG91dGNvbWVDYW5FZGl0U3lzTmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIG9iamVjdE91dGNvbWVPcHRpb25zLnB1c2gob3V0Y29tZUlELCBvdXRjb21lTmFtZSwgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLCBvdXRjb21lQ2FuRWRpdCwgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLCBvdXRjb21lQ2FuRWRpdFN5c05hbWUpO1xyXG5cclxuICAgICAgb3V0Y29tZXNPcHRpb25zLnB1c2gob2JqZWN0T3V0Y29tZU9wdGlvbnMpO1xyXG4gICAgICBvdXRjb21lc0NvdW50ICs9IDE7XHJcblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtvdXRjb21lc09wdGlvbnMsIG91dGNvbWVzQ291bnRdO1xyXG4gIH1cclxuICBhZGRXRkFjdGl2aXR5T3V0Y29tZSgpIHtcclxuICAgIGxldCBpbmRleCA9IHRoaXMub3V0Y29tZXNDb3VudDtcclxuXHJcbiAgICBsZXQgb2JqZWN0T3V0Y29tZU9wdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgbGV0IG91dGNvbWVJRCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZUlELk5hbWUgPSBcIm91dGNvbWVJRFwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lSUQuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIG91dGNvbWVJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcblxyXG4gICAgbGV0IG91dGNvbWVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lTmFtZS5OYW1lID0gXCJvdXRjb21lTmFtZVwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICBvdXRjb21lTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgIG91dGNvbWVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lRGVjaXNpb25TeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5MYWJlbEtleSA9IFwiRGVjaXNpb25TeXNOYW1lXCI7XHJcbiAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgbGV0IG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5OYW1lID0gXCJvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXNcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLkxhYmVsS2V5ID0gXCJBY3Rpdml0eVwiXHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuRGF0YVNvdXJjZSA9IHRoaXMubmV4dEFjdGl2aXR5TGlzdFxyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lQ2FuQWRkQ29tbWVudCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVDYW5BZGRDb21tZW50Lk5hbWUgPSBcIm91dGNvbWVDYW5BZGRDb21tZW50XCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVDYW5BZGRDb21tZW50LkxhYmVsS2V5ID0gXCJDYW5BZGRDb21tZW50XCI7XHJcblxyXG4gICAgbGV0IG91dGNvbWVDYW5FZGl0OiBib29sZWFuO1xyXG4gICAgb3V0Y29tZUNhbkVkaXQgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lSGlkZGVuZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5OYW1lID0gXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuXHJcbiAgICBsZXQgb3V0Y29tZUNhbkVkaXRTeXNOYW1lID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVDYW5FZGl0U3lzTmFtZVwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lQ2FuRWRpdFN5c05hbWUuVmFsdWUgPSB0cnVlO1xyXG5cclxuICAgIG9iamVjdE91dGNvbWVPcHRpb25zLnB1c2gob3V0Y29tZUlELCBvdXRjb21lTmFtZSwgb3V0Y29tZURlY2lzaW9uU3lzTmFtZSwgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLCBvdXRjb21lQ2FuQWRkQ29tbWVudCxcclxuICAgICAgb3V0Y29tZUNhbkVkaXQsIG91dGNvbWVIaWRkZW5lU3lzTmFtZSwgb3V0Y29tZUNhbkVkaXRTeXNOYW1lKTtcclxuXHJcbiAgICB0aGlzLm91dGNvbWVzT3B0aW9ucy5wdXNoKG9iamVjdE91dGNvbWVPcHRpb25zKTtcclxuICAgIHRoaXMub3V0Y29tZXNDb3VudCArPSAxO1xyXG5cclxuICB9XHJcbiAgZGVsZXRlT3V0Y29tZShkZWxldGVkT3V0Y29tZTogYW55KSB7XHJcbiAgICBsZXQgZGVsZXRlZE91dGNvbWVJbmRleDogbnVtYmVyID0gdGhpcy5vdXRjb21lc09wdGlvbnMuaW5kZXhPZihkZWxldGVkT3V0Y29tZSk7XHJcbiAgICBpZiAoZGVsZXRlZE91dGNvbWVJbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5vdXRjb21lc09wdGlvbnMuc3BsaWNlKGRlbGV0ZWRPdXRjb21lSW5kZXgsIDEpO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZWRPdXRjb21lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChkZWxldGVkT3V0Y29tZVtpXS5OYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9PbiBjaGFuZ2VzIGV2ZW50c1xyXG4gIGFjdGl2aXR5VHlwZU9uQ2hhbmdlKGFjdGl2aXR5VHlwZSkge1xyXG4gICAgYWN0aXZpdHlUeXBlID0gYWN0aXZpdHlUeXBlPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgLy9SZXNldCBjb250cm9scywgb3V0Y29tZXMgYW5kIGZsYWdzXHJcbiAgICB0aGlzLnJlc2V0QWxsQWN0aXZpdHlUeXBlQ29udHJvbHMoKTtcclxuICAgIHRoaXMub3V0Y29tZXNPcHRpb25zID0gW107XHJcbiAgICB0aGlzLm91dGNvbWVzQ291bnQgPSAwO1xyXG4gICAgdGhpcy5zaG93UGFydGljaXBhbnRDb250YWluZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0R5bmFtaWNDb250cm9scyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U3RhdGljQ29udHJvbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NvbmRpdGlvbkNvbnRyb2xzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuYWN0aXZpdHlUeXBlSUQgPSBhY3Rpdml0eVR5cGU7XHJcbiAgICB0aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLmdldEFjdGl2aXR5T3V0Y29tZXModGhpcy52ZXJzaW9uSUQsIGFjdGl2aXR5VHlwZSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdmFyIHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIHZhciBtb2RlbCA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgdmFyIGxpc3QgPSByZXN1bHRPYmoubGlzdDtcclxuICAgICAgdGhpcy5uZXh0QWN0aXZpdHlMaXN0ID0gbGlzdC5hY3Rpdml0aWVzO1xyXG5cclxuICAgICAgc3dpdGNoIChhY3Rpdml0eVR5cGUpIHtcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5BcHByb3ZhbDpcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5BY3Rpb246XHJcbiAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuUGVyY2VudGFnZVRhc2s6XHJcbiAgICAgICAgICB0aGlzLnRhc2tUeXBlTGlzdCA9IGxpc3QudGFza3M7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZUxpc3QgPSBsaXN0LnBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudFR5cGVzO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0ID0gbGlzdC5wYXJ0aWNpcGFudHMucGFydGljaXBhbnREYXRhO1xyXG5cclxuICAgICAgICAgIC8vSW5pdGlhbGl6ZSByZXF1aXJlZCBjb250cm9scyBmb3IgYXBwcm92YWxcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5OYW1lID0gXCJwYXJ0aWNpcGFudFR5cGVzXCJcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5MYWJlbEtleSA9IFwiUGFydGljaXBhbnRUeXBlc1wiXHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuRGF0YVNvdXJjZSA9IHRoaXMucGFydGljaXBhbnRUeXBlTGlzdFxyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuTmFtZSA9IFwiZHluYW1pY1Rhc2tOYW1lXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiVGFza05hbWVJbkFyYWJpY1wiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJUYXNrTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuTWF4TGVuZ3RoID0gMjU1O1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5OYW1lID0gXCJkeW5hbWljVGFza0Rlc2NyaXB0aW9uXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uQXJhYmljTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluQXJhYmljXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uRW5nbGlzaExhYmVsS2V5ID0gXCJUYXNrRGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5OYW1lID0gXCJkeW5hbWljVGFza1VSTFwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5MYWJlbEtleSA9IFwiVGFza1VSTFwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLk1heExlbmd0aCA9IDIwODM7XHJcblxyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5OYW1lID0gXCJkeW5hbWljVGFza1R5cGVcIlxyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuTGFiZWxLZXkgPSBcIlRhc2tUeXBlXCJcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLkRhdGFTb3VyY2UgPSB0aGlzLnRhc2tUeXBlTGlzdFxyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuTmFtZSA9IFwiZHluYW1pY0NhbkNvbXBsZXRlXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5MYWJlbEtleSA9IFwiQ2FuQ29tcGxldGVGcm9tVE1FXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLlZhbHVlID0gbW9kZWwuY2FuQ29tcGxldGVGcm9tVE1FO1xyXG5cclxuICAgICAgICAgIGxldCBvdXRjb21lc1Jlc3VsdDogYW55ID0gdGhpcy5nZXRBY3Rpdml0eU91dGNvbWVzT3B0aW9ucyhtb2RlbC5vdXRjb21lcywgZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5vdXRjb21lc09wdGlvbnMgPSBvdXRjb21lc1Jlc3VsdFswXTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNDb3VudCA9IG91dGNvbWVzUmVzdWx0WzFdO1xyXG5cclxuICAgICAgICAgIHRoaXMuc2hvd0R5bmFtaWNDb250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5FbWFpbDpcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5TbGVlcDpcclxuICAgICAgICAgIGxldCBuYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgICAgIG5hbWUuQXJhYmljID0gbW9kZWwubm9ybWFsT3V0Y29tZU5hbWUuYXJhYmljO1xyXG4gICAgICAgICAgbmFtZS5FbmdsaXNoID0gbW9kZWwubm9ybWFsT3V0Y29tZU5hbWUuZW5nbGlzaDtcclxuXHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLk5hbWUgPSBcInN0YXRpY091dGNvbWVOYW1lXCI7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJPdXRjb21lTmFtZUluQXJhYmljXCI7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiT3V0Y29tZU5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLlZhbHVlID0gbmFtZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuTWF4TGVuZ3RoID0gMjU1O1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuTmFtZSA9IFwic3RhdGljT3V0Y29tZVN5c05hbWVcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuTGFiZWxLZXkgPSBcIkRlY2lzaW9uU3lzTmFtZVwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5NYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5Lk5hbWUgPSBcInN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHlcIlxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5LkxhYmVsS2V5ID0gXCJOZXh0QWN0aXZpdHlcIlxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5LkRhdGFTb3VyY2UgPSB0aGlzLm5leHRBY3Rpdml0eUxpc3RcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50ID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5OYW1lID0gXCJzdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5MYWJlbEtleSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuVmFsdWUgPSBtb2RlbC5jYW5BZGRDb21tZW50O1xyXG5cclxuICAgICAgICAgIHRoaXMuc2hvd1N0YXRpY0NvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkNvbmRpdGlvbjpcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3QgPSBsaXN0LndmVmFyaWFibGVzO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdCA9IGxpc3Qud2ZWYXJpYWJsZXM7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0ID0gbGlzdC5yaHNUeXBlcztcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTGlzdCA9IGxpc3QuY29uZGl0aW9ucztcclxuXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25MSFNEcm9wRG93blwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvbnNEcm9wRG93blwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiQ29uZGl0aW9uXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRSSFNUeXBlID0gdGhpcy5jb25kaXRpb25SSFNUeXBlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5Py50b0xvd2VyQ2FzZSgpID09IFJpZ2h0aGFuZHNpZGV0eXBlLlZhcmlhYmxlOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uUkhTVHlwZURyb3BEb3duXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRSSFNUeXBlO1xyXG5cclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvblJIU0Ryb3BEb3duXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiV29ya2Zsb3dWYXJpYWJsZXNcIlxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdFxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICBsZXQgY29uZGl0aW9uT3V0Y29tZXNSZXN1bHQ6IGFueSA9IHRoaXMuZ2V0QWN0aXZpdHlPdXRjb21lc09wdGlvbnMobW9kZWwub3V0Y29tZXMsIGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNPcHRpb25zID0gY29uZGl0aW9uT3V0Y29tZXNSZXN1bHRbMF07XHJcbiAgICAgICAgICB0aGlzLm91dGNvbWVzQ291bnQgPSBjb25kaXRpb25PdXRjb21lc1Jlc3VsdFsxXTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25Db250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2FuQWRkT3V0Y29tZSA9IHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID8gbW9kZWwuY2FuQWRkT3V0Y29tZSA6IGZhbHNlO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgY29uZGl0aW9uUkhTVHlwZU9uQ2hhbmdlKHR5cGUpIHtcclxuICAgIHR5cGUgPSB0eXBlPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKHR5cGUgPT0gUmlnaHRoYW5kc2lkZXR5cGUuVmFyaWFibGUpIHtcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImNvbmRpdGlvblJIU1ZhbHVlXCIpXHJcblxyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvblJIU0Ryb3BEb3duXCJcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdFxyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiY29uZGl0aW9uUkhTRHJvcERvd25cIilcclxuXHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5OYW1lID0gXCJjb25kaXRpb25SSFNWYWx1ZVwiO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuUGxhY2Vob2xkZXIgPSBcIlZhbHVlXCI7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLk1heExlbmd0aCA9IDUxMjtcclxuXHJcbiAgICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSBmYWxzZTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIHBhcnRpY2lwYW50VHlwZU9uQ2hhbmdlKHBhcnRpY2lwYW50VHlwZSkge1xyXG4gICAgcGFydGljaXBhbnRUeXBlID0gcGFydGljaXBhbnRUeXBlPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKHBhcnRpY2lwYW50VHlwZSA9PSBQYXJ0aWNpcGFudFR5cGUuUGVybWlzc2lvblNldCkge1xyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuTmFtZSA9IFwicGFydGljaXBhbnRQZXJtaXNzaW9uU2V0XCJcclxuICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuTGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRcIlxyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5EYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0XHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudFBlcm1zc2lvblNldCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiKTtcclxuICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuXHJcbiAgLy9SZXNldCB0eXBlXHJcbiAgcmVzZXRBbGxBY3Rpdml0eVR5cGVDb250cm9scygpIHtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJwYXJ0aWNpcGFudFR5cGVzXCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJwYXJ0aWNpcGFudFBlcm1pc3Npb25TZXRcIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiZHluYW1pY1Rhc2tOYW1lXCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImR5bmFtaWNUYXNrRGVzY3JpcHRpb25cIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiZHluYW1pY1Rhc2tVUkxcIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiZHluYW1pY1Rhc2tUeXBlXCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImR5bmFtaWNDYW5Db21wbGV0ZVwiKTtcclxuXHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwic3RhdGljT3V0Y29tZU5hbWVcIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwic3RhdGljT3V0Y29tZVN5c05hbWVcIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwic3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eVwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJzdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudFwiKTtcclxuXHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiY29uZGl0aW9uTEhTRHJvcERvd25cIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiY29uZGl0aW9uc0Ryb3BEb3duXCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImNvbmRpdGlvblJIU1R5cGVEcm9wRG93blwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJjb25kaXRpb25SSFNEcm9wRG93blwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJjb25kaXRpb25SSFNWYWx1ZVwiKTtcclxuXHJcbiAgICAvL1JlbW92ZSBvdXRjb21lcyBjb250cm9sc1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0udmFsdWU7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3V0Y29tZXNDb3VudDsgaSsrKSB7XHJcbiAgICAgIGxldCBvdXRjb21lSUQgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVJRFwiICsgaV07XHJcbiAgICAgIGlmIChvdXRjb21lSUQgPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVJRFwiICsgaSk7XHJcbiAgICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lTmFtZVwiICsgaSk7XHJcbiAgICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lRGVjaXNpb25TeXNOYW1lXCIgKyBpKTtcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVIaWRkZW5lU3lzTmFtZVwiICsgaSk7XHJcbiAgICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXNcIiArIGkpO1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwib3V0Y29tZUNhbkFkZENvbW1lbnRcIiArIGkpO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vQ2FuY2VsXHJcbiAgY2FuY2VsRWRpdCgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL0FkbWluL1dvcmtmbG93cy93b3JrZmxvdy8nXSk7XHJcbiAgfVxyXG5cclxuICAvL09uIGRlc3Ryb3lcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCIgKm5nSWY9XCJpc0VkaXRGb3JtTG9hZGVkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zXCI+XHJcbiAgICAgICAgPCEtLVN0YXJ0IHNoYXJlZCBjb250cm9scyBjb250YWluZXItLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwibmFtZVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiIWlzUHVibGlzaGVkXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic3lzTmFtZVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2hvd0FjdGl2aXR5VHlwZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWN0aXZpdHlUeXBlXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiIChPbkNoYW5nZSk9XCJhY3Rpdml0eVR5cGVPbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIHNoYXJlZCBjb250cm9scyBjb250YWluZXItLT5cclxuICAgICAgICA8IS0tU3RhcnQgcGFydGljaXBhbnQgY29udGFpbmVyLS0+XHJcbiAgICAgICAgPGRpdiBpZD1cInBhcnRpY2lwYW50Q29udGFpbmVyXCIgKm5nSWY9XCJzaG93UGFydGljaXBhbnRDb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJwYXJ0aWNpcGFudFR5cGVzXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiIChPbkNoYW5nZSk9XCJwYXJ0aWNpcGFudFR5cGVPbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1BhcnRpY2lwYW50UGVybXNzaW9uU2V0XCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJwYXJ0aWNpcGFudFBlcm1pc3Npb25TZXRcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIHBhcnRpY2lwYW50IGNvbnRhaW5lci0tPlxyXG4gICAgICAgIDwhLS1TdGFydCBzdGF0aWMgY29udHJvbHMtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1N0YXRpY0NvbnRyb2xzXCIgaWQ9XCJzdGF0aWNDb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwic3RhdGljT3V0Y29tZU5hbWVcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lU3lzTmFtZVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwic3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cInN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50XCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIHN0YXRpYyBjb250cm9scy0tPlxyXG4gICAgICAgIDwhLS1TdGFydCBkeW5hbWljIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dEeW5hbWljQ29udHJvbHNcIiBpZD1cImR5bmFtaWNDb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiZHluYW1pY1Rhc2tOYW1lXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhIFtvcHRpb25zXT1cImR5bmFtaWNUYXNrRGVzY3JpcHRpb25cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZHluYW1pY1Rhc2tVUkxcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImR5bmFtaWNUYXNrVHlwZVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImR5bmFtaWNDYW5Db21wbGV0ZVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLUVuZCBkeW5hbWljIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPCEtLVN0YXJ0IGNvbmRpdGlvbiBjb250cm9scy0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93Q29uZGl0aW9uQ29udHJvbHNcIiBpZD1cImNvbmRpdGlvbkNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXIgdGFibGUtdy1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJMZWZ0SGFuZFNpZGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ29uZGl0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlJpZ2h0SGFuZFNpZGVUeXBlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlJpZ2h0SGFuZFNpZGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiY29uZGl0aW9uTEhTRHJvcERvd25cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25zRHJvcERvd25cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25SSFNUeXBlRHJvcERvd25cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCIgKE9uQ2hhbmdlKT1cImNvbmRpdGlvblJIU1R5cGVPbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwic2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGU7IGVsc2UgY29uZGl0aW9uVHh0VmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiY29uZGl0aW9uUkhTRHJvcERvd25cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25kaXRpb25UeHRWYWx1ZT5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImNvbmRpdGlvblJIU1ZhbHVlXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgY29uZGl0aW9uIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPCEtLVN0YXJ0IG91dGNvbWVzIGNvbnRhaW5lci0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93T3V0Y29tZXNDb250YWluZXJcIiBpZD1cIm91dGNvbWVzQ29udGFpbmVyXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlciB0YWJsZS13LWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlY2lzaW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIiFpc1B1Ymxpc2hlZFwiIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCIhaXNQdWJsaXNoZWRcIiBjbGFzcz1cIm1pbi13LTE1MHB4XCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiIWlzUHVibGlzaGVkXCIgY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCIgKm5nSWY9XCJpc1B1Ymxpc2hlZDtlbHNlIG5vdFB1Ymxpc2hlZE91dGNvbWVzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ciAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvdXRjb21lc09wdGlvbnM7bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLUlELS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtoaWRkZW5dPVwidHJ1ZVwiIFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLU5hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tTmV4dEFjdGl2aXR5LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwib3B0aW9uWzJdXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGJvZHk+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RQdWJsaXNoZWRPdXRjb21lcz5cclxuICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3V0Y29tZXNPcHRpb25zO2xldCBpPWluZGV4O1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLUlELS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzBdXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLU5hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMV1cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVN5c05hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMl1cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0taGlkZGVuIFN5c05hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bNl1cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tY2FuIGVkaXQgU3lzTmFtZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bN11cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1OZXh0QWN0aXZpdHktLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIm9wdGlvblszXVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1DYW5BZGRDb21tZW50LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm9wdGlvbls0XVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1pZiBvdXRjb21lIENhbiBFZGl0LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwib3B0aW9uWzVdXCIgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLWxpZ2h0LWRhbmdlciBidG4tc21cIiAoY2xpY2spPVwiZGVsZXRlT3V0Y29tZShvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiY2FuQWRkT3V0Y29tZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImFkZFdGQWN0aXZpdHlPdXRjb21lKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGROZXdSZWNvcmRcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgb3V0Y29tZXMgY29udGFpbmVyLS0+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIiAoY2xpY2spPVwiY2FuY2VsRWRpdCgpXCI+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9CQlNGLUZvcm0+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|