@thetradeengineorg1/snova-shell-module 0.0.260 → 0.0.261
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 +24 -24
- package/bundles/thetradeengineorg1-snova-shell-module.umd.js +18874 -18874
- package/bundles/thetradeengineorg1-snova-shell-module.umd.js.map +1 -1
- package/esm2015/lib/globaldependencies/components/avatar.component.js +33 -33
- package/esm2015/lib/globaldependencies/components/componentbase.js +538 -538
- package/esm2015/lib/globaldependencies/constants/feature-ids.js +449 -449
- package/esm2015/lib/globaldependencies/constants/localstorage-properties.js +38 -38
- package/esm2015/lib/globaldependencies/helpers/dom.helper.js +70 -70
- package/esm2015/lib/globaldependencies/helpers/fontawesome-icons.js +144 -144
- package/esm2015/lib/globaldependencies/helpers/moment-utc-date-adapter.js +37 -37
- package/esm2015/lib/globaldependencies/helpers/window.helper.js +32 -32
- package/esm2015/lib/globaldependencies/intercepter/jwt.interceptor.js +40 -40
- package/esm2015/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.js +36 -36
- package/esm2015/lib/globaldependencies/pipes/highLightText.pipe.js +24 -24
- package/esm2015/lib/globaldependencies/pipes/orderby-pipe.js +24 -24
- package/esm2015/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.js +22 -22
- package/esm2015/lib/globaldependencies/pipes/sanitize.pipe.js +24 -24
- package/esm2015/lib/globaldependencies/pipes/softlabels.pipes.js +346 -346
- package/esm2015/lib/globaldependencies/pipes/utctolocaltime.pipe.js +23 -23
- package/esm2015/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.js +25 -25
- package/esm2015/lib/globaldependencies/pipes/workflowstatus.pipes.js +27 -27
- package/esm2015/lib/shell-components/components/Payments/account.component.js +121 -121
- package/esm2015/lib/shell-components/components/Payments/company-information.js +558 -558
- package/esm2015/lib/shell-components/components/Payments/company-plans.component.js +636 -636
- package/esm2015/lib/shell-components/components/Payments/document.component.js +129 -129
- package/esm2015/lib/shell-components/components/Payments/payment-method.component.js +90 -90
- package/esm2015/lib/shell-components/components/Payments/product-service.component.js +438 -438
- package/esm2015/lib/shell-components/components/Payments/purchase-more-licenses.js +249 -249
- package/esm2015/lib/shell-components/components/Payments/transactions.component.js +172 -172
- package/esm2015/lib/shell-components/components/admin-layout/admin-layout.component.js +350 -350
- package/esm2015/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.js +102 -102
- package/esm2015/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.js +126 -126
- package/esm2015/lib/shell-components/components/export-import-configuration/export-configuration.component.js +502 -502
- package/esm2015/lib/shell-components/components/feed-time/feed-time-dialog.component.js +98 -98
- package/esm2015/lib/shell-components/components/feed-time/feed-time.component.js +87 -87
- package/esm2015/lib/shell-components/components/header-side/header-side.component.js +2342 -2342
- package/esm2015/lib/shell-components/components/header-top/header-top.component.js +489 -489
- package/esm2015/lib/shell-components/components/lives/lives-welcome-page.js +55 -55
- package/esm2015/lib/shell-components/components/menu/menu.component.js +3413 -3413
- package/esm2015/lib/shell-components/components/menu/searchTask.enum.js +10 -10
- package/esm2015/lib/shell-components/components/notifications/announcement-dialog.component.js +110 -110
- package/esm2015/lib/shell-components/components/notifications/notifications.component.js +534 -534
- package/esm2015/lib/shell-components/components/sidebar-top/sidebar-top.component.js +39 -39
- package/esm2015/lib/shell-components/components/sidenav/side-bar.component.js +148 -148
- package/esm2015/lib/shell-components/components/sidenav/sidenav.component.js +439 -439
- package/esm2015/lib/shell-components/components/submit-feedback/submit-feedback.component.js +75 -75
- package/esm2015/lib/shell-components/constants/api-urls.js +1052 -1052
- package/esm2015/lib/shell-components/constants/available-languages.js +25 -25
- package/esm2015/lib/shell-components/constants/channel-names.js +38 -38
- package/esm2015/lib/shell-components/constants/menu-categories.js +6 -6
- package/esm2015/lib/shell-components/constants/notification-routes.js +6 -6
- package/esm2015/lib/shell-components/constants/notification-type-ids.js +42 -42
- package/esm2015/lib/shell-components/enum/recentSearchType.enum.js +13 -13
- package/esm2015/lib/shell-components/models/AppMenuItemModel.js +3 -3
- package/esm2015/lib/shell-components/models/AppNotification.js +17 -17
- package/esm2015/lib/shell-components/models/AssetAssignedNotificationModel.js +12 -12
- package/esm2015/lib/shell-components/models/ChannelUpdateModel.js +3 -3
- package/esm2015/lib/shell-components/models/EmployeeStatusModel.js +3 -3
- package/esm2015/lib/shell-components/models/IAdjust-screen-options.js +2 -2
- package/esm2015/lib/shell-components/models/IBadge.js +2 -2
- package/esm2015/lib/shell-components/models/IChildItem.js +2 -2
- package/esm2015/lib/shell-components/models/ILayout-change-options.js +2 -2
- package/esm2015/lib/shell-components/models/IMenuItem.js +2 -2
- package/esm2015/lib/shell-components/models/IlayoutConf.js +2 -2
- package/esm2015/lib/shell-components/models/IntroModel.js +3 -3
- package/esm2015/lib/shell-components/models/MessageDetails.js +3 -3
- package/esm2015/lib/shell-components/models/MessageTypingDetails.js +3 -3
- package/esm2015/lib/shell-components/models/NewProjectCreatedNotificationModel.js +10 -10
- package/esm2015/lib/shell-components/models/NewProjectFeatureNotificationModel.js +10 -10
- package/esm2015/lib/shell-components/models/NotificationsOutPutModel.js +22 -22
- package/esm2015/lib/shell-components/models/ProjectSearchCriteriaInputModel.js +3 -3
- package/esm2015/lib/shell-components/models/RecentSearchModel.js +5 -5
- package/esm2015/lib/shell-components/models/ReportConfigAssignedNotification.js +11 -11
- package/esm2015/lib/shell-components/models/ReportSubmittedNotification.js +12 -12
- package/esm2015/lib/shell-components/models/RoleUpdatedNotification.js +9 -9
- package/esm2015/lib/shell-components/models/UserStoryAssignedNotification.js +13 -13
- package/esm2015/lib/shell-components/models/archiveUserStoryModel.js +10 -10
- package/esm2015/lib/shell-components/models/companieslist.model.js +3 -3
- package/esm2015/lib/shell-components/models/company-model.js +7 -7
- package/esm2015/lib/shell-components/models/company-payment-model.js +3 -3
- package/esm2015/lib/shell-components/models/dragedWidget.js +3 -3
- package/esm2015/lib/shell-components/models/employee-List.js +3 -3
- package/esm2015/lib/shell-components/models/employee.js +4 -4
- package/esm2015/lib/shell-components/models/entityRoleFeature.js +3 -3
- package/esm2015/lib/shell-components/models/export-configuration-model.js +3 -3
- package/esm2015/lib/shell-components/models/export-data.module.js +8 -8
- package/esm2015/lib/shell-components/models/goalApprovedNotificationModel.js +9 -9
- package/esm2015/lib/shell-components/models/import-configuration-model.js +3 -3
- package/esm2015/lib/shell-components/models/initialStatusofUsers.js +3 -3
- package/esm2015/lib/shell-components/models/invoiceOutput-model.js +3 -3
- package/esm2015/lib/shell-components/models/leaveApplicationNotifiction.js +9 -9
- package/esm2015/lib/shell-components/models/multiChartsScheduling.js +11 -11
- package/esm2015/lib/shell-components/models/parkUserStoryInputModel.js +10 -10
- package/esm2015/lib/shell-components/models/project.js +3 -3
- package/esm2015/lib/shell-components/models/recentSearchApiModel.js +3 -3
- package/esm2015/lib/shell-components/models/searchCriteriaInputModelBase.js +3 -3
- package/esm2015/lib/shell-components/models/shellModulesInfo.js +7 -7
- package/esm2015/lib/shell-components/models/softlabels-model.js +7 -7
- package/esm2015/lib/shell-components/models/sprintReplanRequestedModel.js +9 -9
- package/esm2015/lib/shell-components/models/sprintStartedNotificationModel.js +9 -9
- package/esm2015/lib/shell-components/models/store-model.js +3 -3
- package/esm2015/lib/shell-components/models/store-search-model.js +4 -4
- package/esm2015/lib/shell-components/models/themes.model.js +3 -3
- package/esm2015/lib/shell-components/models/timesheetenabledisable.js +4 -4
- package/esm2015/lib/shell-components/models/user.js +8 -8
- package/esm2015/lib/shell-components/models/userStory.js +3 -3
- package/esm2015/lib/shell-components/models/userStoryCommentNotificationModel.js +9 -9
- package/esm2015/lib/shell-components/models/userStoryUpdateNotificationModel.js +9 -9
- package/esm2015/lib/shell-components/models/userstory-custom-fields.model.js +3 -3
- package/esm2015/lib/shell-components/models/validation.model.js +2 -2
- package/esm2015/lib/shell-components/models/widgetlist.js +6 -6
- package/esm2015/lib/shell-components/models/workspaceList.js +3 -3
- package/esm2015/lib/shell-components/services/authentication.service.js +96 -96
- package/esm2015/lib/shell-components/services/chat.service.js +67 -67
- package/esm2015/lib/shell-components/services/common-used.service.js +263 -263
- package/esm2015/lib/shell-components/services/feature.service.js +101 -101
- package/esm2015/lib/shell-components/services/google-analytics.service.js +24 -24
- package/esm2015/lib/shell-components/services/layout.service.js +68 -68
- package/esm2015/lib/shell-components/services/payment.service.js +103 -103
- package/esm2015/lib/shell-components/services/recentSearch.service.js +90 -90
- package/esm2015/lib/shell-components/services/shell.modules.service.js +24 -24
- package/esm2015/lib/shell-components/services/signalr.service.js +113 -113
- package/esm2015/lib/shell-components/services/theme.service.js +161 -161
- package/esm2015/lib/shell-components/shell.module.js +450 -450
- package/esm2015/lib/shell-components/shell.routing.js +16 -16
- package/esm2015/lib/shell-components/store/actions/authentication.actions.js +260 -260
- package/esm2015/lib/shell-components/store/actions/chat.actions.js +248 -248
- package/esm2015/lib/shell-components/store/actions/menuitems.actions.js +39 -39
- package/esm2015/lib/shell-components/store/actions/notification-validator.action.js +19 -19
- package/esm2015/lib/shell-components/store/actions/notifications.actions.js +74 -74
- package/esm2015/lib/shell-components/store/effects/authentication.effects.js +503 -503
- package/esm2015/lib/shell-components/store/effects/chat.effects.js +139 -139
- package/esm2015/lib/shell-components/store/effects/index.js +13 -13
- package/esm2015/lib/shell-components/store/effects/menuitems.effects.js +53 -53
- package/esm2015/lib/shell-components/store/effects/notification-validator.effects.js +56 -56
- package/esm2015/lib/shell-components/store/effects/notifications.effects.js +116 -116
- package/esm2015/lib/shell-components/store/reducers/authentication.reducers.js +86 -86
- package/esm2015/lib/shell-components/store/reducers/chat.reducers.js +68 -68
- package/esm2015/lib/shell-components/store/reducers/index.js +80 -80
- package/esm2015/lib/shell-components/store/reducers/menuitems.reducers.js +56 -56
- package/esm2015/lib/shell-components/store/reducers/notification-validator.reducers.js +13 -13
- package/esm2015/lib/shell-components/store/reducers/notifications.reducers.js +38 -38
- package/esm2015/public-api.js +92 -92
- package/esm2015/store/reducers/index.js +47 -47
- package/esm2015/thetradeengineorg1-snova-shell-module.js +4 -4
- package/fesm2015/thetradeengineorg1-snova-shell-module.js +16979 -16979
- package/fesm2015/thetradeengineorg1-snova-shell-module.js.map +1 -1
- package/lib/globaldependencies/components/avatar.component.d.ts +10 -10
- package/lib/globaldependencies/components/componentbase.d.ts +455 -455
- package/lib/globaldependencies/constants/feature-ids.d.ts +448 -448
- package/lib/globaldependencies/constants/localstorage-properties.d.ts +37 -37
- package/lib/globaldependencies/helpers/dom.helper.d.ts +7 -7
- package/lib/globaldependencies/helpers/fontawesome-icons.d.ts +1 -1
- package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts +9 -9
- package/lib/globaldependencies/helpers/window.helper.d.ts +12 -12
- package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts +11 -11
- package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts +8 -8
- package/lib/globaldependencies/pipes/highLightText.pipe.d.ts +8 -8
- package/lib/globaldependencies/pipes/orderby-pipe.d.ts +9 -9
- package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts +8 -8
- package/lib/globaldependencies/pipes/sanitize.pipe.d.ts +11 -11
- package/lib/globaldependencies/pipes/softlabels.pipes.d.ts +8 -8
- package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts +8 -8
- package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts +8 -8
- package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts +8 -8
- package/lib/shell-components/components/Payments/account.component.d.ts +14 -14
- package/lib/shell-components/components/Payments/company-information.d.ts +62 -62
- package/lib/shell-components/components/Payments/company-plans.component.d.ts +47 -47
- package/lib/shell-components/components/Payments/document.component.d.ts +20 -20
- package/lib/shell-components/components/Payments/payment-method.component.d.ts +15 -15
- package/lib/shell-components/components/Payments/product-service.component.d.ts +48 -48
- package/lib/shell-components/components/Payments/purchase-more-licenses.d.ts +37 -37
- package/lib/shell-components/components/Payments/transactions.component.d.ts +28 -28
- package/lib/shell-components/components/admin-layout/admin-layout.component.d.ts +67 -67
- package/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.d.ts +32 -32
- package/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.d.ts +32 -32
- package/lib/shell-components/components/export-import-configuration/export-configuration.component.d.ts +60 -60
- package/lib/shell-components/components/feed-time/feed-time-dialog.component.d.ts +33 -33
- package/lib/shell-components/components/feed-time/feed-time.component.d.ts +27 -27
- package/lib/shell-components/components/header-side/header-side.component.d.ts +220 -220
- package/lib/shell-components/components/header-top/header-top.component.d.ts +40 -40
- package/lib/shell-components/components/lives/lives-welcome-page.d.ts +14 -14
- package/lib/shell-components/components/menu/menu.component.d.ts +220 -220
- package/lib/shell-components/components/menu/searchTask.enum.d.ts +8 -8
- package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts +27 -27
- package/lib/shell-components/components/notifications/notifications.component.d.ts +53 -53
- package/lib/shell-components/components/sidebar-top/sidebar-top.component.d.ts +10 -10
- package/lib/shell-components/components/sidenav/side-bar.component.d.ts +23 -23
- package/lib/shell-components/components/sidenav/sidenav.component.d.ts +17 -17
- package/lib/shell-components/components/submit-feedback/submit-feedback.component.d.ts +25 -25
- package/lib/shell-components/constants/api-urls.d.ts +1051 -1051
- package/lib/shell-components/constants/available-languages.d.ts +7 -7
- package/lib/shell-components/constants/channel-names.d.ts +37 -37
- package/lib/shell-components/constants/menu-categories.d.ts +5 -5
- package/lib/shell-components/constants/notification-routes.d.ts +5 -5
- package/lib/shell-components/constants/notification-type-ids.d.ts +41 -41
- package/lib/shell-components/enum/recentSearchType.enum.d.ts +11 -11
- package/lib/shell-components/models/AppMenuItemModel.d.ts +12 -12
- package/lib/shell-components/models/AppNotification.d.ts +12 -12
- package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts +10 -10
- package/lib/shell-components/models/ChannelUpdateModel.d.ts +47 -47
- package/lib/shell-components/models/EmployeeStatusModel.d.ts +11 -11
- package/lib/shell-components/models/IAdjust-screen-options.d.ts +4 -4
- package/lib/shell-components/models/IBadge.d.ts +4 -4
- package/lib/shell-components/models/IChildItem.d.ts +7 -7
- package/lib/shell-components/models/ILayout-change-options.d.ts +4 -4
- package/lib/shell-components/models/IMenuItem.d.ts +14 -14
- package/lib/shell-components/models/IlayoutConf.d.ts +10 -10
- package/lib/shell-components/models/IntroModel.d.ts +3 -3
- package/lib/shell-components/models/MessageDetails.d.ts +55 -55
- package/lib/shell-components/models/MessageTypingDetails.d.ts +9 -9
- package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts +8 -8
- package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts +8 -8
- package/lib/shell-components/models/NotificationsOutPutModel.d.ts +41 -41
- package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts +10 -10
- package/lib/shell-components/models/RecentSearchModel.d.ts +14 -14
- package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts +9 -9
- package/lib/shell-components/models/ReportSubmittedNotification.d.ts +10 -10
- package/lib/shell-components/models/RoleUpdatedNotification.d.ts +7 -7
- package/lib/shell-components/models/UserStoryAssignedNotification.d.ts +8 -8
- package/lib/shell-components/models/archiveUserStoryModel.d.ts +7 -7
- package/lib/shell-components/models/companieslist.model.d.ts +8 -8
- package/lib/shell-components/models/company-model.d.ts +31 -31
- package/lib/shell-components/models/company-payment-model.d.ts +18 -18
- package/lib/shell-components/models/dragedWidget.d.ts +16 -16
- package/lib/shell-components/models/employee-List.d.ts +8 -8
- package/lib/shell-components/models/employee.d.ts +60 -60
- package/lib/shell-components/models/entityRoleFeature.d.ts +9 -9
- package/lib/shell-components/models/export-configuration-model.d.ts +8 -8
- package/lib/shell-components/models/export-data.module.d.ts +6 -6
- package/lib/shell-components/models/goalApprovedNotificationModel.d.ts +8 -8
- package/lib/shell-components/models/import-configuration-model.d.ts +3 -3
- package/lib/shell-components/models/initialStatusofUsers.d.ts +5 -5
- package/lib/shell-components/models/invoiceOutput-model.d.ts +9 -9
- package/lib/shell-components/models/leaveApplicationNotifiction.d.ts +7 -7
- package/lib/shell-components/models/multiChartsScheduling.d.ts +9 -9
- package/lib/shell-components/models/parkUserStoryInputModel.d.ts +7 -7
- package/lib/shell-components/models/project.d.ts +28 -28
- package/lib/shell-components/models/recentSearchApiModel.d.ts +6 -6
- package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts +10 -10
- package/lib/shell-components/models/shellModulesInfo.d.ts +16 -16
- package/lib/shell-components/models/softlabels-model.d.ts +66 -66
- package/lib/shell-components/models/sprintReplanRequestedModel.d.ts +7 -7
- package/lib/shell-components/models/sprintStartedNotificationModel.d.ts +7 -7
- package/lib/shell-components/models/store-model.d.ts +13 -13
- package/lib/shell-components/models/store-search-model.d.ts +7 -7
- package/lib/shell-components/models/themes.model.d.ts +9 -9
- package/lib/shell-components/models/timesheetenabledisable.d.ts +16 -16
- package/lib/shell-components/models/user.d.ts +40 -40
- package/lib/shell-components/models/userStory.d.ts +188 -188
- package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts +6 -6
- package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts +6 -6
- package/lib/shell-components/models/userstory-custom-fields.model.d.ts +6 -6
- package/lib/shell-components/models/validation.model.d.ts +5 -5
- package/lib/shell-components/models/widgetlist.d.ts +28 -28
- package/lib/shell-components/models/workspaceList.d.ts +19 -19
- package/lib/shell-components/services/authentication.service.d.ts +18 -18
- package/lib/shell-components/services/chat.service.d.ts +16 -16
- package/lib/shell-components/services/common-used.service.d.ts +45 -45
- package/lib/shell-components/services/feature.service.d.ts +19 -19
- package/lib/shell-components/services/google-analytics.service.d.ts +9 -9
- package/lib/shell-components/services/layout.service.d.ts +23 -23
- package/lib/shell-components/services/payment.service.d.ts +19 -19
- package/lib/shell-components/services/recentSearch.service.d.ts +16 -16
- package/lib/shell-components/services/shell.modules.service.d.ts +9 -9
- package/lib/shell-components/services/signalr.service.d.ts +25 -25
- package/lib/shell-components/services/theme.service.d.ts +14 -14
- package/lib/shell-components/shell.module.d.ts +119 -119
- package/lib/shell-components/shell.routing.d.ts +2 -2
- package/lib/shell-components/store/actions/authentication.actions.d.ts +327 -327
- package/lib/shell-components/store/actions/chat.actions.d.ts +399 -399
- package/lib/shell-components/store/actions/menuitems.actions.d.ts +51 -51
- package/lib/shell-components/store/actions/notification-validator.action.d.ts +25 -25
- package/lib/shell-components/store/actions/notifications.actions.d.ts +116 -116
- package/lib/shell-components/store/effects/authentication.effects.d.ts +54 -54
- package/lib/shell-components/store/effects/chat.effects.d.ts +30 -30
- package/lib/shell-components/store/effects/index.d.ts +1 -1
- package/lib/shell-components/store/effects/menuitems.effects.d.ts +17 -17
- package/lib/shell-components/store/effects/notification-validator.effects.d.ts +21 -21
- package/lib/shell-components/store/effects/notifications.effects.d.ts +23 -23
- package/lib/shell-components/store/reducers/authentication.reducers.d.ts +30 -30
- package/lib/shell-components/store/reducers/chat.reducers.d.ts +17 -17
- package/lib/shell-components/store/reducers/index.d.ts +59 -59
- package/lib/shell-components/store/reducers/menuitems.reducers.d.ts +11 -11
- package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts +5 -5
- package/lib/shell-components/store/reducers/notifications.reducers.d.ts +10 -10
- package/package.json +1 -1
- package/public-api.d.ts +82 -82
- package/store/reducers/index.d.ts +24 -24
- package/thetradeengineorg1-snova-shell-module.d.ts +5 -5
|
@@ -1,350 +1,350 @@
|
|
|
1
|
-
import { Component, HostListener } from "@angular/core";
|
|
2
|
-
import { NavigationEnd, RouteConfigLoadStart, RouteConfigLoadEnd, ResolveStart, ResolveEnd, NavigationStart, NavigationCancel, NavigationError, } from "@angular/router";
|
|
3
|
-
// import PerfectScrollbar from 'perfect-scrollbar';
|
|
4
|
-
import { Subject } from "rxjs";
|
|
5
|
-
import { takeUntil, tap } from "rxjs/operators";
|
|
6
|
-
import { filter } from "rxjs/operators";
|
|
7
|
-
import { UserDetailsFetchedAfterLogin, AuthenticationActionTypes } from "../../store/actions/authentication.actions";
|
|
8
|
-
import { ofType } from "@ngrx/effects";
|
|
9
|
-
import { SoftLabelConfigurationModel } from "../../models/softlabels-model";
|
|
10
|
-
import '../../../globaldependencies/helpers/fontawesome-icons';
|
|
11
|
-
import { LocalStorageProperties } from '../../../globaldependencies/constants/localstorage-properties';
|
|
12
|
-
import { SPINNER } from 'ngx-ui-loader';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "@angular/router";
|
|
15
|
-
import * as i2 from "@ngx-translate/core";
|
|
16
|
-
import * as i3 from "../../services/layout.service";
|
|
17
|
-
import * as i4 from "@ngrx/store";
|
|
18
|
-
import * as i5 from "ngx-cookie-service";
|
|
19
|
-
import * as i6 from "@ngrx/effects";
|
|
20
|
-
import * as i7 from "@angular/common";
|
|
21
|
-
import * as i8 from "../../services/common-used.service";
|
|
22
|
-
import * as i9 from "pubnub-angular2";
|
|
23
|
-
import * as i10 from "../../services/signalr.service";
|
|
24
|
-
import * as i11 from "@angular/cdk/bidi";
|
|
25
|
-
import * as i12 from "ngx-ui-loader";
|
|
26
|
-
import * as i13 from "@angular/material/sidenav";
|
|
27
|
-
import * as i14 from "@angular/flex-layout/extended";
|
|
28
|
-
import * as i15 from "ngx-perfect-scrollbar";
|
|
29
|
-
import * as i16 from "../header-side/header-side.component";
|
|
30
|
-
import * as i17 from "../sidenav/side-bar.component";
|
|
31
|
-
import * as i18 from "../header-top/header-top.component";
|
|
32
|
-
import * as i19 from "../sidebar-top/sidebar-top.component";
|
|
33
|
-
function AdminLayoutComponent_app_header_top_1_Template(rf, ctx) { if (rf & 1) {
|
|
34
|
-
i0.ɵɵelement(0, "app-header-top", 13);
|
|
35
|
-
} if (rf & 2) {
|
|
36
|
-
i0.ɵɵnextContext();
|
|
37
|
-
const _r5 = i0.ɵɵreference(13);
|
|
38
|
-
i0.ɵɵproperty("notificPanel", _r5);
|
|
39
|
-
} }
|
|
40
|
-
function AdminLayoutComponent_app_sidebar_top_4_Template(rf, ctx) { if (rf & 1) {
|
|
41
|
-
i0.ɵɵelement(0, "app-sidebar-top");
|
|
42
|
-
} }
|
|
43
|
-
function AdminLayoutComponent_div_8_Template(rf, ctx) { if (rf & 1) {
|
|
44
|
-
i0.ɵɵelementStart(0, "div", 14);
|
|
45
|
-
i0.ɵɵelementStart(1, "div", 15);
|
|
46
|
-
i0.ɵɵelement(2, "div", 16);
|
|
47
|
-
i0.ɵɵelement(3, "div", 17);
|
|
48
|
-
i0.ɵɵelementEnd();
|
|
49
|
-
i0.ɵɵelementEnd();
|
|
50
|
-
} }
|
|
51
|
-
function AdminLayoutComponent_div_9_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
-
i0.ɵɵelement(0, "div", 21);
|
|
53
|
-
} }
|
|
54
|
-
function AdminLayoutComponent_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
55
|
-
i0.ɵɵelementStart(0, "div", 18);
|
|
56
|
-
i0.ɵɵelementStart(1, "span", 19);
|
|
57
|
-
i0.ɵɵtext(2);
|
|
58
|
-
i0.ɵɵpipe(3, "translate");
|
|
59
|
-
i0.ɵɵpipe(4, "translate");
|
|
60
|
-
i0.ɵɵelementEnd();
|
|
61
|
-
i0.ɵɵtemplate(5, AdminLayoutComponent_div_9_div_5_Template, 1, 0, "div", 20);
|
|
62
|
-
i0.ɵɵelementEnd();
|
|
63
|
-
} if (rf & 2) {
|
|
64
|
-
const ctx_r3 = i0.ɵɵnextContext();
|
|
65
|
-
i0.ɵɵadvance(2);
|
|
66
|
-
i0.ɵɵtextInterpolate3(" ", i0.ɵɵpipeBind1(3, 4, "LOADINGPLEASEWAIT"), " (", ctx_r3.totalLoadingTime, " ", i0.ɵɵpipeBind1(4, 6, "SECONDS"), ") ");
|
|
67
|
-
i0.ɵɵadvance(3);
|
|
68
|
-
i0.ɵɵproperty("ngIf", ctx_r3.loading);
|
|
69
|
-
} }
|
|
70
|
-
function AdminLayoutComponent_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
-
i0.ɵɵelementStart(0, "div");
|
|
72
|
-
i0.ɵɵelement(1, "router-outlet");
|
|
73
|
-
i0.ɵɵelementEnd();
|
|
74
|
-
} }
|
|
75
|
-
const _c0 = function (a0, a1, a2, a3, a4, a5, a6, a7) { return { "navigation-top": a0, "sidebar-full": a1, "sidebar-compact": a2, "sidebar-compact-big": a3, "layout-intransition": a4, "sidebar-opened": a5, "sidebar-closed": a6, "fixed-topbar": a7 }; };
|
|
76
|
-
const _c1 = function (a0) { return { "blur-on-opened": a0 }; };
|
|
77
|
-
const _c2 = function (a0) { return { "show-in-dashboard": a0 }; };
|
|
78
|
-
const _c3 = function (a0) { return { "visible": a0 }; };
|
|
79
|
-
export class AdminLayoutComponent {
|
|
80
|
-
constructor(router, translate, layout, store, cookieService, actionUpdates$, location, commonService, pubnub, signalr) {
|
|
81
|
-
this.router = router;
|
|
82
|
-
this.translate = translate;
|
|
83
|
-
this.layout = layout;
|
|
84
|
-
this.store = store;
|
|
85
|
-
this.cookieService = cookieService;
|
|
86
|
-
this.actionUpdates$ = actionUpdates$;
|
|
87
|
-
this.location = location;
|
|
88
|
-
this.commonService = commonService;
|
|
89
|
-
this.pubnub = pubnub;
|
|
90
|
-
this.signalr = signalr;
|
|
91
|
-
this.isModuleLoading = false;
|
|
92
|
-
// private sidebarPS: PerfectScrollbar;
|
|
93
|
-
// private bodyPS: PerfectScrollbar;
|
|
94
|
-
// private headerFixedBodyPS: PerfectScrollbar;
|
|
95
|
-
this.scrollConfig = {};
|
|
96
|
-
this.layoutConf = {};
|
|
97
|
-
this.ngDestroyed$ = new Subject();
|
|
98
|
-
this.userstory = 'userstory';
|
|
99
|
-
this.loading = false;
|
|
100
|
-
this.totalLoadingTime = 0;
|
|
101
|
-
this.spinnerType = SPINNER.circle;
|
|
102
|
-
// let conId = sessionStorage.getItem('conectionId');
|
|
103
|
-
// if(!conId) {
|
|
104
|
-
this.signalr.initializeSignalRConnection();
|
|
105
|
-
// }
|
|
106
|
-
let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
|
|
107
|
-
let companySettings = localStorage.getItem(LocalStorageProperties.CompanySettings);
|
|
108
|
-
if (!companySettings || companySettings == 'null' || companySettings == "undefined") {
|
|
109
|
-
pubnub.init({
|
|
110
|
-
publishKey: environment.publishKey,
|
|
111
|
-
subscribeKey: environment.subscribeKey
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
const comSet = JSON.parse(localStorage.getItem(LocalStorageProperties.CompanySettings));
|
|
116
|
-
var publishKey = comSet.find(i => i.key == "PubnubPublishKey");
|
|
117
|
-
var subscribeKey = comSet.find(i => i.key == "PubnubSubscribeKey");
|
|
118
|
-
if ((publishKey && publishKey.value) && (subscribeKey && subscribeKey.value)) {
|
|
119
|
-
pubnub.init({
|
|
120
|
-
publishKey: publishKey.value,
|
|
121
|
-
subscribeKey: subscribeKey.value
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
pubnub.init({
|
|
126
|
-
publishKey: environment.publishKey,
|
|
127
|
-
subscribeKey: environment.subscribeKey
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
// Close sidenav after route change in mobile
|
|
132
|
-
this.routerEventSub = router.events
|
|
133
|
-
.pipe(filter(event => event instanceof NavigationEnd))
|
|
134
|
-
.subscribe((routeChange) => {
|
|
135
|
-
this.layout.adjustLayout({ route: routeChange.url });
|
|
136
|
-
});
|
|
137
|
-
// Translator init
|
|
138
|
-
let currentCulture = this.cookieService.get(LocalStorageProperties.CurrentCulture);
|
|
139
|
-
if (currentCulture === 'null' || currentCulture === 'undefined') {
|
|
140
|
-
currentCulture = 'en';
|
|
141
|
-
}
|
|
142
|
-
translate.use(currentCulture);
|
|
143
|
-
this.router.events.subscribe((event) => {
|
|
144
|
-
switch (true) {
|
|
145
|
-
case event instanceof NavigationStart: {
|
|
146
|
-
this.loading = true;
|
|
147
|
-
this.totalLoadingTime = 0;
|
|
148
|
-
this.startTimer();
|
|
149
|
-
break;
|
|
150
|
-
}
|
|
151
|
-
case event instanceof NavigationEnd: {
|
|
152
|
-
this.loading = false;
|
|
153
|
-
clearInterval(this.interval);
|
|
154
|
-
break;
|
|
155
|
-
}
|
|
156
|
-
case event instanceof NavigationCancel:
|
|
157
|
-
case event instanceof NavigationError: {
|
|
158
|
-
this.loading = false;
|
|
159
|
-
break;
|
|
160
|
-
}
|
|
161
|
-
default: {
|
|
162
|
-
break;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
router.events.subscribe(val => {
|
|
167
|
-
if (location.path() != "") {
|
|
168
|
-
if (location.path().includes('/dashboard-management/dashboard/')) {
|
|
169
|
-
this.dashboardPage = true;
|
|
170
|
-
this.bgcolor = 'none';
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
this.dashboardPage = false;
|
|
174
|
-
this.bgcolor = 'beige';
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
// if (this.cookieService.check(LocalStorageProperties.UserModel)) {
|
|
179
|
-
// let data = JSON.parse(this.cookieService.get(LocalStorageProperties.UserModel));
|
|
180
|
-
// if (data && data != 'null' && data != 'undefined')
|
|
181
|
-
// this.store.dispatch(new UserDetailsFetchedAfterLogin(data));
|
|
182
|
-
// }
|
|
183
|
-
if ((localStorage.getItem(LocalStorageProperties.UserModel) != null && localStorage.getItem(LocalStorageProperties.UserModel) != undefined)
|
|
184
|
-
&& !localStorage.hasOwnProperty(LocalStorageProperties.UserRoleFeatures)) {
|
|
185
|
-
let data = JSON.parse(localStorage.getItem(LocalStorageProperties.UserModel));
|
|
186
|
-
this.store.dispatch(new UserDetailsFetchedAfterLogin(data));
|
|
187
|
-
}
|
|
188
|
-
this.actionUpdates$
|
|
189
|
-
.pipe(takeUntil(this.ngDestroyed$), ofType(AuthenticationActionTypes.ClearDemoDataCompleted), tap((result) => {
|
|
190
|
-
if (result && result.companyId) {
|
|
191
|
-
this.getSoftLabels();
|
|
192
|
-
}
|
|
193
|
-
})).subscribe();
|
|
194
|
-
}
|
|
195
|
-
ngOnInit() {
|
|
196
|
-
this.getSoftLabelConfigurations();
|
|
197
|
-
this.layoutConf = this.layout.layoutConf;
|
|
198
|
-
// this.layout.adjustLayout();
|
|
199
|
-
// FOR MODULE LOADER FLAG
|
|
200
|
-
this.moduleLoaderSub = this.router.events.subscribe(event => {
|
|
201
|
-
if (event instanceof RouteConfigLoadStart ||
|
|
202
|
-
event instanceof ResolveStart) {
|
|
203
|
-
this.isModuleLoading = false;
|
|
204
|
-
}
|
|
205
|
-
if (event instanceof RouteConfigLoadEnd || event instanceof ResolveEnd) {
|
|
206
|
-
this.isModuleLoading = false;
|
|
207
|
-
}
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
onResize(event) {
|
|
211
|
-
this.layout.adjustLayout(event);
|
|
212
|
-
}
|
|
213
|
-
Opened(event) {
|
|
214
|
-
this.display = event;
|
|
215
|
-
}
|
|
216
|
-
getSoftLabelConfigurations() {
|
|
217
|
-
this.softLabels = JSON.parse(localStorage.getItem('SoftLabels'));
|
|
218
|
-
}
|
|
219
|
-
getSoftLabels() {
|
|
220
|
-
let model = new SoftLabelConfigurationModel();
|
|
221
|
-
model.searchText = null;
|
|
222
|
-
this.commonService.getSoftLabels(model).subscribe((response) => {
|
|
223
|
-
if (response.success) {
|
|
224
|
-
let data = response.data;
|
|
225
|
-
if (data) {
|
|
226
|
-
localStorage.setItem('SoftLabels', JSON.stringify(data));
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
ngAfterViewInit() {
|
|
232
|
-
// this.layoutConfSub = this.layout.layoutConf$.subscribe(change => {
|
|
233
|
-
// // this.initBodyPS(change)
|
|
234
|
-
// })
|
|
235
|
-
}
|
|
236
|
-
// initBodyPS(layoutConf:any = {}) {
|
|
237
|
-
// if(layoutConf.navigationPos === 'side' && layoutConf.topbarFixed) {
|
|
238
|
-
// if (this.bodyPS) this.bodyPS.destroy();
|
|
239
|
-
// if (this.headerFixedBodyPS) this.headerFixedBodyPS.destroy();
|
|
240
|
-
// this.headerFixedBodyPS = new PerfectScrollbar('.rightside-content-hold', {
|
|
241
|
-
// suppressScrollX: true
|
|
242
|
-
// });
|
|
243
|
-
// this.scrollToTop('.rightside-content-hold');
|
|
244
|
-
// } else {
|
|
245
|
-
// if (this.bodyPS) this.bodyPS.destroy();
|
|
246
|
-
// if (this.headerFixedBodyPS) this.headerFixedBodyPS.destroy();
|
|
247
|
-
// this.bodyPS = new PerfectScrollbar('.main-content-wrap', {
|
|
248
|
-
// suppressScrollX: true
|
|
249
|
-
// });
|
|
250
|
-
// this.scrollToTop('.main-content-wrap');
|
|
251
|
-
// }
|
|
252
|
-
// }
|
|
253
|
-
scrollToTop(selector) {
|
|
254
|
-
if (document) {
|
|
255
|
-
let element = document.querySelector(selector);
|
|
256
|
-
element.scrollTop = 0;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
ngOnDestroy() {
|
|
260
|
-
if (this.moduleLoaderSub) {
|
|
261
|
-
this.moduleLoaderSub.unsubscribe();
|
|
262
|
-
}
|
|
263
|
-
if (this.layoutConfSub) {
|
|
264
|
-
this.layoutConfSub.unsubscribe();
|
|
265
|
-
}
|
|
266
|
-
if (this.routerEventSub) {
|
|
267
|
-
this.routerEventSub.unsubscribe();
|
|
268
|
-
}
|
|
269
|
-
if (this.sub) {
|
|
270
|
-
this.sub.unsubscribe();
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
closeSidebar() {
|
|
274
|
-
this.layout.publishLayoutChange({
|
|
275
|
-
sidebarStyle: "closed"
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
startTimer() {
|
|
279
|
-
this.interval = setInterval(() => {
|
|
280
|
-
this.totalLoadingTime++;
|
|
281
|
-
}, 1000);
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
AdminLayoutComponent.ɵfac = function AdminLayoutComponent_Factory(t) { return new (t || AdminLayoutComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.TranslateService), i0.ɵɵdirectiveInject(i3.LayoutService), i0.ɵɵdirectiveInject(i4.Store), i0.ɵɵdirectiveInject(i5.CookieService), i0.ɵɵdirectiveInject(i6.Actions), i0.ɵɵdirectiveInject(i7.Location), i0.ɵɵdirectiveInject(i8.CommonService), i0.ɵɵdirectiveInject(i9.PubNubAngular), i0.ɵɵdirectiveInject(i10.SignalrService)); };
|
|
285
|
-
AdminLayoutComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AdminLayoutComponent, selectors: [["app-admin-layout"]], hostBindings: function AdminLayoutComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
286
|
-
i0.ɵɵlistener("resize", function AdminLayoutComponent_resize_HostBindingHandler($event) { return ctx.onResize($event); }, false, i0.ɵɵresolveWindow);
|
|
287
|
-
} }, decls: 15, vars: 38, consts: [[1, "app-admin-wrap", 3, "dir"], [3, "notificPanel", 4, "ngIf"], ["fgsSize", "180", "color", "primary", 3, "fgsType"], [1, "app-admin-container", "app-side-nav-container", "mat-drawer-transition", 3, "dir", "ngClass"], [4, "ngIf"], [1, "main-content-wrap", 3, "perfectScrollbar", "disabled"], [3, "notificPanel", "opened"], [1, "rightside-content-hold", 3, "perfectScrollbar", "disabled", "ngClass"], ["class", "view-loader", 4, "ngIf"], ["id", "btrak-preloader", 4, "ngIf"], [1, "sidebar-backdrop", 3, "ngClass", "click"], ["mode", "side", "opened", "", "id", "style-1", 1, "side-nav-color", "custom-app-nav", 3, "fixedInViewport", "fixedTopGap", "fixedBottomGap"], ["sidenav", ""], [3, "notificPanel"], [1, "view-loader"], [1, "spinner"], [1, "double-bounce1", "mat-bg-accent"], [1, "double-bounce2", "mat-bg-primary"], ["id", "btrak-preloader"], [1, "preloading-text"], ["id", "btrak-loader", 4, "ngIf"], ["id", "btrak-loader"]], template: function AdminLayoutComponent_Template(rf, ctx) { if (rf & 1) {
|
|
288
|
-
i0.ɵɵelementStart(0, "div", 0);
|
|
289
|
-
i0.ɵɵtemplate(1, AdminLayoutComponent_app_header_top_1_Template, 1, 1, "app-header-top", 1);
|
|
290
|
-
i0.ɵɵelement(2, "ngx-ui-loader", 2);
|
|
291
|
-
i0.ɵɵelementStart(3, "mat-sidenav-container", 3);
|
|
292
|
-
i0.ɵɵtemplate(4, AdminLayoutComponent_app_sidebar_top_4_Template, 1, 0, "app-sidebar-top", 4);
|
|
293
|
-
i0.ɵɵelementStart(5, "div", 5);
|
|
294
|
-
i0.ɵɵelementStart(6, "app-header-side", 6);
|
|
295
|
-
i0.ɵɵlistener("opened", function AdminLayoutComponent_Template_app_header_side_opened_6_listener($event) { return ctx.Opened($event); });
|
|
296
|
-
i0.ɵɵelementEnd();
|
|
297
|
-
i0.ɵɵelementStart(7, "div", 7);
|
|
298
|
-
i0.ɵɵtemplate(8, AdminLayoutComponent_div_8_Template, 4, 0, "div", 8);
|
|
299
|
-
i0.ɵɵtemplate(9, AdminLayoutComponent_div_9_Template, 6, 8, "div", 9);
|
|
300
|
-
i0.ɵɵtemplate(10, AdminLayoutComponent_div_10_Template, 2, 0, "div", 4);
|
|
301
|
-
i0.ɵɵelementEnd();
|
|
302
|
-
i0.ɵɵelementEnd();
|
|
303
|
-
i0.ɵɵelementStart(11, "div", 10);
|
|
304
|
-
i0.ɵɵlistener("click", function AdminLayoutComponent_Template_div_click_11_listener() { return ctx.closeSidebar(); });
|
|
305
|
-
i0.ɵɵelementEnd();
|
|
306
|
-
i0.ɵɵelementStart(12, "mat-sidenav", 11, 12);
|
|
307
|
-
i0.ɵɵelement(14, "app-sidebar");
|
|
308
|
-
i0.ɵɵelementEnd();
|
|
309
|
-
i0.ɵɵelementEnd();
|
|
310
|
-
i0.ɵɵelementEnd();
|
|
311
|
-
} if (rf & 2) {
|
|
312
|
-
const _r5 = i0.ɵɵreference(13);
|
|
313
|
-
i0.ɵɵproperty("dir", ctx.layoutConf.dir);
|
|
314
|
-
i0.ɵɵadvance(1);
|
|
315
|
-
i0.ɵɵproperty("ngIf", ctx.layoutConf.navigationPos === "top");
|
|
316
|
-
i0.ɵɵadvance(1);
|
|
317
|
-
i0.ɵɵproperty("fgsType", ctx.spinnerType);
|
|
318
|
-
i0.ɵɵadvance(1);
|
|
319
|
-
i0.ɵɵproperty("dir", ctx.layoutConf.dir)("ngClass", i0.ɵɵpureFunction8(23, _c0, ctx.layoutConf.navigationPos === "top", ctx.layoutConf.sidebarStyle === "full", ctx.layoutConf.sidebarStyle === "compact" && ctx.layoutConf.navigationPos === "side", ctx.layoutConf.sidebarStyle === "compact-big" && ctx.layoutConf.navigationPos === "side", ctx.layoutConf.layoutInTransition, ctx.layoutConf.sidebarStyle !== "closed" && ctx.layoutConf.navigationPos === "side", ctx.layoutConf.sidebarStyle === "closed", ctx.layoutConf.topbarFixed && ctx.layoutConf.navigationPos === "side"));
|
|
320
|
-
i0.ɵɵadvance(1);
|
|
321
|
-
i0.ɵɵproperty("ngIf", ctx.layoutConf.navigationPos === "top" && ctx.layoutConf.isMobile);
|
|
322
|
-
i0.ɵɵadvance(1);
|
|
323
|
-
i0.ɵɵproperty("perfectScrollbar", ctx.scrollConfig)("disabled", ctx.layoutConf.topbarFixed);
|
|
324
|
-
i0.ɵɵadvance(1);
|
|
325
|
-
i0.ɵɵclassMap(ctx.layoutConf.isMobile ? "custom-app-header-mobile" : "custom-app-header");
|
|
326
|
-
i0.ɵɵproperty("notificPanel", _r5);
|
|
327
|
-
i0.ɵɵadvance(1);
|
|
328
|
-
i0.ɵɵproperty("perfectScrollbar", ctx.scrollConfig)("disabled", !ctx.layoutConf.topbarFixed)("ngClass", i0.ɵɵpureFunction1(32, _c1, ctx.display))("ngClass", i0.ɵɵpureFunction1(34, _c2, ctx.dashboardPage));
|
|
329
|
-
i0.ɵɵadvance(1);
|
|
330
|
-
i0.ɵɵproperty("ngIf", ctx.isModuleLoading);
|
|
331
|
-
i0.ɵɵadvance(1);
|
|
332
|
-
i0.ɵɵproperty("ngIf", ctx.loading);
|
|
333
|
-
i0.ɵɵadvance(1);
|
|
334
|
-
i0.ɵɵproperty("ngIf", !ctx.loading);
|
|
335
|
-
i0.ɵɵadvance(1);
|
|
336
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(36, _c3, ctx.layoutConf.sidebarStyle !== "closed" && ctx.layoutConf.isMobile));
|
|
337
|
-
i0.ɵɵadvance(1);
|
|
338
|
-
i0.ɵɵproperty("fixedInViewport", true)("fixedTopGap", ctx.layoutConf.isMobile ? 45 : 88)("fixedBottomGap", 0);
|
|
339
|
-
} }, directives: [i11.Dir, i7.NgIf, i12.ɵb, i13.MatSidenavContainer, i7.NgClass, i14.DefaultClassDirective, i15.PerfectScrollbarDirective, i16.HeaderSideComponent, i13.MatSidenav, i17.SideBarComponent, i18.HeaderTopComponent, i19.SidebarTopComponent, i1.RouterOutlet], pipes: [i2.TranslatePipe], encapsulation: 2 });
|
|
340
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AdminLayoutComponent, [{
|
|
341
|
-
type: Component,
|
|
342
|
-
args: [{
|
|
343
|
-
selector: "app-admin-layout",
|
|
344
|
-
templateUrl: "./admin-layout.template.html"
|
|
345
|
-
}]
|
|
346
|
-
}], function () { return [{ type: i1.Router }, { type: i2.TranslateService }, { type: i3.LayoutService }, { type: i4.Store }, { type: i5.CookieService }, { type: i6.Actions }, { type: i7.Location }, { type: i8.CommonService }, { type: i9.PubNubAngular }, { type: i10.SignalrService }]; }, { onResize: [{
|
|
347
|
-
type: HostListener,
|
|
348
|
-
args: ["window:resize", ['$event']]
|
|
349
|
-
}] }); })();
|
|
350
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL2NvbXBvbmVudHMvYWRtaW4tbGF5b3V0L2FkbWluLWxheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL2FkbWluLWxheW91dC9hZG1pbi1sYXlvdXQudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFvQyxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFVLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEdBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUt4TCxvREFBb0Q7QUFDcEQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUseUJBQXlCLEVBQTZCLE1BQU0sNENBQTRDLENBQUM7QUFFaEosT0FBTyxFQUFXLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUkzRSxPQUFPLHVEQUF1RCxDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtE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Z0RBVUc7UUFPRCw2RkFBcUc7UUFHckcsOEJBQXFHO1FBR25HLDBDQUF1SjtRQUFuRCxrSEFBVSxrQkFBYyxJQUFDO1FBQzdILGlCQUFrQjtRQTBCbEIsOEJBQzBGO1FBa0N4RixxRUFLTTtRQUVOLHFFQU1NO1FBQ04sdUVBRU07UUFDUixpQkFBTTtRQUNSLGlCQUFNO1FBRU4sZ0NBQzJCO1FBQXpCLCtGQUFTLGtCQUFjLElBQUM7UUFBQyxpQkFBTTtRQUdqQyw0Q0FDMEU7UUFDeEUsK0JBQTJCO1FBQzdCLGlCQUFjO1FBQ2hCLGlCQUF3QjtRQUMxQixpQkFBTTs7O1FBekhzQix3Q0FBc0I7UUFHL0IsZUFBd0M7UUFBeEMsNkRBQXdDO1FBRTVCLGVBQXVCO1FBQXZCLHlDQUF1QjtRQUU3QixlQUFzQjtRQUF0Qix3Q0FBc0IsaWhCQUFBO1FBaUJ6QixlQUErRDtRQUEvRCx3RkFBK0Q7UUFHbEQsZUFBaUM7UUFBakMsbURBQWlDLHdDQUFBO1FBRzdDLGVBQWtGO1FBQWxGLHlGQUFrRjtRQUEyQixrQ0FBd0I7UUEyQmxILGVBQWlDO1FBQWpDLG1EQUFpQyx5Q0FBQSxxREFBQSwyREFBQTtRQW1DekMsZUFBcUI7UUFBckIsMENBQXFCO1FBT3BCLGVBQWE7UUFBYixrQ0FBYTtRQU9sQyxlQUFjO1FBQWQsbUNBQWM7UUFNTSxlQUFvRjtRQUFwRiwwSEFBb0Y7UUFJakQsZUFBd0I7UUFBeEIsc0NBQXdCLGtEQUFBLHFCQUFBOzt1RkRyRmhGLG9CQUFvQjtjQUxoQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsV0FBVyxFQUFFLDhCQUE4QjthQUM1Qzt1U0E4S0MsUUFBUTtrQkFGUCxZQUFZO21CQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBWaWV3Q2hpbGQsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZUNvbmZpZ0xvYWRTdGFydCwgUm91dGVDb25maWdMb2FkRW5kLCBSZXNvbHZlU3RhcnQsIFJlc29sdmVFbmQsIE5hdmlnYXRpb25TdGFydCwgTmF2aWdhdGlvbkNhbmNlbCwgTmF2aWdhdGlvbkVycm9yLCBFdmVudCwgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE1hdFNpZGVuYXYgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdlwiO1xyXG5pbXBvcnQgeyBNZWRpYUNoYW5nZSB9IGZyb20gXCJAYW5ndWxhci9mbGV4LWxheW91dFwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuLy8gaW1wb3J0IFBlcmZlY3RTY3JvbGxiYXIgZnJvbSAncGVyZmVjdC1zY3JvbGxiYXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgdGFrZVVudGlsLCB0YXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tIFwiQG5ncngvc3RvcmVcIjtcclxuaW1wb3J0IHsgVXNlckRldGFpbHNGZXRjaGVkQWZ0ZXJMb2dpbiwgQXV0aGVudGljYXRpb25BY3Rpb25UeXBlcywgVXNlckluaXRpYWxEZXRhaWxzRmV0Y2hlZCB9IGZyb20gXCIuLi8uLi9zdG9yZS9hY3Rpb25zL2F1dGhlbnRpY2F0aW9uLmFjdGlvbnNcIjtcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gXCJuZ3gtY29va2llLXNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQWN0aW9ucywgb2ZUeXBlIH0gZnJvbSBcIkBuZ3J4L2VmZmVjdHNcIjtcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvc29mdGxhYmVscy1tb2RlbFwiXHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJTdG9yeSB9IGZyb20gJy4uLy4uL21vZGVscy91c2VyU3RvcnknO1xyXG5pbXBvcnQgKiBhcyBTaGFyZWRNb2R1bGVTdGF0ZSBmcm9tIFwiLi4vLi4vc3RvcmUvcmVkdWNlcnMvaW5kZXhcIjtcclxuaW1wb3J0ICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvaGVscGVycy9mb250YXdlc29tZS1pY29ucyc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvY29uc3RhbnRzL2xvY2Fsc3RvcmFnZS1wcm9wZXJ0aWVzJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi11c2VkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQdWJOdWJBbmd1bGFyIH0gZnJvbSAncHVibnViLWFuZ3VsYXIyJztcclxuaW1wb3J0IHsgU1BJTk5FUiB9IGZyb20gJ25neC11aS1sb2FkZXInO1xyXG5pbXBvcnQgeyBTaWduYWxyU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zaWduYWxyLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC1hZG1pbi1sYXlvdXRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2FkbWluLWxheW91dC50ZW1wbGF0ZS5odG1sXCJcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBBZG1pbkxheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgaXNNb2R1bGVMb2FkaW5nOiBCb29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBtb2R1bGVMb2FkZXJTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIGxheW91dENvbmZTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIHJvdXRlckV2ZW50U3ViOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBtZWRpYVN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHNvZnRMYWJlbHMkOiBPYnNlcnZhYmxlPFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbFtdPjtcclxuICBzb2Z0TGFiZWxzOiBTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWxbXTtcclxuICAvLyBwcml2YXRlIHNpZGViYXJQUzogUGVyZmVjdFNjcm9sbGJhcjtcclxuXHJcbiAgLy8gcHJpdmF0ZSBib2R5UFM6IFBlcmZlY3RTY3JvbGxiYXI7XHJcbiAgLy8gcHJpdmF0ZSBoZWFkZXJGaXhlZEJvZHlQUzogUGVyZmVjdFNjcm9sbGJhcjtcclxuICBwdWJsaWMgc2Nyb2xsQ29uZmlnID0ge307XHJcbiAgcHVibGljIGxheW91dENvbmY6IGFueSA9IHt9O1xyXG4gIGRpc3BsYXk6IGJvb2xlYW47XHJcbiAgdXNlclN0b3JpZXMkOiBPYnNlcnZhYmxlPFVzZXJTdG9yeVtdPjtcclxuICBzaG93OiBib29sZWFuO1xyXG4gIHVzZXJTdG9yaWVzOiBVc2VyU3RvcnlbXTtcclxuICB1c2VyU3Rvcnk6IFVzZXJTdG9yeTtcclxuICBhbnlPcGVyYXRpb25JblByb2dyZXNzRm9yQXV0b0xvZ2dpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gIHB1YmxpYyBuZ0Rlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGRhc2hib2FyZFBhZ2U6IGJvb2xlYW47XHJcbiAgYmdjb2xvcjogYW55O1xyXG4gIHByaXZhdGUgc3ViOiBTdWJzY3JpcHRpb247XHJcbiAgdXNlcnN0b3J5ID0gJ3VzZXJzdG9yeSc7XHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG4gIHRvdGFsTG9hZGluZ1RpbWU6IG51bWJlciA9IDA7XHJcbiAgaW50ZXJ2YWw7XHJcbiAgc3Bpbm5lclR5cGUgPSBTUElOTkVSLmNpcmNsZTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxheW91dDogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPFNoYXJlZE1vZHVsZVN0YXRlLlN0YXRlPixcclxuICAgIHByaXZhdGUgY29va2llU2VydmljZTogQ29va2llU2VydmljZSxcclxuICAgIHByaXZhdGUgYWN0aW9uVXBkYXRlcyQ6IEFjdGlvbnMsXHJcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcclxuICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgcHVibnViOiBQdWJOdWJBbmd1bGFyLFxyXG4gICAgcHJpdmF0ZSBzaWduYWxyOiBTaWduYWxyU2VydmljZSxcclxuICApIHtcclxuICAgIC8vIGxldCBjb25JZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NvbmVjdGlvbklkJyk7XHJcbiAgICAvLyBpZighY29uSWQpIHtcclxuICAgICAgdGhpcy5zaWduYWxyLmluaXRpYWxpemVTaWduYWxSQ29ubmVjdGlvbigpO1xyXG4gICAgLy8gfVxyXG4gICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICBsZXQgY29tcGFueVNldHRpbmdzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55U2V0dGluZ3MpO1xyXG4gICAgaWYgKCFjb21wYW55U2V0dGluZ3MgfHwgY29tcGFueVNldHRpbmdzID09ICdudWxsJyB8fCBjb21wYW55U2V0dGluZ3MgPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICBwdWJudWIuaW5pdCh7XHJcbiAgICAgICAgcHVibGlzaEtleTogZW52aXJvbm1lbnQucHVibGlzaEtleSxcclxuICAgICAgICBzdWJzY3JpYmVLZXk6IGVudmlyb25tZW50LnN1YnNjcmliZUtleVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGNvbVNldCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55U2V0dGluZ3MpKTtcclxuICAgICAgdmFyIHB1Ymxpc2hLZXkgPSBjb21TZXQuZmluZChpID0+IGkua2V5ID09IFwiUHVibnViUHVibGlzaEtleVwiKTtcclxuICAgICAgdmFyIHN1YnNjcmliZUtleSA9IGNvbVNldC5maW5kKGkgPT4gaS5rZXkgPT0gXCJQdWJudWJTdWJzY3JpYmVLZXlcIilcclxuICAgICAgaWYgKChwdWJsaXNoS2V5ICYmIHB1Ymxpc2hLZXkudmFsdWUpICYmIChzdWJzY3JpYmVLZXkgJiYgc3Vic2NyaWJlS2V5LnZhbHVlKSkge1xyXG4gICAgICAgIHB1Ym51Yi5pbml0KHtcclxuICAgICAgICAgIHB1Ymxpc2hLZXk6IHB1Ymxpc2hLZXkudmFsdWUsXHJcbiAgICAgICAgICBzdWJzY3JpYmVLZXk6IHN1YnNjcmliZUtleS52YWx1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHB1Ym51Yi5pbml0KHtcclxuICAgICAgICAgIHB1Ymxpc2hLZXk6IGVudmlyb25tZW50LnB1Ymxpc2hLZXksXHJcbiAgICAgICAgICBzdWJzY3JpYmVLZXk6IGVudmlyb25tZW50LnN1YnNjcmliZUtleVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvLyBDbG9zZSBzaWRlbmF2IGFmdGVyIHJvdXRlIGNoYW5nZSBpbiBtb2JpbGVcclxuICAgIHRoaXMucm91dGVyRXZlbnRTdWIgPSByb3V0ZXIuZXZlbnRzXHJcbiAgICAgIC5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyb3V0ZUNoYW5nZTogTmF2aWdhdGlvbkVuZCkgPT4ge1xyXG4gICAgICAgIHRoaXMubGF5b3V0LmFkanVzdExheW91dCh7IHJvdXRlOiByb3V0ZUNoYW5nZS51cmwgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIFRyYW5zbGF0b3IgaW5pdFxyXG4gICAgbGV0IGN1cnJlbnRDdWx0dXJlID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRDdWx0dXJlKTtcclxuXHJcbiAgICBpZiAoY3VycmVudEN1bHR1cmUgPT09ICdudWxsJyB8fCBjdXJyZW50Q3VsdHVyZSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgY3VycmVudEN1bHR1cmUgPSAnZW4nO1xyXG4gICAgfVxyXG4gICAgdHJhbnNsYXRlLnVzZShjdXJyZW50Q3VsdHVyZSk7XHJcblxyXG5cclxuICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gICAgICBzd2l0Y2ggKHRydWUpIHtcclxuICAgICAgICBjYXNlIGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0OiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy50b3RhbExvYWRpbmdUaW1lID0gMDtcclxuICAgICAgICAgIHRoaXMuc3RhcnRUaW1lcigpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjYXNlIGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZDoge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsOlxyXG4gICAgICAgIGNhc2UgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3I6IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcm91dGVyLmV2ZW50cy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgaWYgKGxvY2F0aW9uLnBhdGgoKSAhPSBcIlwiKSB7XHJcbiAgICAgICAgaWYgKGxvY2F0aW9uLnBhdGgoKS5pbmNsdWRlcygnL2Rhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC8nKSkge1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmRQYWdlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYmdjb2xvciA9ICdub25lJztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZFBhZ2UgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuYmdjb2xvciA9ICdiZWlnZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBpZiAodGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlck1vZGVsKSkge1xyXG4gICAgLy8gICBsZXQgZGF0YSA9IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCkpO1xyXG4gICAgLy8gICBpZiAoZGF0YSAmJiBkYXRhICE9ICdudWxsJyAmJiBkYXRhICE9ICd1bmRlZmluZWQnKVxyXG4gICAgLy8gICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVzZXJEZXRhaWxzRmV0Y2hlZEFmdGVyTG9naW4oZGF0YSkpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICgobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwpICE9IG51bGwgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwpICE9IHVuZGVmaW5lZClcclxuICAgICAgJiYgIWxvY2FsU3RvcmFnZS5oYXNPd25Qcm9wZXJ0eShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSb2xlRmVhdHVyZXMpKSB7XHJcbiAgICAgIGxldCBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCkpO1xyXG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBVc2VyRGV0YWlsc0ZldGNoZWRBZnRlckxvZ2luKGRhdGEpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgb2ZUeXBlKEF1dGhlbnRpY2F0aW9uQWN0aW9uVHlwZXMuQ2xlYXJEZW1vRGF0YUNvbXBsZXRlZCksXHJcbiAgICAgICAgdGFwKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuY29tcGFueUlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U29mdExhYmVscygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZ2V0U29mdExhYmVsQ29uZmlndXJhdGlvbnMoKTtcclxuICAgIHRoaXMubGF5b3V0Q29uZiA9IHRoaXMubGF5b3V0LmxheW91dENvbmY7XHJcbiAgICAvLyB0aGlzLmxheW91dC5hZGp1c3RMYXlvdXQoKTtcclxuXHJcbiAgICAvLyBGT1IgTU9EVUxFIExPQURFUiBGTEFHXHJcbiAgICB0aGlzLm1vZHVsZUxvYWRlclN1YiA9IHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBSb3V0ZUNvbmZpZ0xvYWRTdGFydCB8fFxyXG4gICAgICAgIGV2ZW50IGluc3RhbmNlb2YgUmVzb2x2ZVN0YXJ0XHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuaXNNb2R1bGVMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgUm91dGVDb25maWdMb2FkRW5kIHx8IGV2ZW50IGluc3RhbmNlb2YgUmVzb2x2ZUVuZCkge1xyXG4gICAgICAgIHRoaXMuaXNNb2R1bGVMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgWyckZXZlbnQnXSlcclxuXHJcbiAgb25SZXNpemUoZXZlbnQpIHtcclxuICAgIHRoaXMubGF5b3V0LmFkanVzdExheW91dChldmVudCk7XHJcbiAgfVxyXG5cclxuICBPcGVuZWQoZXZlbnQpIHtcclxuICAgIHRoaXMuZGlzcGxheSA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0U29mdExhYmVsQ29uZmlndXJhdGlvbnMoKSB7XHJcbiAgICB0aGlzLnNvZnRMYWJlbHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdTb2Z0TGFiZWxzJykpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U29mdExhYmVscygpIHtcclxuICAgIGxldCBtb2RlbCA9IG5ldyBTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWwoKTtcclxuICAgIG1vZGVsLnNlYXJjaFRleHQgPSBudWxsO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLmdldFNvZnRMYWJlbHMobW9kZWwpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgIGxldCBkYXRhID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1NvZnRMYWJlbHMnLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIC8vIHRoaXMubGF5b3V0Q29uZlN1YiA9IHRoaXMubGF5b3V0LmxheW91dENvbmYkLnN1YnNjcmliZShjaGFuZ2UgPT4ge1xyXG4gICAgLy8gICAvLyB0aGlzLmluaXRCb2R5UFMoY2hhbmdlKVxyXG4gICAgLy8gfSlcclxuICB9XHJcblxyXG4gIC8vIGluaXRCb2R5UFMobGF5b3V0Q29uZjphbnkgPSB7fSkge1xyXG4gIC8vICAgaWYobGF5b3V0Q29uZi5uYXZpZ2F0aW9uUG9zID09PSAnc2lkZScgJiYgbGF5b3V0Q29uZi50b3BiYXJGaXhlZCkge1xyXG4gIC8vICAgICBpZiAodGhpcy5ib2R5UFMpIHRoaXMuYm9keVBTLmRlc3Ryb3koKTtcclxuICAvLyAgICAgaWYgKHRoaXMuaGVhZGVyRml4ZWRCb2R5UFMpIHRoaXMuaGVhZGVyRml4ZWRCb2R5UFMuZGVzdHJveSgpO1xyXG4gIC8vICAgICB0aGlzLmhlYWRlckZpeGVkQm9keVBTID0gbmV3IFBlcmZlY3RTY3JvbGxiYXIoJy5yaWdodHNpZGUtY29udGVudC1ob2xkJywge1xyXG4gIC8vICAgICAgIHN1cHByZXNzU2Nyb2xsWDogdHJ1ZVxyXG4gIC8vICAgICB9KTtcclxuICAvLyAgICAgdGhpcy5zY3JvbGxUb1RvcCgnLnJpZ2h0c2lkZS1jb250ZW50LWhvbGQnKTtcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIGlmICh0aGlzLmJvZHlQUykgdGhpcy5ib2R5UFMuZGVzdHJveSgpO1xyXG4gIC8vICAgICBpZiAodGhpcy5oZWFkZXJGaXhlZEJvZHlQUykgdGhpcy5oZWFkZXJGaXhlZEJvZHlQUy5kZXN0cm95KCk7XHJcbiAgLy8gICAgIHRoaXMuYm9keVBTID0gbmV3IFBlcmZlY3RTY3JvbGxiYXIoJy5tYWluLWNvbnRlbnQtd3JhcCcsIHtcclxuICAvLyAgICAgICBzdXBwcmVzc1Njcm9sbFg6IHRydWVcclxuICAvLyAgICAgfSk7XHJcbiAgLy8gICAgIHRoaXMuc2Nyb2xsVG9Ub3AoJy5tYWluLWNvbnRlbnQtd3JhcCcpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuICBzY3JvbGxUb1RvcChzZWxlY3Rvcjogc3RyaW5nKSB7XHJcbiAgICBpZiAoZG9jdW1lbnQpIHtcclxuICAgICAgbGV0IGVsZW1lbnQgPSA8SFRNTEVsZW1lbnQ+ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XHJcbiAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcclxuICAgIH1cclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5tb2R1bGVMb2FkZXJTdWIpIHtcclxuICAgICAgdGhpcy5tb2R1bGVMb2FkZXJTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmxheW91dENvbmZTdWIpIHtcclxuICAgICAgdGhpcy5sYXlvdXRDb25mU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5yb3V0ZXJFdmVudFN1Yikge1xyXG4gICAgICB0aGlzLnJvdXRlckV2ZW50U3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zdWIpIHtcclxuICAgICAgdGhpcy5zdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgY2xvc2VTaWRlYmFyKCkge1xyXG4gICAgdGhpcy5sYXlvdXQucHVibGlzaExheW91dENoYW5nZSh7XHJcbiAgICAgIHNpZGViYXJTdHlsZTogXCJjbG9zZWRcIlxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdGFydFRpbWVyKCkge1xyXG4gICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgdGhpcy50b3RhbExvYWRpbmdUaW1lKys7XHJcbiAgICB9LCAxMDAwKVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYXBwLWFkbWluLXdyYXBcIiBbZGlyXT0nbGF5b3V0Q29uZi5kaXInPlxyXG4gIDwhLS0gSGVhZGVyIGZvciB0b3AgbmF2aWdhdGlvbiBsYXlvdXQgLS0+XHJcbiAgPCEtLSBPTkxZIFJFUVVJUkVEIEZPUiAqKlRPUCoqIE5BVklHQVRJT04gTEFZT1VUIC0tPlxyXG4gIDxhcHAtaGVhZGVyLXRvcCAqbmdJZj1cImxheW91dENvbmYubmF2aWdhdGlvblBvcyA9PT0gJ3RvcCdcIiBbbm90aWZpY1BhbmVsXT1cInNpZGVuYXZcIj5cclxuICA8L2FwcC1oZWFkZXItdG9wPlxyXG4gIDxuZ3gtdWktbG9hZGVyIGZnc1NpemU9XCIxODBcIiBbZmdzVHlwZV09XCJzcGlubmVyVHlwZVwiIGNvbG9yPVwicHJpbWFyeVwiPjwvbmd4LXVpLWxvYWRlcj5cclxuICA8IS0tIE1haW4gQ29udGFpbmVyIC0tPlxyXG4gIDxtYXQtc2lkZW5hdi1jb250YWluZXIgW2Rpcl09J2xheW91dENvbmYuZGlyJyBjbGFzcz1cImFwcC1hZG1pbi1jb250YWluZXIgYXBwLXNpZGUtbmF2LWNvbnRhaW5lciBtYXQtZHJhd2VyLXRyYW5zaXRpb25cIlxyXG4gICAgW25nQ2xhc3NdPVwie1xyXG4gICAgJ25hdmlnYXRpb24tdG9wJzogbGF5b3V0Q29uZi5uYXZpZ2F0aW9uUG9zID09PSAndG9wJyxcclxuICAgICdzaWRlYmFyLWZ1bGwnOiBsYXlvdXRDb25mLnNpZGViYXJTdHlsZSA9PT0gJ2Z1bGwnLFxyXG4gICAgJ3NpZGViYXItY29tcGFjdCc6IGxheW91dENvbmYuc2lkZWJhclN0eWxlID09PSAnY29tcGFjdCcgJiYgbGF5b3V0Q29uZi5uYXZpZ2F0aW9uUG9zID09PSAnc2lkZScsXHJcbiAgICAnc2lkZWJhci1jb21wYWN0LWJpZyc6IGxheW91dENvbmYuc2lkZWJhclN0eWxlID09PSAnY29tcGFjdC1iaWcnICYmIGxheW91dENvbmYubmF2aWdhdGlvblBvcyA9PT0gJ3NpZGUnLFxyXG4gICAgJ2xheW91dC1pbnRyYW5zaXRpb24nOiBsYXlvdXRDb25mLmxheW91dEluVHJhbnNpdGlvbixcclxuICAgICdzaWRlYmFyLW9wZW5lZCc6IGxheW91dENvbmYuc2lkZWJhclN0eWxlICE9PSAnY2xvc2VkJyAmJiBsYXlvdXRDb25mLm5hdmlnYXRpb25Qb3MgPT09ICdzaWRlJyxcclxuICAgICdzaWRlYmFyLWNsb3NlZCc6IGxheW91dENvbmYuc2lkZWJhclN0eWxlID09PSAnY2xvc2VkJyxcclxuICAgICdmaXhlZC10b3BiYXInOiBsYXlvdXRDb25mLnRvcGJhckZpeGVkICYmIGxheW91dENvbmYubmF2aWdhdGlvblBvcyA9PT0gJ3NpZGUnXHJcbiAgfVwiPlxyXG4gICAgPCEtLSBTSURFQkFSIC0tPlxyXG4gICAgPCEtLSBPTkxZIFJFUVVJUkVEIEZPUiAqKlNJREUqKiBOQVZJR0FUSU9OIExBWU9VVCAtLT5cclxuICAgIDwhLS0gPGFwcC1zaWRlYmFyLXNpZGUgKm5nSWY9XCJsYXlvdXRDb25mLm5hdmlnYXRpb25Qb3MgPT09ICdzaWRlJ1wiPjwvYXBwLXNpZGViYXItc2lkZT4gLS0+XHJcblxyXG4gICAgPCEtLSBUb3AgbmF2aWdhdGlvbiBsYXlvdXQgKG5hdmlnYXRpb24gZm9yIG1vYmlsZSBzY3JlZW4pIC0tPlxyXG4gICAgPCEtLSBPTkxZIFJFUVVJUkVEIEZPUiAqKlRPUCoqIE5BVklHQVRJT04gTU9CSUxFIExBWU9VVCAtLT5cclxuICAgIDxhcHAtc2lkZWJhci10b3AgKm5nSWY9XCJsYXlvdXRDb25mLm5hdmlnYXRpb25Qb3MgPT09ICd0b3AnICYmIGxheW91dENvbmYuaXNNb2JpbGVcIj48L2FwcC1zaWRlYmFyLXRvcD5cclxuXHJcbiAgICA8IS0tIEFwcCBjb250ZW50IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudC13cmFwXCIgW3BlcmZlY3RTY3JvbGxiYXJdPVwic2Nyb2xsQ29uZmlnXCIgW2Rpc2FibGVkXT1cImxheW91dENvbmYudG9wYmFyRml4ZWRcIj5cclxuICAgICAgPCEtLSBIZWFkZXIgZm9yIHNpZGUgbmF2aWdhdGlvbiBsYXlvdXQgLS0+XHJcbiAgICAgIDwhLS0gT05MWSBSRVFVSVJFRCBGT1IgKipTSURFKiogTkFWSUdBVElPTiBMQVlPVVQgLS0+XHJcbiAgICAgIDxhcHAtaGVhZGVyLXNpZGUgY2xhc3M9XCJ7e2xheW91dENvbmYuaXNNb2JpbGUgPyAnY3VzdG9tLWFwcC1oZWFkZXItbW9iaWxlJyA6ICdjdXN0b20tYXBwLWhlYWRlcid9fVwiIChvcGVuZWQpPVwiT3BlbmVkKCRldmVudClcIiBbbm90aWZpY1BhbmVsXT1cInNpZGVuYXZcIj5cclxuICAgICAgPC9hcHAtaGVhZGVyLXNpZGU+XHJcblxyXG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtci0xXCIgKm5nSWY9XCIhZGFzaGJvYXJkUGFnZVwiPlxyXG4gICAgICAgIDxnYy11c2Vyc3Rvcnktc3VtbWFyeSAqbmdJZj1cInVzZXJTdG9yeVwiIHN0eWxlPVwid2lkdGg6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7YmFja2dyb3VuZC1jb2xvcjogYmVpZ2U7XCJcclxuICAgICAgICAgIFt1c2VyU3RvcnldPVwidXNlclN0b3J5XCIgW2lzU3ViVGFza3NQYWdlXT1mYWxzZSBbaXNMb2FkaW5nXT1cIihhbnlPcGVyYXRpb25JblByb2dyZXNzRm9yQXV0b0xvZ2dpbmckfGFzeW5jKVwiXHJcbiAgICAgICAgICBbaXNVc2VyU3Rvcmllc1BhZ2VdPWZhbHNlICh1cGRhdGVBdXRvTG9nKT1cIkxvZ0FjdGlvbigkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9nYy11c2Vyc3Rvcnktc3VtbWFyeT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXVzZXJTdG9yeVwiPlxyXG4gICAgICAgICAgWW91IGFyZSBub3Qgc3RhcnRlZCBhbnkgdXNlcnN0b3J5IHlldCEgUGxlYXNlIHN0YXJ0IHdvcmshIVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtbC0wNVwiPlxyXG4gICAgICAgICAgPGZhLWljb24gY2xhc3M9XCJjYXJldC1zaXplXCIgc3R5bGU9XCJjb2xvcjojM2RhOGI1XCIgaWNvbj1cImNhcmV0LWRvd25cIiBbc2F0UG9wb3ZlckFuY2hvckZvcl09XCJyZWNlbnRVc2VyU3RvcnlcIlxyXG4gICAgICAgICAgICAgKGNsaWNrKT1cInJlY2VudFVzZXJTdG9yeS50b2dnbGUoKVwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8c2F0LXBvcG92ZXIgI3JlY2VudFVzZXJTdG9yeSBoYXNCYWNrZHJvcCAgYmFja2Ryb3BDbGFzcz1cInVzLXBvcG92ZXJcIj4gXHJcbiAgICAgICAgICAgIDxtYXQtY2FyZD5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHVzZXJTdG9yeSBvZiAodXNlclN0b3JpZXMkIHwgYXN5bmMgfCBzbGljZTowOjUpXCIgc3R5bGU9XCJtaW4td2lkdGg6IDEwMDBweDtcIiBjbGFzcz1cInZpZXctdXNcIj5cclxuICAgICAgICAgICAgPGdjLXVzZXJzdG9yeS1zdW1tYXJ5IHN0eWxlPVwid2lkdGg6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7YmFja2dyb3VuZC1jb2xvcjogYmVpZ2U7XCJcclxuICAgICAgICAgICAgICBbdXNlclN0b3J5XT1cInVzZXJTdG9yeVwiIFtpc1N1YlRhc2tzUGFnZV09ZmFsc2UgW2lzTG9hZGluZ109XCIoYW55T3BlcmF0aW9uSW5Qcm9ncmVzc0ZvckF1dG9Mb2dnaW5nJHxhc3luYylcIlxyXG4gICAgICAgICAgICAgIFtpc1VzZXJTdG9yaWVzUGFnZV09dHJ1ZSAodXBkYXRlQXV0b0xvZyk9XCJMb2dBY3Rpb24oJGV2ZW50KVwiIFtpc1Nob3ddPVwiZmFsc2VcIiAoY2xvc2UpPVwicmVjZW50VXNlclN0b3J5LmNsb3NlKClcIj5cclxuICAgICAgICAgICAgPC9nYy11c2Vyc3Rvcnktc3VtbWFyeT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgICAgPC9zYXQtcG9wb3Zlcj5cclxuICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0c2lkZS1jb250ZW50LWhvbGRcIiBbcGVyZmVjdFNjcm9sbGJhcl09XCJzY3JvbGxDb25maWdcIiBbZGlzYWJsZWRdPVwiIWxheW91dENvbmYudG9wYmFyRml4ZWRcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnYmx1ci1vbi1vcGVuZWQnOiBkaXNwbGF5fVwiIFtuZ0NsYXNzXT1cInsnc2hvdy1pbi1kYXNoYm9hcmQnOmRhc2hib2FyZFBhZ2V9XCI+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBjbGFzcz1cIm1yLTFcIiAqbmdJZj1cIiFkYXNoYm9hcmRQYWdlXCIgW25nU3R5bGVdPVwieydtYXJnaW4tbGVmdCc6ICc5MHB4J31cIiBcclxuICAgICAgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWNvbG9yJzogdXNlclN0b3J5ID8gJ2JlaWdlJyA6ICdub25lJyB9XCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6OTBweCAhaW1wb3J0YW50XCI+XHJcbiAgICAgICAgPGdjLXVzZXJzdG9yeS1zdW1tYXJ5IGZ4RmxleD1cIjkwXCIgKm5nSWY9XCJ1c2VyU3RvcnlcIiBzdHlsZT1cIndpZHRoOiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlO2JhY2tncm91bmQtY29sb3I6IGJlaWdlO1wiXHJcbiAgICAgICAgICBbdXNlclN0b3J5XT1cInVzZXJTdG9yeVwiIFtpc1N1YlRhc2tzUGFnZV09ZmFsc2UgW2lzTG9hZGluZ109XCIoYW55T3BlcmF0aW9uSW5Qcm9ncmVzc0ZvckF1dG9Mb2dnaW5nJHxhc3luYylcIlxyXG4gICAgICAgICAgW2lzVXNlclN0b3JpZXNQYWdlXT1mYWxzZSAodXBkYXRlQXV0b0xvZyk9XCJMb2dBY3Rpb24oJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvZ2MtdXNlcnN0b3J5LXN1bW1hcnk+XHJcbiAgICAgICAgPG1hdC1jYXJkICpuZ0lmPVwiIXVzZXJTdG9yeVwiIHN0eWxlPVwicGFkZGluZzogMTBweDtsZWZ0OiAtNzVweDtcIj5cclxuICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgIFlvdSBhcmUgbm90IHN0YXJ0ZWQgYW55IHt7IHVzZXJzdG9yeSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319IHlldCEgUGxlYXNlIHN0YXJ0IHdvcmshIVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTA1XCI+XHJcbiAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cImNhcmV0LXNpemVcIiBzdHlsZT1cImNvbG9yOiMzZGE4YjVcIiBpY29uPVwiY2FyZXQtZG93blwiIFtzYXRQb3BvdmVyQW5jaG9yRm9yXT1cInJlY2VudFVzZXJTdG9yeVwiXHJcbiAgICAgICAgICAgICAoY2xpY2spPVwicmVjZW50VXNlclN0b3J5LnRvZ2dsZSgpXCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L21hdC1jYXJkPlxyXG4gICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBjb2xvcj1cInByaW1hcnlcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwiYW55T3BlcmF0aW9uSW5Qcm9ncmVzc0ZvckF1dG9Mb2dnaW5nJHxhc3luY1wiPlxyXG4gICAgICAgIDwvbWF0LXByb2dyZXNzLWJhcj4gLS0+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGZ4RmxleCBjbGFzcz1cIm1sLTA1XCIgKm5nSWY9XCJ1c2VyU3RvcnlcIj5cclxuICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwiY2FyZXQtc2l6ZVwiIHN0eWxlPVwiY29sb3I6IzNkYThiNVwiIGljb249XCJjYXJldC1kb3duXCIgW3NhdFBvcG92ZXJBbmNob3JGb3JdPVwicmVjZW50VXNlclN0b3J5XCJcclxuICAgICAgICAgICAgIChjbGljayk9XCJyZWNlbnRVc2VyU3RvcnkudG9nZ2xlKClcIj48L2ZhLWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHNhdC1wb3BvdmVyICNyZWNlbnRVc2VyU3RvcnkgaGFzQmFja2Ryb3AgIGJhY2tkcm9wQ2xhc3M9XCJ1cy1wb3BvdmVyXCI+IFxyXG4gICAgICAgICAgICA8bWF0LWNhcmQ+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB1c2VyU3Rvcnkgb2YgKHVzZXJTdG9yaWVzJCB8IGFzeW5jIHwgc2xpY2U6MDo1KVwiIHN0eWxlPVwibWluLXdpZHRoOiAxMDAwcHg7XCIgY2xhc3M9XCJ2aWV3LXVzXCI+XHJcbiAgICAgICAgICAgIDxnYy11c2Vyc3Rvcnktc3VtbWFyeSBzdHlsZT1cIndpZHRoOiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlO2JhY2tncm91bmQtY29sb3I6IGJlaWdlO1wiXHJcbiAgICAgICAgICAgICAgW3VzZXJTdG9yeV09XCJ1c2VyU3RvcnlcIiBbaXNTdWJUYXNrc1BhZ2VdPWZhbHNlIFtpc0xvYWRpbmddPVwiKGFueU9wZXJhdGlvbkluUHJvZ3Jlc3NGb3JBdXRvTG9nZ2luZyR8YXN5bmMpXCJcclxuICAgICAgICAgICAgICBbaXNVc2VyU3Rvcmllc1BhZ2VdPXRydWUgKHVwZGF0ZUF1dG9Mb2cpPVwiTG9nQWN0aW9uKCRldmVudClcIiBbaXNTaG93XT1cImZhbHNlXCIgKGNsb3NlKT1cInJlY2VudFVzZXJTdG9yeS5jbG9zZSgpXCI+XHJcbiAgICAgICAgICAgIDwvZ2MtdXNlcnN0b3J5LXN1bW1hcnk+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1jYXJkPlxyXG4gICAgICAgIDwvc2F0LXBvcG92ZXI+XHJcbiAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8IS0tIFZpZXcgTG9hZGVyIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2aWV3LWxvYWRlclwiICpuZ0lmPVwiaXNNb2R1bGVMb2FkaW5nXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG91YmxlLWJvdW5jZTEgbWF0LWJnLWFjY2VudFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG91YmxlLWJvdW5jZTIgbWF0LWJnLXByaW1hcnlcIj48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gVmlldyBvdXRsZXQgLS0+XHJcbiAgICAgICAgPGRpdiBpZD1cImJ0cmFrLXByZWxvYWRlclwiICpuZ0lmPVwibG9hZGluZ1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmVsb2FkaW5nLXRleHRcIj5cclxuICAgICAgICAgICAge3sgJ0xPQURJTkdQTEVBU0VXQUlUJyB8IHRyYW5zbGF0ZSB9fSAoe3t0b3RhbExvYWRpbmdUaW1lfX0ge3sgJ1NFQ09ORFMnIHwgdHJhbnNsYXRlIH19KVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBpZD1cImJ0cmFrLWxvYWRlclwiICpuZ0lmPVwibG9hZGluZ1wiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nXCI+XHJcbiAgICAgICAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIFZpZXcgb3ZlcmxheSBmb3IgbW9iaWxlIG5hdmlnYXRpb24gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2lkZWJhci1iYWNrZHJvcFwiIFtuZ0NsYXNzXT1cInsndmlzaWJsZSc6IGxheW91dENvbmYuc2lkZWJhclN0eWxlICE9PSAnY2xvc2VkJyAmJiBsYXlvdXRDb25mLmlzTW9iaWxlfVwiXHJcbiAgICAgIChjbGljayk9XCJjbG9zZVNpZGViYXIoKVwiPjwvZGl2PlxyXG5cclxuICAgIDwhLS0gTm90aWZpY2FhdGlvbiBiYXIgLS0+XHJcbiAgICA8bWF0LXNpZGVuYXYgI3NpZGVuYXYgbW9kZT1cInNpZGVcIiBvcGVuZWQgY2xhc3M9XCJleGFtcGxlLXNpZGVuYXZcIiBbZml4ZWRJblZpZXdwb3J0XT1cInRydWVcIiBbZml4ZWRUb3BHYXBdPVwibGF5b3V0Q29uZi5pc01vYmlsZSA/IDQ1IDogODhcIlxyXG4gICAgICBbZml4ZWRCb3R0b21HYXBdPVwiMFwiIGNsYXNzPVwic2lkZS1uYXYtY29sb3IgY3VzdG9tLWFwcC1uYXZcIiBpZD1cInN0eWxlLTFcIj5cclxuICAgICAgPGFwcC1zaWRlYmFyPjwvYXBwLXNpZGViYXI+XHJcbiAgICA8L21hdC1zaWRlbmF2PlxyXG4gIDwvbWF0LXNpZGVuYXYtY29udGFpbmVyPlxyXG48L2Rpdj4iXX0=
|
|
1
|
+
import { Component, HostListener } from "@angular/core";
|
|
2
|
+
import { NavigationEnd, RouteConfigLoadStart, RouteConfigLoadEnd, ResolveStart, ResolveEnd, NavigationStart, NavigationCancel, NavigationError, } from "@angular/router";
|
|
3
|
+
// import PerfectScrollbar from 'perfect-scrollbar';
|
|
4
|
+
import { Subject } from "rxjs";
|
|
5
|
+
import { takeUntil, tap } from "rxjs/operators";
|
|
6
|
+
import { filter } from "rxjs/operators";
|
|
7
|
+
import { UserDetailsFetchedAfterLogin, AuthenticationActionTypes } from "../../store/actions/authentication.actions";
|
|
8
|
+
import { ofType } from "@ngrx/effects";
|
|
9
|
+
import { SoftLabelConfigurationModel } from "../../models/softlabels-model";
|
|
10
|
+
import '../../../globaldependencies/helpers/fontawesome-icons';
|
|
11
|
+
import { LocalStorageProperties } from '../../../globaldependencies/constants/localstorage-properties';
|
|
12
|
+
import { SPINNER } from 'ngx-ui-loader';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "@angular/router";
|
|
15
|
+
import * as i2 from "@ngx-translate/core";
|
|
16
|
+
import * as i3 from "../../services/layout.service";
|
|
17
|
+
import * as i4 from "@ngrx/store";
|
|
18
|
+
import * as i5 from "ngx-cookie-service";
|
|
19
|
+
import * as i6 from "@ngrx/effects";
|
|
20
|
+
import * as i7 from "@angular/common";
|
|
21
|
+
import * as i8 from "../../services/common-used.service";
|
|
22
|
+
import * as i9 from "pubnub-angular2";
|
|
23
|
+
import * as i10 from "../../services/signalr.service";
|
|
24
|
+
import * as i11 from "@angular/cdk/bidi";
|
|
25
|
+
import * as i12 from "ngx-ui-loader";
|
|
26
|
+
import * as i13 from "@angular/material/sidenav";
|
|
27
|
+
import * as i14 from "@angular/flex-layout/extended";
|
|
28
|
+
import * as i15 from "ngx-perfect-scrollbar";
|
|
29
|
+
import * as i16 from "../header-side/header-side.component";
|
|
30
|
+
import * as i17 from "../sidenav/side-bar.component";
|
|
31
|
+
import * as i18 from "../header-top/header-top.component";
|
|
32
|
+
import * as i19 from "../sidebar-top/sidebar-top.component";
|
|
33
|
+
function AdminLayoutComponent_app_header_top_1_Template(rf, ctx) { if (rf & 1) {
|
|
34
|
+
i0.ɵɵelement(0, "app-header-top", 13);
|
|
35
|
+
} if (rf & 2) {
|
|
36
|
+
i0.ɵɵnextContext();
|
|
37
|
+
const _r5 = i0.ɵɵreference(13);
|
|
38
|
+
i0.ɵɵproperty("notificPanel", _r5);
|
|
39
|
+
} }
|
|
40
|
+
function AdminLayoutComponent_app_sidebar_top_4_Template(rf, ctx) { if (rf & 1) {
|
|
41
|
+
i0.ɵɵelement(0, "app-sidebar-top");
|
|
42
|
+
} }
|
|
43
|
+
function AdminLayoutComponent_div_8_Template(rf, ctx) { if (rf & 1) {
|
|
44
|
+
i0.ɵɵelementStart(0, "div", 14);
|
|
45
|
+
i0.ɵɵelementStart(1, "div", 15);
|
|
46
|
+
i0.ɵɵelement(2, "div", 16);
|
|
47
|
+
i0.ɵɵelement(3, "div", 17);
|
|
48
|
+
i0.ɵɵelementEnd();
|
|
49
|
+
i0.ɵɵelementEnd();
|
|
50
|
+
} }
|
|
51
|
+
function AdminLayoutComponent_div_9_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
+
i0.ɵɵelement(0, "div", 21);
|
|
53
|
+
} }
|
|
54
|
+
function AdminLayoutComponent_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
55
|
+
i0.ɵɵelementStart(0, "div", 18);
|
|
56
|
+
i0.ɵɵelementStart(1, "span", 19);
|
|
57
|
+
i0.ɵɵtext(2);
|
|
58
|
+
i0.ɵɵpipe(3, "translate");
|
|
59
|
+
i0.ɵɵpipe(4, "translate");
|
|
60
|
+
i0.ɵɵelementEnd();
|
|
61
|
+
i0.ɵɵtemplate(5, AdminLayoutComponent_div_9_div_5_Template, 1, 0, "div", 20);
|
|
62
|
+
i0.ɵɵelementEnd();
|
|
63
|
+
} if (rf & 2) {
|
|
64
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
65
|
+
i0.ɵɵadvance(2);
|
|
66
|
+
i0.ɵɵtextInterpolate3(" ", i0.ɵɵpipeBind1(3, 4, "LOADINGPLEASEWAIT"), " (", ctx_r3.totalLoadingTime, " ", i0.ɵɵpipeBind1(4, 6, "SECONDS"), ") ");
|
|
67
|
+
i0.ɵɵadvance(3);
|
|
68
|
+
i0.ɵɵproperty("ngIf", ctx_r3.loading);
|
|
69
|
+
} }
|
|
70
|
+
function AdminLayoutComponent_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
+
i0.ɵɵelementStart(0, "div");
|
|
72
|
+
i0.ɵɵelement(1, "router-outlet");
|
|
73
|
+
i0.ɵɵelementEnd();
|
|
74
|
+
} }
|
|
75
|
+
const _c0 = function (a0, a1, a2, a3, a4, a5, a6, a7) { return { "navigation-top": a0, "sidebar-full": a1, "sidebar-compact": a2, "sidebar-compact-big": a3, "layout-intransition": a4, "sidebar-opened": a5, "sidebar-closed": a6, "fixed-topbar": a7 }; };
|
|
76
|
+
const _c1 = function (a0) { return { "blur-on-opened": a0 }; };
|
|
77
|
+
const _c2 = function (a0) { return { "show-in-dashboard": a0 }; };
|
|
78
|
+
const _c3 = function (a0) { return { "visible": a0 }; };
|
|
79
|
+
export class AdminLayoutComponent {
|
|
80
|
+
constructor(router, translate, layout, store, cookieService, actionUpdates$, location, commonService, pubnub, signalr) {
|
|
81
|
+
this.router = router;
|
|
82
|
+
this.translate = translate;
|
|
83
|
+
this.layout = layout;
|
|
84
|
+
this.store = store;
|
|
85
|
+
this.cookieService = cookieService;
|
|
86
|
+
this.actionUpdates$ = actionUpdates$;
|
|
87
|
+
this.location = location;
|
|
88
|
+
this.commonService = commonService;
|
|
89
|
+
this.pubnub = pubnub;
|
|
90
|
+
this.signalr = signalr;
|
|
91
|
+
this.isModuleLoading = false;
|
|
92
|
+
// private sidebarPS: PerfectScrollbar;
|
|
93
|
+
// private bodyPS: PerfectScrollbar;
|
|
94
|
+
// private headerFixedBodyPS: PerfectScrollbar;
|
|
95
|
+
this.scrollConfig = {};
|
|
96
|
+
this.layoutConf = {};
|
|
97
|
+
this.ngDestroyed$ = new Subject();
|
|
98
|
+
this.userstory = 'userstory';
|
|
99
|
+
this.loading = false;
|
|
100
|
+
this.totalLoadingTime = 0;
|
|
101
|
+
this.spinnerType = SPINNER.circle;
|
|
102
|
+
// let conId = sessionStorage.getItem('conectionId');
|
|
103
|
+
// if(!conId) {
|
|
104
|
+
this.signalr.initializeSignalRConnection();
|
|
105
|
+
// }
|
|
106
|
+
let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
|
|
107
|
+
let companySettings = localStorage.getItem(LocalStorageProperties.CompanySettings);
|
|
108
|
+
if (!companySettings || companySettings == 'null' || companySettings == "undefined") {
|
|
109
|
+
pubnub.init({
|
|
110
|
+
publishKey: environment.publishKey,
|
|
111
|
+
subscribeKey: environment.subscribeKey
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
const comSet = JSON.parse(localStorage.getItem(LocalStorageProperties.CompanySettings));
|
|
116
|
+
var publishKey = comSet.find(i => i.key == "PubnubPublishKey");
|
|
117
|
+
var subscribeKey = comSet.find(i => i.key == "PubnubSubscribeKey");
|
|
118
|
+
if ((publishKey && publishKey.value) && (subscribeKey && subscribeKey.value)) {
|
|
119
|
+
pubnub.init({
|
|
120
|
+
publishKey: publishKey.value,
|
|
121
|
+
subscribeKey: subscribeKey.value
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
pubnub.init({
|
|
126
|
+
publishKey: environment.publishKey,
|
|
127
|
+
subscribeKey: environment.subscribeKey
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Close sidenav after route change in mobile
|
|
132
|
+
this.routerEventSub = router.events
|
|
133
|
+
.pipe(filter(event => event instanceof NavigationEnd))
|
|
134
|
+
.subscribe((routeChange) => {
|
|
135
|
+
this.layout.adjustLayout({ route: routeChange.url });
|
|
136
|
+
});
|
|
137
|
+
// Translator init
|
|
138
|
+
let currentCulture = this.cookieService.get(LocalStorageProperties.CurrentCulture);
|
|
139
|
+
if (currentCulture === 'null' || currentCulture === 'undefined') {
|
|
140
|
+
currentCulture = 'en';
|
|
141
|
+
}
|
|
142
|
+
translate.use(currentCulture);
|
|
143
|
+
this.router.events.subscribe((event) => {
|
|
144
|
+
switch (true) {
|
|
145
|
+
case event instanceof NavigationStart: {
|
|
146
|
+
this.loading = true;
|
|
147
|
+
this.totalLoadingTime = 0;
|
|
148
|
+
this.startTimer();
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
case event instanceof NavigationEnd: {
|
|
152
|
+
this.loading = false;
|
|
153
|
+
clearInterval(this.interval);
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
case event instanceof NavigationCancel:
|
|
157
|
+
case event instanceof NavigationError: {
|
|
158
|
+
this.loading = false;
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
default: {
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
router.events.subscribe(val => {
|
|
167
|
+
if (location.path() != "") {
|
|
168
|
+
if (location.path().includes('/dashboard-management/dashboard/')) {
|
|
169
|
+
this.dashboardPage = true;
|
|
170
|
+
this.bgcolor = 'none';
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
this.dashboardPage = false;
|
|
174
|
+
this.bgcolor = 'beige';
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
// if (this.cookieService.check(LocalStorageProperties.UserModel)) {
|
|
179
|
+
// let data = JSON.parse(this.cookieService.get(LocalStorageProperties.UserModel));
|
|
180
|
+
// if (data && data != 'null' && data != 'undefined')
|
|
181
|
+
// this.store.dispatch(new UserDetailsFetchedAfterLogin(data));
|
|
182
|
+
// }
|
|
183
|
+
if ((localStorage.getItem(LocalStorageProperties.UserModel) != null && localStorage.getItem(LocalStorageProperties.UserModel) != undefined)
|
|
184
|
+
&& !localStorage.hasOwnProperty(LocalStorageProperties.UserRoleFeatures)) {
|
|
185
|
+
let data = JSON.parse(localStorage.getItem(LocalStorageProperties.UserModel));
|
|
186
|
+
this.store.dispatch(new UserDetailsFetchedAfterLogin(data));
|
|
187
|
+
}
|
|
188
|
+
this.actionUpdates$
|
|
189
|
+
.pipe(takeUntil(this.ngDestroyed$), ofType(AuthenticationActionTypes.ClearDemoDataCompleted), tap((result) => {
|
|
190
|
+
if (result && result.companyId) {
|
|
191
|
+
this.getSoftLabels();
|
|
192
|
+
}
|
|
193
|
+
})).subscribe();
|
|
194
|
+
}
|
|
195
|
+
ngOnInit() {
|
|
196
|
+
this.getSoftLabelConfigurations();
|
|
197
|
+
this.layoutConf = this.layout.layoutConf;
|
|
198
|
+
// this.layout.adjustLayout();
|
|
199
|
+
// FOR MODULE LOADER FLAG
|
|
200
|
+
this.moduleLoaderSub = this.router.events.subscribe(event => {
|
|
201
|
+
if (event instanceof RouteConfigLoadStart ||
|
|
202
|
+
event instanceof ResolveStart) {
|
|
203
|
+
this.isModuleLoading = false;
|
|
204
|
+
}
|
|
205
|
+
if (event instanceof RouteConfigLoadEnd || event instanceof ResolveEnd) {
|
|
206
|
+
this.isModuleLoading = false;
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
onResize(event) {
|
|
211
|
+
this.layout.adjustLayout(event);
|
|
212
|
+
}
|
|
213
|
+
Opened(event) {
|
|
214
|
+
this.display = event;
|
|
215
|
+
}
|
|
216
|
+
getSoftLabelConfigurations() {
|
|
217
|
+
this.softLabels = JSON.parse(localStorage.getItem('SoftLabels'));
|
|
218
|
+
}
|
|
219
|
+
getSoftLabels() {
|
|
220
|
+
let model = new SoftLabelConfigurationModel();
|
|
221
|
+
model.searchText = null;
|
|
222
|
+
this.commonService.getSoftLabels(model).subscribe((response) => {
|
|
223
|
+
if (response.success) {
|
|
224
|
+
let data = response.data;
|
|
225
|
+
if (data) {
|
|
226
|
+
localStorage.setItem('SoftLabels', JSON.stringify(data));
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
ngAfterViewInit() {
|
|
232
|
+
// this.layoutConfSub = this.layout.layoutConf$.subscribe(change => {
|
|
233
|
+
// // this.initBodyPS(change)
|
|
234
|
+
// })
|
|
235
|
+
}
|
|
236
|
+
// initBodyPS(layoutConf:any = {}) {
|
|
237
|
+
// if(layoutConf.navigationPos === 'side' && layoutConf.topbarFixed) {
|
|
238
|
+
// if (this.bodyPS) this.bodyPS.destroy();
|
|
239
|
+
// if (this.headerFixedBodyPS) this.headerFixedBodyPS.destroy();
|
|
240
|
+
// this.headerFixedBodyPS = new PerfectScrollbar('.rightside-content-hold', {
|
|
241
|
+
// suppressScrollX: true
|
|
242
|
+
// });
|
|
243
|
+
// this.scrollToTop('.rightside-content-hold');
|
|
244
|
+
// } else {
|
|
245
|
+
// if (this.bodyPS) this.bodyPS.destroy();
|
|
246
|
+
// if (this.headerFixedBodyPS) this.headerFixedBodyPS.destroy();
|
|
247
|
+
// this.bodyPS = new PerfectScrollbar('.main-content-wrap', {
|
|
248
|
+
// suppressScrollX: true
|
|
249
|
+
// });
|
|
250
|
+
// this.scrollToTop('.main-content-wrap');
|
|
251
|
+
// }
|
|
252
|
+
// }
|
|
253
|
+
scrollToTop(selector) {
|
|
254
|
+
if (document) {
|
|
255
|
+
let element = document.querySelector(selector);
|
|
256
|
+
element.scrollTop = 0;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
ngOnDestroy() {
|
|
260
|
+
if (this.moduleLoaderSub) {
|
|
261
|
+
this.moduleLoaderSub.unsubscribe();
|
|
262
|
+
}
|
|
263
|
+
if (this.layoutConfSub) {
|
|
264
|
+
this.layoutConfSub.unsubscribe();
|
|
265
|
+
}
|
|
266
|
+
if (this.routerEventSub) {
|
|
267
|
+
this.routerEventSub.unsubscribe();
|
|
268
|
+
}
|
|
269
|
+
if (this.sub) {
|
|
270
|
+
this.sub.unsubscribe();
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
closeSidebar() {
|
|
274
|
+
this.layout.publishLayoutChange({
|
|
275
|
+
sidebarStyle: "closed"
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
startTimer() {
|
|
279
|
+
this.interval = setInterval(() => {
|
|
280
|
+
this.totalLoadingTime++;
|
|
281
|
+
}, 1000);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
AdminLayoutComponent.ɵfac = function AdminLayoutComponent_Factory(t) { return new (t || AdminLayoutComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.TranslateService), i0.ɵɵdirectiveInject(i3.LayoutService), i0.ɵɵdirectiveInject(i4.Store), i0.ɵɵdirectiveInject(i5.CookieService), i0.ɵɵdirectiveInject(i6.Actions), i0.ɵɵdirectiveInject(i7.Location), i0.ɵɵdirectiveInject(i8.CommonService), i0.ɵɵdirectiveInject(i9.PubNubAngular), i0.ɵɵdirectiveInject(i10.SignalrService)); };
|
|
285
|
+
AdminLayoutComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AdminLayoutComponent, selectors: [["app-admin-layout"]], hostBindings: function AdminLayoutComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
286
|
+
i0.ɵɵlistener("resize", function AdminLayoutComponent_resize_HostBindingHandler($event) { return ctx.onResize($event); }, false, i0.ɵɵresolveWindow);
|
|
287
|
+
} }, decls: 15, vars: 38, consts: [[1, "app-admin-wrap", 3, "dir"], [3, "notificPanel", 4, "ngIf"], ["fgsSize", "180", "color", "primary", 3, "fgsType"], [1, "app-admin-container", "app-side-nav-container", "mat-drawer-transition", 3, "dir", "ngClass"], [4, "ngIf"], [1, "main-content-wrap", 3, "perfectScrollbar", "disabled"], [3, "notificPanel", "opened"], [1, "rightside-content-hold", 3, "perfectScrollbar", "disabled", "ngClass"], ["class", "view-loader", 4, "ngIf"], ["id", "btrak-preloader", 4, "ngIf"], [1, "sidebar-backdrop", 3, "ngClass", "click"], ["mode", "side", "opened", "", "id", "style-1", 1, "side-nav-color", "custom-app-nav", 3, "fixedInViewport", "fixedTopGap", "fixedBottomGap"], ["sidenav", ""], [3, "notificPanel"], [1, "view-loader"], [1, "spinner"], [1, "double-bounce1", "mat-bg-accent"], [1, "double-bounce2", "mat-bg-primary"], ["id", "btrak-preloader"], [1, "preloading-text"], ["id", "btrak-loader", 4, "ngIf"], ["id", "btrak-loader"]], template: function AdminLayoutComponent_Template(rf, ctx) { if (rf & 1) {
|
|
288
|
+
i0.ɵɵelementStart(0, "div", 0);
|
|
289
|
+
i0.ɵɵtemplate(1, AdminLayoutComponent_app_header_top_1_Template, 1, 1, "app-header-top", 1);
|
|
290
|
+
i0.ɵɵelement(2, "ngx-ui-loader", 2);
|
|
291
|
+
i0.ɵɵelementStart(3, "mat-sidenav-container", 3);
|
|
292
|
+
i0.ɵɵtemplate(4, AdminLayoutComponent_app_sidebar_top_4_Template, 1, 0, "app-sidebar-top", 4);
|
|
293
|
+
i0.ɵɵelementStart(5, "div", 5);
|
|
294
|
+
i0.ɵɵelementStart(6, "app-header-side", 6);
|
|
295
|
+
i0.ɵɵlistener("opened", function AdminLayoutComponent_Template_app_header_side_opened_6_listener($event) { return ctx.Opened($event); });
|
|
296
|
+
i0.ɵɵelementEnd();
|
|
297
|
+
i0.ɵɵelementStart(7, "div", 7);
|
|
298
|
+
i0.ɵɵtemplate(8, AdminLayoutComponent_div_8_Template, 4, 0, "div", 8);
|
|
299
|
+
i0.ɵɵtemplate(9, AdminLayoutComponent_div_9_Template, 6, 8, "div", 9);
|
|
300
|
+
i0.ɵɵtemplate(10, AdminLayoutComponent_div_10_Template, 2, 0, "div", 4);
|
|
301
|
+
i0.ɵɵelementEnd();
|
|
302
|
+
i0.ɵɵelementEnd();
|
|
303
|
+
i0.ɵɵelementStart(11, "div", 10);
|
|
304
|
+
i0.ɵɵlistener("click", function AdminLayoutComponent_Template_div_click_11_listener() { return ctx.closeSidebar(); });
|
|
305
|
+
i0.ɵɵelementEnd();
|
|
306
|
+
i0.ɵɵelementStart(12, "mat-sidenav", 11, 12);
|
|
307
|
+
i0.ɵɵelement(14, "app-sidebar");
|
|
308
|
+
i0.ɵɵelementEnd();
|
|
309
|
+
i0.ɵɵelementEnd();
|
|
310
|
+
i0.ɵɵelementEnd();
|
|
311
|
+
} if (rf & 2) {
|
|
312
|
+
const _r5 = i0.ɵɵreference(13);
|
|
313
|
+
i0.ɵɵproperty("dir", ctx.layoutConf.dir);
|
|
314
|
+
i0.ɵɵadvance(1);
|
|
315
|
+
i0.ɵɵproperty("ngIf", ctx.layoutConf.navigationPos === "top");
|
|
316
|
+
i0.ɵɵadvance(1);
|
|
317
|
+
i0.ɵɵproperty("fgsType", ctx.spinnerType);
|
|
318
|
+
i0.ɵɵadvance(1);
|
|
319
|
+
i0.ɵɵproperty("dir", ctx.layoutConf.dir)("ngClass", i0.ɵɵpureFunction8(23, _c0, ctx.layoutConf.navigationPos === "top", ctx.layoutConf.sidebarStyle === "full", ctx.layoutConf.sidebarStyle === "compact" && ctx.layoutConf.navigationPos === "side", ctx.layoutConf.sidebarStyle === "compact-big" && ctx.layoutConf.navigationPos === "side", ctx.layoutConf.layoutInTransition, ctx.layoutConf.sidebarStyle !== "closed" && ctx.layoutConf.navigationPos === "side", ctx.layoutConf.sidebarStyle === "closed", ctx.layoutConf.topbarFixed && ctx.layoutConf.navigationPos === "side"));
|
|
320
|
+
i0.ɵɵadvance(1);
|
|
321
|
+
i0.ɵɵproperty("ngIf", ctx.layoutConf.navigationPos === "top" && ctx.layoutConf.isMobile);
|
|
322
|
+
i0.ɵɵadvance(1);
|
|
323
|
+
i0.ɵɵproperty("perfectScrollbar", ctx.scrollConfig)("disabled", ctx.layoutConf.topbarFixed);
|
|
324
|
+
i0.ɵɵadvance(1);
|
|
325
|
+
i0.ɵɵclassMap(ctx.layoutConf.isMobile ? "custom-app-header-mobile" : "custom-app-header");
|
|
326
|
+
i0.ɵɵproperty("notificPanel", _r5);
|
|
327
|
+
i0.ɵɵadvance(1);
|
|
328
|
+
i0.ɵɵproperty("perfectScrollbar", ctx.scrollConfig)("disabled", !ctx.layoutConf.topbarFixed)("ngClass", i0.ɵɵpureFunction1(32, _c1, ctx.display))("ngClass", i0.ɵɵpureFunction1(34, _c2, ctx.dashboardPage));
|
|
329
|
+
i0.ɵɵadvance(1);
|
|
330
|
+
i0.ɵɵproperty("ngIf", ctx.isModuleLoading);
|
|
331
|
+
i0.ɵɵadvance(1);
|
|
332
|
+
i0.ɵɵproperty("ngIf", ctx.loading);
|
|
333
|
+
i0.ɵɵadvance(1);
|
|
334
|
+
i0.ɵɵproperty("ngIf", !ctx.loading);
|
|
335
|
+
i0.ɵɵadvance(1);
|
|
336
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(36, _c3, ctx.layoutConf.sidebarStyle !== "closed" && ctx.layoutConf.isMobile));
|
|
337
|
+
i0.ɵɵadvance(1);
|
|
338
|
+
i0.ɵɵproperty("fixedInViewport", true)("fixedTopGap", ctx.layoutConf.isMobile ? 45 : 88)("fixedBottomGap", 0);
|
|
339
|
+
} }, directives: [i11.Dir, i7.NgIf, i12.ɵb, i13.MatSidenavContainer, i7.NgClass, i14.DefaultClassDirective, i15.PerfectScrollbarDirective, i16.HeaderSideComponent, i13.MatSidenav, i17.SideBarComponent, i18.HeaderTopComponent, i19.SidebarTopComponent, i1.RouterOutlet], pipes: [i2.TranslatePipe], encapsulation: 2 });
|
|
340
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AdminLayoutComponent, [{
|
|
341
|
+
type: Component,
|
|
342
|
+
args: [{
|
|
343
|
+
selector: "app-admin-layout",
|
|
344
|
+
templateUrl: "./admin-layout.template.html"
|
|
345
|
+
}]
|
|
346
|
+
}], function () { return [{ type: i1.Router }, { type: i2.TranslateService }, { type: i3.LayoutService }, { type: i4.Store }, { type: i5.CookieService }, { type: i6.Actions }, { type: i7.Location }, { type: i8.CommonService }, { type: i9.PubNubAngular }, { type: i10.SignalrService }]; }, { onResize: [{
|
|
347
|
+
type: HostListener,
|
|
348
|
+
args: ["window:resize", ['$event']]
|
|
349
|
+
}] }); })();
|
|
350
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL2NvbXBvbmVudHMvYWRtaW4tbGF5b3V0L2FkbWluLWxheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL2FkbWluLWxheW91dC9hZG1pbi1sYXlvdXQudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFvQyxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFVLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEdBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUt4TCxvREFBb0Q7QUFDcEQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUseUJBQXlCLEVBQTZCLE1BQU0sNENBQTRDLENBQUM7QUFFaEosT0FBTyxFQUFXLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUkzRSxPQUFPLHVEQUF1RCxDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtE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Z0RBVUc7UUFPRCw2RkFBcUc7UUFHckcsOEJBQXFHO1FBR25HLDBDQUF1SjtRQUFuRCxrSEFBVSxrQkFBYyxJQUFDO1FBQzdILGlCQUFrQjtRQTBCbEIsOEJBQzBGO1FBa0N4RixxRUFLTTtRQUVOLHFFQU1NO1FBQ04sdUVBRU07UUFDUixpQkFBTTtRQUNSLGlCQUFNO1FBRU4sZ0NBQzJCO1FBQXpCLCtGQUFTLGtCQUFjLElBQUM7UUFBQyxpQkFBTTtRQUdqQyw0Q0FDMEU7UUFDeEUsK0JBQTJCO1FBQzdCLGlCQUFjO1FBQ2hCLGlCQUF3QjtRQUMxQixpQkFBTTs7O1FBekhzQix3Q0FBc0I7UUFHL0IsZUFBd0M7UUFBeEMsNkRBQXdDO1FBRTVCLGVBQXVCO1FBQXZCLHlDQUF1QjtRQUU3QixlQUFzQjtRQUF0Qix3Q0FBc0IsaWhCQUFBO1FBaUJ6QixlQUErRDtRQUEvRCx3RkFBK0Q7UUFHbEQsZUFBaUM7UUFBakMsbURBQWlDLHdDQUFBO1FBRzdDLGVBQWtGO1FBQWxGLHlGQUFrRjtRQUEyQixrQ0FBd0I7UUEyQmxILGVBQWlDO1FBQWpDLG1EQUFpQyx5Q0FBQSxxREFBQSwyREFBQTtRQW1DekMsZUFBcUI7UUFBckIsMENBQXFCO1FBT3BCLGVBQWE7UUFBYixrQ0FBYTtRQU9sQyxlQUFjO1FBQWQsbUNBQWM7UUFNTSxlQUFvRjtRQUFwRiwwSEFBb0Y7UUFJakQsZUFBd0I7UUFBeEIsc0NBQXdCLGtEQUFBLHFCQUFBOzt1RkRyRmhGLG9CQUFvQjtjQUxoQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsV0FBVyxFQUFFLDhCQUE4QjthQUM1Qzt1U0E4S0MsUUFBUTtrQkFGUCxZQUFZO21CQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBWaWV3Q2hpbGQsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvbkVuZCwgUm91dGVDb25maWdMb2FkU3RhcnQsIFJvdXRlQ29uZmlnTG9hZEVuZCwgUmVzb2x2ZVN0YXJ0LCBSZXNvbHZlRW5kLCBOYXZpZ2F0aW9uU3RhcnQsIE5hdmlnYXRpb25DYW5jZWwsIE5hdmlnYXRpb25FcnJvciwgRXZlbnQsIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IE1hdFNpZGVuYXYgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdlwiO1xuaW1wb3J0IHsgTWVkaWFDaGFuZ2UgfSBmcm9tIFwiQGFuZ3VsYXIvZmxleC1sYXlvdXRcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuLy8gaW1wb3J0IFBlcmZlY3RTY3JvbGxiYXIgZnJvbSAncGVyZmVjdC1zY3JvbGxiYXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSBcIkBuZ3J4L3N0b3JlXCI7XG5pbXBvcnQgeyBVc2VyRGV0YWlsc0ZldGNoZWRBZnRlckxvZ2luLCBBdXRoZW50aWNhdGlvbkFjdGlvblR5cGVzLCBVc2VySW5pdGlhbERldGFpbHNGZXRjaGVkIH0gZnJvbSBcIi4uLy4uL3N0b3JlL2FjdGlvbnMvYXV0aGVudGljYXRpb24uYWN0aW9uc1wiO1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gXCJuZ3gtY29va2llLXNlcnZpY2VcIjtcbmltcG9ydCB7IEFjdGlvbnMsIG9mVHlwZSB9IGZyb20gXCJAbmdyeC9lZmZlY3RzXCI7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvc29mdGxhYmVscy1tb2RlbFwiXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclN0b3J5IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXJTdG9yeSc7XG5pbXBvcnQgKiBhcyBTaGFyZWRNb2R1bGVTdGF0ZSBmcm9tIFwiLi4vLi4vc3RvcmUvcmVkdWNlcnMvaW5kZXhcIjtcbmltcG9ydCAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2hlbHBlcnMvZm9udGF3ZXNvbWUtaWNvbnMnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlUHJvcGVydGllcyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9jb25zdGFudHMvbG9jYWxzdG9yYWdlLXByb3BlcnRpZXMnO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi11c2VkLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHViTnViQW5ndWxhciB9IGZyb20gJ3B1Ym51Yi1hbmd1bGFyMic7XG5pbXBvcnQgeyBTUElOTkVSIH0gZnJvbSAnbmd4LXVpLWxvYWRlcic7XG5pbXBvcnQgeyBTaWduYWxyU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zaWduYWxyLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImFwcC1hZG1pbi1sYXlvdXRcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9hZG1pbi1sYXlvdXQudGVtcGxhdGUuaHRtbFwiXG59KVxuXG5leHBvcnQgY2xhc3MgQWRtaW5MYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBpc01vZHVsZUxvYWRpbmc6IEJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBtb2R1bGVMb2FkZXJTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBsYXlvdXRDb25mU3ViOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcm91dGVyRXZlbnRTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBtZWRpYVN1YjogU3Vic2NyaXB0aW9uO1xuICBzb2Z0TGFiZWxzJDogT2JzZXJ2YWJsZTxTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWxbXT47XG4gIHNvZnRMYWJlbHM6IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbFtdO1xuICAvLyBwcml2YXRlIHNpZGViYXJQUzogUGVyZmVjdFNjcm9sbGJhcjtcblxuICAvLyBwcml2YXRlIGJvZHlQUzogUGVyZmVjdFNjcm9sbGJhcjtcbiAgLy8gcHJpdmF0ZSBoZWFkZXJGaXhlZEJvZHlQUzogUGVyZmVjdFNjcm9sbGJhcjtcbiAgcHVibGljIHNjcm9sbENvbmZpZyA9IHt9O1xuICBwdWJsaWMgbGF5b3V0Q29uZjogYW55ID0ge307XG4gIGRpc3BsYXk6IGJvb2xlYW47XG4gIHVzZXJTdG9yaWVzJDogT2JzZXJ2YWJsZTxVc2VyU3RvcnlbXT47XG4gIHNob3c6IGJvb2xlYW47XG4gIHVzZXJTdG9yaWVzOiBVc2VyU3RvcnlbXTtcbiAgdXNlclN0b3J5OiBVc2VyU3Rvcnk7XG4gIGFueU9wZXJhdGlvbkluUHJvZ3Jlc3NGb3JBdXRvTG9nZ2luZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBuZ0Rlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xuICBkYXNoYm9hcmRQYWdlOiBib29sZWFuO1xuICBiZ2NvbG9yOiBhbnk7XG4gIHByaXZhdGUgc3ViOiBTdWJzY3JpcHRpb247XG4gIHVzZXJzdG9yeSA9ICd1c2Vyc3RvcnknO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIHRvdGFsTG9hZGluZ1RpbWU6IG51bWJlciA9IDA7XG4gIGludGVydmFsO1xuICBzcGlubmVyVHlwZSA9IFNQSU5ORVIuY2lyY2xlO1xuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGF5b3V0OiBMYXlvdXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPFNoYXJlZE1vZHVsZVN0YXRlLlN0YXRlPixcbiAgICBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25VcGRhdGVzJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwdWJudWI6IFB1Yk51YkFuZ3VsYXIsXG4gICAgcHJpdmF0ZSBzaWduYWxyOiBTaWduYWxyU2VydmljZSxcbiAgKSB7XG4gICAgLy8gbGV0IGNvbklkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY29uZWN0aW9uSWQnKTtcbiAgICAvLyBpZighY29uSWQpIHtcbiAgICAgIHRoaXMuc2lnbmFsci5pbml0aWFsaXplU2lnbmFsUkNvbm5lY3Rpb24oKTtcbiAgICAvLyB9XG4gICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XG4gICAgbGV0IGNvbXBhbnlTZXR0aW5ncyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueVNldHRpbmdzKTtcbiAgICBpZiAoIWNvbXBhbnlTZXR0aW5ncyB8fCBjb21wYW55U2V0dGluZ3MgPT0gJ251bGwnIHx8IGNvbXBhbnlTZXR0aW5ncyA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBwdWJudWIuaW5pdCh7XG4gICAgICAgIHB1Ymxpc2hLZXk6IGVudmlyb25tZW50LnB1Ymxpc2hLZXksXG4gICAgICAgIHN1YnNjcmliZUtleTogZW52aXJvbm1lbnQuc3Vic2NyaWJlS2V5XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29tU2V0ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlTZXR0aW5ncykpO1xuICAgICAgdmFyIHB1Ymxpc2hLZXkgPSBjb21TZXQuZmluZChpID0+IGkua2V5ID09IFwiUHVibnViUHVibGlzaEtleVwiKTtcbiAgICAgIHZhciBzdWJzY3JpYmVLZXkgPSBjb21TZXQuZmluZChpID0+IGkua2V5ID09IFwiUHVibnViU3Vic2NyaWJlS2V5XCIpXG4gICAgICBpZiAoKHB1Ymxpc2hLZXkgJiYgcHVibGlzaEtleS52YWx1ZSkgJiYgKHN1YnNjcmliZUtleSAmJiBzdWJzY3JpYmVLZXkudmFsdWUpKSB7XG4gICAgICAgIHB1Ym51Yi5pbml0KHtcbiAgICAgICAgICBwdWJsaXNoS2V5OiBwdWJsaXNoS2V5LnZhbHVlLFxuICAgICAgICAgIHN1YnNjcmliZUtleTogc3Vic2NyaWJlS2V5LnZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHVibnViLmluaXQoe1xuICAgICAgICAgIHB1Ymxpc2hLZXk6IGVudmlyb25tZW50LnB1Ymxpc2hLZXksXG4gICAgICAgICAgc3Vic2NyaWJlS2V5OiBlbnZpcm9ubWVudC5zdWJzY3JpYmVLZXlcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG5cblxuICAgIC8vIENsb3NlIHNpZGVuYXYgYWZ0ZXIgcm91dGUgY2hhbmdlIGluIG1vYmlsZVxuICAgIHRoaXMucm91dGVyRXZlbnRTdWIgPSByb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJvdXRlQ2hhbmdlOiBOYXZpZ2F0aW9uRW5kKSA9PiB7XG4gICAgICAgIHRoaXMubGF5b3V0LmFkanVzdExheW91dCh7IHJvdXRlOiByb3V0ZUNoYW5nZS51cmwgfSk7XG4gICAgICB9KTtcblxuICAgIC8vIFRyYW5zbGF0b3IgaW5pdFxuICAgIGxldCBjdXJyZW50Q3VsdHVyZSA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50Q3VsdHVyZSk7XG5cbiAgICBpZiAoY3VycmVudEN1bHR1cmUgPT09ICdudWxsJyB8fCBjdXJyZW50Q3VsdHVyZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGN1cnJlbnRDdWx0dXJlID0gJ2VuJztcbiAgICB9XG4gICAgdHJhbnNsYXRlLnVzZShjdXJyZW50Q3VsdHVyZSk7XG5cblxuICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgIGNhc2UgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQ6IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMudG90YWxMb2FkaW5nVGltZSA9IDA7XG4gICAgICAgICAgdGhpcy5zdGFydFRpbWVyKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlIGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZDoge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25DYW5jZWw6XG4gICAgICAgIGNhc2UgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3I6IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJvdXRlci5ldmVudHMuc3Vic2NyaWJlKHZhbCA9PiB7XG4gICAgICBpZiAobG9jYXRpb24ucGF0aCgpICE9IFwiXCIpIHtcbiAgICAgICAgaWYgKGxvY2F0aW9uLnBhdGgoKS5pbmNsdWRlcygnL2Rhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC8nKSkge1xuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkUGFnZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5iZ2NvbG9yID0gJ25vbmUnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkUGFnZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuYmdjb2xvciA9ICdiZWlnZSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIGlmICh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwpKSB7XG4gICAgLy8gICBsZXQgZGF0YSA9IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCkpO1xuICAgIC8vICAgaWYgKGRhdGEgJiYgZGF0YSAhPSAnbnVsbCcgJiYgZGF0YSAhPSAndW5kZWZpbmVkJylcbiAgICAvLyAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXNlckRldGFpbHNGZXRjaGVkQWZ0ZXJMb2dpbihkYXRhKSk7XG4gICAgLy8gfVxuXG4gICAgaWYgKChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCkgIT0gbnVsbCAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCkgIT0gdW5kZWZpbmVkKVxuICAgICAgJiYgIWxvY2FsU3RvcmFnZS5oYXNPd25Qcm9wZXJ0eShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSb2xlRmVhdHVyZXMpKSB7XG4gICAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwpKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVzZXJEZXRhaWxzRmV0Y2hlZEFmdGVyTG9naW4oZGF0YSkpO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aW9uVXBkYXRlcyRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxuICAgICAgICBvZlR5cGUoQXV0aGVudGljYXRpb25BY3Rpb25UeXBlcy5DbGVhckRlbW9EYXRhQ29tcGxldGVkKSxcbiAgICAgICAgdGFwKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmNvbXBhbnlJZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRTb2Z0TGFiZWxzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ2V0U29mdExhYmVsQ29uZmlndXJhdGlvbnMoKTtcbiAgICB0aGlzLmxheW91dENvbmYgPSB0aGlzLmxheW91dC5sYXlvdXRDb25mO1xuICAgIC8vIHRoaXMubGF5b3V0LmFkanVzdExheW91dCgpO1xuXG4gICAgLy8gRk9SIE1PRFVMRSBMT0FERVIgRkxBR1xuICAgIHRoaXMubW9kdWxlTG9hZGVyU3ViID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50IGluc3RhbmNlb2YgUm91dGVDb25maWdMb2FkU3RhcnQgfHxcbiAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBSZXNvbHZlU3RhcnRcbiAgICAgICkge1xuICAgICAgICB0aGlzLmlzTW9kdWxlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgUm91dGVDb25maWdMb2FkRW5kIHx8IGV2ZW50IGluc3RhbmNlb2YgUmVzb2x2ZUVuZCkge1xuICAgICAgICB0aGlzLmlzTW9kdWxlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgWyckZXZlbnQnXSlcblxuICBvblJlc2l6ZShldmVudCkge1xuICAgIHRoaXMubGF5b3V0LmFkanVzdExheW91dChldmVudCk7XG4gIH1cblxuICBPcGVuZWQoZXZlbnQpIHtcbiAgICB0aGlzLmRpc3BsYXkgPSBldmVudDtcbiAgfVxuXG4gIGdldFNvZnRMYWJlbENvbmZpZ3VyYXRpb25zKCkge1xuICAgIHRoaXMuc29mdExhYmVscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1NvZnRMYWJlbHMnKSk7XG4gIH1cblxuICBnZXRTb2Z0TGFiZWxzKCkge1xuICAgIGxldCBtb2RlbCA9IG5ldyBTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWwoKTtcbiAgICBtb2RlbC5zZWFyY2hUZXh0ID0gbnVsbDtcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0U29mdExhYmVscyhtb2RlbCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICBsZXQgZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1NvZnRMYWJlbHMnLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvLyB0aGlzLmxheW91dENvbmZTdWIgPSB0aGlzLmxheW91dC5sYXlvdXRDb25mJC5zdWJzY3JpYmUoY2hhbmdlID0+IHtcbiAgICAvLyAgIC8vIHRoaXMuaW5pdEJvZHlQUyhjaGFuZ2UpXG4gICAgLy8gfSlcbiAgfVxuXG4gIC8vIGluaXRCb2R5UFMobGF5b3V0Q29uZjphbnkgPSB7fSkge1xuICAvLyAgIGlmKGxheW91dENvbmYubmF2aWdhdGlvblBvcyA9PT0gJ3NpZGUnICYmIGxheW91dENvbmYudG9wYmFyRml4ZWQpIHtcbiAgLy8gICAgIGlmICh0aGlzLmJvZHlQUykgdGhpcy5ib2R5UFMuZGVzdHJveSgpO1xuICAvLyAgICAgaWYgKHRoaXMuaGVhZGVyRml4ZWRCb2R5UFMpIHRoaXMuaGVhZGVyRml4ZWRCb2R5UFMuZGVzdHJveSgpO1xuICAvLyAgICAgdGhpcy5oZWFkZXJGaXhlZEJvZHlQUyA9IG5ldyBQZXJmZWN0U2Nyb2xsYmFyKCcucmlnaHRzaWRlLWNvbnRlbnQtaG9sZCcsIHtcbiAgLy8gICAgICAgc3VwcHJlc3NTY3JvbGxYOiB0cnVlXG4gIC8vICAgICB9KTtcbiAgLy8gICAgIHRoaXMuc2Nyb2xsVG9Ub3AoJy5yaWdodHNpZGUtY29udGVudC1ob2xkJyk7XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIGlmICh0aGlzLmJvZHlQUykgdGhpcy5ib2R5UFMuZGVzdHJveSgpO1xuICAvLyAgICAgaWYgKHRoaXMuaGVhZGVyRml4ZWRCb2R5UFMpIHRoaXMuaGVhZGVyRml4ZWRCb2R5UFMuZGVzdHJveSgpO1xuICAvLyAgICAgdGhpcy5ib2R5UFMgPSBuZXcgUGVyZmVjdFNjcm9sbGJhcignLm1haW4tY29udGVudC13cmFwJywge1xuICAvLyAgICAgICBzdXBwcmVzc1Njcm9sbFg6IHRydWVcbiAgLy8gICAgIH0pO1xuICAvLyAgICAgdGhpcy5zY3JvbGxUb1RvcCgnLm1haW4tY29udGVudC13cmFwJyk7XG4gIC8vICAgfVxuICAvLyB9XG4gIHNjcm9sbFRvVG9wKHNlbGVjdG9yOiBzdHJpbmcpIHtcbiAgICBpZiAoZG9jdW1lbnQpIHtcbiAgICAgIGxldCBlbGVtZW50ID0gPEhUTUxFbGVtZW50PmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgICAgZWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgIH1cbiAgfVxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5tb2R1bGVMb2FkZXJTdWIpIHtcbiAgICAgIHRoaXMubW9kdWxlTG9hZGVyU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmxheW91dENvbmZTdWIpIHtcbiAgICAgIHRoaXMubGF5b3V0Q29uZlN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5yb3V0ZXJFdmVudFN1Yikge1xuICAgICAgdGhpcy5yb3V0ZXJFdmVudFN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdWIpIHtcbiAgICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG4gIGNsb3NlU2lkZWJhcigpIHtcbiAgICB0aGlzLmxheW91dC5wdWJsaXNoTGF5b3V0Q2hhbmdlKHtcbiAgICAgIHNpZGViYXJTdHlsZTogXCJjbG9zZWRcIlxuICAgIH0pO1xuICB9XG5cbiAgc3RhcnRUaW1lcigpIHtcbiAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy50b3RhbExvYWRpbmdUaW1lKys7XG4gICAgfSwgMTAwMClcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFwcC1hZG1pbi13cmFwXCIgW2Rpcl09J2xheW91dENvbmYuZGlyJz5cbiAgPCEtLSBIZWFkZXIgZm9yIHRvcCBuYXZpZ2F0aW9uIGxheW91dCAtLT5cbiAgPCEtLSBPTkxZIFJFUVVJUkVEIEZPUiAqKlRPUCoqIE5BVklHQVRJT04gTEFZT1VUIC0tPlxuICA8YXBwLWhlYWRlci10b3AgKm5nSWY9XCJsYXlvdXRDb25mLm5hdmlnYXRpb25Qb3MgPT09ICd0b3AnXCIgW25vdGlmaWNQYW5lbF09XCJzaWRlbmF2XCI+XG4gIDwvYXBwLWhlYWRlci10b3A+XG4gIDxuZ3gtdWktbG9hZGVyIGZnc1NpemU9XCIxODBcIiBbZmdzVHlwZV09XCJzcGlubmVyVHlwZVwiIGNvbG9yPVwicHJpbWFyeVwiPjwvbmd4LXVpLWxvYWRlcj5cbiAgPCEtLSBNYWluIENvbnRhaW5lciAtLT5cbiAgPG1hdC1zaWRlbmF2LWNvbnRhaW5lciBbZGlyXT0nbGF5b3V0Q29uZi5kaXInIGNsYXNzPVwiYXBwLWFkbWluLWNvbnRhaW5lciBhcHAtc2lkZS1uYXYtY29udGFpbmVyIG1hdC1kcmF3ZXItdHJhbnNpdGlvblwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICduYXZpZ2F0aW9uLXRvcCc6IGxheW91dENvbmYubmF2aWdhdGlvblBvcyA9PT0gJ3RvcCcsXG4gICAgJ3NpZGViYXItZnVsbCc6IGxheW91dENvbmYuc2lkZWJhclN0eWxlID09PSAnZnVsbCcsXG4gICAgJ3NpZGViYXItY29tcGFjdCc6IGxheW91dENvbmYuc2lkZWJhclN0eWxlID09PSAnY29tcGFjdCcgJiYgbGF5b3V0Q29uZi5uYXZpZ2F0aW9uUG9zID09PSAnc2lkZScsXG4gICAgJ3NpZGViYXItY29tcGFjdC1iaWcnOiBsYXlvdXRDb25mLnNpZGViYXJTdHlsZSA9PT0gJ2NvbXBhY3QtYmlnJyAmJiBsYXlvdXRDb25mLm5hdmlnYXRpb25Qb3MgPT09ICdzaWRlJyxcbiAgICAnbGF5b3V0LWludHJhbnNpdGlvbic6IGxheW91dENvbmYubGF5b3V0SW5UcmFuc2l0aW9uLFxuICAgICdzaWRlYmFyLW9wZW5lZCc6IGxheW91dENvbmYuc2lkZWJhclN0eWxlICE9PSAnY2xvc2VkJyAmJiBsYXlvdXRDb25mLm5hdmlnYXRpb25Qb3MgPT09ICdzaWRlJyxcbiAgICAnc2lkZWJhci1jbG9zZWQnOiBsYXlvdXRDb25mLnNpZGViYXJTdHlsZSA9PT0gJ2Nsb3NlZCcsXG4gICAgJ2ZpeGVkLXRvcGJhcic6IGxheW91dENvbmYudG9wYmFyRml4ZWQgJiYgbGF5b3V0Q29uZi5uYXZpZ2F0aW9uUG9zID09PSAnc2lkZSdcbiAgfVwiPlxuICAgIDwhLS0gU0lERUJBUiAtLT5cbiAgICA8IS0tIE9OTFkgUkVRVUlSRUQgRk9SICoqU0lERSoqIE5BVklHQVRJT04gTEFZT1VUIC0tPlxuICAgIDwhLS0gPGFwcC1zaWRlYmFyLXNpZGUgKm5nSWY9XCJsYXlvdXRDb25mLm5hdmlnYXRpb25Qb3MgPT09ICdzaWRlJ1wiPjwvYXBwLXNpZGViYXItc2lkZT4gLS0+XG5cbiAgICA8IS0tIFRvcCBuYXZpZ2F0aW9uIGxheW91dCAobmF2aWdhdGlvbiBmb3IgbW9iaWxlIHNjcmVlbikgLS0+XG4gICAgPCEtLSBPTkxZIFJFUVVJUkVEIEZPUiAqKlRPUCoqIE5BVklHQVRJT04gTU9CSUxFIExBWU9VVCAtLT5cbiAgICA8YXBwLXNpZGViYXItdG9wICpuZ0lmPVwibGF5b3V0Q29uZi5uYXZpZ2F0aW9uUG9zID09PSAndG9wJyAmJiBsYXlvdXRDb25mLmlzTW9iaWxlXCI+PC9hcHAtc2lkZWJhci10b3A+XG5cbiAgICA8IS0tIEFwcCBjb250ZW50IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnQtd3JhcFwiIFtwZXJmZWN0U2Nyb2xsYmFyXT1cInNjcm9sbENvbmZpZ1wiIFtkaXNhYmxlZF09XCJsYXlvdXRDb25mLnRvcGJhckZpeGVkXCI+XG4gICAgICA8IS0tIEhlYWRlciBmb3Igc2lkZSBuYXZpZ2F0aW9uIGxheW91dCAtLT5cbiAgICAgIDwhLS0gT05MWSBSRVFVSVJFRCBGT1IgKipTSURFKiogTkFWSUdBVElPTiBMQVlPVVQgLS0+XG4gICAgICA8YXBwLWhlYWRlci1zaWRlIGNsYXNzPVwie3tsYXlvdXRDb25mLmlzTW9iaWxlID8gJ2N1c3RvbS1hcHAtaGVhZGVyLW1vYmlsZScgOiAnY3VzdG9tLWFwcC1oZWFkZXInfX1cIiAob3BlbmVkKT1cIk9wZW5lZCgkZXZlbnQpXCIgW25vdGlmaWNQYW5lbF09XCJzaWRlbmF2XCI+XG4gICAgICA8L2FwcC1oZWFkZXItc2lkZT5cblxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXItMVwiICpuZ0lmPVwiIWRhc2hib2FyZFBhZ2VcIj5cbiAgICAgICAgPGdjLXVzZXJzdG9yeS1zdW1tYXJ5ICpuZ0lmPVwidXNlclN0b3J5XCIgc3R5bGU9XCJ3aWR0aDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTtiYWNrZ3JvdW5kLWNvbG9yOiBiZWlnZTtcIlxuICAgICAgICAgIFt1c2VyU3RvcnldPVwidXNlclN0b3J5XCIgW2lzU3ViVGFza3NQYWdlXT1mYWxzZSBbaXNMb2FkaW5nXT1cIihhbnlPcGVyYXRpb25JblByb2dyZXNzRm9yQXV0b0xvZ2dpbmckfGFzeW5jKVwiXG4gICAgICAgICAgW2lzVXNlclN0b3JpZXNQYWdlXT1mYWxzZSAodXBkYXRlQXV0b0xvZyk9XCJMb2dBY3Rpb24oJGV2ZW50KVwiPlxuICAgICAgICA8L2djLXVzZXJzdG9yeS1zdW1tYXJ5PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXVzZXJTdG9yeVwiPlxuICAgICAgICAgIFlvdSBhcmUgbm90IHN0YXJ0ZWQgYW55IHVzZXJzdG9yeSB5ZXQhIFBsZWFzZSBzdGFydCB3b3JrISFcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtbC0wNVwiPlxuICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwiY2FyZXQtc2l6ZVwiIHN0eWxlPVwiY29sb3I6IzNkYThiNVwiIGljb249XCJjYXJldC1kb3duXCIgW3NhdFBvcG92ZXJBbmNob3JGb3JdPVwicmVjZW50VXNlclN0b3J5XCJcbiAgICAgICAgICAgICAoY2xpY2spPVwicmVjZW50VXNlclN0b3J5LnRvZ2dsZSgpXCI+PC9mYS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNhdC1wb3BvdmVyICNyZWNlbnRVc2VyU3RvcnkgaGFzQmFja2Ryb3AgIGJhY2tkcm9wQ2xhc3M9XCJ1cy1wb3BvdmVyXCI+IFxuICAgICAgICAgICAgPG1hdC1jYXJkPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHVzZXJTdG9yeSBvZiAodXNlclN0b3JpZXMkIHwgYXN5bmMgfCBzbGljZTowOjUpXCIgc3R5bGU9XCJtaW4td2lkdGg6IDEwMDBweDtcIiBjbGFzcz1cInZpZXctdXNcIj5cbiAgICAgICAgICAgIDxnYy11c2Vyc3Rvcnktc3VtbWFyeSBzdHlsZT1cIndpZHRoOiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlO2JhY2tncm91bmQtY29sb3I6IGJlaWdlO1wiXG4gICAgICAgICAgICAgIFt1c2VyU3RvcnldPVwidXNlclN0b3J5XCIgW2lzU3ViVGFza3NQYWdlXT1mYWxzZSBbaXNMb2FkaW5nXT1cIihhbnlPcGVyYXRpb25JblByb2dyZXNzRm9yQXV0b0xvZ2dpbmckfGFzeW5jKVwiXG4gICAgICAgICAgICAgIFtpc1VzZXJTdG9yaWVzUGFnZV09dHJ1ZSAodXBkYXRlQXV0b0xvZyk9XCJMb2dBY3Rpb24oJGV2ZW50KVwiIFtpc1Nob3ddPVwiZmFsc2VcIiAoY2xvc2UpPVwicmVjZW50VXNlclN0b3J5LmNsb3NlKClcIj5cbiAgICAgICAgICAgIDwvZ2MtdXNlcnN0b3J5LXN1bW1hcnk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICAgIDwvc2F0LXBvcG92ZXI+XG4gICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodHNpZGUtY29udGVudC1ob2xkXCIgW3BlcmZlY3RTY3JvbGxiYXJdPVwic2Nyb2xsQ29uZmlnXCIgW2Rpc2FibGVkXT1cIiFsYXlvdXRDb25mLnRvcGJhckZpeGVkXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieydibHVyLW9uLW9wZW5lZCc6IGRpc3BsYXl9XCIgW25nQ2xhc3NdPVwieydzaG93LWluLWRhc2hib2FyZCc6ZGFzaGJvYXJkUGFnZX1cIj5cbiAgICAgICAgPCEtLSA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBjbGFzcz1cIm1yLTFcIiAqbmdJZj1cIiFkYXNoYm9hcmRQYWdlXCIgW25nU3R5bGVdPVwieydtYXJnaW4tbGVmdCc6ICc5MHB4J31cIiBcbiAgICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IHVzZXJTdG9yeSA/ICdiZWlnZScgOiAnbm9uZScgfVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OjkwcHggIWltcG9ydGFudFwiPlxuICAgICAgICA8Z2MtdXNlcnN0b3J5LXN1bW1hcnkgZnhGbGV4PVwiOTBcIiAqbmdJZj1cInVzZXJTdG9yeVwiIHN0eWxlPVwid2lkdGg6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7YmFja2dyb3VuZC1jb2xvcjogYmVpZ2U7XCJcbiAgICAgICAgICBbdXNlclN0b3J5XT1cInVzZXJTdG9yeVwiIFtpc1N1YlRhc2tzUGFnZV09ZmFsc2UgW2lzTG9hZGluZ109XCIoYW55T3BlcmF0aW9uSW5Qcm9ncmVzc0ZvckF1dG9Mb2dnaW5nJHxhc3luYylcIlxuICAgICAgICAgIFtpc1VzZXJTdG9yaWVzUGFnZV09ZmFsc2UgKHVwZGF0ZUF1dG9Mb2cpPVwiTG9nQWN0aW9uKCRldmVudClcIj5cbiAgICAgICAgPC9nYy11c2Vyc3Rvcnktc3VtbWFyeT5cbiAgICAgICAgPG1hdC1jYXJkICpuZ0lmPVwiIXVzZXJTdG9yeVwiIHN0eWxlPVwicGFkZGluZzogMTBweDtsZWZ0OiAtNzVweDtcIj5cbiAgICAgICAgPHNwYW4+XG4gICAgICAgICAgWW91IGFyZSBub3Qgc3RhcnRlZCBhbnkge3sgdXNlcnN0b3J5IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX0geWV0ISBQbGVhc2Ugc3RhcnQgd29yayEhXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC0wNVwiPlxuICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwiY2FyZXQtc2l6ZVwiIHN0eWxlPVwiY29sb3I6IzNkYThiNVwiIGljb249XCJjYXJldC1kb3duXCIgW3NhdFBvcG92ZXJBbmNob3JGb3JdPVwicmVjZW50VXNlclN0b3J5XCJcbiAgICAgICAgICAgICAoY2xpY2spPVwicmVjZW50VXNlclN0b3J5LnRvZ2dsZSgpXCI+PC9mYS1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBjb2xvcj1cInByaW1hcnlcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwiYW55T3BlcmF0aW9uSW5Qcm9ncmVzc0ZvckF1dG9Mb2dnaW5nJHxhc3luY1wiPlxuICAgICAgICA8L21hdC1wcm9ncmVzcy1iYXI+IC0tPlxuICAgICAgICA8IS0tIDxkaXYgZnhGbGV4IGNsYXNzPVwibWwtMDVcIiAqbmdJZj1cInVzZXJTdG9yeVwiPlxuICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwiY2FyZXQtc2l6ZVwiIHN0eWxlPVwiY29sb3I6IzNkYThiNVwiIGljb249XCJjYXJldC1kb3duXCIgW3NhdFBvcG92ZXJBbmNob3JGb3JdPVwicmVjZW50VXNlclN0b3J5XCJcbiAgICAgICAgICAgICAoY2xpY2spPVwicmVjZW50VXNlclN0b3J5LnRvZ2dsZSgpXCI+PC9mYS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNhdC1wb3BvdmVyICNyZWNlbnRVc2VyU3RvcnkgaGFzQmFja2Ryb3AgIGJhY2tkcm9wQ2xhc3M9XCJ1cy1wb3BvdmVyXCI+IFxuICAgICAgICAgICAgPG1hdC1jYXJkPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHVzZXJTdG9yeSBvZiAodXNlclN0b3JpZXMkIHwgYXN5bmMgfCBzbGljZTowOjUpXCIgc3R5bGU9XCJtaW4td2lkdGg6IDEwMDBweDtcIiBjbGFzcz1cInZpZXctdXNcIj5cbiAgICAgICAgICAgIDxnYy11c2Vyc3Rvcnktc3VtbWFyeSBzdHlsZT1cIndpZHRoOiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlO2JhY2tncm91bmQtY29sb3I6IGJlaWdlO1wiXG4gICAgICAgICAgICAgIFt1c2VyU3RvcnldPVwidXNlclN0b3J5XCIgW2lzU3ViVGFza3NQYWdlXT1mYWxzZSBbaXNMb2FkaW5nXT1cIihhbnlPcGVyYXRpb25JblByb2dyZXNzRm9yQXV0b0xvZ2dpbmckfGFzeW5jKVwiXG4gICAgICAgICAgICAgIFtpc1VzZXJTdG9yaWVzUGFnZV09dHJ1ZSAodXBkYXRlQXV0b0xvZyk9XCJMb2dBY3Rpb24oJGV2ZW50KVwiIFtpc1Nob3ddPVwiZmFsc2VcIiAoY2xvc2UpPVwicmVjZW50VXNlclN0b3J5LmNsb3NlKClcIj5cbiAgICAgICAgICAgIDwvZ2MtdXNlcnN0b3J5LXN1bW1hcnk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICAgIDwvc2F0LXBvcG92ZXI+XG4gICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwhLS0gVmlldyBMb2FkZXIgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2aWV3LWxvYWRlclwiICpuZ0lmPVwiaXNNb2R1bGVMb2FkaW5nXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb3VibGUtYm91bmNlMSBtYXQtYmctYWNjZW50XCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG91YmxlLWJvdW5jZTIgbWF0LWJnLXByaW1hcnlcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gVmlldyBvdXRsZXQgLS0+XG4gICAgICAgIDxkaXYgaWQ9XCJidHJhay1wcmVsb2FkZXJcIiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInByZWxvYWRpbmctdGV4dFwiPlxuICAgICAgICAgICAge3sgJ0xPQURJTkdQTEVBU0VXQUlUJyB8IHRyYW5zbGF0ZSB9fSAoe3t0b3RhbExvYWRpbmdUaW1lfX0ge3sgJ1NFQ09ORFMnIHwgdHJhbnNsYXRlIH19KVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IGlkPVwiYnRyYWstbG9hZGVyXCIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICAgICAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBWaWV3IG92ZXJsYXkgZm9yIG1vYmlsZSBuYXZpZ2F0aW9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlYmFyLWJhY2tkcm9wXCIgW25nQ2xhc3NdPVwieyd2aXNpYmxlJzogbGF5b3V0Q29uZi5zaWRlYmFyU3R5bGUgIT09ICdjbG9zZWQnICYmIGxheW91dENvbmYuaXNNb2JpbGV9XCJcbiAgICAgIChjbGljayk9XCJjbG9zZVNpZGViYXIoKVwiPjwvZGl2PlxuXG4gICAgPCEtLSBOb3RpZmljYWF0aW9uIGJhciAtLT5cbiAgICA8bWF0LXNpZGVuYXYgI3NpZGVuYXYgbW9kZT1cInNpZGVcIiBvcGVuZWQgY2xhc3M9XCJleGFtcGxlLXNpZGVuYXZcIiBbZml4ZWRJblZpZXdwb3J0XT1cInRydWVcIiBbZml4ZWRUb3BHYXBdPVwibGF5b3V0Q29uZi5pc01vYmlsZSA/IDQ1IDogODhcIlxuICAgICAgW2ZpeGVkQm90dG9tR2FwXT1cIjBcIiBjbGFzcz1cInNpZGUtbmF2LWNvbG9yIGN1c3RvbS1hcHAtbmF2XCIgaWQ9XCJzdHlsZS0xXCI+XG4gICAgICA8YXBwLXNpZGViYXI+PC9hcHAtc2lkZWJhcj5cbiAgICA8L21hdC1zaWRlbmF2PlxuICA8L21hdC1zaWRlbmF2LWNvbnRhaW5lcj5cbjwvZGl2PiJdfQ==
|