{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/BaseNoDataDefault.vue?e5c8","webpack:///./src/components/BaseNoDataDefault.vue","webpack:///./src/components/BaseNoDataDefault.vue?8cb5","webpack:///./src/components/BaseNoDataDefault.vue?2d10","webpack:///./src/colors.ts","webpack:///./src/components/BaseChart.vue?a67f","webpack:///./src/utils/d3/time.ts","webpack:///./src/components/BaseChart.vue","webpack:///./src/components/BaseChart.vue?854a","webpack:///./src/components/BaseChart.vue?5494","webpack:///./src/components/AlertItem.vue?7c21","webpack:///./src/components/DonutChart.vue?fd2a","webpack:///./src/components/PrefixItem.vue?d9e3","webpack:///./src/components/analytics/SettingsCredentials.vue?783d","webpack:///./src/components/PromoBanner.vue?2a1c","webpack:///./src/components/BaseActions.vue?5c10","webpack:///./src/components/BaseActions.vue","webpack:///./src/components/BaseActions.vue?beee","webpack:///./src/components/BaseActions.vue?307c","webpack:///./src/components/AlertForm.vue?b1b0","webpack:///./src/assets/logo-large.png","webpack:///./src/assets sync ^\\.\\/.*$","webpack:///./src/components/PrefixesPopular.vue?114c","webpack:///./src/components/AppLogo.vue?f8fc","webpack:///./src/types/stats.ts","webpack:///./src/components/OverviewIssues.vue?3971","webpack:///./src/components/BaseTooltip.vue?807a","webpack:///./src/components/CacheSidebar.vue?da24","webpack:///./src/components/AlertInfo.vue?c064","webpack:///./src/views/cache/introspection/PrefixesView.vue?a5ad","webpack:///./src/components/KeyStats.vue?6908","webpack:///./src/components/BaseNoDataDefault.vue?2e31","webpack:///./src/views/cache/introspection/index.vue?0ed7","webpack:///./src/assets/logo-xlarge.png","webpack:///./src/views/analytics/LoginView.vue?7393","webpack:///./src/utils/conversion.ts","webpack:///./src/components/AlertsAdd.vue?a786","webpack:///./src/components/AppNotificationBar.vue?7b95","webpack:///./src/assets/banner-large-cachesight.png","webpack:///./src/components/BaseStats.vue?9d0d","webpack:///./src/components/BaseStats.vue","webpack:///./src/components/BaseStats.vue?3ce7","webpack:///./src/components/BaseStats.vue?9c02","webpack:///./src/components/PopularKeysTabs.vue?3beb","webpack:///./src/assets/preview-keys.png","webpack:///./src/components/FormInputGroup.vue?0c37","webpack:///./src/components/BaseTable.vue?92ed","webpack:///./src/components/BaseTable.vue","webpack:///./src/components/BaseTable.vue?b51c","webpack:///./src/components/BaseTable.vue?6a0a","webpack:///./src/views/StyleGuideView.vue?681e","webpack:///./src/components/analytics/AppNav.vue?72fa","webpack:///./src/assets/preview-logs.png","webpack:///./src/components/FormInput.vue?15e4","webpack:///./src/components/FormSelect.vue?419e","webpack:///./src/components/layouts/LayoutFullWidth.vue?54f8","webpack:///./src/components/PrefixStatsTabs.vue?8dfb","webpack:///./src/components/analytics/AppHeader.vue?4174","webpack:///./src/types/chart.ts","webpack:///./src/components/BaseBadge.vue?f12e","webpack:///./src/assets/preview-consulting.png","webpack:///./src/views/cache/ConsultingView.vue?78a2","webpack:///./src/components/BaseLoading.vue?216f","webpack:///./src/components/BaseLoading.vue","webpack:///./src/components/BaseLoading.vue?514f","webpack:///./src/components/BaseLoading.vue?fb8e","webpack:///./src/views/cache/OverviewView.vue?7ebb","webpack:///./src/components/FormCheckbox.vue?61b2","webpack:///./src/assets/preview-prefixes.png","webpack:///./src/components/PrefixItemStats.vue?c0fe","webpack:///./src/components/BaseNotice.vue?1034","webpack:///./src/components/BaseNotice.vue","webpack:///./src/components/BaseNotice.vue?aed8","webpack:///./src/components/BaseNotice.vue?4842","webpack:///./src/components/layouts/LayoutSidebar.vue?2ddc","webpack:///./src/components/KeyName.vue?e82d","webpack:///./src/components/AlertsDeliveryConfigForm.vue?d1ef","webpack:///./src/views/cache/introspection/prefix/index.vue?cd1e","webpack:///./src/components/AppNotificationContainer.vue?4744","webpack:///./src/components/BaseTooltip.vue?0d40","webpack:///./src/components/BaseTooltip.vue","webpack:///./src/components/BaseTooltip.vue?7b29","webpack:///./src/components/BaseTooltip.vue?9d3c","webpack:///./src/components/BaseIcon.vue?4230","webpack:///./src/components/BaseIcon.vue","webpack:///./src/components/BaseIcon.vue?17e6","webpack:///./src/components/BaseIcon.vue?c755","webpack:///./src/components/TimeRangeControls.vue?8ea8","webpack:///./src/components/BaseTable.vue?127d","webpack:///./src/components/BaseButton.vue?16d0","webpack:///./src/components/BaseButton.vue","webpack:///./src/components/BaseButton.vue?58fa","webpack:///./src/components/BaseButton.vue?ed45","webpack:///./src/components/BaseCard.vue?0207","webpack:///./src/components/PrefixLastStats.vue?5466","webpack:///./src/components/NavPrimary.vue?14b3","webpack:///./src/components/HeadingInline.vue?48d6","webpack:///./src/types/unit.ts","webpack:///./src/views/cache/introspection/prefix/OverviewView.vue?6a40","webpack:///./src/components/BarChart.vue?bac2","webpack:///./src/components/BaseButtonRefresh.vue?cebf","webpack:///./src/components/BaseButtonRefresh.vue","webpack:///./src/components/BaseButtonRefresh.vue?daaf","webpack:///./src/components/BaseButtonRefresh.vue?342f","webpack:///./src/components/SidebarMobileToggle.vue?0d19","webpack:///./src/config/chart.ts","webpack:///./src/utils/chart.ts","webpack:///./src/components/BaseLoading.vue?f1e8","webpack:///./src/analytics/App.vue?709b","webpack:///./src/components/FormInputError.vue?dae3","webpack:///./src/assets/logo.svg","webpack:///./src/components/ProcessedStatsChartDisabled.vue?b63b","webpack:///./src/components/AppBanner.vue?6fd5","webpack:///./src/components/NavSecondary.vue?6f7f","webpack:///./src/views/cache/introspection/RecentRequestsView.vue?dc1c","webpack:///./src/components/OverviewConnections.vue?37bd","webpack:///./src/components/AppFooter.vue?e663","webpack:///./src/components/BaseActions.vue?f41c","webpack:///./src/components/PrefixesAdd.vue?83d7","webpack:///./src/components/BaseIcon.vue?c4ca","webpack:///./src/analytics/App.vue?d857","webpack:///./src/components/analytics/AppHeader.vue?4c8a","webpack:///./src/components/AppBanner.vue?4afb","webpack:///./src/components/AppBanner.vue","webpack:///./src/components/AppBanner.vue?682b","webpack:///./src/components/AppBanner.vue?2640","webpack:///./src/components/AppLogo.vue?5cf6","webpack:///./src/components/AppLogo.vue","webpack:///./src/components/AppLogo.vue?d6e2","webpack:///./src/components/AppLogo.vue?2041","webpack:///./src/components/analytics/AppNav.vue?fbe5","webpack:///./src/components/NavPrimary.vue?c2ab","webpack:///./src/components/NavPrimary.vue","webpack:///./src/components/NavPrimary.vue?eafa","webpack:///./src/components/NavPrimary.vue?a76c","webpack:///./src/config/analytics/urls.ts","webpack:///./src/mixins/analytics/url.ts","webpack:///./src/components/analytics/AppNav.vue","webpack:///./src/components/analytics/AppNav.vue?4701","webpack:///./src/components/analytics/AppNav.vue?e058","webpack:///./src/components/analytics/AppNavSecondary.vue?6fdb","webpack:///./src/components/NavSecondary.vue?bac7","webpack:///./src/components/NavSecondary.vue","webpack:///./src/components/NavSecondary.vue?6040","webpack:///./src/components/NavSecondary.vue?0d2d","webpack:///./src/components/analytics/AppNavSecondary.vue","webpack:///./src/components/analytics/AppNavSecondary.vue?f0b3","webpack:///./src/components/analytics/AppNavSecondary.vue?0707","webpack:///./src/components/analytics/AppNavHeroku.vue?5ec7","webpack:///./src/components/analytics/AppNavHeroku.vue","webpack:///./src/components/analytics/AppNavHeroku.vue?d7c8","webpack:///./src/components/analytics/AppNavHeroku.vue?7346","webpack:///./src/components/NavWrap.vue?29e3","webpack:///./src/components/NavWrap.vue","webpack:///./src/components/NavWrap.vue?07d1","webpack:///./src/components/NavWrap.vue?3b31","webpack:///./src/components/analytics/AppHeader.vue","webpack:///./src/components/analytics/AppHeader.vue?c443","webpack:///./src/components/analytics/AppHeader.vue?200c","webpack:///./src/components/AppFooter.vue?c5eb","webpack:///./src/components/AppSocial.vue?4ab2","webpack:///./src/vendor/twitter-widgets.js","webpack:///src/components/AppSocial.vue","webpack:///./src/components/AppSocial.vue?6f89","webpack:///./src/components/AppSocial.vue","webpack:///./src/components/AppFooter.vue","webpack:///./src/components/AppFooter.vue?10aa","webpack:///./src/components/AppFooter.vue?e295","webpack:///./src/components/AppNotificationContainer.vue?978c","webpack:///./src/components/AppNotificationBar.vue?dd5d","webpack:///./src/components/AppNotificationBar.vue","webpack:///./src/components/AppNotificationBar.vue?b2c6","webpack:///./src/components/AppNotificationBar.vue?f4c7","webpack:///./src/components/AppNotificationContainer.vue","webpack:///./src/components/AppNotificationContainer.vue?d3a2","webpack:///./src/components/AppNotificationContainer.vue?8667","webpack:///./src/analytics/App.vue","webpack:///./src/analytics/App.vue?83b9","webpack:///./src/analytics/App.vue?12f3","webpack:///./src/utils/jwt.ts","webpack:///./src/store/mutation-types.ts","webpack:///./src/types/layout.ts","webpack:///./src/config/alert.ts","webpack:///./src/utils/series.ts","webpack:///./src/types/request-method.ts","webpack:///./src/store/state.ts","webpack:///./src/config/notification.ts","webpack:///./src/utils/notification.ts","webpack:///./src/config/urls.ts","webpack:///./src/utils/admin.ts","webpack:///./src/services/CacheService.ts","webpack:///./src/types/common.ts","webpack:///./src/store/modules/stats.ts","webpack:///./src/store/modules/settings.ts","webpack:///./src/store/modules/processed-stats.ts","webpack:///./src/store/modules/notifications.ts","webpack:///./src/store/modules/alerts.ts","webpack:///./src/utils/debug-mode.ts","webpack:///./src/store/modules/debug-mode.ts","webpack:///./src/store/modules/cachesight/caches.ts","webpack:///./src/store/index.ts","webpack:///./src/views/analytics/LoginView.vue?77bb","webpack:///./src/components/layouts/LayoutFullWidth.vue?cc1c","webpack:///./src/components/layouts/LayoutFullWidth.vue","webpack:///./src/components/layouts/LayoutFullWidth.vue?4369","webpack:///./src/components/layouts/LayoutFullWidth.vue?9aad","webpack:///./src/components/FormInput.vue?6343","webpack:///./src/components/FormInput.vue","webpack:///./src/components/FormInput.vue?6cc1","webpack:///./src/components/FormInput.vue?3862","webpack:///./src/components/FormInputError.vue?c593","webpack:///./src/components/FormInputError.vue","webpack:///./src/components/FormInputError.vue?9b8b","webpack:///./src/components/FormInputError.vue?929e","webpack:///./src/mixins/form-validation.ts","webpack:///./src/views/analytics/LoginView.vue","webpack:///./src/views/analytics/LoginView.vue?f6d6","webpack:///./src/views/analytics/LoginView.vue?7ce0","webpack:///./src/views/cache/index.vue?2914","webpack:///./src/components/layouts/LayoutSidebar.vue?233d","webpack:///./src/components/SidebarMobileToggle.vue?c921","webpack:///./src/components/SidebarMobileToggle.vue","webpack:///./src/components/SidebarMobileToggle.vue?103c","webpack:///./src/components/SidebarMobileToggle.vue?5769","webpack:///./src/components/layouts/LayoutSidebar.vue","webpack:///./src/components/layouts/LayoutSidebar.vue?2125","webpack:///./src/components/layouts/LayoutSidebar.vue?1d1e","webpack:///./src/components/CacheSidebar.vue?d56e","webpack:///./src/components/CacheSidebar.vue","webpack:///./src/components/CacheSidebar.vue?6844","webpack:///./src/components/CacheSidebar.vue?c3b9","webpack:///./src/components/PromoBanner.vue?40ea","webpack:///./src/components/PromoBanner.vue","webpack:///./src/components/PromoBanner.vue?d884","webpack:///./src/components/PromoBanner.vue?a6fa","webpack:///./src/views/cache/index.vue","webpack:///./src/views/cache/index.vue?fa61","webpack:///./src/views/cache/index.vue?6b81","webpack:///./src/views/cache/OverviewView.vue?f146","webpack:///./src/components/OverviewStorage.vue?1cde","webpack:///./src/components/OverviewFlushCache.vue?0981","webpack:///./src/components/OverviewFlushCache.vue","webpack:///./src/components/OverviewFlushCache.vue?2f60","webpack:///./src/components/OverviewFlushCache.vue?9381","webpack:///./src/components/DonutChart.vue?a4c6","webpack:///./src/components/DonutChart.vue","webpack:///./src/components/DonutChart.vue?f737","webpack:///./src/components/DonutChart.vue?48dd","webpack:///./src/components/HeadingButtons.vue?e09b","webpack:///./src/components/HeadingButtons.vue","webpack:///./src/components/HeadingButtons.vue?e60c","webpack:///./src/components/HeadingButtons.vue?45f4","webpack:///./src/components/OverviewStorage.vue","webpack:///./src/components/OverviewStorage.vue?7e89","webpack:///./src/components/OverviewStorage.vue?b9f4","webpack:///./src/components/HitRate.vue?d544","webpack:///./src/mixins/hit-rate-status.ts","webpack:///./src/components/HitRate.vue","webpack:///./src/components/HitRate.vue?6348","webpack:///./src/components/HitRate.vue?45b7","webpack:///./src/components/OverviewIssues.vue?0a1c","webpack:///./src/components/analytics/ReEnableCache.vue?7c56","webpack:///./src/components/analytics/ReEnableCache.vue","webpack:///./src/components/analytics/ReEnableCache.vue?99a3","webpack:///./src/components/analytics/ReEnableCache.vue?8f17","webpack:///./src/components/OverviewIssues.vue","webpack:///./src/components/OverviewIssues.vue?472b","webpack:///./src/components/OverviewIssues.vue?6dbe","webpack:///./src/components/OverviewStats.vue?aec5","webpack:///./src/components/BarChart.vue?544e","webpack:///./src/components/BarChartRow.vue?39b2","webpack:///./src/components/BarChartRow.vue","webpack:///./src/components/BarChartRow.vue?f119","webpack:///./src/components/BarChartRow.vue?1ee6","webpack:///./src/components/BarChart.vue","webpack:///./src/components/BarChart.vue?6b34","webpack:///./src/components/BarChart.vue?0163","webpack:///./src/components/OverviewStats.vue","webpack:///./src/components/OverviewStats.vue?832c","webpack:///./src/components/OverviewStats.vue?ab56","webpack:///./src/components/OverviewConnections.vue?c96a","webpack:///./src/components/OverviewConnections.vue","webpack:///./src/components/OverviewConnections.vue?028a","webpack:///./src/components/OverviewConnections.vue?7899","webpack:///./src/components/OverviewChart.vue?e343","webpack:///./src/components/TimeRangeControls.vue?f997","webpack:///./src/components/TimeRangeControls.vue","webpack:///./src/components/TimeRangeControls.vue?2305","webpack:///./src/components/TimeRangeControls.vue?4ad7","webpack:///./src/components/ProcessedStatsChart.vue?abe0","webpack:///./src/components/ProcessedStatsChartDisabled.vue?adb6","webpack:///./src/components/ProcessedStatsChartDisabled.vue","webpack:///./src/components/ProcessedStatsChartDisabled.vue?6470","webpack:///./src/components/ProcessedStatsChartDisabled.vue?34ed","webpack:///./src/components/ProcessedStatsChart.vue","webpack:///./src/components/ProcessedStatsChart.vue?ef14","webpack:///./src/components/ProcessedStatsChart.vue?88e4","webpack:///./src/components/OverviewChart.vue","webpack:///./src/components/OverviewChart.vue?310b","webpack:///./src/components/OverviewChart.vue?ba78","webpack:///./src/mixins/get-processed-stats.ts","webpack:///./src/views/cache/OverviewView.vue","webpack:///./src/views/cache/OverviewView.vue?9aa5","webpack:///./src/views/cache/OverviewView.vue?b709","webpack:///./src/views/cache/MetricsView.vue?0c8b","webpack:///./src/views/cache/MetricsView.vue","webpack:///./src/views/cache/MetricsView.vue?d2c2","webpack:///./src/views/cache/MetricsView.vue?4f51","webpack:///./src/views/cache/MetricView.vue?6a83","webpack:///./src/mixins/get-per-server-processed-stats.ts","webpack:///./src/views/cache/MetricView.vue","webpack:///./src/views/cache/MetricView.vue?216d","webpack:///./src/views/cache/MetricView.vue?471b","webpack:///./src/views/cache/AlertsView.vue?7fb5","webpack:///./src/components/AlertItem.vue?5026","webpack:///./src/components/AlertEnableToggle.vue?b9ba","webpack:///./src/components/AlertEnableToggle.vue","webpack:///./src/components/AlertEnableToggle.vue?d76e","webpack:///./src/components/AlertEnableToggle.vue?48eb","webpack:///./src/components/AlertRemove.vue?1f40","webpack:///./src/components/AlertRemove.vue","webpack:///./src/components/AlertRemove.vue?781f","webpack:///./src/components/AlertRemove.vue?16a6","webpack:///./src/components/AlertForm.vue?79a6","webpack:///./src/components/FormSelect.vue?c64d","webpack:///./src/components/FormSelect.vue","webpack:///./src/components/FormSelect.vue?9200","webpack:///./src/components/FormSelect.vue?fde4","webpack:///./src/components/AlertForm.vue","webpack:///./src/components/AlertForm.vue?3bc5","webpack:///./src/components/AlertForm.vue?c8fc","webpack:///./src/components/AlertInfo.vue?aac6","webpack:///./src/components/AlertInfo.vue","webpack:///./src/components/AlertInfo.vue?1a15","webpack:///./src/components/AlertInfo.vue?6aad","webpack:///./src/components/AlertItem.vue","webpack:///./src/components/AlertItem.vue?b192","webpack:///./src/components/AlertItem.vue?1b29","webpack:///./src/components/AlertsAdd.vue?fafd","webpack:///./src/components/AlertsAdd.vue","webpack:///./src/components/AlertsAdd.vue?9f62","webpack:///./src/components/AlertsAdd.vue?3c99","webpack:///./src/components/AlertsDeliveryConfig.vue?278a","webpack:///./src/components/AlertsDeliveryConfigItem.vue?2ada","webpack:///./src/components/AlertDeliveryConfigRemove.vue?feb0","webpack:///./src/components/AlertDeliveryConfigRemove.vue","webpack:///./src/components/AlertDeliveryConfigRemove.vue?c1dd","webpack:///./src/components/AlertDeliveryConfigRemove.vue?2300","webpack:///./src/components/AlertsDeliveryConfigItem.vue","webpack:///./src/components/AlertsDeliveryConfigItem.vue?5baf","webpack:///./src/components/AlertsDeliveryConfigItem.vue?a3bc","webpack:///./src/components/AlertsDeliveryConfigForm.vue?b0bb","webpack:///./src/components/AlertsDeliveryConfigForm.vue","webpack:///./src/components/AlertsDeliveryConfigForm.vue?e9e8","webpack:///./src/components/AlertsDeliveryConfigForm.vue?d77d","webpack:///./src/components/AlertsDeliveryConfig.vue","webpack:///./src/components/AlertsDeliveryConfig.vue?fb53","webpack:///./src/components/AlertsDeliveryConfig.vue?a31c","webpack:///./src/components/HeadingInline.vue?c561","webpack:///./src/components/HeadingInline.vue","webpack:///./src/components/HeadingInline.vue?1585","webpack:///./src/components/HeadingInline.vue?af33","webpack:///./src/views/cache/AlertsView.vue","webpack:///./src/views/cache/AlertsView.vue?c66b","webpack:///./src/views/cache/AlertsView.vue?ffbc","webpack:///./src/views/analytics/cache/SettingsView.vue?798a","webpack:///./src/components/analytics/SettingsGeneral.vue?7c48","webpack:///./src/components/analytics/SettingsChangeClusters.vue?a663","webpack:///./src/components/analytics/SettingsChangeClusters.vue","webpack:///./src/components/analytics/SettingsChangeClusters.vue?5716","webpack:///./src/components/analytics/SettingsChangeClusters.vue?145b","webpack:///./src/components/analytics/SettingsGeneral.vue","webpack:///./src/components/analytics/SettingsGeneral.vue?8775","webpack:///./src/components/analytics/SettingsGeneral.vue?b2de","webpack:///./src/components/analytics/SettingsCredentials.vue?5238","webpack:///./src/components/analytics/SettingsCredentialsItem.vue?8c5a","webpack:///./src/components/FormCheckbox.vue?20c3","webpack:///./src/components/FormCheckbox.vue","webpack:///./src/components/FormCheckbox.vue?8b51","webpack:///./src/components/FormCheckbox.vue?a882","webpack:///./src/components/analytics/SettingsCredentialsItem.vue","webpack:///./src/components/analytics/SettingsCredentialsItem.vue?73e5","webpack:///./src/components/analytics/SettingsCredentialsItem.vue?f52c","webpack:///./src/components/analytics/SettingsCredentialsAdd.vue?1c3a","webpack:///./src/components/analytics/SettingsCredentialsAdd.vue","webpack:///./src/components/analytics/SettingsCredentialsAdd.vue?5a51","webpack:///./src/components/analytics/SettingsCredentialsAdd.vue?1660","webpack:///./src/components/analytics/SettingsCredentials.vue","webpack:///./src/components/analytics/SettingsCredentials.vue?a61a","webpack:///./src/components/analytics/SettingsCredentials.vue?25e8","webpack:///./src/views/analytics/cache/SettingsView.vue","webpack:///./src/views/analytics/cache/SettingsView.vue?3c3d","webpack:///./src/views/analytics/cache/SettingsView.vue?e580","webpack:///./src/views/cache/ConsultingView.vue?ccec","webpack:///./src/views/cache/ConsultingView.vue","webpack:///./src/views/cache/ConsultingView.vue?582d","webpack:///./src/views/cache/ConsultingView.vue?d8dd","webpack:///./src/views/cache/introspection/index.vue?fb4b","webpack:///./src/views/cache/introspection/index.vue","webpack:///./src/views/cache/introspection/index.vue?d555","webpack:///./src/views/cache/introspection/index.vue?474c","webpack:///./src/views/cache/introspection/PopularKeysView.vue?7280","webpack:///./src/components/PopularKey.vue?be43","webpack:///./src/components/KeyStats.vue?f982","webpack:///./src/components/KeyStatsChart.vue?1da5","webpack:///./src/components/KeyStatsChart.vue","webpack:///./src/components/KeyStatsChart.vue?4099","webpack:///./src/components/KeyStatsChart.vue?1365","webpack:///./src/components/KeyName.vue?5a0a","webpack:///./src/components/KeyName.vue","webpack:///./src/components/KeyName.vue?4e5c","webpack:///./src/components/KeyName.vue?fa84","webpack:///./src/components/KeyStats.vue","webpack:///./src/components/KeyStats.vue?2648","webpack:///./src/components/KeyStats.vue?87cb","webpack:///./src/components/PopularKey.vue","webpack:///./src/components/PopularKey.vue?4c9c","webpack:///./src/components/PopularKey.vue?2e2f","webpack:///./src/mixins/get-popular-items.ts","webpack:///./src/mixins/get-prefix-popular-items.ts","webpack:///./src/views/cache/introspection/PopularKeysView.vue","webpack:///./src/views/cache/introspection/PopularKeysView.vue?790a","webpack:///./src/views/cache/introspection/PopularKeysView.vue?3fc0","webpack:///./src/views/cache/introspection/keys/index.vue?3170","webpack:///./src/components/PopularKeysTabs.vue?eb93","webpack:///./src/components/PopularKeysTabs.vue","webpack:///./src/components/PopularKeysTabs.vue?79fa","webpack:///./src/components/PopularKeysTabs.vue?ca6d","webpack:///./src/views/cache/introspection/keys/index.vue","webpack:///./src/views/cache/introspection/keys/index.vue?8a45","webpack:///./src/views/cache/introspection/keys/index.vue?da9a","webpack:///./src/views/cache/introspection/PrefixesView.vue?0b64","webpack:///./src/components/PrefixItem.vue?3a32","webpack:///./src/components/ButtonCard.vue?c16d","webpack:///./src/components/ButtonCard.vue","webpack:///./src/components/ButtonCard.vue?24bf","webpack:///./src/components/ButtonCard.vue?845b","webpack:///./src/components/PrefixItemStats.vue?5dc2","webpack:///./src/config/preview.ts","webpack:///./src/mixins/get-prefix-stats.ts","webpack:///./src/components/PrefixItemStats.vue","webpack:///./src/components/PrefixItemStats.vue?a750","webpack:///./src/components/PrefixItemStats.vue?72c1","webpack:///./src/components/PrefixItem.vue","webpack:///./src/components/PrefixItem.vue?d1e8","webpack:///./src/components/PrefixItem.vue?cfe0","webpack:///./src/components/PrefixesAdd.vue?ad12","webpack:///./src/components/FormInputGroup.vue?dbf8","webpack:///./src/components/FormInputGroup.vue","webpack:///./src/components/FormInputGroup.vue?b060","webpack:///./src/components/FormInputGroup.vue?8820","webpack:///./src/components/PrefixesPopular.vue?cca0","webpack:///./src/components/PrefixesPopularAdd.vue?c445","webpack:///./src/components/PrefixesPopularAdd.vue","webpack:///./src/components/PrefixesPopularAdd.vue?d880","webpack:///./src/components/PrefixesPopularAdd.vue?644f","webpack:///./src/components/PrefixesPopular.vue","webpack:///./src/components/PrefixesPopular.vue?0833","webpack:///./src/components/PrefixesPopular.vue?7f86","webpack:///./src/components/PrefixesAdd.vue","webpack:///./src/components/PrefixesAdd.vue?6fa7","webpack:///./src/components/PrefixesAdd.vue?952d","webpack:///./src/components/PrefixesOverallStats.vue?d301","webpack:///./src/components/PrefixesOverallStats.vue","webpack:///./src/components/PrefixesOverallStats.vue?d89a","webpack:///./src/components/PrefixesOverallStats.vue?e3da","webpack:///./src/components/PrefixesAddToggle.vue?2726","webpack:///./src/components/PrefixesAddToggle.vue","webpack:///./src/components/PrefixesAddToggle.vue?3d8d","webpack:///./src/components/PrefixesAddToggle.vue?2b0c","webpack:///./src/views/cache/introspection/PrefixesView.vue","webpack:///./src/views/cache/introspection/PrefixesView.vue?30ee","webpack:///./src/views/cache/introspection/PrefixesView.vue?07f8","webpack:///./src/views/cache/introspection/prefix/index.vue?fbc7","webpack:///./src/components/PrefixStatsTabs.vue?448f","webpack:///./src/components/PrefixStatsTabs.vue","webpack:///./src/components/PrefixStatsTabs.vue?5495","webpack:///./src/components/PrefixStatsTabs.vue?2feb","webpack:///./src/components/PrefixRemove.vue?7c93","webpack:///./src/components/PrefixRemove.vue","webpack:///./src/components/PrefixRemove.vue?99e9","webpack:///./src/components/PrefixRemove.vue?4fab","webpack:///./src/views/cache/introspection/prefix/index.vue","webpack:///./src/views/cache/introspection/prefix/index.vue?dbc3","webpack:///./src/views/cache/introspection/prefix/index.vue?07bd","webpack:///./src/views/cache/introspection/prefix/OverviewView.vue?ab0b","webpack:///./src/components/PrefixLastStats.vue?34a0","webpack:///./src/components/PrefixLastStats.vue","webpack:///./src/components/PrefixLastStats.vue?c66d","webpack:///./src/components/PrefixLastStats.vue?3f93","webpack:///./src/components/PrefixSubPrefixes.vue?c702","webpack:///./src/components/PrefixSubPrefixes.vue","webpack:///./src/components/PrefixSubPrefixes.vue?9c2a","webpack:///./src/components/PrefixSubPrefixes.vue?138f","webpack:///./src/views/cache/introspection/prefix/OverviewView.vue","webpack:///./src/views/cache/introspection/prefix/OverviewView.vue?bb8a","webpack:///./src/views/cache/introspection/prefix/OverviewView.vue?eb5f","webpack:///./src/views/cache/introspection/RecentRequestsView.vue?71c6","webpack:///./src/views/cache/introspection/RecentRequestsView.vue","webpack:///./src/views/cache/introspection/RecentRequestsView.vue?8dd4","webpack:///./src/views/cache/introspection/RecentRequestsView.vue?492a","webpack:///./src/views/StyleGuideView.vue?2704","webpack:///./src/views/StyleGuideView.vue","webpack:///./src/views/StyleGuideView.vue?e81b","webpack:///./src/views/StyleGuideView.vue?3f97","webpack:///./src/views/cache/playground/CompoundStatsView.vue?2cc3","webpack:///./src/views/cache/playground/CompoundStatsView.vue","webpack:///./src/views/cache/playground/CompoundStatsView.vue?7dfa","webpack:///./src/views/cache/playground/CompoundStatsView.vue?6fce","webpack:///./src/views/cache/playground/SlabStatsView.vue?5206","webpack:///./src/views/cache/playground/SlabStatsView.vue","webpack:///./src/views/cache/playground/SlabStatsView.vue?1137","webpack:///./src/views/cache/playground/SlabStatsView.vue?a42d","webpack:///./src/router/router-ANALYTICS.ts","webpack:///./src/plugins/google-analytics/lib.ts","webpack:///./src/plugins/google-analytics/index.ts","webpack:///./src/filters/number.ts","webpack:///./src/main/analytics/index.ts","webpack:///./src/types/notification.ts","webpack:///./src/components/NavWrap.vue?436a","webpack:///./src/components/PopularKey.vue?8811","webpack:///./src/assets/banner-small.png","webpack:///./src/assets/logo-small.png","webpack:///./src/components/BaseChart.vue?60e4","webpack:///./src/components/BaseStats.vue?4da0","webpack:///./src/views/cache/AlertsView.vue?417d","webpack:///./src/types/time-range.ts","webpack:///./src/assets/logo-medium.png","webpack:///./src/components/BarChartRow.vue?f66f","webpack:///./src/components/BaseButton.vue?4d89","webpack:///./src/config/series.ts","webpack:///./src/components/analytics/AppNavHeroku.vue?0ee0","webpack:///./src/components sync nonrecursive Base[A-Z]\\w+\\.(vue|ts)$","webpack:///./src/components/AlertsDeliveryConfigItem.vue?f789","webpack:///./src/assets/banner-large.png","webpack:///./src/views/cache/introspection/PopularKeysView.vue?7dc5","webpack:///./src/components/HeadingButtons.vue?093e","webpack:///./src/components/BaseBadge.vue?199c","webpack:///./src/components/BaseBadge.vue","webpack:///./src/components/BaseBadge.vue?564e","webpack:///./src/components/BaseBadge.vue?8504","webpack:///./src/components/BaseCard.vue?67c6","webpack:///./src/components/BaseCard.vue","webpack:///./src/components/BaseCard.vue?633a","webpack:///./src/components/BaseCard.vue?e6ac","webpack:///./src/components/analytics/SettingsCredentialsItem.vue?dea4"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_c","_self","class","spacing","_v","_s","message","staticRenderFns","required","default","component","COLOR_PALETTE","COLOR_PALETTE_DARKER","staticClass","cardClass","series","values","_e","formatMillisecond","d3","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","fromDateLikeToDate","Date","valueOf","tickTimeFormat","date","chartWidth","chartHeight","d3Node","$el","$nextTick","addEventListener","setChartWidth","removeEventListener","renderChart","parseInt","svgContainer","style","document","documentElement","clientWidth","selectAll","remove","chartID","metrics","columns","margin","top","right","bottom","left","widthContainer","heightContainer","widthChart","heightChart","svg","append","attr","g","x","domain","range","tickFormat","tickSizeOuter","tickSizeInner","select","yRight","maxLeft","LEFT","yLeft","maxRight","RIGHT","valuesStacked","axisLeft","text","tickSize","valuesForStacking","stack","keys","valuesStackable","map","point","valRow","forEach","column","val","area","time","y0","y1","layer","enter","index","legend","legendLeft","legendRight","axisRight","randomInt","Math","floor","random","pow","tooltipID","tooltip","valuesTooltip","metric","valuesCircles","focus","timeScales","getTime","on","mousemove","iClosest","mouse","iRight","iLeft","diLeft","diRight","dateMouseStr","invert","dateMouse","parse","undefined","html","layerY","metricIdx","yPos","yCircle","isCard","_t","webpackContext","req","id","webpackContextResolve","e","Error","code","resolve","StatType","bytesToSize","bytes","sizes","log","decimalPoints","toFixed","bytesToPlan","MB","GB","getWholeFromPrefix","number","factor","constToTitle","replace","toLowerCase","getTimeRange","timeRangeState","timeRange","endTime","startTime","LAST_HOUR","setMinutes","getMinutes","LAST_DAY","setDate","getDate","LAST_WEEK","LAST_MONTH","stats","_l","stat","small","_f","attrs","iconBlock","label","icon","iconToolTip","iconIssueType","colsClass","slimClass","cols","slim","Axis","ellipsisOnlyClass","ellipsisOnly","type","ref","positionClass","position","fixPosition","$refs","rect","getBoundingClientRect","space","limitRight","width","limitLeft","innerWidth","iconWrapPadRight","screenReaderLabel","_b","iconName","iconSize","iconSpin","iconFixedWidth","iconAlign","issueType","$event","hover","$attrs","size","spin","fixedWidth","align","padRight","DEFAULT","inheritAttrs","_g","defaultButtonClass","buttonClass","disabledClass","activeClass","noBorderClass","$listeners","tooltipTitle","tooltipPosition","isActive","noBorder","Unit","refresh","isRefreshing","title","context","$ga","button","invalidate","$store","dispatch","action","then","setTimeout","TICK_FORMATS","percentage","comma","si","CHART_CONFIG","slabSize","statType","SLAB","stacked","axes","format","unit","BYTES","slabItems","slabEvictionRate","PER_SECOND","slabEvictionUnexpiredRate","slabOutofmemory","prefixSize","PREFIX","prefixSizePercent","prefixHitRate","prefixHitsMissesMutationsRate","prefixHitsMissesMutations","prefixNumKeys","prefixNumKeysPercent","prefixRelativeActivity","compoundSizeAbsolute","COMPOUND","compoundNumKeys","keyHitsMissesMutations","KEY","memoryAndHitRate","PROCESSED","requestRate","requestDistribution","hitRate","items","dataTraffic","BYTES_PER_SECOND","connections","memory","watcherStats","WATCHER","watcherStatsFractions","cpuIdle","RAW_INFLUXDB","PERCENT","memFree","getConfig","axis","getAxisByMetric","includes","getMetrics","metricsLeft","metricsRight","getChartIDs","getChartIDsFor","filter","getAllProcessedStatsNames","allMetrics","findMaxByMetric","columnIndex","maxRow","maxBy","addLeadingZero","getTooltipFormat","inputPrefix","yAxisIs","BOTH","getYMetrics","formatIsPercentage","getValuesIdxByMetric","indexOf","isStacked","findMaxSummedPoint","max","sum","reduce","accumulator","currentVal","findMaxVal","idx","findMaxForYAxis","getMetricLabel","metricID","hasAxisRight","stackValuesPercent","total","getYLabel","getTickFormat","getTitle","tooltipTemplateTime","formattedTime","getFullYear","getMonth","getHours","getSeconds","tooltipTemplateHTML","color","tooltipTemplateMetric","formattedValue","tooltipX","element","getElementById","cursorX","layerX","limit","clientX","legendTemplate","mouseout","setYAxis","y","legendList","line","defined","curve","datum","provider","settings","maxWidth","filename","alt","tagline","url","caches","isOpen","ARIAState","directives","rawName","expression","account","invoices","logout","USE_STAGING","MEMCACHIER_BASE_URL","MEMCACHIER_STATUS_URL","MEMCACHIER_BLOG_URL","MEMCACHIER_SUPPORT_URL","MEMCACHIER_FEEDBACK_URL","MEMCACHIER_TWITTER_URL","MEMCACHIER_GITHUB_URL","MEMCACHIER_CACHES_URL","MEMCACHIER_ACCOUNT_URL","MEMCACHIER_INVOICES_URL","MEMCACHIER_LOGIN_URL","MEMCACHIER_LOGOUT_URL","MEMCACHIER_SIGN_UP_URL","MEMCACHIER_ABOUT_URL","MEMCACHIER_CONTACT_URL","MEMCACHIER_DOCS_URL","MEMCACHIER_DOCS_CREDENTIALS_URL","HEROKU_DASHBOARD","HEROKU_DOCS","HEROKU_INFO","CACHESIGHT_URL","status","blog","support","feedback","twitter","github","login","signUp","about","contact","docs","docsCredentials","herokuDashboard","herokuDocs","herokuInfo","cachesight","components","NavPrimary","docsURL","NavSecondary","AppBanner","AppLogo","AppNav","AppNavSecondary","AppNavHeroku","NavWrap","layout","twttr","js","fjs","getElementsByTagName","createElement","src","parentNode","insertBefore","ready","f","AppSocial","notifications","notification","domProps","state","AppNotificationBar","$route","params","cacheId","prefixId","to","AppHeader","AppFooter","AppNotificationContainer","decodeJWT","jwt","Layout","SET_STATS","RESET_STATE","SET_SETTINGS","SET_SETTINGS_DATA_STATUS","SET_FEATURES","SET_FEATURES_DATA_STATUS","SET_CREDENTIALS","SET_PROCESSED_STATS","SET_PROCESSED_STATS_STATUS","SET_PROCESSED_STATS_LAST_FETCHED","SET_PER_SERVER_PROCESSED_STATS","SET_PER_SERVER_PROCESSED_STATS_STATUS","SET_PER_SERVER_PROCESSED_STATS_LAST_FETCHED","SET_CACHE_AUTH","SET_TIME_RANGE","SET_LAYOUT","SET_PROMO_BANNER_DISMISSED","SET_MOBILE_MENU_OPEN","SET_ACTIVE_CACHE_ID","SET_ACTIVE_PREFIX_ID","SET_COMPOUND_STATS_STATUS","SET_COMPOUND_STATS_LAST_FETCHED","SET_PREFIX_STATS_STATUS","SET_PREFIX_STATS_LAST_FETCHED","SET_POPULAR_ITEMS_STATUS","SET_POPULAR_ITEMS_LAST_FETCHED","SET_PREFIX_POPULAR_ITEMS_STATUS","SET_PREFIX_POPULAR_ITEMS_LAST_FETCHED","NOTIFICATION_PUSH","NOTIFICATION_DELETE","SET_ALERTS","SET_DELIVERY_CONFIGS","SET_SHOW_ADD_DELIVERY_CONFIG","SET_SMTP_CONFIG","SET_SMTP_CONFIG_IS_DEFAULT","SET_LOGS","SET_SLAB_STATS","SET_PROCESSED_SLAB_STATS","SET_PROCESSED_SLAB_STATS_FETCHED","SET_COMPOUND_STATS","SET_PREFIXES","SET_POPULAR_ITEMS","SET_PREFIX_POPULAR_ITEMS","SET_PREFIX_STATS","SET_KEY_STATS","SET_KEY_STATS_SERIES","SET_SHOW_ADD_PREFIX","LOGOUT","AUTO_LOGOUT","SET_CACHES","SET_SERVERS","TRIGGER_TYPE","hit_rate","comparison","memory_usage","ALERT_MAX","generateProcessedStatsState","chartIDsObj","findMatchedIndexes","columnsSubset","matchedIndexes","mapPointsToMatchedIndexes","mappedPoint","isNullPoint","removeFirstNullPoints","points","removeLastNullPoints","pointsReversed","reverse","pop","trimNullPoints","generateChartSeries","seriesArray","allColumns","chartColumns","concat","mappedSeriesGroup","mappedSeries","tags","appendCalculatedMetricsToSeries","totalHitsRate","totalMissesRate","totalMutationsRate","hitRateRequests","requests","prependColumnNames","prefix","RequestMethod","token","activeCacheID","activePrefixID","mobileMenuOpen","HAS_SIDEBAR","promoBannerDismissed","limit_maxbytes","curr_connections","curr_items","evictions","total_connections","get_hits","get_misses","delete_hits","delete_misses","incr_hits","incr_misses","decr_hits","decr_misses","cas_hits","cas_misses","touch_hits","touch_misses","cmd_flush","cmd_set","processedStats","processedStatsStatus","processedStatsLastFetched","perServerProcessedStats","perServerProcessedStatsStatus","perServerProcessedStatsLastFetched","cache_type","can_manage_credentials","can_update_capabilities","can_switch","cluster_name","credentials","enabled","servers","plan","version","FLUSH_CACHE_ERROR","SWITCH_CLUSTER_ERROR","RE_ENABLE_CACHE_SUCCESS","RE_ENABLE_CACHE_ERROR","ROTATE_SSO_ERROR","PROCESSED_STATS_ERROR","SETTINGS_ERROR","FEATURES_ERROR","STATS_ERROR","CREDENTIALS_FETCH_ERROR","CREDENTIALS_ADD_ERROR","CREDENTIALS_REMOVE_ERROR","CREDENTIALS_PROMOTE_ERROR","CREDENTIALS_CAPABILITIES_ERROR","ALERTS_ERROR","ALERT_ADD_ERROR","ALERT_UPDATE_ERROR","ALERT_REMOVE_ERROR","ALERTS_CONFIG_ERROR","ALERT_CONFIG_ADD_ERROR","ALERT_CONFIG_REMOVE_ERROR","SMTP_CONFIG_FETCH_ERROR","TEST_EMAIL_ERROR","TEST_EMAIL_SUCCESS","SMTP_CONFIG_SET_ERROR","TOGGLE_INTROSPECTION_ERROR","LOGS_ERROR","SLAB_STATS_ERROR","PREFIXES_ERROR","PREFIX_POPULAR_ITEMS_ERROR","PREFIX_STATS_ERROR","PREFIX_ADD_ERROR","PREFIX_REMOVE_ERROR","COMPOUND_STATS_ERROR","KEY_STATS_ERROR","CONSULTATION_REQUEST_SUCCESS","CONSULTATION_REQUEST_ERROR","LOGIN_ERROR","PASSWORD_SUCCESS","PASSWORD_ERROR","CACHE_ADD_ERROR","CACHE_REMOVE_ERROR","CACHE_UPDATE_ERROR","SERVER_REMOVE_ERROR","SERVER_UPDATE_ERROR","setNotification","root","setNotificationSuccess","SUCCESS","setNotificationError","ERROR","API_URL","isAdminUsingProd","location","host","adminConsoleNotice","console","apiClient","a","baseURL","headers","Accept","interceptors","response","use","error","Promise","reject","DataStatus","request","method","basicAuth","authorization","btoa","username","password","localStorage","getItem","Authorization","namespaced","mutations","assign","actions","fetch","commit","rootState","cacheID","CacheService","GET","catch","resetState","allTimeHitRate","types","hits","misses","getters","settingsStatus","features","featuresStatus","payload","set","FETCHED","FETCHING","FAILED","fetchFeatures","toggleIntrospection","POST","fetchCredentials","addCredentials","removeCredentials","DELETE","promoteCredentials","setCredentialsCapabilities","capabilities","PATCH","activeCacheSettings","activeCacheFeatures","activeCacheSettingsStatus","UNFETCHED","activeCacheFeaturesStatus","timestamp","fetchPlotsByTimeRange","fetchPerServerPlotsByTimeRange","fetchStats","valid","now","names","join","statsMutation","statusMutation","fetchPerServerStats","setEmptySeries","aggregateSeries","chartIndex","perServerSeries","perServerSeriesName","server","perServerSeriesStatus","statLastHour","statName","lastPoint","lastTime","timeLimit","nextID","notificationToRemove","add","alerts","deliveryConfigs","showAddDeliveryConfig","SMTPConfig","SMTPConfigIsDefault","show","isDefault","alert","trigger_type","trigger_threshold","delivery_config_id","description","update","PUT","fetchDeliveryConfigs","addDeliveryConfig","deliveryConfig","delivery_type","slack_channel","startsWith","email","slack_url","removeDeliveryConfig","deliveryConfigID","setShowAddDeliveryConfig","fetchSMTPConfig","configResponse","opts","elements","options","config","from","port","setSMTPConfig","sendTestEmail","testOpts","subject","body","testResponse","success","deliveryConfigInUse","find","deliveryConfigByID","isSMTPConfigSet","rootGetters","matchingCompoundPoint","prefixPoints","prefixIdx","compoundPoints","compoundIdx","len","timeIdx","prefixTime","substring","compoundTime","combineCompoundAndProcessedStatsPoints","processedStatsPoints","cPoint","nulls","psStartIdx","cTime","psIdx","psTime","nextPsTime","diff","abs","nextDiff","combineCompoundAndProcessedStats","compoundStats","calcPercent","prefixPoint","compoundPoint","prefixMetrics","compoundMetrics","metricSuffix","cVal","pVal","combinePrefixAndCompoundStatsPoints","prefixSeries","compoundSeries","pMetrics","cMetrics","pointLen","compoundPointEmpty","compoundStartingIndex","matched","combinePrefixAndCompoundStats","prefixStats","logs","slabStats","processedSlabStats","processedSlabStatsFetched","compoundStatsStatus","compoundStatsLastFetched","popularItems","popularItemsStatus","popularItemsLastFetched","prefixPopularItemsStatus","prefixPopularItemsLastFetched","prefixes","prefixStatsStatus","prefixStatsLastFetched","prefixPopularItems","keyStats","keyStatsSeries","showAddPrefix","fetched","prefixID","popular_items","fetchLogs","fetchProcessedSlabStatsByTimeRange","fetchSlabStats","sort","b","fetchProcessedSlabStats","setProcessedSlabStatsFetched","fetchCompoundStatsByTimeRange","fetchCompoundStats","poll","timeout","checkStatus","appendedSeries","prependedColumns","processedStatsSeries","allPayload","fetchProcessedStatsForCompoundStats","fetchPopularItems","time_slice","most_hit_keys","most_missed_keys","most_mutated_keys","popular_prefixes","fetchPrefixes","aName","bName","fetchPrefixStatsByTimeRange","fetchPrefixStats","allCompoundStats","cPayload","fetchPrefixPopularItems","addPrefix","removePrefix","fetchKeyStats","statsSeries","hit_count","miss_count","hit_count_per_sec","miss_count_per_sec","mutation_count_per_sec","mutation_count","setShowAddPrefix","setEmptyCompoundStatSeries","chartIDs","unshift","setEmptyPrefixStatSeries","slabStatsSeries","compoundStatsSeries","prefixStatsSeries","prefixStatsSeriesColumns","prefixLastStats","allPrefixLastStatsFetched","popularPrefixes","prefixIssues","issues","lastStats","hI","miI","muI","activityMsg","activity","WARNING","activePrefix","debugMode","cacheIndex","passwords","cache","cache_id","fetchServers","activeCacheIndex","removeServer","serverId","activeCache","findIndex","store","Store","setItem","removeItem","reload","currentRoute","toggleState","dismissed","loginResponse","toString","autoLogout","flushCache","switchCluster","reEnableCache","rotateSSO","setActiveCacheID","setActivePrefixID","toggleMobileMenu","setTimeRange","setLayout","setPromoBannerDismissed","sendConsultationRequest","decodedJWT","loggedIn","preventDefault","loginUser","usernameError","model","callback","$$v","$set","passwordError","loggingIn","widthClass","IS_FULL_WIDTH","layoutWidth","screenReaderLabelClass","inputClass","updateValue","event","$emit","target","regex","test","String","string","validateString","$router","LayoutFullWidth","FormInput","FormInputError","scopedSlots","_u","fn","proxy","closeMobileMenu","toggle","_k","keyCode","close","SidebarMobileToggle","metricId","keyCat","isConsultingView","dismissPromoBanner","cookie","split","some","item","trim","checkIsConsultingView","fetchCacheData","LayoutSidebar","CacheSidebar","PromoBanner","donutChartValues","memoryUsed","totalMemory","confirm","_m","radius","diameter","pie","goldenRatio","innerRadius","arc","outerRadius","used","OverviewFlushCache","DonutChart","HeadingButtons","hitRateWithUnit","good","average","hr","hitRateStatus","isSaving","ReEnableCache","rows","fillBackground","percent","transform","BarChartRow","BarChart","historicalConnections","historicalConnectionsLabel","issue","conns","connectionsLastHour","chartTitle","buttonTitle","currentTimeRange","newTimeRange","sampleSeries","sampleServerName","perServer","ProcessedStatsChartDisabled","TimeRangeControls","ProcessedStatsChart","intervalID","setInterval","clearInterval","getProcessedStats","cleanUpProcessedStats","OverviewStorage","OverviewConnections","HitRate","OverviewIssues","OverviewChart","OverviewStats","featuredChartID","getPerServerProcessedStats","cleanUpPerServerProcessedStats","alertLimit","alertUsage","alertLimitReached","hasAlerts","toggleAddAlert","toggleAddDeliveryConfig","previewAlert","isDisabled","toggleEditAlert","showEditAlert","toggleEnabled","removeAlert","saveAlert","triggerTypeError","triggerTypeOpts","thresholdError","_n","deliveryConfigError","deliveryConfigOpts","defaultOption","option","validateTriggerThreshold","validateNumber","threshold","address","FormSelect","triggerTypeClass","triggerType","triggerThresholdClass","triggerThreshold","deliveryTypeClass","deliveryType","emailClass","slackChannelClass","slackChannel","defaultClass","AlertEnableToggle","AlertRemove","AlertForm","AlertInfo","cancel","previewDeliveryConfig","AlertDeliveryConfigRemove","deliveryTypeError","deliveryTypeOpts","emailError","slackURLError","slackChannelError","slack","validateEmail","AlertsDeliveryConfigItem","AlertsDeliveryConfigForm","showAddAlert","canAddAlerts","hasDeliveryConfigs","alertLen","AlertItem","AlertsAdd","HeadingInline","AlertsDeliveryConfig","introspectionEnabled","introspectionTitle","settingsLimit","primaryCredentials","sasl_username","sasl_password","serversString","changeClusters","credential","primary","serversWithPort","SettingsChangeClusters","credentialRowTitle","rotateSSOButtonTitle","checkboxTitleAttr","removeCredentialsButtonTitle","promoteCredentialsButtonTitle","alignClass","updateChecked","checkbox","checked","inputAlign","write_capability","flush_capability","api_capability","FormCheckbox","buttonTitleAttr","SettingsCredentialsAdd","SettingsCredentialsItem","setIntrospectionStatus","SettingsGeneral","SettingsCredentials","sendRequest","answersError","question","answers","consentError","isSending","initialRequest","questions","consent","validateAnswers","validateConsent","popularityunit","toggleShowKeyStats","cacheKey","popularity","keyName","dataReady","keySeries","updatedPoint","KeyStatsChart","KeyName","showKeyStats","initalIssue","setIssue","ga","timeSlice","helpText","toLocaleString","KeyStats","viewName","keyCatUnit","getPrefixPopularItems","getPopularItems","cleanUpPrefixPopularItems","cleanUpPopularItems","overallPopularItems","secs","PopularKey","PopularKeysTabs","prefixUsage","prefixLimit","prefixLimitReached","toggleAddPrefix","metricLabel","helpPrefixFractionRequests","helpPrefixFractionItems","helpPrefixFractionMemory","hitRateLabel","previewPrefix","showStats","ariaLabel","click","getPercentByMetric","PREVIEW_PREFIXES","requestsA","requestsB","requestsC","numKeysA","numKeysB","numKeysC","totalSizeA","totalSizeB","totalSizeC","hitRateA","hitRateB","hitRateC","PREVIEW_PREFIXES_STATS","prefix_over_compound_requests","prefix_over_compound_num_keys","prefix_over_compound_total_size","prefix_hit_rate","getPrefixStats","cleanUpPrefixStats","ButtonCard","PrefixItemStats","save","nameError","popularPrefixesFiltered","maxHeight","parentPrefixName","watchedPrefixes","popularPrefix","watchedPrefixNames","subPrefixBase","watchedPrefixName","prefixName","PrefixesPopularAdd","initialPrefix","FormInputGroup","PrefixesPopular","labelNarrow","lastPointsSummed","current","previous","currentSlice","sumPoint","topLevelPrefixIDs","topLevelPrefixes","nextVal","canAddPrefixes","prefixLen","PrefixItem","PrefixesAdd","PrefixesOverallStats","PrefixesAddToggle","backButtonTitle","PrefixStatsTabs","PrefixRemove","getValByMetric","hrStatus","initialIssue","getStat","ID","PrefixLastStats","PrefixSubPrefixes","logsPerServer","serverID","currentServerID","setServer","command","scrollToBottom","scrollTop","scrollHeight","sampleChartValues","buttonClasses","processedStatsFetched","router","base","routes","path","beforeEnter","next","meta","requiresAuth","children","alias","beforeEach","record","afterEach","cachePath","prefixPath","pageview","page","bucket","install","Vue","productionTip","requireComponent","fileName","componentConfig","componentName","created","h","$mount","NotificationType","TimeRange","TIME_RANGES","STATS_CONFIG","max_bytes","eviction_rate","get_expired_rate","get_hit_rate","delete_hit_rate","incr_hit_rate","decr_hit_rate","cas_hit_rate","touch_hit_rate","get_fraction","set_fraction","delete_fraction","incr_fraction","decr_fraction","cas_fraction","touch_fraction","flush_fraction","request_rate","get_rate","set_rate","delete_rate","incr_rate","decr_rate","cas_rate","touch_rate","flush_rate","connection_rate","bytes_read_rate","bytes_write_rate","prefix_num_keys","prefix_total_size","prefix_total_hits_rate","prefix_total_misses_rate","prefix_total_mutations_rate","prefix_requests","compound_num_keys","compound_total_size","compound_total_hits_rate","compound_total_misses_rate","compound_total_mutations_rate","compound_hit_rate","compound_requests","prefix_over_compound_total_hits_rate","prefix_over_compound_total_misses_rate","prefix_over_compound_total_mutations_rate","key_size","key_hit_count","key_miss_count","key_mutation_count","key_hit_count_per_sec","key_miss_count_per_sec","key_mutation_count_per_sec","items_64","bytes_64","eviction_rate_64","eviction_unexpired_rate_64","outofmemory_64","items_128","bytes_128","eviction_rate_128","eviction_unexpired_rate_128","outofmemory_128","items_256","bytes_256","eviction_rate_256","eviction_unexpired_rate_256","outofmemory_256","items_512","bytes_512","eviction_rate_512","eviction_unexpired_rate_512","outofmemory_512","items_1024","bytes_1024","eviction_rate_1024","eviction_unexpired_rate_1024","outofmemory_1024","items_2048","bytes_2048","eviction_rate_2048","eviction_unexpired_rate_2048","outofmemory_2048","items_4096","bytes_4096","eviction_rate_4096","eviction_unexpired_rate_4096","outofmemory_4096","items_8129","bytes_8129","eviction_rate_8129","eviction_unexpired_rate_8129","outofmemory_8129","items_16384","bytes_16384","eviction_rate_16384","eviction_unexpired_rate_16384","outofmemory_16384","items_32768","bytes_32768","eviction_rate_32768","eviction_unexpired_rate_32768","outofmemory_32768","items_65536","bytes_65536","eviction_rate_65536","eviction_unexpired_rate_65536","outofmemory_65536","items_131072","bytes_131072","eviction_rate_131072","eviction_unexpired_rate_131072","outofmemory_131072","items_262144","bytes_262144","eviction_rate_262144","eviction_unexpired_rate_262144","outofmemory_262144","items_524288","bytes_524288","eviction_rate_524288","eviction_unexpired_rate_524288","outofmemory_524288","items_1048576","bytes_1048576","eviction_rate_1048576","eviction_unexpired_rate_1048576","outofmemory_1048576","skipped","drift","restarts","dropped","processed","skipped_fraction","dropped_fraction","processed_fraction","idle","user","system","free","softirq","steal","nice","irq","iowait","guest","guest_nice","COMPOUND_METRICS_PROCESSED_STATS","PREFIX_COMPOUND_METRIC_PREFIX","PREFIX_COMPOUND_METRICS","KEY_METRICS","PREFIX_HIT_RATE_LABEL","HELP_PREFIX_FRACTION_REQUESTS","HELP_PREFIX_FRACTION_ITEMS","HELP_PREFIX_FRACTION_MEMORY","LIFETIME_MARGIN","COMPOUND_STATS_LIFETIME","PREFIX_STATS_LIFETIME","POPULAR_ITEMS_LIFETIME","PREFIX_POPULAR_ITEMS_LIFETIME","PROCESSED_STATS_LIFETIME","STATS_LIFETIME","emptySeriesArray","PREFIX_MAX","helpClass","growClass","darkClass","helpOpenClass","readMoreButtonClass","toggleReadMore","readMoreTitle","showReadMore","showReadMoreButton","help","clientHeight","grow","dark","isButton"],"mappings":"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C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,SAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,QAC/C,CAAC,uBAAwB,UAAW,UAAW,QAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,SAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,QAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,QAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,QAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,QAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,QAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,QAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,QAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,QAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,QAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,SAC/C,CAAC,uBAAwB,UAAW,UAAW,QAC/C,CAAC,uBAAwB,UA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AO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,IAAM,GACtC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,IAAM,GACtC,CAAC,uBAAwB,MAAO,IAAM,GACtC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,IAAM,GACtC,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,IAAM,GACtC,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,IAAM,GACtC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,IAAM,GACtC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,IAAM,GACtC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,IAAM,GACtC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,IAAM,GACtC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,IAAM,GACtC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,IAAM,GACtC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,KAAO,GACvC,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,GAC1C,CAAC,uBAAwB,MAAO,QAAU,MAIhD6Q,YAAa,CACX,CACE3T,KAAM,kBACNqjB,KAAM,CAAE2L,OAAQ,EAAKmT,kBACrBl9B,QAAS,CAAC,OAAQ,kBAAmB,oBACrCnC,OAAQ,CACN,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,UAAW,aACpC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,UAAW,aACpC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,SAAU,aACnC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,UAAW,aACpC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,UAAW,aACpC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,UAAW,aACpC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,SAAU,aACnC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,UAAW,YACpC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,UAAW,aACpC,CAAC,uBAAwB,YAAa,YACtC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,WACrC,CAAC,uBAAwB,UAAW,aACpC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,UAAW,aACpC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,UAAW,YACpC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,UAAW,aACpC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,UAAW,aACpC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,UAAW,aACpC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,UAAW,aACpC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,aACrC,CAAC,uBAAwB,WAAY,YACrC,CAAC,uBAAwB,UAAW,YACpC,CAAC,uBAAwB,WAAY,eAI3C+Q,YAAa,CACX,CACE7T,KAAM,kBACNqjB,KAAM,CAAE2L,OAAQ,EAAKmT,kBACrBl9B,QAAS,CAAC,OAAQ,cAAe,mBACjCnC,OAAQ,CACN,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,SAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,GAC5B,CAAC,uBAAwB,EAAG,YAIlCgR,OAAQ,CACN,CACE9T,KAAM,kBACNqjB,KAAM,CAAE2L,OAAQ,EAAKmT,kBACrBl9B,QAAS,CAAC,OAAQ,QAAS,aAC3BnC,OAAQ,CACN,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,SAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,SAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WACpC,CAAC,uBAAwB,UAAW,WA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","file":"js/index.800d5c50.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"index\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{class:_vm.spacing},[_vm._v(_vm._s(_vm.message)+\".\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class BaseNoDataDefault extends Vue {\n @Prop({ required: false, default: \"No data to display\" })\n message!: string;\n\n @Prop({ required: false, default: \"\" })\n spacing!: \"top\" | \"bottom\";\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseNoDataDefault.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseNoDataDefault.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseNoDataDefault.vue?vue&type=template&id=2aefff10&scoped=true&\"\nimport script from \"./BaseNoDataDefault.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseNoDataDefault.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BaseNoDataDefault.vue?vue&type=style&index=0&id=2aefff10&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2aefff10\",\n null\n \n)\n\nexport default component.exports","// Shades from color 1's were generated with https://coolors.co/\nexport const COLOR_PALETTE = [\n /*\n Used to have the same colors \n in the same order for all charts\n */\n \"#95C087\", // 0 green\n \"#EDC45C\", // 0 yellow\n \"#88D8E5\", // 0 sky_blue\n \"#F1995E\", // 0 orange\n \"#E76D64\", // 0 red\n \"#4790CC\", // 0 blue\n \"#C665B8\", // 0 magenta\n \"#8A7AB0\", // 0 purple\n \"#FF9AC4\", // 0 pink\n \"#48E7DF\", // 0 turquoise\n \"#7eb26d\", // 1 green\n \"#eab838\", // 1 yellow\n \"#6ed0e0\", // 1 sky_blue\n \"#ef833b\", // 1 orange\n \"#e24d42\", // 1 red\n \"#1f78c1\", // 1 blue\n \"#ba43a9\", // 1 magenta\n \"#705d9f\", // 1 purple\n \"#FF84B7\", // 1 pink\n \"#20e2d8\", // 1 turquoise\n \"#68925A\", // 2 green\n \"#C0972E\", // 2 yellow\n \"#5BABB8\", // 2 sky_blue\n \"#C46C31\", // 2 orange\n \"#B94037\", // 2 red\n \"#1A639E\", // 2 blue\n \"#99378B\", // 2 magenta\n \"#5C4D83\", // 2 purple\n \"#D16D96\", // 2 pink\n \"#1BB9B1\", // 2 turquoise\n \"#517246\", // 3 green\n \"#957624\", // 3 yellow\n \"#46858F\", // 3 sky_blue\n \"#995426\", // 3 orange\n \"#90322A\", // 3 red\n \"#144D7B\", // 3 blue\n \"#772B6C\", // 3 magenta\n \"#483C66\", // 3 purple\n \"#A35475\", // 3 pink\n \"#15908A\", // 3 turquoise\n];\n\nexport const COLOR_PALETTE_DARKER = [\n /*\n Used for chart hover circle color\n To be visible when overlayed on COLOR_PALETTE colors\n\n Darker colors are +1,\n e.g. '1 green' uses '2 green' as its darker color\n */\n \"#7eb26d\", // 1 green\n \"#eab838\", // 1 yellow\n \"#6ed0e0\", // 1 sky_blue\n \"#ef833b\", // 1 orange\n \"#e24d42\", // 1 red\n \"#1f78c1\", // 1 blue\n \"#ba43a9\", // 1 magenta\n \"#705d9f\", // 1 purple\n \"#FF84B7\", // 1 pink\n \"#20e2d8\", // 1 turquoise\n \"#68925A\", // 2 green\n \"#C0972E\", // 2 yellow\n \"#5BABB8\", // 2 sky_blue\n \"#C46C31\", // 2 orange\n \"#B94037\", // 2 red\n \"#1A639E\", // 2 blue\n \"#99378B\", // 2 magenta\n \"#5C4D83\", // 2 purple\n \"#D16D96\", // 2 pink\n \"#1BB9B1\", // 2 turquoise\n \"#517246\", // 3 green\n \"#957624\", // 3 yellow\n \"#46858F\", // 3 sky_blue\n \"#995426\", // 3 orange\n \"#90322A\", // 3 red\n \"#144D7B\", // 3 blue\n \"#772B6C\", // 3 magenta\n \"#483C66\", // 3 purple\n \"#A35475\", // 3 pink\n \"#15908A\", // 3 turquoise\n \"#435E3A\", // 4 green\n \"#7A611E\", // 4 yellow\n \"#3A6D76\", // 4 sky_blue\n \"#7E4520\", // 4 orange\n \"#762923\", // 4 red\n \"#114065\", // 4 blue\n \"#622459\", // 4 magenta\n \"#3B3254\", // 4 purple\n \"#864560\", // 4 pink\n \"#127671\", // 4 turquoise\n];\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chart-container\",class:_vm.cardClass},[_c('div',{staticClass:\"chart\"}),(!_vm.series)?_c('BaseLoading'):(_vm.series && _vm.series.values && _vm.series.values.length === 0)?_c('div',[_vm._v(\" No data \")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import * as d3 from \"d3\";\r\n\r\nconst formatMillisecond = d3.timeFormat(\".%L\");\r\nconst formatSecond = d3.timeFormat(\":%S\");\r\nconst formatMinute = d3.timeFormat(\"%H:%M\");\r\nconst formatHour = d3.timeFormat(\"%H:00\");\r\nconst formatDay = d3.timeFormat(\"%d %b\");\r\nconst formatWeek = d3.timeFormat(\"%b %d\");\r\nconst formatMonth = d3.timeFormat(\"%b\");\r\nconst formatYear = d3.timeFormat(\"%Y\");\r\n\r\nexport type DateLike = Date | number | { valueOf(): number };\r\n\r\n// We can decorate functions with this converter\r\nexport function fromDateLikeToDate(d: DateLike): Date {\r\n if (d instanceof Date) {\r\n return d;\r\n }\r\n if (typeof d === \"number\") {\r\n return new Date(d);\r\n }\r\n return new Date(d.valueOf());\r\n}\r\n\r\nexport function tickTimeFormat(d: DateLike): string {\r\n const date: Date = fromDateLikeToDate(d);\r\n\r\n return (d3.timeSecond(date) < date\r\n ? formatMillisecond\r\n : d3.timeMinute(date) < date\r\n ? formatSecond\r\n : d3.timeHour(date) < date\r\n ? formatMinute\r\n : d3.timeDay(date) < date\r\n ? formatHour\r\n : d3.timeMonth(date) < date\r\n ? d3.timeWeek(date) < date\r\n ? formatDay\r\n : formatWeek\r\n : d3.timeYear(date) < date\r\n ? formatMonth\r\n : formatYear)(date);\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\nimport { COLOR_PALETTE, COLOR_PALETTE_DARKER } from \"@/colors\";\nimport { tickTimeFormat } from \"@/utils/d3/time\";\nimport * as c from \"@/utils/chart\";\nimport { Axis } from \"@/types/chart\";\nimport { Series } from \"@/types/common\";\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\nimport * as d3 from \"d3\";\n\n@Component\nexport default class BaseChart extends Vue {\n mounted() {\n // $el is from the Vue API.\n // See: https://vuejs.org/v2/api/#el\n this.d3Node = d3.select(this.$el);\n\n /**\n * Responsive charts\n *\n * Listen for window resize\n * Calculate new chart width\n * Re-render chart\n */\n\n this.$nextTick(function() {\n window.addEventListener(\"resize\", this.setChartWidth);\n this.setChartWidth();\n });\n }\n\n beforeDestroy() {\n window.removeEventListener(\"resize\", this.setChartWidth);\n }\n\n @Prop({ required: true })\n series!: Series;\n\n @Prop({ required: true })\n chartID!: string;\n\n // Default to average, sum chart, or first series for chart\n // only used for processed stats, not debug mode\n @Prop({ required: false, default: 0 })\n chartIndex!: number;\n\n @Prop({ required: false, default: true })\n isCard!: boolean;\n\n // Render when data has been returned by the API\n @Watch(\"series\")\n onSeriesChange() {\n this.renderChart();\n }\n\n /**\n * Initial render\n *\n * Performs initial render because `resize` fires once on page load,\n * which sets the chart width\n *\n * Re-render chart when window resizes\n */\n @Watch(\"chartWidth\")\n onChartWidthChange() {\n this.renderChart();\n }\n\n // `div.chart-container`, set in in mounted lifecycle hook\n d3Node: any;\n\n chartWidth = 0;\n chartHeight = 0;\n\n get svgContainer() {\n return this.d3Node.select(\".chart\");\n }\n\n get cardClass() {\n return this.isCard ? \"card\" : \"\";\n }\n\n setChartWidth() {\n this.chartWidth = parseInt(this.svgContainer.style(\"width\"));\n\n // 1100 should match `$break-large` in `@/scss/_breakpoints.scss`\n // Values should match CSS `$chart-height-*` styles in `@/components/ProcessedStatsChartDisabled.vue`\n if (document.documentElement.clientWidth < 1100) {\n this.chartHeight = 300;\n } else {\n this.chartHeight = 400;\n }\n }\n\n renderChart() {\n // Removes the selected elements from the document.\n // https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_remove\n this.d3Node.selectAll(\"svg\").remove();\n this.d3Node.selectAll(\".tooltip\").remove();\n this.d3Node.selectAll(\".legend\").remove();\n\n if (!this.series || (this.series && this.series.values && this.series.values.length === 0)) {\n return;\n }\n\n const values = this.series.values;\n const chartID = this.chartID;\n\n // Remove 'time' as first item\n const metrics = this.series.columns.slice(1);\n const columns = this.series.columns;\n\n // Values should match CSS `$chart-margin-*` styles in `@/components/ProcessedStatsChartDisabled.vue`\n const margin = { top: 20, right: 70, bottom: 50, left: 70 };\n\n const widthContainer = this.chartWidth;\n const heightContainer = this.chartHeight;\n\n const widthChart = widthContainer - margin.left - margin.right;\n const heightChart = heightContainer - margin.top - margin.bottom;\n\n // Add responsive chart canvas\n const svg = this.svgContainer\n .append(\"svg\")\n .attr(\"width\", widthContainer)\n .attr(\"height\", heightContainer)\n .attr(\"preserveAspectRatio\", \"none\");\n\n const g = svg.append(\"g\").attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n // Add D3 time scale for x-axis\n // https://github.com/d3/d3-scale#scaleTime\n const x = d3\n .scaleTime()\n .domain([new Date(values[0][0]), new Date(values[values.length - 1][0])])\n .range([0, widthChart]);\n\n // Add x-axis ticks\n g.append(\"g\")\n .attr(\"class\", \"x axis\")\n .attr(\"transform\", `translate(0,${heightChart})`)\n .call(\n d3\n .axisBottom(x)\n .tickFormat(tickTimeFormat)\n .tickSizeOuter(0)\n .tickSizeInner(0),\n )\n .call((g: any) => g.select(\".domain\").remove())\n .selectAll(\"text\")\n .style(\"text-anchor\", \"end\")\n .attr(\"dx\", \"-.8em\")\n .attr(\"dy\", \".15em\")\n .attr(\"transform\", \"rotate(-65)\");\n\n // Add scale for left y-axis metrics\n const maxLeft = c.findMaxForYAxis(chartID, Axis.LEFT, metrics, values);\n const yLeft = d3\n .scaleLinear()\n .domain([0, maxLeft])\n .range([heightChart, 0]);\n\n // Add scale for right y-axis metrics\n let yRight: any;\n if (c.hasAxisRight(chartID)) {\n const maxRight = c.findMaxForYAxis(chartID, Axis.RIGHT, metrics, values);\n yRight = d3\n .scaleLinear()\n .domain([0, maxRight])\n .range([heightChart, 0]);\n }\n\n // Add left y-axis ticks\n const axisLeft = d3\n .axisLeft(yLeft)\n .tickFormat(d => {\n return c.getTickFormat(chartID, Axis.LEFT, d);\n })\n .tickSizeOuter(0)\n .tickSizeInner(0);\n g.append(\"g\")\n .attr(\"class\", `y-left axis`)\n .attr(\"transform\", `translate(-2,0)`)\n .call(axisLeft)\n .call((g: any) => g.select(\".domain\").remove());\n\n // Add label for left y-axis\n g.append(\"text\")\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"y\", 0 - margin.left)\n .attr(\"x\", 0 - heightChart / 2)\n .attr(\"dy\", \"1em\")\n .attr(\"class\", \"chart-label\")\n .style(\"text-anchor\", \"middle\")\n .text(c.getYLabel(chartID, Axis.LEFT));\n\n // Add x-axis gridlines\n g.append(\"g\")\n .attr(\"class\", \"x chart-gridline\")\n .attr(\"transform\", \"translate(0,\" + heightChart + \")\")\n .call(d3.axisBottom(x).tickSize(-heightChart))\n .call((g: any) => g.selectAll(\"text\").remove());\n\n // Add y-axis gridlines\n g.append(\"g\")\n .attr(\"class\", \"y chart-gridline\")\n .call(d3.axisLeft(yLeft).tickSize(-widthChart))\n .call((g: any) => g.selectAll(\"text\").remove());\n\n // Create stacked chart\n let valuesStacked: any;\n if (c.isStacked(chartID)) {\n let valuesForStacking = values;\n\n /**\n * Stacked charts only have a left y-axis -- think about it ;-P\n *\n * Note: if values are in fractions that always sum to 1,\n * this check is unnecessary\n */\n if (c.formatIsPercentage(chartID, Axis.LEFT)) {\n valuesForStacking = c.stackValuesPercent(values);\n }\n\n const stack = d3.stack();\n\n stack.keys(metrics);\n\n // Format values for d3.stack\n const valuesStackable = valuesForStacking.map(point => {\n const valRow: any = {};\n columns.forEach((column, i) => {\n // safely assuming the first val is always time\n let val = point[i];\n if (i === 0) {\n // D3 complains if time is not a number\n val = d3.isoParse(point[i]);\n }\n valRow[column] = val;\n });\n return valRow;\n });\n\n valuesStacked = stack(valuesStackable);\n\n const area = d3\n .area()\n .x(function(d: any) {\n return x(d.data.time);\n })\n .y0(function(d) {\n return yLeft(d[0]);\n })\n .y1(function(d) {\n return yLeft(d[1]);\n });\n\n const layer = g\n .selectAll(\".layer\")\n .data(valuesStacked)\n .enter()\n .append(\"g\")\n .attr(\"class\", \"layer\");\n\n layer\n .append(\"path\")\n .attr(\"class\", \"area\")\n .style(\"fill\", function(d: any) {\n return COLOR_PALETTE[d.index];\n })\n .attr(\"d\", area);\n }\n\n // Define divs for the legend\n const legend = this.d3Node.append(\"div\").attr(\"class\", \"legend\");\n const legendLeft = legend.append(\"div\").attr(\"class\", \"legend-left\");\n const legendRight = legend.append(\"div\").attr(\"class\", \"legend-right\");\n\n c.setYAxis(chartID, Axis.LEFT, metrics, values, g, x, yLeft, legendLeft);\n\n if (c.hasAxisRight(chartID)) {\n legend.attr(\"class\", \"legend legend-two-y-axes\");\n\n // Add right y-axis ticks\n const axisRight = d3\n .axisRight(yRight)\n .tickFormat(d => {\n return c.getTickFormat(chartID, Axis.RIGHT, d);\n })\n .tickSizeOuter(0)\n .tickSizeInner(0);\n g.append(\"g\")\n .attr(\"class\", `y-right axis`)\n .attr(\"transform\", `translate(${widthChart + 4},0)`)\n .call(axisRight)\n .call((g: any) => g.select(\".domain\").remove());\n\n // Add label for right y-axis\n g.append(\"text\")\n .attr(\"transform\", `translate(${widthChart + margin.right},${heightChart / 2}),rotate(90)`)\n .attr(\"dy\", \"1em\")\n .attr(\"class\", \"chart-label\")\n .style(\"text-anchor\", \"middle\")\n .text(c.getYLabel(chartID, Axis.RIGHT));\n\n c.setYAxis(chartID, Axis.RIGHT, metrics, values, g, x, yRight, legendRight);\n }\n\n // Define div for the tooltip\n const randomInt = Math.floor(Math.random() * Math.pow(2, 64));\n const tooltipID = `tooltip-${randomInt}`;\n const tooltip = this.d3Node\n .append(\"div\")\n .attr(\"class\", \"tooltip\")\n .attr(\"id\", tooltipID)\n .style(\"display\", \"none\");\n\n const valuesTooltip = metrics.map(function(metric, i) {\n return {\n metric: metric,\n values: values.map(value => {\n return {\n time: value[0],\n value: +value[i + 1],\n };\n }),\n };\n });\n\n const valuesCircles = c.isStacked(chartID) ? valuesStacked : valuesTooltip;\n\n // Add tooltip circles, positioned on hover\n g.selectAll(\".circles\")\n .data(valuesCircles)\n .enter()\n .append(\"g\")\n .attr(\"class\", \"circles\")\n .append(\"circle\")\n .attr(\"r\", 3)\n .attr(\"fill-opacity\", 0);\n\n const focus = g\n .append(\"g\")\n .attr(\"class\", \"focus\")\n .style(\"display\", \"none\");\n\n // Add vertical hover line\n focus\n .append(\"line\")\n .attr(\"class\", \"x-hover-line hover-line\")\n .attr(\"y1\", 0)\n .attr(\"y2\", heightChart);\n\n const timeScales = values.map(function(value) {\n return x(new Date(value[0]).getTime());\n });\n\n function mousemove(this: any) {\n if (focus.style(\"display\") === \"none\") {\n focus.style(\"display\", null);\n tooltip.style(\"display\", null);\n g.selectAll(\".circles circle\").style(\"display\", null);\n }\n\n const mouse = d3.mouse(this);\n const iRight = d3.bisect(timeScales, mouse[0]);\n const iLeft = iRight > 0 ? iRight - 1 : iRight;\n const diLeft = values[iLeft];\n const diRight = values[iRight];\n\n // get the closest x-axis position\n let iClosest: number;\n let time: Date;\n\n const dateMouseStr: any = x.invert(mouse[0]);\n const dateMouse = Date.parse(dateMouseStr);\n\n if (diRight !== undefined && dateMouse - Date.parse(diLeft[0]) > Date.parse(diRight[0]) - dateMouse) {\n time = new Date(Date.parse(diRight[0]));\n iClosest = iRight;\n } else {\n time = new Date(Date.parse(diLeft[0]));\n iClosest = iLeft;\n }\n\n // move vertical line along the x-axis with cursor\n focus.attr(\"transform\", \"translate(\" + x(time) + \",0)\");\n\n // Tooltop moves with cursor\n // display date and metric labels + values\n tooltip\n .html(() => {\n return c.tooltipTemplateTime(time);\n })\n .style(\"left\", c.tooltipX(tooltip, tooltipID))\n .style(\"top\", `${d3.event.layerY + 8}px`)\n .selectAll()\n .data(valuesTooltip)\n .enter()\n .append(\"div\")\n .attr(\"class\", \"tooltip-metric\")\n .html((d: any, metricIdx: number) => {\n return c.tooltipTemplateMetric(chartID, metricIdx, d, iClosest);\n });\n\n // Add circles to chart points on hover\n g.selectAll(\".circles circle\")\n // position on x-axis\n .attr(\"cx\", function() {\n return x(time);\n })\n // position on y-axis\n .attr(\"cy\", function(d: any) {\n if (c.isStacked(chartID)) {\n // If real value is close to zero, set position to zero,\n // because circles will be too close together.\n // Otherwise set position to stacked value\n const yPos = d[iClosest].data[d.key] < 0.01 ? 0 : d[iClosest][1];\n\n // Stacked charts only have a left y-axis\n return yLeft(yPos);\n } else {\n const yCircle = c.yAxisIs(chartID, Axis.LEFT, d.metric) ? yLeft : yRight;\n return yCircle(d.values[iClosest].value);\n }\n })\n // color circle stroke\n .style(\"stroke\", function(d: any, metricIdx: number) {\n return COLOR_PALETTE_DARKER[metricIdx];\n })\n .style(\"stroke-width\", 2);\n }\n\n // Add rectangle to detect mouse events\n svg\n .append(\"rect\")\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\")\n .attr(\"class\", \"overlay\")\n .attr(\"width\", widthChart)\n .attr(\"height\", heightChart)\n .on(\"mouseout\", () => {\n return c.mouseout(focus, tooltip, g);\n })\n .on(\"mousemove\", mousemove);\n } // render chart\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseChart.vue?vue&type=template&id=b4878ddc&\"\nimport script from \"./BaseChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BaseChart.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertItem.vue?vue&type=style&index=0&id=cbbcad10&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertItem.vue?vue&type=style&index=0&id=cbbcad10&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DonutChart.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DonutChart.vue?vue&type=style&index=0&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixItem.vue?vue&type=style&index=0&id=32817d3a&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixItem.vue?vue&type=style&index=0&id=32817d3a&scoped=true&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsCredentials.vue?vue&type=style&index=0&id=360fb20a&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsCredentials.vue?vue&type=style&index=0&id=360fb20a&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PromoBanner.vue?vue&type=style&index=0&id=1d5ff8ee&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PromoBanner.vue?vue&type=style&index=0&id=1d5ff8ee&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"actions\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class BaseActions extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseActions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseActions.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseActions.vue?vue&type=template&id=1fe6fc68&scoped=true&\"\nimport script from \"./BaseActions.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseActions.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BaseActions.vue?vue&type=style&index=0&id=1fe6fc68&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1fe6fc68\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertForm.vue?vue&type=style&index=0&id=f116fa64&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertForm.vue?vue&type=style&index=0&id=f116fa64&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/logo-large.6ab2440d.png\";","var map = {\n\t\"./banner-large-cachesight.png\": \"3688\",\n\t\"./banner-large.png\": \"ed63\",\n\t\"./banner-small.png\": \"c367\",\n\t\"./logo-large.png\": \"116c\",\n\t\"./logo-medium.png\": \"d31b\",\n\t\"./logo-small.png\": \"c85a\",\n\t\"./logo-xlarge.png\": \"2ad4\",\n\t\"./logo.svg\": \"9b19\",\n\t\"./preview-consulting.png\": \"5370\",\n\t\"./preview-keys.png\": \"3975\",\n\t\"./preview-logs.png\": \"40b4\",\n\t\"./preview-prefixes.png\": \"625a\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"1771\";","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesPopular.vue?vue&type=style&index=0&id=bf1555f4&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesPopular.vue?vue&type=style&index=0&id=bf1555f4&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLogo.vue?vue&type=style&index=0&id=6d5fd260&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLogo.vue?vue&type=style&index=0&id=6d5fd260&scoped=true&lang=scss&\"","export type StatsState = {\n stats: Stats;\n};\n\nexport type Stats = {\n [propName: string]: number;\n limit_maxbytes: number;\n bytes: number;\n get_hits: number;\n get_misses: number;\n cmd_flush: number;\n cmd_set: number;\n curr_connections: number;\n curr_items: number;\n evictions: number;\n total_connections: number;\n delete_hits: number;\n delete_misses: number;\n incr_hits: number;\n incr_misses: number;\n decr_hits: number;\n decr_misses: number;\n cas_hits: number;\n cas_misses: number;\n touch_hits: number;\n touch_misses: number;\n};\n\nexport enum StatType {\n PROCESSED = \"PROCESSED\",\n SLAB = \"SLAB\",\n PREFIX = \"PREFIX\",\n COMPOUND = \"COMPOUND\",\n KEY = \"KEY\",\n WATCHER = \"WATCHER\",\n RAW_INFLUXDB = \"RAW_INFLUXDB\",\n}\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewIssues.vue?vue&type=style&index=0&id=ce9eb4fe&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewIssues.vue?vue&type=style&index=0&id=ce9eb4fe&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseTooltip.vue?vue&type=style&index=0&id=49e47003&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseTooltip.vue?vue&type=style&index=0&id=49e47003&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CacheSidebar.vue?vue&type=style&index=0&id=314c6477&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CacheSidebar.vue?vue&type=style&index=0&id=314c6477&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertInfo.vue?vue&type=style&index=0&id=dfa21eea&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertInfo.vue?vue&type=style&index=0&id=dfa21eea&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesView.vue?vue&type=style&index=0&id=aa0efe4c&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesView.vue?vue&type=style&index=0&id=aa0efe4c&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyStats.vue?vue&type=style&index=0&id=e0c6bc22&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyStats.vue?vue&type=style&index=0&id=e0c6bc22&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseNoDataDefault.vue?vue&type=style&index=0&id=2aefff10&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseNoDataDefault.vue?vue&type=style&index=0&id=2aefff10&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=8d990f70&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=8d990f70&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/logo-xlarge.68a649d3.png\";","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginView.vue?vue&type=style&index=0&id=0b863fb4&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginView.vue?vue&type=style&index=0&id=0b863fb4&scoped=true&lang=scss&\"","import { TimeRange } from \"@/types/time-range\";\n\nexport function bytesToSize(bytes: number): string {\n const sizes: string[] = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"];\n if (bytes === 0) {\n return \"0MB\";\n }\n const i: number = Math.floor(Math.log(bytes) / Math.log(1024));\n if (i === 0) {\n return `${bytes}${sizes[i]}`;\n }\n // if GB or greater\n let decimalPoints = 0;\n if (i > 2) {\n decimalPoints = 1;\n }\n return `${(bytes / 1024 ** i).toFixed(decimalPoints)}${sizes[i]}`;\n}\n\nexport function bytesToPlan(bytes: number): string {\n const MB: number = bytes / (1024 * 1024);\n if (MB >= 1000) {\n const GB: number = MB / 1000;\n return `${GB.toFixed(1)}GB`;\n }\n return `${MB}MB`;\n}\n\nexport function getWholeFromPrefix(number: number, factor: number) {\n return number * 10 ** factor;\n}\n\nexport function constToTitle(value: string): string {\n return value.replace(/_/gi, \" \").toLowerCase();\n}\n\nexport function getTimeRange(timeRangeState: TimeRange, timeRange?: TimeRange) {\n const range = timeRange ? timeRange : timeRangeState;\n\n const endTime = new Date();\n const startTime = new Date();\n\n switch (range) {\n case TimeRange.LAST_HOUR:\n startTime.setMinutes(endTime.getMinutes() - 71);\n break;\n case TimeRange.LAST_DAY:\n // 1 day, 11 minutes ago\n startTime.setDate(endTime.getDate() - 1);\n startTime.setMinutes(endTime.getMinutes() - 11);\n break;\n case TimeRange.LAST_WEEK:\n startTime.setDate(endTime.getDate() - 7);\n break;\n case TimeRange.LAST_MONTH:\n startTime.setDate(endTime.getDate() - 30);\n break;\n }\n\n return { startTime, endTime };\n}\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsAdd.vue?vue&type=style&index=0&id=1be5b0aa&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsAdd.vue?vue&type=style&index=0&id=1be5b0aa&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNotificationBar.vue?vue&type=style&index=0&id=718db0f0&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNotificationBar.vue?vue&type=style&index=0&id=718db0f0&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/banner-large-cachesight.e06be210.png\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:(\"stats-wrap-\" + (_vm.stats.length))},_vm._l((_vm.stats),function(stat,name,index){return _c('div',{key:index,staticClass:\"stat\"},[_c('div',{staticClass:\"stat-value\",class:stat.small ? 'stat-value-small' : ''},[(stat.value === 0 || stat.value)?[_vm._v(_vm._s(_vm._f(\"number\")(stat.value)))]:(stat.value === false)?_c('BaseLoading',{attrs:{\"ellipsisOnly\":true}}):[_vm._v(\"-\")]],2),_c('div',{staticClass:\"stat-label\",class:stat.iconBlock ? 'stat-label-narrow' : ''},[_vm._v(\" \"+_vm._s(stat.label)+\" \"),(stat.icon)?_c('BaseIcon',{staticClass:\"stat-icon\",class:stat.iconBlock ? 'block-icon' : '',attrs:{\"icon\":stat.icon,\"iconToolTip\":stat.iconToolTip,\"issueType\":stat.iconIssueType}}):_vm._e()],1)])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { NotificationType } from \"@/types/notification\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class BaseStats extends Vue {\n // Takes an array of up to three stats\n @Prop({ required: true })\n stats!: {\n value: number | string | null | false;\n label: string;\n labelNarrow?: boolean;\n icon?: string;\n iconToolTip?: string;\n iconBlock?: boolean;\n iconIssueType?: NotificationType;\n small?: boolean;\n }[];\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseStats.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseStats.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseStats.vue?vue&type=template&id=3b92bda1&scoped=true&\"\nimport script from \"./BaseStats.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseStats.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BaseStats.vue?vue&type=style&index=0&id=3b92bda1&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3b92bda1\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopularKeysTabs.vue?vue&type=style&index=0&id=1cb5e20e&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopularKeysTabs.vue?vue&type=style&index=0&id=1cb5e20e&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/preview-keys.2cb974f8.png\";","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormInputGroup.vue?vue&type=style&index=0&id=a8f1fdf4&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormInputGroup.vue?vue&type=style&index=0&id=a8f1fdf4&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('table',{staticClass:\"table\",class:[_vm.colsClass, _vm.slimClass]},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class BaseTable extends Vue {\n @Prop({ required: false, default: \"2\" })\n cols!: \"1\" | \"credentials\" | \"popular-prefixes\";\n\n @Prop({ required: false, default: false })\n slim!: boolean;\n\n @Prop({ required: false, default: false })\n code!: boolean;\n\n get colsClass() {\n return `cols-${this.cols}`;\n }\n\n get slimClass() {\n return this.slim ? \"slim\" : \"\";\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseTable.vue?vue&type=template&id=0a6f5f5e&\"\nimport script from \"./BaseTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BaseTable.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StyleGuideView.vue?vue&type=style&index=0&id=09963eb2&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StyleGuideView.vue?vue&type=style&index=0&id=09963eb2&scoped=true&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=0&id=544fb4a2&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=0&id=544fb4a2&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/preview-logs.1c255a3c.png\";","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormInput.vue?vue&type=style&index=0&id=769f4d90&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormInput.vue?vue&type=style&index=0&id=769f4d90&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormSelect.vue?vue&type=style&index=0&id=287c62ba&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormSelect.vue?vue&type=style&index=0&id=287c62ba&scoped=true&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutFullWidth.vue?vue&type=style&index=0&id=74bba6ac&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutFullWidth.vue?vue&type=style&index=0&id=74bba6ac&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixStatsTabs.vue?vue&type=style&index=0&id=1e92524e&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixStatsTabs.vue?vue&type=style&index=0&id=1e92524e&scoped=true&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppHeader.vue?vue&type=style&index=0&id=1d7e62df&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppHeader.vue?vue&type=style&index=0&id=1d7e62df&scoped=true&lang=scss&\"","export enum Axis {\n LEFT = \"left\",\n RIGHT = \"right\",\n BOTH = \"both\",\n}\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseBadge.vue?vue&type=style&index=0&id=5ae5b57a&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseBadge.vue?vue&type=style&index=0&id=5ae5b57a&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/preview-consulting.6d5ebda5.png\";","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConsultingView.vue?vue&type=style&index=0&id=2373a5ac&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConsultingView.vue?vue&type=style&index=0&id=2373a5ac&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"loading\",class:_vm.spacing},[_c('span',{class:_vm.ellipsisOnlyClass},[_vm._v(\"Loading\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class BaseLoading extends Vue {\n @Prop({ required: false, default: \"\" })\n spacing!: \"top\" | \"bottom\";\n\n @Prop({ required: false, default: false })\n ellipsisOnly!: boolean;\n\n get ellipsisOnlyClass() {\n return this.ellipsisOnly ? \"screen-reader-text\" : \"\";\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseLoading.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseLoading.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseLoading.vue?vue&type=template&id=2d1ccbc4&scoped=true&\"\nimport script from \"./BaseLoading.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseLoading.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BaseLoading.vue?vue&type=style&index=0&id=2d1ccbc4&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2d1ccbc4\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewView.vue?vue&type=style&index=0&id=7300a5a5&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewView.vue?vue&type=style&index=0&id=7300a5a5&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormCheckbox.vue?vue&type=style&index=0&id=0f3c7c2a&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormCheckbox.vue?vue&type=style&index=0&id=0f3c7c2a&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/preview-prefixes.1114c2be.png\";","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixItemStats.vue?vue&type=style&index=0&id=a5bdaf1e&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixItemStats.vue?vue&type=style&index=0&id=a5bdaf1e&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"notice\",class:_vm.type,attrs:{\"role\":\"alert\"}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class BaseNotice extends Vue {\n @Prop({ required: false, default: \"\" })\n type!: string;\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseNotice.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseNotice.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseNotice.vue?vue&type=template&id=7b4e2210&scoped=true&\"\nimport script from \"./BaseNotice.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseNotice.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b4e2210\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutSidebar.vue?vue&type=style&index=0&id=10031bf9&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutSidebar.vue?vue&type=style&index=0&id=10031bf9&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyName.vue?vue&type=style&index=0&id=b372f4e6&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyName.vue?vue&type=style&index=0&id=b372f4e6&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsDeliveryConfigForm.vue?vue&type=style&index=0&id=7b8ef557&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsDeliveryConfigForm.vue?vue&type=style&index=0&id=7b8ef557&scoped=true&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=f45cd6de&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=f45cd6de&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNotificationContainer.vue?vue&type=style&index=0&id=c0de6420&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNotificationContainer.vue?vue&type=style&index=0&id=c0de6420&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{ref:\"tooltip\",staticClass:\"button-tooltip\",class:_vm.positionClass,attrs:{\"role\":\"tooltip\"}},[_c('div',{staticClass:\"inner\"},[_vm._t(\"default\")],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class BaseTooltip extends Vue {\n mounted() {\n this.position();\n }\n\n @Prop({ required: false, default: \"\" })\n fixPosition!: \"left\" | \"right\";\n\n positionClass = \"\"; // center tooltip by default\n\n // Position the tooltip so it never bleeds off the screen\n position() {\n if (this.fixPosition) {\n this.positionClass = this.fixPosition;\n } else {\n const tooltip: any = this.$refs.tooltip;\n const rect = tooltip.getBoundingClientRect();\n const space = 16; // corresponds to 1em/$space sass var\n\n // Add extra space so tooltip position switches before touching window boundary\n const limitRight = rect.x + rect.width + space;\n const limitLeft = rect.x - space;\n\n if (limitLeft < 0) {\n this.positionClass = \"left\";\n } else if (limitRight > window.innerWidth) {\n this.positionClass = \"right\";\n }\n // else do nothing, default center align\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseTooltip.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseTooltip.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseTooltip.vue?vue&type=template&id=49e47003&scoped=true&\"\nimport script from \"./BaseTooltip.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseTooltip.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BaseTooltip.vue?vue&type=style&index=0&id=49e47003&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"49e47003\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon-wrap\",class:_vm.iconWrapPadRight},[(_vm.screenReaderLabel)?_c('span',{staticClass:\"screen-reader-text\"},[_vm._v(\" \"+_vm._s(_vm.screenReaderLabel)+\" \")]):_vm._e(),_c('i',_vm._b({staticClass:\"fa\",class:[_vm.iconName, _vm.iconSize, _vm.iconSpin, _vm.iconFixedWidth, _vm.iconAlign, _vm.issueType],attrs:{\"aria-hidden\":\"true\",\"focusable\":\"false\",\"role\":\"img\"},on:{\"mouseover\":function($event){_vm.hover = true},\"mouseleave\":function($event){_vm.hover = false}}},'i',_vm.$attrs,false)),(_vm.iconToolTip && _vm.hover)?_c('BaseTooltip',[_vm._v(_vm._s(_vm.iconToolTip))]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { NotificationType } from \"@/types/notification\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component({ inheritAttrs: false })\nexport default class BaseIcon extends Vue {\n @Prop({ required: true })\n icon!: string;\n\n @Prop({ required: false, default: \"\" })\n size!: \"2x\" | \"3x\" | \"4x\" | \"5x\";\n\n @Prop({ required: false, default: \"\" })\n align!: \"left\" | \"right\" | \"\";\n\n @Prop({ required: false, default: false })\n fixedWidth!: boolean;\n\n @Prop({ required: false, default: false })\n spin!: boolean;\n\n @Prop({ required: false, default: \"\" })\n screenReaderLabel!: string;\n\n @Prop({ required: false, default: \"\" })\n iconToolTip!: string;\n\n @Prop({ required: false, default: false })\n padRight!: boolean;\n\n @Prop({ required: false, default: NotificationType.DEFAULT })\n issueType!: NotificationType;\n\n hover = false;\n\n get iconName() {\n return `fa-${this.icon}`;\n }\n\n get iconSize() {\n return this.size ? `fa-${this.size}` : \"\";\n }\n\n get iconSpin() {\n return this.spin ? \"fa-spin\" : \"\";\n }\n\n get iconFixedWidth() {\n return this.fixedWidth ? \"fa-fw\" : \"\";\n }\n\n get iconAlign() {\n return this.align === \"\" ? \"\" : `align-${this.align}`;\n }\n\n get iconWrapPadRight() {\n return this.padRight ? \"pad-right\" : \"\";\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseIcon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseIcon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseIcon.vue?vue&type=template&id=df8d3f52&scoped=true&\"\nimport script from \"./BaseIcon.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseIcon.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BaseIcon.vue?vue&type=style&index=0&id=df8d3f52&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"df8d3f52\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeRangeControls.vue?vue&type=style&index=0&id=614ee548&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeRangeControls.vue?vue&type=style&index=0&id=614ee548&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseTable.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseTable.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"button-wrap\"},[_c('button',_vm._g(_vm._b({class:[_vm.defaultButtonClass, _vm.buttonClass, _vm.disabledClass, _vm.activeClass, _vm.noBorderClass],on:{\"mouseover\":function($event){_vm.hover = true},\"mouseleave\":function($event){_vm.hover = false}}},'button',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\")],2),(_vm.tooltipTitle && _vm.hover)?_c('BaseTooltip',{attrs:{\"fixPosition\":_vm.tooltipPosition}},[_vm._v(\" \"+_vm._s(_vm.tooltipTitle)+\" \")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component({ inheritAttrs: false })\nexport default class BaseButton extends Vue {\n @Prop({ required: false })\n isActive!: string;\n\n @Prop({ required: false, default: \"button\" })\n defaultButtonClass!: string;\n\n @Prop({ required: false, default: \"\" })\n buttonClass!: string;\n\n @Prop({ required: false, default: \"\" })\n tooltipTitle!: string;\n\n @Prop({ required: false, default: \"\" })\n tooltipPosition!: \"left\" | \"right\";\n\n @Prop({ required: false, default: false })\n noBorder!: boolean;\n\n hover = false;\n\n get activeClass() {\n return this.isActive ? \"active\" : \"\";\n }\n\n get disabledClass() {\n return this.$attrs[\"disabled\"] ? \"disabled\" : \"\";\n }\n\n get noBorderClass() {\n return this.noBorder ? \"no-border\" : \"\";\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseButton.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseButton.vue?vue&type=template&id=7cd1aae1&scoped=true&\"\nimport script from \"./BaseButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseButton.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BaseButton.vue?vue&type=style&index=0&id=7cd1aae1&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7cd1aae1\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseCard.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseCard.vue?vue&type=style&index=0&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixLastStats.vue?vue&type=style&index=0&id=70fa327f&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixLastStats.vue?vue&type=style&index=0&id=70fa327f&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavPrimary.vue?vue&type=style&index=0&id=1a22eb96&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavPrimary.vue?vue&type=style&index=0&id=1a22eb96&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadingInline.vue?vue&type=style&index=0&id=6b7d20e6&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadingInline.vue?vue&type=style&index=0&id=6b7d20e6&scoped=true&lang=scss&\"","export enum Unit {\n BYTES = \"B\",\n SECONDS = \"s\",\n PER_SECOND = \"/s\", // should not be used with D3 si tick formatting, to avoid confusion. e.g. 900m/s, instead of 0.9/s\n BYTES_PER_SECOND = \"B/s\",\n PERCENT = \"%\",\n}\n","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewView.vue?vue&type=style&index=0&id=6617b750&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewView.vue?vue&type=style&index=0&id=6617b750&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BarChart.vue?vue&type=style&index=0&id=7782a13e&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BarChart.vue?vue&type=style&index=0&id=7782a13e&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseButton',{staticClass:\"button-round\",attrs:{\"buttonClass\":\"button-primary\",\"tooltipTitle\":_vm.tooltipTitle},on:{\"click\":_vm.refresh}},[_c('BaseIcon',{attrs:{\"icon\":\"refresh\",\"spin\":_vm.isRefreshing}}),_vm._v(\" \"+_vm._s(_vm.title)+\" \")],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class BaseButtonRefresh extends Vue {\n @Prop({ required: true })\n action!: string;\n\n @Prop({ required: true })\n context!: string;\n\n title = \"Refresh\";\n\n tooltipTitle = `Refresh ${this.context}`;\n\n isRefreshing = false;\n\n refresh() {\n this.title = \"Refreshing\";\n this.isRefreshing = true;\n this.$ga.button(this.tooltipTitle);\n const invalidate = true;\n this.$store.dispatch(this.action, invalidate).then(() => {\n this.title = \"Refreshed!\";\n this.isRefreshing = false;\n setTimeout(() => {\n this.title = \"Refresh\";\n }, 1000);\n });\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseButtonRefresh.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseButtonRefresh.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseButtonRefresh.vue?vue&type=template&id=6d476542&scoped=true&\"\nimport script from \"./BaseButtonRefresh.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseButtonRefresh.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d476542\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarMobileToggle.vue?vue&type=style&index=0&id=c0127908&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarMobileToggle.vue?vue&type=style&index=0&id=c0127908&scoped=true&lang=scss&\"","import { Unit } from \"@/types/unit\";\nimport { StatType } from \"@/types/stats\";\n\n// See https://github.com/d3/d3-format\nexport const TICK_FORMATS = {\n percentage: \".0%\", // multiplies by 100, adds % sign\n comma: \",\", // comma separate thousands\n si: \"~s\",\n};\n\nexport const CHART_CONFIG: { [propName: string]: any } = {\n // DEBUG MODE - SLAB STATS\n slabSize: {\n title: \"Slab Sizes\",\n statType: StatType.SLAB,\n stacked: true,\n axes: {\n left: {\n label: \"\",\n metrics: [\n \"bytes_64\",\n \"bytes_128\",\n \"bytes_256\",\n \"bytes_512\",\n \"bytes_1024\",\n \"bytes_2048\",\n \"bytes_4096\",\n \"bytes_8129\",\n \"bytes_16384\",\n \"bytes_32768\",\n \"bytes_65536\",\n \"bytes_131072\",\n \"bytes_262144\",\n \"bytes_524288\",\n \"bytes_1048576\",\n ],\n format: TICK_FORMATS.si,\n unit: Unit.BYTES,\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n slabItems: {\n title: \"Slab Items\",\n statType: StatType.SLAB,\n stacked: true,\n axes: {\n left: {\n label: \"\",\n metrics: [\n \"items_64\",\n \"items_128\",\n \"items_256\",\n \"items_512\",\n \"items_1024\",\n \"items_2048\",\n \"items_4096\",\n \"items_8129\",\n \"items_16384\",\n \"items_32768\",\n \"items_65536\",\n \"items_131072\",\n \"items_262144\",\n \"items_524288\",\n \"items_1048576\",\n ],\n format: TICK_FORMATS.si,\n unit: \"\",\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n slabEvictionRate: {\n title: \"Slab Eviction Rate\",\n statType: StatType.SLAB,\n stacked: true,\n axes: {\n left: {\n label: \"\",\n metrics: [\n \"eviction_rate_64\",\n \"eviction_rate_128\",\n \"eviction_rate_256\",\n \"eviction_rate_512\",\n \"eviction_rate_1024\",\n \"eviction_rate_2048\",\n \"eviction_rate_4096\",\n \"eviction_rate_8129\",\n \"eviction_rate_16384\",\n \"eviction_rate_32768\",\n \"eviction_rate_65536\",\n \"eviction_rate_131072\",\n \"eviction_rate_262144\",\n \"eviction_rate_524288\",\n \"eviction_rate_1048576\",\n ],\n format: TICK_FORMATS.comma,\n unit: Unit.PER_SECOND,\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n slabEvictionUnexpiredRate: {\n title: \"Slab Eviction Unexpired Rate\",\n statType: StatType.SLAB,\n stacked: true,\n axes: {\n left: {\n label: \"\",\n metrics: [\n \"eviction_unexpired_rate_64\",\n \"eviction_unexpired_rate_128\",\n \"eviction_unexpired_rate_256\",\n \"eviction_unexpired_rate_512\",\n \"eviction_unexpired_rate_1024\",\n \"eviction_unexpired_rate_2048\",\n \"eviction_unexpired_rate_4096\",\n \"eviction_unexpired_rate_8129\",\n \"eviction_unexpired_rate_16384\",\n \"eviction_unexpired_rate_32768\",\n \"eviction_unexpired_rate_65536\",\n \"eviction_unexpired_rate_131072\",\n \"eviction_unexpired_rate_262144\",\n \"eviction_unexpired_rate_524288\",\n \"eviction_unexpired_rate_1048576\",\n ],\n format: TICK_FORMATS.comma,\n unit: Unit.PER_SECOND,\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n slabOutofmemory: {\n title: \"Slab Out of Memory\",\n statType: StatType.SLAB,\n stacked: true,\n axes: {\n left: {\n label: \"\",\n metrics: [\n \"outofmemory_64\",\n \"outofmemory_128\",\n \"outofmemory_256\",\n \"outofmemory_512\",\n \"outofmemory_1024\",\n \"outofmemory_2048\",\n \"outofmemory_4096\",\n \"outofmemory_8129\",\n \"outofmemory_16384\",\n \"outofmemory_32768\",\n \"outofmemory_65536\",\n \"outofmemory_131072\",\n \"outofmemory_262144\",\n \"outofmemory_524288\",\n \"outofmemory_1048576\",\n ],\n format: TICK_FORMATS.si,\n unit: \"\",\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n // DEBUG MODE - PREFIX STATS\n prefixSize: {\n title: \"Recently Touched Memory\",\n statType: StatType.PREFIX,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\"prefix_total_size\", \"compound_total_size\"],\n format: TICK_FORMATS.si,\n unit: Unit.BYTES,\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n prefixSizePercent: {\n title: \"Fraction of Recently Touched Memory\",\n statType: StatType.PREFIX,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\"prefix_over_compound_total_size\"],\n format: TICK_FORMATS.percentage,\n unit: \"\",\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n prefixHitRate: {\n title: \"Hit Rate\",\n statType: StatType.PREFIX,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\"prefix_hit_rate\", \"hit_rate\"],\n format: TICK_FORMATS.percentage,\n unit: \"\",\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n prefixHitsMissesMutationsRate: {\n title: \"Prefix Activity\",\n statType: StatType.PREFIX,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\"prefix_total_hits_rate\", \"prefix_total_misses_rate\", \"prefix_total_mutations_rate\"],\n format: TICK_FORMATS.comma,\n unit: Unit.PER_SECOND,\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n prefixHitsMissesMutations: {\n title: \"Prefix Request Fraction\",\n statType: StatType.PREFIX,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\n \"prefix_over_compound_total_hits_rate\",\n \"prefix_over_compound_total_misses_rate\",\n \"prefix_over_compound_total_mutations_rate\",\n ],\n format: TICK_FORMATS.percentage,\n unit: \"\",\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n prefixNumKeys: {\n title: \"Recently Touched Items\",\n statType: StatType.PREFIX,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\"prefix_num_keys\", \"compound_num_keys\"],\n format: TICK_FORMATS.si,\n unit: \"\",\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n prefixNumKeysPercent: {\n title: \"Fraction of Recently Touched Items\",\n statType: StatType.PREFIX,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\"prefix_over_compound_num_keys\"],\n format: TICK_FORMATS.percentage,\n unit: \"\",\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n prefixRelativeActivity: {\n title: \"Prefix Weight\",\n statType: StatType.PREFIX,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\"prefix_over_compound_requests\", \"prefix_over_compound_num_keys\", \"prefix_over_compound_total_size\"],\n format: TICK_FORMATS.percentage,\n unit: \"\",\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n // DEBUG MODE - COMPOUND STATS\n compoundSizeAbsolute: {\n title: \"Compound Size\",\n statType: StatType.COMPOUND,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\"compound_total_size\", \"bytes\"],\n format: TICK_FORMATS.si,\n unit: Unit.BYTES,\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n compoundNumKeys: {\n title: \"Compound num_keys\",\n statType: StatType.COMPOUND,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\"compound_num_keys\", \"items\"],\n format: TICK_FORMATS.si,\n unit: \"\",\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n keyHitsMissesMutations: {\n title: \"Key Activity\",\n statType: StatType.KEY,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\"key_mutation_count_per_sec\", \"key_hit_count_per_sec\", \"key_miss_count_per_sec\"],\n format: TICK_FORMATS.comma,\n unit: Unit.PER_SECOND,\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n // ANALYTICS\n memoryAndHitRate: {\n title: \"Memory & Hit Rate\",\n statType: StatType.PROCESSED,\n stacked: false,\n axes: {\n left: {\n label: \"Memory\",\n metrics: [\"bytes\", \"max_bytes\"],\n format: TICK_FORMATS.si,\n unit: Unit.BYTES,\n },\n right: {\n label: \"Hit Rate\",\n metrics: [\"hit_rate\"],\n format: TICK_FORMATS.percentage,\n unit: \"\",\n },\n },\n },\n requestRate: {\n title: \"Request Rate\",\n statType: StatType.PROCESSED,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\n \"request_rate\",\n \"get_rate\",\n \"set_rate\",\n \"delete_rate\",\n \"incr_rate\",\n \"decr_rate\",\n \"touch_rate\",\n \"flush_rate\",\n ],\n format: TICK_FORMATS.comma,\n unit: Unit.PER_SECOND,\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n requestDistribution: {\n title: \"Request Distribution\",\n statType: StatType.PROCESSED,\n stacked: true,\n axes: {\n left: {\n label: \"\",\n metrics: [\n \"get_fraction\",\n \"set_fraction\",\n \"delete_fraction\",\n \"incr_fraction\",\n \"decr_fraction\",\n \"touch_fraction\",\n \"flush_fraction\",\n ],\n format: TICK_FORMATS.percentage,\n unit: \"\",\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n hitRate: {\n title: \"Hit Rate\",\n statType: StatType.PROCESSED,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\"hit_rate\", \"get_hit_rate\", \"delete_hit_rate\", \"incr_hit_rate\", \"decr_hit_rate\", \"touch_hit_rate\"],\n format: TICK_FORMATS.percentage,\n unit: \"\",\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n items: {\n title: \"Stored Items\",\n statType: StatType.PROCESSED,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\"items\"],\n format: TICK_FORMATS.si,\n unit: \"\",\n },\n right: {\n label: \"\",\n metrics: [\"eviction_rate\", \"get_expired_rate\"],\n format: TICK_FORMATS.comma,\n unit: Unit.PER_SECOND,\n },\n },\n },\n dataTraffic: {\n title: \"Data Traffic\",\n statType: StatType.PROCESSED,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\"bytes_read_rate\", \"bytes_write_rate\"],\n format: TICK_FORMATS.si,\n unit: Unit.BYTES_PER_SECOND,\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n connections: {\n title: \"Connections\",\n statType: StatType.PROCESSED,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\"connections\"],\n format: TICK_FORMATS.comma,\n unit: \"\",\n },\n right: {\n label: \"\",\n metrics: [\"connection_rate\"],\n format: TICK_FORMATS.comma,\n unit: Unit.PER_SECOND,\n },\n },\n },\n memory: {\n title: \"Memory\",\n statType: StatType.PROCESSED,\n stacked: false,\n axes: {\n left: {\n label: \"\",\n metrics: [\"bytes\", \"max_bytes\"],\n format: TICK_FORMATS.si,\n unit: Unit.BYTES,\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n watcherStats: {\n title: \"Watcher Stats\",\n statType: StatType.WATCHER,\n stacked: false,\n axes: {\n left: {\n label: \"# Logs\",\n metrics: [\"skipped\", \"dropped\", \"processed\"],\n format: TICK_FORMATS.si,\n unit: \"\",\n },\n right: {\n label: \"Drift\",\n metrics: [\"drift\", \"restarts\"],\n format: TICK_FORMATS.si,\n unit: \"\",\n },\n },\n },\n watcherStatsFractions: {\n title: \"Watcher Stats Fractions\",\n statType: StatType.WATCHER,\n stacked: true,\n axes: {\n left: {\n label: \"\",\n metrics: [\"skipped_fraction\", \"dropped_fraction\", \"processed_fraction\"],\n format: TICK_FORMATS.percentage,\n unit: \"\",\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n cpuIdle: {\n title: \"CPU Idle\",\n statType: StatType.RAW_INFLUXDB,\n stacked: false,\n axes: {\n left: {\n label: \"CPU Idle\",\n metrics: [\"idle\", \"user\", \"system\", \"softirq\", \"steal\", \"nice\", \"irq\", \"iowait\", \"guest\", \"guest_nice\"],\n format: TICK_FORMATS.si, // values returned as % of 100, not of 1, so do not use TICK_FORMATS.percentage, which x100's values.\n unit: Unit.PERCENT,\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n memFree: {\n title: \"Free Memory\",\n statType: StatType.RAW_INFLUXDB,\n stacked: false,\n axes: {\n left: {\n label: \"Free Memory\",\n metrics: [\"total\", \"free\"],\n format: TICK_FORMATS.si,\n unit: Unit.BYTES,\n },\n right: {\n label: \"\",\n metrics: [],\n format: \"\",\n unit: \"\",\n },\n },\n },\n};\n","import { CHART_CONFIG, TICK_FORMATS } from \"@/config/chart\";\nimport { STATS_CONFIG } from \"@/config/series\";\nimport { Axis } from \"@/types/chart\";\nimport { SeriesPoint } from \"@/types/common\";\nimport { COLOR_PALETTE } from \"@/colors\";\nimport { getWholeFromPrefix } from \"@/utils/conversion\";\nimport * as d3 from \"d3\";\nimport _ from \"lodash\";\nimport { StatType } from \"@/types/stats\";\n\nexport function getConfig(chartID: string, axis: Axis) {\n return CHART_CONFIG[chartID].axes[axis];\n}\n\nexport function getAxisByMetric(chartID: string, metric: string): Axis {\n return _.includes(getConfig(chartID, Axis.RIGHT).metrics, metric) ? Axis.RIGHT : Axis.LEFT;\n}\n\nexport function getMetrics(chartID: string): string[] {\n const metricsLeft = getConfig(chartID, Axis.LEFT).metrics;\n const metricsRight = getConfig(chartID, Axis.RIGHT).metrics;\n return [...metricsLeft, ...metricsRight];\n}\n\nexport function getChartIDs(): string[] {\n return Object.keys(CHART_CONFIG);\n}\n\nexport function getChartIDsFor(statType: StatType): string[] {\n return getChartIDs().filter(chartID => CHART_CONFIG[chartID].statType === statType);\n}\n\nexport function getAllProcessedStatsNames(): string[] {\n const allMetrics: any[] = [];\n\n getChartIDsFor(StatType.PROCESSED).forEach(chartID => {\n const metrics = getMetrics(chartID);\n if (metrics.length > 0) {\n // Only get unique stats\n metrics.filter(metric => {\n if (!_.includes(allMetrics, metric)) {\n allMetrics.push(metric);\n }\n });\n }\n });\n\n return allMetrics;\n}\n\nfunction findMaxByMetric(values: number[][], columnIndex: number): number {\n const maxRow = _.maxBy(values, (x: any[]) => x[columnIndex]);\n if (maxRow === undefined) {\n return 0;\n }\n // if max value is zero, set a default\n // so the chart shows an arbitrary y-axis scale\n // so the plots bottom align, and don't vertical center align\n if (maxRow[columnIndex] === 0) {\n return 1;\n } else {\n return maxRow[columnIndex];\n }\n}\n\nfunction addLeadingZero(n: number) {\n return n <= 9 ? \"0\" + n : n;\n}\n\nfunction getTooltipFormat(chartID: string, metric: string, d: number): string {\n const axis = getAxisByMetric(chartID, metric);\n\n if (getConfig(chartID, axis).inputPrefix) {\n d = getWholeFromPrefix(d, getConfig(chartID, axis).inputPrefix);\n }\n\n const format = getConfig(chartID, axis).format;\n const unit = getConfig(chartID, axis).unit;\n\n if (format === TICK_FORMATS.si) {\n // SI prefixed, round to two points after decimal\n return d3.formatPrefix(\".2f\", d)(d) + unit;\n } else if (format === TICK_FORMATS.percentage) {\n // Whole percent\n return d3.format(format)(d);\n } else {\n // Round to two points after decimal, add thousands separator\n return d3.format(\",.2f\")(d) + unit;\n }\n}\n\nexport function yAxisIs(chartID: string, axis: Axis, metric: string): boolean {\n if (axis === Axis.BOTH) {\n return true;\n } else {\n return _.includes(getConfig(chartID, axis).metrics, metric);\n }\n}\n\nexport function getYMetrics(chartID: string, axis: Axis): string[] {\n return getConfig(chartID, axis).metrics;\n}\n\nexport function formatIsPercentage(chartID: string, axis: Axis): boolean {\n return getConfig(chartID, axis).format === TICK_FORMATS.percentage;\n}\n\nexport function getValuesIdxByMetric(metrics: string[], metric: string): number {\n return metrics.indexOf(metric);\n}\n\nexport function isStacked(chartID: string): boolean {\n return CHART_CONFIG[chartID].stacked;\n}\n\nfunction findMaxSummedPoint(values: SeriesPoint[]): number {\n let max = 0;\n for (const point of values) {\n // slice to remove time\n const sum = point.slice(1).reduce((accumulator: number, currentVal: number) => accumulator + currentVal);\n\n if (sum > max) {\n max = sum;\n }\n }\n return max;\n}\n\nfunction findMaxVal(chartID: string, axis: Axis, metrics: string[], values: SeriesPoint[]) {\n const max = _.max(\n metrics.map((metric: string, idx: number) => {\n if (yAxisIs(chartID, axis, metric)) {\n return findMaxByMetric(values, idx + 1);\n }\n }),\n );\n\n if (max === undefined) {\n return 1;\n }\n return max;\n}\n\nexport function findMaxForYAxis(chartID: string, axis: Axis, metrics: string[], values: SeriesPoint[]): number {\n // Axes showing percentages should always have max 100%\n if (formatIsPercentage(chartID, axis)) {\n return 1;\n }\n\n let max = 0;\n\n // if stacked\n if (axis == Axis.LEFT && isStacked(chartID)) {\n max = findMaxSummedPoint(values);\n } else {\n max = findMaxVal(chartID, axis, metrics, values);\n }\n\n // add 10% to max value to give breathing room\n // between chart top and max plot\n return max > 1 ? max * 1.1 : max;\n}\n\nexport function getMetricLabel(metricID: string): string {\n return STATS_CONFIG[metricID];\n}\n\nexport function hasAxisRight(chartID: string): boolean {\n return getYMetrics(chartID, Axis.RIGHT).length > 0;\n}\n\n// Prepare values for a percent based stacked area chart\nexport function stackValuesPercent(values: any[]): any[] {\n values.forEach(value => {\n // get total of values, so we know what 100% is\n // start at 1 to skip `time`\n let total = 0;\n for (let i = 1; i < value.length; i++) {\n total += value[i];\n }\n\n // do not divide by zero\n // no need to calculate as percent,\n // if total is 1 values are already fractions of 1\n if (total > 0 && total !== 1) {\n // set each value as percent of total\n // start at 1 to skip `time`\n for (let i = 1; i < value.length; i++) {\n value[i] = value[i] / total;\n }\n }\n });\n return values;\n}\n\nexport function getYLabel(chartID: string, axis: Axis): string {\n return getConfig(chartID, axis).label;\n}\n\nexport function getTickFormat(chartID: string, axis: Axis, d: any): string {\n if (getConfig(chartID, axis).inputPrefix) {\n d = getWholeFromPrefix(d, getConfig(chartID, axis).inputPrefix);\n }\n const format = getConfig(chartID, axis).format;\n const unit = getConfig(chartID, axis).unit;\n\n return d3.format(format)(d) + unit;\n}\n\nexport function getTitle(chartID: string): string {\n return CHART_CONFIG[chartID].title;\n}\n\nexport function tooltipTemplateTime(time: Date): string {\n const formattedTime =\n time.getFullYear() +\n \"-\" +\n addLeadingZero(time.getMonth() + 1) +\n \"-\" +\n addLeadingZero(time.getDate()) +\n \" \" +\n addLeadingZero(time.getHours()) +\n \":\" +\n addLeadingZero(time.getMinutes()) +\n \":\" +\n addLeadingZero(time.getSeconds());\n\n return `
${formattedTime}
`;\n}\n\nfunction tooltipTemplateHTML(label: string, color: string, value: string) {\n return `\n
\n
\n ${label}\n
\n ${value}`;\n}\n\nexport function tooltipTemplateMetric(chartID: string, metricIdx: number, d: any, iClosest: number): string {\n const color = COLOR_PALETTE[metricIdx];\n const label = getMetricLabel(d.metric);\n const formattedValue = getTooltipFormat(chartID, d.metric, d.values[iClosest].value);\n return tooltipTemplateHTML(label, color, formattedValue);\n}\n\nexport function tooltipTemplateStat(i: number, d: any, iClosest: number, format: string, unit: string): string {\n const color = COLOR_PALETTE[i];\n const label = d.metric;\n const value = d[iClosest].total_size;\n\n // Round to two points after decimal, add thousands separator\n let formattedValue = d3.format(\",.2f\")(value) + unit;\n if (format === TICK_FORMATS.si) {\n // SI prefixed, round to two points after decimal\n formattedValue = d3.formatPrefix(\".2f\", value)(value) + unit;\n } else if (format === TICK_FORMATS.percentage) {\n // Whole percent\n formattedValue = d3.format(format)(value);\n }\n\n return tooltipTemplateHTML(label, color, formattedValue);\n}\n\n// Position the tooltip so it never bleeds off the screen\nexport function tooltipX(tooltip: any, tooltipID: string) {\n const element = document.getElementById(tooltipID);\n const cursorX = d3.event.layerX;\n const space = 16; // corresponds to 1em/$space sass var\n\n if (element !== null) {\n const width = element.getBoundingClientRect().width;\n\n // Add extra space so tooltip position switches before touching window boundary\n const limit = d3.event.clientX + width + space * 2;\n\n // before the tooltip bleeds of the right side of the screen, reposition left of cursor\n if (limit > window.innerWidth) {\n tooltip.attr(\"class\", \"tooltip tooltip-left\");\n return `${cursorX}px`;\n }\n }\n tooltip.attr(\"class\", \"tooltip\");\n return `${cursorX + space * 2}px`; // default position right of cursor\n}\n\nexport function legendTemplate(label: string, idx: number): string {\n const color = COLOR_PALETTE[idx];\n return `\n
\n
\n ${label}\n
`;\n}\n\nexport function mouseout(focus: any, tooltip: any, g: any) {\n focus.style(\"display\", \"none\");\n tooltip.style(\"display\", \"none\");\n g.selectAll(\".circles circle\").style(\"display\", \"none\");\n}\n\nexport function setYAxis(\n chartID: string,\n axis: Axis,\n metrics: string[],\n values: any,\n g: any,\n x: any,\n y: any,\n legend: any,\n) {\n const legendList = legend.append(\"ul\").attr(\"class\", \"legend-list\");\n\n getYMetrics(chartID, axis).forEach((metric: string) => {\n // if the config metric is not found in the chart metrics don't add it to the chart.\n // e.g. when a per server chart for a MemCachier cache has a backend stat, do not show.\n // it should only be shown for an aggregate chart\n if (metrics.indexOf(metric) === -1) return;\n\n const idx = getValuesIdxByMetric(metrics, metric);\n\n // Add legend\n legendList.append(\"li\").html(() => {\n const label = getMetricLabel(metric);\n return legendTemplate(label, idx);\n });\n\n if (!isStacked(chartID)) {\n // Add lines between plots\n const line = d3\n .line()\n .defined(function(d) {\n return d[idx + 1] !== null;\n })\n .x((d: any) => x(new Date(d[0])))\n .y((d: any) => y(d[idx + 1]))\n .curve(d3.curveMonotoneX);\n\n // Add plot lines for metric\n g.append(\"path\")\n .datum(values)\n .attr(\"fill\", \"none\")\n .attr(\"stroke\", COLOR_PALETTE[idx])\n .attr(\"stroke-width\", 2)\n .attr(\"d\", line);\n }\n });\n}\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseLoading.vue?vue&type=style&index=0&id=2d1ccbc4&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseLoading.vue?vue&type=style&index=0&id=2d1ccbc4&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormInputError.vue?vue&type=style&index=0&id=3500c26b&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormInputError.vue?vue&type=style&index=0&id=3500c26b&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/logo.a23f1ea9.svg\";","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProcessedStatsChartDisabled.vue?vue&type=style&index=0&id=1b3b62be&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProcessedStatsChartDisabled.vue?vue&type=style&index=0&id=1b3b62be&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppBanner.vue?vue&type=style&index=0&id=25194cfc&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppBanner.vue?vue&type=style&index=0&id=25194cfc&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavSecondary.vue?vue&type=style&index=0&id=065651a6&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavSecondary.vue?vue&type=style&index=0&id=065651a6&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecentRequestsView.vue?vue&type=style&index=0&id=ce778e4c&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecentRequestsView.vue?vue&type=style&index=0&id=ce778e4c&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewConnections.vue?vue&type=style&index=0&id=99962144&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewConnections.vue?vue&type=style&index=0&id=99962144&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=style&index=0&id=54efbf68&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=style&index=0&id=54efbf68&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseActions.vue?vue&type=style&index=0&id=1fe6fc68&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseActions.vue?vue&type=style&index=0&id=1fe6fc68&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesAdd.vue?vue&type=style&index=0&id=16bea12e&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesAdd.vue?vue&type=style&index=0&id=16bea12e&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseIcon.vue?vue&type=style&index=0&id=df8d3f52&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseIcon.vue?vue&type=style&index=0&id=df8d3f52&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('AppHeader'),_c('AppNotificationContainer'),_c('div',{staticClass:\"container\"},[_c('RouterView'),_c('AppFooter',{attrs:{\"showPoweredBy\":true}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('AppBanner',[_c('AppLogo',{attrs:{\"filename\":\"banner-large.png\",\"alt\":\"MemCachier\",\"width\":\"600\",\"tagline\":\"Analytics powered by CacheSight\",\"maxWidth\":\"252px\"}}),_c('NavWrap',[(_vm.provider === 'direct')?_c('AppNav'):(_vm.provider === 'heroku')?_c('AppNavHeroku'):_vm._e(),(_vm.settings.label)?_c('div',{staticClass:\"app-label\"},[_c('span',{staticClass:\"truncate\"},[_vm._v(_vm._s(_vm.settings.label))])]):_vm._e(),_c('AppNavSecondary')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:\"banner\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class AppBanner extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppBanner.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppBanner.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppBanner.vue?vue&type=template&id=25194cfc&scoped=true&\"\nimport script from \"./AppBanner.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppBanner.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppBanner.vue?vue&type=style&index=0&id=25194cfc&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"25194cfc\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"logo-wrap\"},[_c('router-link',{staticClass:\"logo-link\",attrs:{\"to\":{ name: 'home' }}},[_c('img',{staticClass:\"logo\",style:({ maxWidth: _vm.maxWidth }),attrs:{\"src\":require((\"@/assets/\" + _vm.filename)),\"alt\":_vm.alt,\"height\":\"90\",\"width\":_vm.width}}),_c('span',{staticClass:\"logo-tagline\"},[_vm._v(_vm._s(_vm.tagline)+\" \")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class AppLogo extends Vue {\n @Prop({ required: true })\n filename!: string; // e.g. banner-large.png\n\n @Prop({ required: true })\n alt!: string;\n\n @Prop({ required: true })\n width!: number; // e.g. 600\n\n @Prop({ required: true })\n tagline!: string;\n\n @Prop({ required: true })\n maxWidth!: string; // e.g. 252px\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLogo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLogo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppLogo.vue?vue&type=template&id=6d5fd260&scoped=true&\"\nimport script from \"./AppLogo.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppLogo.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppLogo.vue?vue&type=style&index=0&id=6d5fd260&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d5fd260\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('NavPrimary',[_c('li',[_c('a',{staticClass:\"button button-primary\",attrs:{\"href\":_vm.url.caches}},[_vm._v(\"Caches\")])]),_c('li',{staticClass:\"account-nav-item\"},[_c('BaseButton',{attrs:{\"isActive\":_vm.isOpen,\"aria-label\":\"Toggle account sub navigation\",\"aria-controls\":\"account-sub-nav\",\"aria-expanded\":_vm.ARIAState,\"aria-pressed\":_vm.ARIAState},on:{\"click\":function($event){_vm.isOpen = !_vm.isOpen}}},[_c('BaseIcon',{attrs:{\"icon\":_vm.isOpen ? 'close' : 'bars',\"fixedWidth\":true,\"screenReaderLabel\":\"Toggle account sub navigation\"}})],1),_c('ul',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isOpen),expression:\"isOpen\"}],attrs:{\"id\":\"account-sub-nav\",\"data-testid\":\"account-sub-nav\"}},[_c('li',[_c('a',{attrs:{\"href\":_vm.url.account}},[_vm._v(\"Edit Account\")])]),_c('li',[_c('a',{attrs:{\"href\":_vm.url.invoices}},[_vm._v(\"Billing\")])]),_c('li',[_c('a',{attrs:{\"href\":_vm.url.logout}},[_vm._v(\"Sign Out\")])])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"nav-primary\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class NavPrimary extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavPrimary.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavPrimary.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavPrimary.vue?vue&type=template&id=1a22eb96&scoped=true&\"\nimport script from \"./NavPrimary.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavPrimary.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NavPrimary.vue?vue&type=style&index=0&id=1a22eb96&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a22eb96\",\n null\n \n)\n\nexport default component.exports","const USE_STAGING = process.env.VUE_APP_ENV === \"staging\" || process.env.NODE_ENV === \"development\";\n\nexport const MEMCACHIER_BASE_URL = USE_STAGING ? \"https://www.staging.memcachier.com/\" : \"https://www.memcachier.com/\";\n\nexport const MEMCACHIER_STATUS_URL = USE_STAGING\n ? \"https://status.staging.memcachier.com/\"\n : \"https://status.memcachier.com/\";\n\nexport const MEMCACHIER_BLOG_URL = \"https://blog.memcachier.com/\";\nexport const MEMCACHIER_SUPPORT_URL = \"http://support.memcachier.com/\"; // https doesn't resolve\nexport const MEMCACHIER_FEEDBACK_URL = \"https://memcachier.featureupvote.com/\";\nexport const MEMCACHIER_TWITTER_URL = \"https://twitter.com/MemCachier\";\nexport const MEMCACHIER_GITHUB_URL = \"https://github.com/memcachier/\";\nexport const MEMCACHIER_CACHES_URL = MEMCACHIER_BASE_URL + \"caches\";\nexport const MEMCACHIER_ACCOUNT_URL = MEMCACHIER_BASE_URL + \"users/edit\";\nexport const MEMCACHIER_INVOICES_URL = MEMCACHIER_BASE_URL + \"invoices\";\nexport const MEMCACHIER_LOGIN_URL = MEMCACHIER_BASE_URL + \"users/login\";\nexport const MEMCACHIER_LOGOUT_URL = MEMCACHIER_BASE_URL + \"users/logout\";\nexport const MEMCACHIER_SIGN_UP_URL = MEMCACHIER_BASE_URL + \"users/signup\";\nexport const MEMCACHIER_ABOUT_URL = MEMCACHIER_BASE_URL + \"about\";\nexport const MEMCACHIER_CONTACT_URL = MEMCACHIER_BASE_URL + \"contact\";\nexport const MEMCACHIER_DOCS_URL = MEMCACHIER_BASE_URL + \"documentation\";\nexport const MEMCACHIER_DOCS_CREDENTIALS_URL = MEMCACHIER_BASE_URL + \"documentation/credentials\";\n\nexport const HEROKU_DASHBOARD = \"https://dashboard.heroku.com\";\nexport const HEROKU_DOCS = \"https://devcenter.heroku.com/articles/memcachier\";\nexport const HEROKU_INFO = \"https://elements.heroku.com/addons/memcachier\";\n\nexport const CACHESIGHT_URL = \"https://cachesight.com/\";\n","import * as urls from \"@/config/analytics/urls\";\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class url extends Vue {\n get url() {\n return {\n status: urls.MEMCACHIER_STATUS_URL,\n blog: urls.MEMCACHIER_BLOG_URL,\n support: urls.MEMCACHIER_SUPPORT_URL,\n feedback: urls.MEMCACHIER_FEEDBACK_URL,\n twitter: urls.MEMCACHIER_TWITTER_URL,\n github: urls.MEMCACHIER_GITHUB_URL,\n caches: urls.MEMCACHIER_CACHES_URL,\n account: urls.MEMCACHIER_ACCOUNT_URL,\n invoices: urls.MEMCACHIER_INVOICES_URL,\n login: urls.MEMCACHIER_LOGIN_URL,\n logout: urls.MEMCACHIER_LOGOUT_URL,\n signUp: urls.MEMCACHIER_SIGN_UP_URL,\n about: urls.MEMCACHIER_ABOUT_URL,\n contact: urls.MEMCACHIER_CONTACT_URL,\n docs: urls.MEMCACHIER_DOCS_URL,\n docsCredentials: urls.MEMCACHIER_DOCS_CREDENTIALS_URL,\n herokuDashboard: urls.HEROKU_DASHBOARD,\n herokuDocs: urls.HEROKU_DOCS,\n herokuInfo: urls.HEROKU_INFO,\n cachesight: urls.CACHESIGHT_URL,\n };\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport NavPrimary from \"@/components/NavPrimary.vue\";\nimport url from \"@/mixins/analytics/url\";\nimport { Component, Mixins } from \"vue-property-decorator\";\n\n@Component({ components: { NavPrimary } })\nexport default class AppNav extends Mixins(url) {\n isOpen = false;\n\n get ARIAState() {\n return this.isOpen ? \"true\" : \"false\";\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppNav.vue?vue&type=template&id=544fb4a2&scoped=true&\"\nimport script from \"./AppNav.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppNav.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppNav.vue?vue&type=style&index=0&id=544fb4a2&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"544fb4a2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('NavSecondary',[_c('li',[_c('a',{attrs:{\"href\":_vm.docsURL}},[_vm._v(\"Docs\")])]),_c('li',[_c('a',{attrs:{\"href\":_vm.url.status}},[_vm._v(\"Status\")])]),_c('li',[_c('a',{attrs:{\"href\":_vm.url.blog}},[_vm._v(\"Blog\")])]),_c('li',[_c('a',{staticClass:\"twitter-link\",attrs:{\"href\":_vm.url.twitter}},[_c('BaseIcon',{attrs:{\"icon\":\"twitter\",\"size\":\"2x\"}})],1)]),_c('li',[_c('a',{staticClass:\"github-link\",attrs:{\"href\":_vm.url.github}},[_c('BaseIcon',{attrs:{\"icon\":\"github\",\"size\":\"2x\"}})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"nav-secondary\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class NavSecondary extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavSecondary.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavSecondary.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavSecondary.vue?vue&type=template&id=065651a6&scoped=true&\"\nimport script from \"./NavSecondary.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavSecondary.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NavSecondary.vue?vue&type=style&index=0&id=065651a6&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"065651a6\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport NavSecondary from \"@/components/NavSecondary.vue\";\nimport url from \"@/mixins/analytics/url\";\nimport { Component, Mixins } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component({ components: { NavSecondary } })\nexport default class AppNavSecondary extends Mixins(url) {\n @Getter(\"provider\") provider!: string;\n\n get docsURL() {\n return this.provider === \"heroku\" ? this.url.herokuDocs : this.url.docs;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNavSecondary.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNavSecondary.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppNavSecondary.vue?vue&type=template&id=5c3d9be4&scoped=true&\"\nimport script from \"./AppNavSecondary.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppNavSecondary.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5c3d9be4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('NavPrimary',[_c('li',[_c('a',{staticClass:\"button button-heroku-primary\",attrs:{\"href\":_vm.url.herokuDashboard}},[_c('BaseIcon',{attrs:{\"icon\":\"arrow-left\"}}),_vm._v(\" Heroku\")],1)]),_c('li',[_c('a',{staticClass:\"button button-heroku\",attrs:{\"href\":_vm.url.herokuInfo}},[_vm._v(\"Add-on\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\nimport NavPrimary from \"@/components/NavPrimary.vue\";\nimport url from \"@/mixins/analytics/url\";\nimport { Component, Mixins } from \"vue-property-decorator\";\n\n@Component({ components: { NavPrimary } })\nexport default class AppNavHeroku extends Mixins(url) {}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNavHeroku.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNavHeroku.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppNavHeroku.vue?vue&type=template&id=696c6457&scoped=true&\"\nimport script from \"./AppNavHeroku.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppNavHeroku.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppNavHeroku.vue?vue&type=style&index=0&id=696c6457&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"696c6457\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:\"nav-wrap\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class NavWrap extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavWrap.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavWrap.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavWrap.vue?vue&type=template&id=6e7d55b0&scoped=true&\"\nimport script from \"./NavWrap.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavWrap.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NavWrap.vue?vue&type=style&index=0&id=6e7d55b0&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6e7d55b0\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport AppBanner from \"@/components/AppBanner.vue\";\nimport AppLogo from \"@/components/AppLogo.vue\";\nimport AppNav from \"@/components/analytics/AppNav.vue\";\nimport AppNavSecondary from \"@/components/analytics/AppNavSecondary.vue\";\nimport AppNavHeroku from \"@/components/analytics/AppNavHeroku.vue\";\nimport NavWrap from \"@/components/NavWrap.vue\";\nimport { Settings } from \"@/types/settings\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component({\n components: {\n AppBanner,\n AppLogo,\n AppNav,\n AppNavSecondary,\n AppNavHeroku,\n NavWrap,\n },\n})\nexport default class AppHeader extends Vue {\n @Getter(\"provider\") provider!: string;\n @Getter(\"settings/activeCacheSettings\") settings!: Settings;\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppHeader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppHeader.vue?vue&type=template&id=1d7e62df&scoped=true&\"\nimport script from \"./AppHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppHeader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppHeader.vue?vue&type=style&index=0&id=1d7e62df&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d7e62df\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',{class:_vm.layout},[(_vm.showPoweredBy)?_c('a',{staticClass:\"footer-start\",attrs:{\"href\":_vm.url.cachesight,\"data-testid\":\"powered-by\"}},[_c('div',{staticClass:\"tagline\"},[_vm._v(\"Analytics powered by CacheSight\")])]):_vm._e(),_c('div',{staticClass:\"footer-end\"},[_c('p',{staticClass:\"copyright\"},[_vm._v(\" © \"+_vm._s(new Date().getFullYear())+\" MemCachier, Inc. · Built around the world · Written in Go, Haskell, and Vue.js. \")]),_c('AppSocial')],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"twitter-follow-button\",attrs:{\"href\":\"https://twitter.com/MemCachier\",\"data-show-count\":\"false\"}},[_vm._v(\" Follow @MemCachier \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* eslint-disable */\n// https://developer.twitter.com/en/docs/twitter-for-websites/javascript-api/guides/set-up-twitter-for-websites\nexport default function() {\n window.twttr = (function(d, s, id) {\n var js,\n fjs = d.getElementsByTagName(s)[0],\n t = window.twttr || {};\n if (d.getElementById(id)) return t;\n js = d.createElement(s);\n js.id = id;\n js.src = 'https://platform.twitter.com/widgets.js';\n fjs.parentNode.insertBefore(js, fjs);\n\n t._e = [];\n t.ready = function(f) {\n t._e.push(f);\n };\n\n return t;\n })(document, 'script', 'twitter-wjs');\n}\n","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppSocial.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppSocial.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppSocial.vue?vue&type=template&id=413f3fb0&scoped=true&\"\nimport script from \"./AppSocial.vue?vue&type=script&lang=js&\"\nexport * from \"./AppSocial.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"413f3fb0\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport AppSocial from \"@/components/AppSocial.vue\";\nimport { Layout } from \"@/types/layout\";\nimport url from \"@/mixins/analytics/url\";\nimport { Component, Mixins, Prop } from \"vue-property-decorator\";\nimport { State } from \"vuex-class\";\n\n@Component({ components: { AppSocial } })\nexport default class AppFooter extends Mixins(url) {\n @State(\"layout\") layout!: Layout;\n\n @Prop({ required: false, default: false })\n showPoweredBy!: boolean;\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppFooter.vue?vue&type=template&id=54efbf68&scoped=true&\"\nimport script from \"./AppFooter.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppFooter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppFooter.vue?vue&type=style&index=0&id=54efbf68&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"54efbf68\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.notifications.length > 0)?_c('div',{staticClass:\"notification-container\"},_vm._l((_vm.notifications),function(notification){return _c('AppNotificationBar',{key:notification.id,attrs:{\"notification\":notification}})}),1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"notification-bar\",class:_vm.notification.type,attrs:{\"role\":\"alert\"}},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.notification.message)}}),_c('BaseButton',{attrs:{\"defaultButtonClass\":\"button-transparent\",\"aria-label\":\"Close notification\"},on:{\"click\":function($event){return _vm.remove(_vm.notification)}}},[_c('BaseIcon',{attrs:{\"icon\":\"close\",\"screenReaderLabel\":\"Close notification\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\nimport { NotificationSingle } from \"@/types/notification\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport { Action } from \"vuex-class\";\n\n@Component\nexport default class AppNotificationBar extends Vue {\n @Action(\"notifications/remove\") remove!: any;\n\n @Prop({ required: true })\n notification!: NotificationSingle;\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNotificationBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNotificationBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppNotificationBar.vue?vue&type=template&id=718db0f0&scoped=true&\"\nimport script from \"./AppNotificationBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppNotificationBar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppNotificationBar.vue?vue&type=style&index=0&id=718db0f0&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"718db0f0\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\nimport AppNotificationBar from \"@/components/AppNotificationBar.vue\";\nimport { NotificationSingle } from \"@/types/notification\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { State } from \"vuex-class\";\n\n@Component({ components: { AppNotificationBar } })\nexport default class AppNotificationContainer extends Vue {\n @State(state => state.notifications.notifications)\n notifications!: NotificationSingle[];\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNotificationContainer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNotificationContainer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppNotificationContainer.vue?vue&type=template&id=c0de6420&scoped=true&\"\nimport script from \"./AppNotificationContainer.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppNotificationContainer.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppNotificationContainer.vue?vue&type=style&index=0&id=c0de6420&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c0de6420\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\nimport AppHeader from \"@/components/analytics/AppHeader.vue\";\nimport AppFooter from \"@/components/AppFooter.vue\";\nimport AppNotificationContainer from \"@/components/AppNotificationContainer.vue\";\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\nimport { Route } from \"vue-router\";\n\n@Component({\n components: {\n AppHeader,\n AppFooter,\n AppNotificationContainer,\n },\n})\nexport default class App extends Vue {\n created() {\n // Set IDs when created, handles case when user visits a url directly\n // and doesn't navigation to it from another page in the app.\n // In the direct case, there is no route change.\n // This will only fire once when the app is loaded, and will not\n // fire at the same time as onRouteUpdate\n this.$store.dispatch(\"setActiveCacheID\", this.$route.params.cacheId ? parseInt(this.$route.params.cacheId) : 0);\n this.$store.dispatch(\"setActivePrefixID\", this.$route.params.prefixId ? parseInt(this.$route.params.prefixId) : 0);\n }\n\n // route param changes are not reactive, so watch for them\n // watch route params in a single place and save values in\n // the vuex store so they are reactive.\n @Watch(\"$route\")\n onRouteUpdate(to: Route) {\n this.$store.dispatch(\"setActiveCacheID\", to.params.cacheId ? parseInt(to.params.cacheId) : 0);\n this.$store.dispatch(\"setActivePrefixID\", to.params.prefixId ? parseInt(to.params.prefixId) : 0);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=3420bd0a&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import jwt_decode from \"jwt-decode\";\n\ninterface JWTClaims {\n exp: number;\n // Analytics only\n cache_id?: number;\n username?: string;\n provider?: string; // SSO only, not Basic auth\n // CacheSight only\n pwUnset?: boolean; // Login only, not password reset. True if using default password.\n}\n\n// Allow `null` as `jwt` param type to permit passing localStorage item\n// e.g. `decodeJWT(localStorage.getItem('token')`\n// Also used for Analytics SSO, where a string is passed, hence not\n// handling `localStorage.getItem()` within the function\nexport function decodeJWT(jwt?: string | null): false | JWTClaims {\n if (!jwt) return false;\n\n try {\n return jwt_decode(jwt) as JWTClaims;\n } catch {\n return false;\n }\n}\n","export const SET_STATS = \"SET_STATS\";\r\nexport const RESET_STATE = \"RESET_STATE\";\r\nexport const SET_SETTINGS = \"SET_SETTINGS\";\r\nexport const SET_SETTINGS_DATA_STATUS = \"SET_SETTINGS_DATA_STATUS\";\r\nexport const SET_FEATURES = \"SET_FEATURES\";\r\nexport const SET_FEATURES_DATA_STATUS = \"SET_FEATURES_DATA_STATUS\";\r\nexport const SET_CREDENTIALS = \"SET_CREDENTIALS\";\r\nexport const SET_PROCESSED_STATS = \"SET_PROCESSED_STATS\";\r\nexport const SET_PROCESSED_STATS_STATUS = \"SET_PROCESSED_STATS_STATUS\";\r\nexport const SET_PROCESSED_STATS_LAST_FETCHED = \"SET_PROCESSED_STATS_LAST_FETCHED\";\r\nexport const SET_PER_SERVER_PROCESSED_STATS = \"SET_PER_SERVER_PROCESSED_STATS\";\r\nexport const SET_PER_SERVER_PROCESSED_STATS_STATUS = \"SET_PER_SERVER_PROCESSED_STATS_STATUS\";\r\nexport const SET_PER_SERVER_PROCESSED_STATS_LAST_FETCHED = \"SET_PER_SERVER_PROCESSED_STATS_LAST_FETCHED\";\r\nexport const SET_CACHE_AUTH = \"SET_CACHE_AUTH\";\r\nexport const SET_TIME_RANGE = \"SET_TIME_RANGE\";\r\nexport const SET_LAYOUT = \"SET_LAYOUT\";\r\nexport const SET_PROMO_BANNER_DISMISSED = \"SET_PROMO_BANNER_DISMISSED\";\r\nexport const SET_MOBILE_MENU_OPEN = \"SET_MOBILE_MENU_OPEN\";\r\nexport const SET_ACTIVE_CACHE_ID = \"SET_ACTIVE_CACHE_ID\";\r\nexport const SET_ACTIVE_PREFIX_ID = \"SET_ACTIVE_PREFIX_ID\";\r\nexport const SET_COMPOUND_STATS_STATUS = \"SET_COMPOUND_STATS_STATUS\";\r\nexport const SET_COMPOUND_STATS_LAST_FETCHED = \"SET_COMPOUND_STATS_LAST_FETCHED\";\r\nexport const SET_PREFIX_STATS_STATUS = \"SET_PREFIX_STATS_STATUS\";\r\nexport const SET_PREFIX_STATS_LAST_FETCHED = \"SET_PREFIX_STATS_LAST_FETCHED\";\r\nexport const SET_POPULAR_ITEMS_STATUS = \"SET_POPULAR_ITEMS_STATUS\";\r\nexport const SET_POPULAR_ITEMS_LAST_FETCHED = \"SET_POPULAR_ITEMS_LAST_FETCHED\";\r\nexport const SET_PREFIX_POPULAR_ITEMS_STATUS = \"SET_PREFIX_POPULAR_ITEMS_STATUS\";\r\nexport const SET_PREFIX_POPULAR_ITEMS_LAST_FETCHED = \"SET_PREFIX_POPULAR_ITEMS_LAST_FETCHED\";\r\nexport const NOTIFICATION_PUSH = \"NOTIFICATION_PUSH\";\r\nexport const NOTIFICATION_DELETE = \"NOTIFICATION_DELETE\";\r\nexport const SET_ALERTS = \"SET_ALERTS\";\r\nexport const SET_DELIVERY_CONFIGS = \"SET_DELIVERY_CONFIGS\";\r\nexport const SET_SHOW_ADD_DELIVERY_CONFIG = \"SET_SHOW_ADD_DELIVERY_CONFIG\";\r\nexport const SET_SMTP_CONFIG = \"SET_SMTP_CONFIG\";\r\nexport const SET_SMTP_CONFIG_IS_DEFAULT = \"SET_SMTP_CONFIG_IS_DEFAULT\";\r\nexport const SET_LOGS = \"SET_LOGS\";\r\nexport const SET_SLAB_STATS = \"SET_SLAB_STATS\";\r\nexport const SET_PROCESSED_SLAB_STATS = \"SET_PROCESSED_SLAB_STATS\";\r\nexport const SET_PROCESSED_SLAB_STATS_FETCHED = \"SET_PROCESSED_SLAB_STATS_FETCHED\";\r\nexport const SET_COMPOUND_STATS = \"SET_COMPOUND_STATS\";\r\nexport const SET_FETCHING_COMPOUND_STATS = \"SET_FETCHING_COMPOUND_STATS\";\r\nexport const SET_PREFIXES = \"SET_PREFIXES\";\r\nexport const SET_POPULAR_ITEMS = \"SET_POPULAR_ITEMS\";\r\nexport const SET_PREFIX_POPULAR_ITEMS = \"SET_PREFIX_POPULAR_ITEMS\";\r\nexport const SET_PREFIX_STATS = \"SET_PREFIX_STATS\";\r\nexport const SET_CURRENT_KEY = \"SET_CURRENT_KEY\";\r\nexport const RESET_CURRENT_KEY = \"RESET_CURRENT_KEY\";\r\nexport const SET_KEY_STATS = \"SET_KEY_STATS\";\r\nexport const SET_KEY_STATS_SERIES = \"SET_KEY_STATS_SERIES\";\r\nexport const SET_SHOW_ADD_PREFIX = \"SET_SHOW_ADD_PREFIX\";\r\n\r\n// CacheSight\r\nexport const LOGOUT = \"LOGOUT\";\r\nexport const AUTO_LOGOUT = \"AUTO_LOGOUT\";\r\nexport const SET_CACHES = \"SET_CACHES\";\r\nexport const SET_SERVERS = \"SET_SERVERS\";\r\n","// Can be used as CSS classed to modify templates\n// most views have a sidebar, a few do not, e.g. Caches\nexport enum Layout {\n HAS_SIDEBAR = \"has-sidebar\",\n IS_FULL_WIDTH = \"is-full-width\",\n}\n","import { TriggerType } from \"@/types/alert\";\n\nexport const TRIGGER_TYPE: TriggerType = {\n hit_rate: {\n label: \"hit rate\",\n comparison: \"is less than\",\n },\n memory_usage: {\n label: \"memory usage\",\n comparison: \"is greater than\",\n },\n};\n\n// The max number of alerts that can be created on the highest MemCachier plan.\n// For Analytics only. Eventually will probably make sense to be sent from the backend.\nexport const ALERT_MAX = 100;\n","import { TIME_RANGES } from \"@/types/time-range\";\nimport { getMetrics, getChartIDsFor } from \"@/utils/chart\";\nimport { Series, SeriesPoint } from \"@/types/common\";\nimport { StatType } from \"@/types/stats\";\n\nexport function generateProcessedStatsState(statType: StatType) {\n const state: { [propName: string]: {} } = {};\n\n for (const timeRange of TIME_RANGES) {\n const chartIDsObj: { [propName: string]: {} } = {};\n getChartIDsFor(statType).forEach((chartID: string) => {\n chartIDsObj[chartID] = [];\n });\n state[timeRange] = chartIDsObj;\n }\n\n return state;\n}\n\nfunction findMatchedIndexes(columns: string[], columnsSubset: string[]): number[] {\n const matchedIndexes: number[] = [];\n\n // Doing `for...of` instead of filtering `columns`, because the order of `columnsSubset` is important\n for (const column of columnsSubset) if (columns.includes(column)) matchedIndexes.push(columns.indexOf(column));\n\n return matchedIndexes;\n}\n\nfunction mapPointsToMatchedIndexes(series: Series, matchedIndexes: number[]): SeriesPoint[] {\n return series.values.map((point: SeriesPoint) => {\n const mappedPoint: SeriesPoint = [];\n\n // Doing `for...of` instead of filtering `points`, because the order of `matchedIndexes` is important\n for (const index of matchedIndexes) mappedPoint.push(point[index]);\n\n return mappedPoint;\n });\n}\n\nfunction isNullPoint(point: SeriesPoint) {\n // Start at 1, skip `time`\n for (let i = 1; i < point.length; i++) {\n if (point[i] !== null) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction removeFirstNullPoints(points: SeriesPoint[]) {\n for (const point of points) {\n if (isNullPoint(point)) {\n points.shift();\n } else {\n return;\n }\n }\n}\n\nfunction removeLastNullPoints(points: SeriesPoint[]) {\n const pointsReversed = [...points].reverse();\n for (const point of pointsReversed) {\n if (isNullPoint(point)) {\n points.pop();\n } else {\n return;\n }\n }\n}\n\nexport function trimNullPoints(points: SeriesPoint[]) {\n removeFirstNullPoints(points);\n removeLastNullPoints(points);\n}\n\n/**\n * Generate a series group for a chart\n *\n * The `seriesArray` param contains series with all metrics for all charts\n *\n * Generating series for an individual chart means filtering metrics\n * down to only those required by a chart\n */\nexport function generateChartSeries(seriesArray: Series[], chartID: string) {\n // Columns are the same in each series if they have data,\n // get from the first available\n // 'time' is the first column\n let allColumns: undefined | string[];\n for (const series of seriesArray) {\n if (series.columns) {\n allColumns = [...series.columns];\n break;\n }\n }\n\n // return an empty series\n if (!allColumns) {\n return [\n {\n columns: [],\n name: \"\",\n values: [],\n },\n ];\n }\n\n // Set 'time' as first column\n const chartColumns = [\"time\"].concat(getMetrics(chartID));\n\n const matchedIndexes = findMatchedIndexes(allColumns, chartColumns);\n\n const mappedSeriesGroup = seriesArray.map(series => {\n const points = mapPointsToMatchedIndexes(series, matchedIndexes);\n trimNullPoints(points);\n\n const mappedSeries: Series = {\n columns: [...chartColumns],\n name: series.name,\n values: points,\n };\n\n // processed stats have a tag of server\n // introspection stats do not have tags\n if (series.tags) {\n mappedSeries.tags = series.tags;\n }\n\n return mappedSeries;\n });\n\n return mappedSeriesGroup;\n}\n\n// Calculate and add hit_rate and requests metrics\n// for compound and prefix stats\nexport function appendCalculatedMetricsToSeries(series: Series) {\n // Add calculated columns\n series.columns.push(\"hit_rate\");\n series.columns.push(\"requests\");\n\n for (const point of series.values) {\n const totalHitsRate = point[series.columns.indexOf(\"total_hits_rate\")];\n const totalMissesRate = point[series.columns.indexOf(\"total_misses_rate\")];\n const totalMutationsRate = point[series.columns.indexOf(\"total_mutations_rate\")];\n\n // calculate hit rate\n const hitRateRequests = totalHitsRate + totalMissesRate;\n // Default to null (no data), not zero\n let hitRate: null | number = null;\n if (hitRateRequests > 0) {\n hitRate = totalHitsRate / hitRateRequests;\n }\n point.push(hitRate);\n\n // calculate requests for request fraction\n let requests: null | number = null;\n // Make sure at least value is not null, because summing null returns 0\n if (totalHitsRate !== null || totalMissesRate !== null || totalMutationsRate !== null) {\n requests = totalHitsRate + totalMissesRate + totalMutationsRate;\n }\n point.push(requests);\n }\n\n return series;\n}\n\n// prefix can be `compound_`, `prefix_`,\nexport function prependColumnNames(columns: string[], prefix: string) {\n return columns.map(column => {\n if (column === \"time\") {\n return column;\n }\n return `${prefix}${column}`;\n });\n}\n","export enum RequestMethod {\n GET = \"GET\",\n PUT = \"PUT\",\n POST = \"POST\",\n PATCH = \"PATCH\",\n DELETE = \"DELETE\",\n}\n","import { ALERT_MAX } from \"@/config/alert\";\r\nimport { PREFIX_MAX } from \"@/config/series\";\r\nimport { TimeRange } from \"@/types/time-range\";\r\nimport { Layout } from \"@/types/layout\";\r\nimport { generateProcessedStatsState } from \"@/utils/series\";\r\nimport { Stats, StatType } from \"@/types/stats\";\r\nimport { Features, Settings } from \"@/types/settings\";\r\nimport { ProcessedStatsState } from \"@/types/processed-stats\";\r\nimport { RootState } from \"@/types/root-state\";\r\n\r\nexport class State implements RootState {\r\n token = \"\";\r\n activeCacheID = 0;\r\n activePrefixID = 0;\r\n mobileMenuOpen = false;\r\n timeRange = TimeRange.LAST_DAY;\r\n layout = Layout.HAS_SIDEBAR;\r\n promoBannerDismissed = true;\r\n}\r\n\r\nexport class StatsInitialState implements Stats {\r\n [propName: string]: number;\r\n limit_maxbytes = 0;\r\n bytes = 0;\r\n curr_connections = 0;\r\n curr_items = 0;\r\n evictions = 0;\r\n total_connections = 0;\r\n get_hits = 0;\r\n get_misses = 0;\r\n delete_hits = 0;\r\n delete_misses = 0;\r\n incr_hits = 0;\r\n incr_misses = 0;\r\n decr_hits = 0;\r\n decr_misses = 0;\r\n cas_hits = 0;\r\n cas_misses = 0;\r\n touch_hits = 0;\r\n touch_misses = 0;\r\n cmd_flush = 0;\r\n cmd_set = 0;\r\n}\r\n\r\nexport class ProcessedStatsInitialState implements ProcessedStatsState {\r\n // Aggregate series\r\n processedStats = generateProcessedStatsState(StatType.PROCESSED);\r\n processedStatsStatus = {};\r\n processedStatsLastFetched = {};\r\n\r\n // Per server series\r\n perServerProcessedStats = generateProcessedStatsState(StatType.PROCESSED);\r\n perServerProcessedStatsStatus = {};\r\n perServerProcessedStatsLastFetched = {};\r\n}\r\n\r\nexport class SettingsItemInitialState implements Settings {\r\n cache_type = \"\";\r\n can_manage_credentials = false;\r\n can_update_capabilities = false;\r\n can_switch = false;\r\n cluster_name = \"\";\r\n credentials = [];\r\n enabled = false;\r\n id = 0;\r\n name = \"\";\r\n label = \"\";\r\n provider = \"\";\r\n servers = [];\r\n plan = 0;\r\n}\r\n\r\nexport class FeaturesItemInitialState implements Features {\r\n [propName: string]: number;\r\n \"debug-mode\" = 0;\r\n \"shadow-cache\" = 0;\r\n version = 0;\r\n \"alert-config\" = -1;\r\n \"alert-limit\" = 0;\r\n \"collect-granularity\" = 0;\r\n \"persist-key-stats\" = 0;\r\n \"persist-slab-stats\" = 0;\r\n \"prefix-limit\" = 0;\r\n \"persist-granularity\" = 0;\r\n \"recent-log-length\" = 0;\r\n \"consulting-offer\" = 0;\r\n \"alert-max\" = ALERT_MAX;\r\n \"prefix-max\" = PREFIX_MAX;\r\n}\r\n","import { MEMCACHIER_SUPPORT_URL } from \"@/config/analytics/urls\";\n\nexport const FLUSH_CACHE_ERROR = \"Could not flush cache\";\nexport const SWITCH_CLUSTER_ERROR =\n 'Could not change cluster, please contact support';\nexport const RE_ENABLE_CACHE_SUCCESS = \"Cache re-enabled! Refresh the page in about 1 minute.\";\nexport const RE_ENABLE_CACHE_ERROR =\n 'Could not re-enable cache, please contact support';\nexport const ROTATE_SSO_ERROR = \"Could not rotate SSO\";\nexport const PROCESSED_STATS_ERROR = \"Could not fetch processed stats\";\nexport const SETTINGS_ERROR = \"Could not fetch settings\";\nexport const FEATURES_ERROR = \"Could not fetch features\";\nexport const STATS_ERROR = \"Could not fetch stats\";\nexport const CREDENTIALS_FETCH_ERROR = \"Could not fetch credentials\";\nexport const CREDENTIALS_ADD_ERROR = \"Could not create new credentials\";\nexport const CREDENTIALS_REMOVE_ERROR = \"Could not remove credentials\";\nexport const CREDENTIALS_PROMOTE_ERROR = \"Could not promote credentials\";\nexport const CREDENTIALS_CAPABILITIES_ERROR = \"Could not change capabilities\";\nexport const ALERTS_ERROR = \"Could not get alerts\";\nexport const ALERT_ADD_ERROR = \"Could not add alert\";\nexport const ALERT_UPDATE_ERROR = \"Could not update alert\";\nexport const ALERT_REMOVE_ERROR = \"Could not remove alert\";\nexport const ALERTS_CONFIG_ERROR = \"Could not get delivery destinations\";\nexport const ALERT_CONFIG_ADD_ERROR = \"Could not add delivery destination\";\nexport const ALERT_CONFIG_REMOVE_ERROR = \"Could not remove delivery destination\";\nexport const SMTP_CONFIG_FETCH_ERROR = \"Could not fetch SMTP settings\";\nexport const TEST_EMAIL_ERROR = \"Could not send test email\";\nexport const TEST_EMAIL_SUCCESS = \"Test email sent!\";\nexport const SMTP_CONFIG_SET_ERROR = \"Could not update SMTP settings\";\nexport const TOGGLE_INTROSPECTION_ERROR = \"Could not toggle Introspection\";\nexport const LOGS_ERROR = \"Could not get recent request logs\";\nexport const SLAB_STATS_ERROR = \"Could not get slab stats\";\nexport const PROCESSED_SLAB_STATS_ERROR = \"Could not get processed slab stats\";\nexport const PREFIXES_ERROR = \"Could not get prefixes\";\nexport const PREFIX_POPULAR_ITEMS_ERROR = \"Could not get prefix popular items\";\nexport const PREFIX_STATS_ERROR = \"Could not get prefix stats\";\nexport const PREFIX_ADD_ERROR = \"Could not add prefix\";\nexport const PREFIX_REMOVE_ERROR = \"Could not remove prefix\";\nexport const COMPOUND_STATS_ERROR = \"Could not get compound stats\";\nexport const KEY_STATS_ERROR = \"Could not get key stats\";\nexport const CONSULTATION_REQUEST_SUCCESS = \"Consultation request sent!\";\nexport const CONSULTATION_REQUEST_ERROR = \"Could not send consultation request\";\nexport const LOGIN_ERROR = \"Invalid login\";\n\n// CacheSight\nexport const PASSWORD_SUCCESS = \"Password change successful!\";\nexport const PASSWORD_ERROR = \"Password could not be changed\";\nexport const CACHE_ADD_ERROR = \"Could not add cache\";\nexport const CACHE_REMOVE_ERROR = \"Could not remove cache\";\nexport const CACHE_UPDATE_ERROR = \"Could not update cache\";\nexport const SERVER_REMOVE_ERROR = \"Could not remove server\";\nexport const SERVER_UPDATE_ERROR = \"Could not add server\";\n","import { NotificationSingle, NotificationType } from \"@/types/notification\";\nimport { Dispatch } from \"vuex\";\n\nfunction setNotification(dispatch: Dispatch, message: string, type: NotificationType) {\n const notification: NotificationSingle = {\n type,\n message,\n };\n dispatch(\"notifications/add\", notification, { root: true });\n}\n\nexport function setNotificationSuccess(dispatch: Dispatch, message: string) {\n setNotification(dispatch, message, NotificationType.SUCCESS);\n}\n\nexport function setNotificationError(dispatch: Dispatch, message: string) {\n setNotification(dispatch, message, NotificationType.ERROR);\n}\n","// http://insight-direct.staging.memcachier.com:8080/api/v2 - Analytics staging\n// https://insight.memcachier.com/api/v2 - Analytics production\n// http://localhost:8080/api/v2 - local stack\nexport const API_URL: string = process.env.NODE_ENV === \"development\" ? \"http://localhost:8080/api/v2\" : \"/api/v2\";\n","import { API_URL } from \"@/config/urls\";\n\n// Admins use production caches in two ways:\n// 1. accessing via insight.memcachier.com\n// 2. using the production api url locally\nexport function isAdminUsingProd() {\n /*\n if 1. or 2.\n\n Used to disallow the following unsafe actions:\n flushCache\n rotateSSO\n switchCluster\n settings/addCredentials\n settings/removeCredentials\n settings/promoteCredentials\n settings/setCredentialsCapabilities\n alerts/add\n alerts/update\n alerts/remove\n debug-mode/addPrefix\n debug-mode/removePrefix\n */\n return (\n window.location.host.indexOf(\"insight.memcachier.com\") >= 0 ||\n (process.env.NODE_ENV === \"development\" && API_URL.indexOf(\"insight.memcachier.com\") >= 0)\n );\n}\n\nexport function adminConsoleNotice() {\n if (isAdminUsingProd()) {\n // eslint-disable-next-line no-console\n console.log(\n \"%cMC Insight\",\n \"color: #fff; background: #78bb13; border-radius: 1px; padding: 1px 2px\",\n \"You appear to be an admin using a production cache, unsafe actions will be disallowed.\",\n );\n }\n}\n","import { RequestMethod } from \"@/types/request-method\";\nimport { API_URL } from \"@/config/urls\";\nimport { Login } from \"@/types/login\";\nimport axios from \"axios\";\nimport store from \"@/store\";\n\nconst apiClient = axios.create({\n baseURL: API_URL,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n});\n\n// If a response 401s, we assume the token is invalid and logout\napiClient.interceptors.response.use(\n response => response,\n error => {\n if (error.response.status === 401) {\n store.dispatch(\"autoLogout\");\n }\n return Promise.reject(error);\n },\n);\n\nexport default {\n request(url: string, method: RequestMethod, params?: object, data?: object, basicAuth?: Login) {\n let authorization: string;\n\n if (basicAuth) {\n authorization = `Basic ${btoa(`${basicAuth.username}:${basicAuth.password}`)}`;\n } else {\n authorization = `Bearer ${localStorage.getItem(\"token\")}`;\n }\n\n return apiClient.request({\n url,\n method,\n params,\n data,\n headers: {\n Authorization: authorization,\n },\n });\n },\n};\n","import { TimeRange } from \"@/types/time-range\";\n\n/**\n * InfluxDB terminology reference:\n * \n * https://docs.influxdata.com/influxdb/v1.7/concepts/key_concepts/\n * \n * For InfluxDB time series data (processed stats and the various debug mode stats) \n * the backend returns an array of one or more series. We'll refer to it as 'seriesArray'\n * A 'series' is an object with `columns`, `name`, `values`, and possibly `tags` properties.\n * The `columns` property is an array of 'field keys', which are metric names in our case, e.g. `bytes`.\n * The `values` property is an array of 'points'.\n * A point represents a single data record, starting with a timestamp, followed by field values. It's like a row of values starting\n with a timestamp.\n * Values in a point, other than the timestamp, are known as 'field values'.\n */\n\nexport type Series = {\n columns: string[];\n name: string;\n tags?: {\n [propName: string]: string; // only `server` used as propName currently\n };\n values: SeriesPoint[];\n};\n\n// e.g. [\"2019-10-10T08:50:00Z\", 0, 0, null, 0...]\n// export type SeriesPoint = (string | number | null)[];\nexport type SeriesPoint = any[];\n\nexport type SeriesByTimeRange = {\n [timeRange: string]: SeriesByChartID;\n};\n\nexport type SeriesByTimeRangeStatus = {\n [timeRange: string]: DataStatus;\n};\n\nexport type SeriesByTimeRangeLastFetched = {\n [timeRange: string]: number; // milliseconds, timestamp\n};\n\nexport type SeriesByChartID = {\n [chartID: string]: Series[];\n};\n\nexport type SeriesPayload = {\n timeRange: TimeRange;\n chartID: string;\n seriesArray: Series[];\n};\n\nexport enum DataStatus {\n UNFETCHED = \"unfetched\",\n FETCHING = \"fetching\",\n FETCHED = \"fetched\",\n FAILED = \"failed\",\n}\n","import { SET_STATS, RESET_STATE } from \"@/store/mutation-types\";\nimport CacheService from \"@/services/CacheService\";\nimport { RequestMethod } from \"@/types/request-method\";\nimport { StatsState, Stats } from \"@/types/stats\";\nimport { RootState } from \"@/types/root-state\";\nimport * as Msg from \"@/config/notification\";\nimport { setNotificationError } from \"@/utils/notification\";\nimport { Module, MutationTree, ActionTree, GetterTree } from \"vuex\";\nimport { StatsInitialState } from \"@/store/state\";\n\nconst namespaced = true;\n\nconst state: StatsState = {\n stats: new StatsInitialState(),\n};\n\nconst mutations: MutationTree = {\n [SET_STATS]: (state, stats: Stats) => {\n state.stats = stats;\n },\n [RESET_STATE]: state => {\n Object.assign(state, {\n stats: new StatsInitialState(),\n });\n },\n};\n\nconst actions: ActionTree = {\n fetch({ commit, dispatch, rootState }) {\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/stats`, RequestMethod.GET)\n .then(response => {\n const stats: Stats = response.data;\n commit(SET_STATS, stats);\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.STATS_ERROR} (${error})`);\n });\n },\n resetState({ commit }) {\n commit(RESET_STATE);\n },\n};\n\nconst getters: GetterTree = {\n allTimeHitRate: state => {\n const types = [\"get\", \"delete\", \"incr\", \"decr\", \"cas\", \"touch\"];\n\n let hits = 0;\n for (const type of types) {\n hits += state.stats[`${type}_hits`];\n }\n\n let misses = 0;\n for (const type of types) {\n misses += state.stats[`${type}_misses`];\n }\n\n const requests = hits + misses;\n\n if (requests === 0) {\n return 0;\n }\n\n return hits / requests;\n },\n};\n\nexport const stats: Module = {\n namespaced,\n state,\n mutations,\n actions,\n getters,\n};\n","import {\n SET_SETTINGS,\n SET_SETTINGS_DATA_STATUS,\n SET_FEATURES_DATA_STATUS,\n SET_FEATURES,\n SET_CREDENTIALS,\n} from \"@/store/mutation-types\";\nimport CacheService from \"@/services/CacheService\";\nimport { RequestMethod } from \"@/types/request-method\";\nimport { SettingsState, Settings, Credentials, Features } from \"@/types/settings\";\nimport { RootState } from \"@/types/root-state\";\nimport { DataStatus } from \"@/types/common\";\nimport { SettingsItemInitialState, FeaturesItemInitialState } from \"@/store/state\";\nimport * as Msg from \"@/config/notification\";\nimport { ALERT_MAX } from \"@/config/alert\";\nimport { PREFIX_MAX } from \"@/config/series\";\nimport { setNotificationError } from \"@/utils/notification\";\nimport { isAdminUsingProd } from \"@/utils/admin\";\nimport { Module, MutationTree, ActionTree, GetterTree } from \"vuex\";\nimport Vue from \"vue\";\n\nconst namespaced = true;\n\nconst state: SettingsState = {\n settings: {},\n settingsStatus: {},\n features: {},\n featuresStatus: {},\n};\n\nconst mutations: MutationTree = {\n [SET_SETTINGS]: (state, payload: { cacheID: number; settings: Settings }) => {\n Vue.set(state.settings, payload.cacheID, payload.settings);\n },\n [SET_SETTINGS_DATA_STATUS]: (state, payload: { cacheID: number; status: DataStatus }) => {\n Vue.set(state.settingsStatus, payload.cacheID, payload.status);\n },\n [SET_FEATURES]: (state, payload: { cacheID: number; features: Features }) => {\n Vue.set(state.features, payload.cacheID, payload.features);\n },\n [SET_FEATURES_DATA_STATUS]: (state, payload: { cacheID: number; status: DataStatus }) => {\n Vue.set(state.featuresStatus, payload.cacheID, payload.status);\n },\n [SET_CREDENTIALS]: (state, payload: { cacheID: number; credentials: Credentials[] }) => {\n if (state.settings[payload.cacheID]) {\n state.settings[payload.cacheID].credentials = payload.credentials;\n }\n },\n};\n\nconst actions: ActionTree = {\n fetch({ commit, dispatch, state, rootState }) {\n const cacheID = rootState.activeCacheID;\n if (state.settingsStatus[cacheID] === DataStatus.FETCHED || state.settingsStatus[cacheID] === DataStatus.FETCHING) {\n // Data already fetched or fetching. Do not fetch\n return;\n }\n\n // Data not fetched, let's fetch\n commit(SET_SETTINGS_DATA_STATUS, {\n cacheID: cacheID,\n status: DataStatus.FETCHING,\n });\n\n return CacheService.request(`caches/${cacheID}/info`, RequestMethod.GET)\n .then(response => {\n const settings: Settings = response.data;\n commit(SET_SETTINGS, { cacheID: cacheID, settings: settings });\n\n commit(SET_SETTINGS_DATA_STATUS, {\n cacheID: cacheID,\n status: DataStatus.FETCHED,\n });\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.SETTINGS_ERROR} (${error})`);\n\n commit(SET_SETTINGS_DATA_STATUS, {\n cacheID: cacheID,\n status: DataStatus.FAILED,\n });\n });\n },\n fetchFeatures({ commit, dispatch, state, rootState }) {\n const cacheID = rootState.activeCacheID;\n if (state.featuresStatus[cacheID] === DataStatus.FETCHED || state.featuresStatus[cacheID] === DataStatus.FETCHING) {\n // Data already fetched or fetching. Do not fetch\n return;\n }\n\n // Data not fetched, let's fetch\n commit(SET_FEATURES_DATA_STATUS, {\n cacheID: cacheID,\n status: DataStatus.FETCHING,\n });\n\n return CacheService.request(`caches/${cacheID}/flags`, RequestMethod.GET)\n .then(response => {\n const features: Features = response.data;\n features[\"alert-max\"] = ALERT_MAX;\n features[\"prefix-max\"] = PREFIX_MAX;\n commit(SET_FEATURES, { cacheID: cacheID, features: features });\n\n commit(SET_FEATURES_DATA_STATUS, {\n cacheID: cacheID,\n status: DataStatus.FETCHED,\n });\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.FEATURES_ERROR} (${error})`);\n\n commit(SET_FEATURES_DATA_STATUS, {\n cacheID: cacheID,\n status: DataStatus.FAILED,\n });\n });\n },\n toggleIntrospection({ commit, dispatch, state, rootState }) {\n if (isAdminUsingProd()) return;\n const cacheID = rootState.activeCacheID;\n const features = state.features[cacheID];\n\n if (!(features[\"debug-mode\"] === 2 || features[\"debug-mode\"] === -2)) {\n return;\n }\n\n return CacheService.request(`caches/${cacheID}/introspection/toggle`, RequestMethod.POST)\n .then(() => {\n features[\"debug-mode\"] = features[\"debug-mode\"] === 2 ? -2 : 2;\n commit(SET_FEATURES, features);\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.TOGGLE_INTROSPECTION_ERROR} (${error})`);\n });\n },\n fetchCredentials({ commit, dispatch, rootState }) {\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/credentials`, RequestMethod.GET)\n .then(response => {\n const credentials: Credentials[] = response.data;\n commit(SET_CREDENTIALS, { cacheID: cacheID, credentials: credentials });\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.CREDENTIALS_FETCH_ERROR} (${error})`);\n });\n },\n addCredentials({ dispatch, rootState }) {\n if (isAdminUsingProd()) return;\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/credentials`, RequestMethod.POST)\n .then(() => {\n dispatch(\"fetchCredentials\");\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.CREDENTIALS_ADD_ERROR} (${error})`);\n });\n },\n removeCredentials({ dispatch, rootState }, username) {\n if (isAdminUsingProd()) return;\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/credentials/${username}`, RequestMethod.DELETE)\n .then(() => {\n dispatch(\"fetchCredentials\");\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.CREDENTIALS_REMOVE_ERROR}: ${username} (${error})`);\n });\n },\n promoteCredentials({ dispatch, rootState }, username) {\n if (isAdminUsingProd()) return;\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/credentials/primary/${username}`, RequestMethod.POST)\n .then(() => {\n dispatch(\"fetchCredentials\");\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.CREDENTIALS_PROMOTE_ERROR}: ${username} (${error})`);\n });\n },\n setCredentialsCapabilities({ dispatch, rootState }, { username, capabilities }) {\n if (isAdminUsingProd()) return;\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/credentials/${username}`, RequestMethod.PATCH, {}, capabilities)\n .then()\n .catch(error => {\n setNotificationError(dispatch, `${Msg.CREDENTIALS_CAPABILITIES_ERROR} (${error})`);\n });\n },\n};\n\nconst getters: GetterTree = {\n activeCacheSettings: (state, getters, rootState) => {\n if (state.settings[rootState.activeCacheID]) {\n return state.settings[rootState.activeCacheID];\n }\n return new SettingsItemInitialState(); // defaults\n },\n activeCacheFeatures: (state, getters, rootState) => {\n if (state.features[rootState.activeCacheID]) {\n return state.features[rootState.activeCacheID];\n }\n return new FeaturesItemInitialState(); // defaults\n },\n // Loading strategy:\n // - if status = FETCHED, data is ready\n // - else if status = FAILED, no data available\n // - else loading (status = UNFETCHED or status = FETCHING)\n activeCacheSettingsStatus: (state, getters, rootState) => {\n if (state.settingsStatus[rootState.activeCacheID]) {\n return state.settingsStatus[rootState.activeCacheID];\n }\n return DataStatus.UNFETCHED;\n },\n activeCacheFeaturesStatus: (state, getters, rootState) => {\n if (state.featuresStatus[rootState.activeCacheID]) {\n return state.featuresStatus[rootState.activeCacheID];\n }\n return DataStatus.UNFETCHED;\n },\n};\n\nexport const settings: Module = {\n namespaced,\n state,\n mutations,\n actions,\n getters,\n};\n","import {\n SET_PROCESSED_STATS,\n SET_PROCESSED_STATS_STATUS,\n SET_PROCESSED_STATS_LAST_FETCHED,\n SET_PER_SERVER_PROCESSED_STATS,\n SET_PER_SERVER_PROCESSED_STATS_STATUS,\n SET_PER_SERVER_PROCESSED_STATS_LAST_FETCHED,\n RESET_STATE,\n} from \"@/store/mutation-types\";\nimport CacheService from \"@/services/CacheService\";\nimport { RequestMethod } from \"@/types/request-method\";\nimport { TimeRange, TIME_RANGES } from \"@/types/time-range\";\nimport { ProcessedStatsState } from \"@/types/processed-stats\";\nimport { StatType } from \"@/types/stats\";\nimport { Series, SeriesPayload, DataStatus } from \"@/types/common\";\nimport { RootState } from \"@/types/root-state\";\nimport * as Msg from \"@/config/notification\";\nimport { setNotificationError } from \"@/utils/notification\";\nimport { Module, MutationTree, ActionTree, GetterTree } from \"vuex\";\nimport { generateChartSeries } from \"@/utils/series\";\nimport { getAllProcessedStatsNames, getChartIDsFor } from \"@/utils/chart\";\nimport { getTimeRange } from \"@/utils/conversion\";\nimport { LIFETIME_MARGIN, PROCESSED_STATS_LIFETIME, emptySeriesArray } from \"@/config/series\";\nimport { ProcessedStatsInitialState } from \"@/store/state\";\nimport Vue from \"vue\";\n\nconst namespaced = true;\n\nconst state: ProcessedStatsState = new ProcessedStatsInitialState();\n\nconst mutations: MutationTree = {\n [SET_PROCESSED_STATS]: (state, payload: SeriesPayload) => {\n // Initial state with time ranges is generated, so\n // no need to check if a time range property exists\n Vue.set(state.processedStats[payload.timeRange], payload.chartID, payload.seriesArray);\n },\n [SET_PROCESSED_STATS_STATUS]: (state, payload: { timeRange: TimeRange; status: DataStatus }) => {\n Vue.set(state.processedStatsStatus, payload.timeRange, payload.status);\n },\n [SET_PROCESSED_STATS_LAST_FETCHED]: (state, payload: { timeRange: TimeRange; timestamp: number }) => {\n Vue.set(state.processedStatsLastFetched, payload.timeRange, payload.timestamp);\n },\n [SET_PER_SERVER_PROCESSED_STATS]: (state, payload: SeriesPayload) => {\n // Initial state with time ranges is generated, so\n // no need to check if a time range property exists\n Vue.set(state.perServerProcessedStats[payload.timeRange], payload.chartID, payload.seriesArray);\n },\n [SET_PER_SERVER_PROCESSED_STATS_STATUS]: (state, payload: { timeRange: TimeRange; status: DataStatus }) => {\n Vue.set(state.perServerProcessedStatsStatus, payload.timeRange, payload.status);\n },\n [SET_PER_SERVER_PROCESSED_STATS_LAST_FETCHED]: (state, payload: { timeRange: TimeRange; timestamp: number }) => {\n Vue.set(state.perServerProcessedStatsLastFetched, payload.timeRange, payload.timestamp);\n },\n [RESET_STATE]: state => {\n Object.assign(state, new ProcessedStatsInitialState());\n },\n};\n\nconst actions: ActionTree = {\n fetchPlotsByTimeRange({ dispatch }) {\n for (const timeRange of TIME_RANGES) {\n dispatch(\"fetchStats\", timeRange);\n }\n },\n fetchPerServerPlotsByTimeRange({ dispatch }) {\n for (const timeRange of TIME_RANGES) {\n dispatch(\"fetchPerServerStats\", timeRange);\n }\n },\n fetchStats({ commit, dispatch, state, rootState }, timeRange: TimeRange) {\n const valid = !!(\n state.processedStatsLastFetched[timeRange] &&\n state.processedStatsLastFetched[timeRange] + PROCESSED_STATS_LIFETIME - LIFETIME_MARGIN >= Date.now()\n );\n\n if (\n (state.processedStatsStatus[timeRange] === DataStatus.FETCHED && valid) ||\n state.processedStatsStatus[timeRange] === DataStatus.FETCHING\n ) {\n // Data already fetched and data valid, or fetching. Do not fetch\n return;\n }\n\n // Data not fetched or invalid, let's fetch\n commit(SET_PROCESSED_STATS_STATUS, {\n timeRange: timeRange,\n status: DataStatus.FETCHING,\n });\n commit(SET_PROCESSED_STATS_LAST_FETCHED, {\n timeRange: timeRange,\n timestamp: Date.now(),\n });\n\n const { startTime, endTime } = getTimeRange(rootState.timeRange, timeRange);\n\n const params = {\n names: getAllProcessedStatsNames().join(),\n startTime,\n endTime,\n };\n\n const cacheID = rootState.activeCacheID;\n\n return CacheService.request(`caches/${cacheID}/insight/processed_stats`, RequestMethod.GET, params)\n .then(response => {\n if (response.data === null) {\n dispatch(\"setEmptySeries\", {\n timeRange: timeRange,\n statsMutation: SET_PROCESSED_STATS,\n statusMutation: SET_PROCESSED_STATS_STATUS,\n status: DataStatus.FETCHED,\n });\n return;\n }\n\n const seriesArray: Series[] = response.data;\n\n for (const chartID of getChartIDsFor(StatType.PROCESSED)) {\n const payload: SeriesPayload = {\n timeRange,\n chartID,\n seriesArray: generateChartSeries(seriesArray, chartID),\n };\n commit(SET_PROCESSED_STATS, payload);\n }\n\n commit(SET_PROCESSED_STATS_STATUS, {\n timeRange: timeRange,\n status: DataStatus.FETCHED,\n });\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.PROCESSED_STATS_ERROR} for ${timeRange} (${error})`);\n\n dispatch(\"setEmptySeries\", {\n timeRange: timeRange,\n statsMutation: SET_PROCESSED_STATS,\n statusMutation: SET_PROCESSED_STATS_STATUS,\n status: DataStatus.FAILED,\n });\n\n commit(SET_PROCESSED_STATS_LAST_FETCHED, {\n timeRange: timeRange,\n timestamp: 0,\n });\n });\n },\n fetchPerServerStats({ commit, dispatch, state, rootState }, timeRange: TimeRange) {\n const valid = !!(\n state.perServerProcessedStatsLastFetched[timeRange] &&\n state.perServerProcessedStatsLastFetched[timeRange] + PROCESSED_STATS_LIFETIME - LIFETIME_MARGIN >= Date.now()\n );\n\n if (\n (state.perServerProcessedStatsStatus[timeRange] === DataStatus.FETCHED && valid) ||\n state.perServerProcessedStatsStatus[timeRange] === DataStatus.FETCHING\n ) {\n // Data already fetched and data valid, or fetching. Do not fetch\n return;\n }\n\n // Data not fetched or invalid, let's fetch\n commit(SET_PER_SERVER_PROCESSED_STATS_STATUS, {\n timeRange: timeRange,\n status: DataStatus.FETCHING,\n });\n commit(SET_PER_SERVER_PROCESSED_STATS_LAST_FETCHED, {\n timeRange: timeRange,\n timestamp: Date.now(),\n });\n\n const { startTime, endTime } = getTimeRange(rootState.timeRange, timeRange);\n\n const params = {\n names: getAllProcessedStatsNames().join(),\n startTime,\n endTime,\n };\n\n const cacheID = rootState.activeCacheID;\n\n return CacheService.request(`caches/${cacheID}/insight/processed_stats/per_server`, RequestMethod.GET, params)\n .then(response => {\n if (response.data === null) {\n dispatch(\"setEmptySeries\", {\n timeRange: timeRange,\n statsMutation: SET_PER_SERVER_PROCESSED_STATS,\n statusMutation: SET_PER_SERVER_PROCESSED_STATS_STATUS,\n status: DataStatus.FETCHED,\n });\n return;\n }\n\n const seriesArray: Series[] = response.data;\n\n for (const chartID of getChartIDsFor(StatType.PROCESSED)) {\n const payload: SeriesPayload = {\n timeRange,\n chartID,\n seriesArray: generateChartSeries(seriesArray, chartID),\n };\n commit(SET_PER_SERVER_PROCESSED_STATS, payload);\n }\n\n commit(SET_PER_SERVER_PROCESSED_STATS_STATUS, {\n timeRange: timeRange,\n status: DataStatus.FETCHED,\n });\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.PROCESSED_STATS_ERROR} per server for ${timeRange} (${error})`);\n\n dispatch(\"setEmptySeries\", {\n timeRange: timeRange,\n statsMutation: SET_PER_SERVER_PROCESSED_STATS,\n statusMutation: SET_PER_SERVER_PROCESSED_STATS_STATUS,\n status: DataStatus.FAILED,\n });\n\n commit(SET_PER_SERVER_PROCESSED_STATS_LAST_FETCHED, {\n timeRange: timeRange,\n timestamp: 0,\n });\n });\n },\n resetState({ commit }) {\n commit(RESET_STATE);\n },\n setEmptySeries(\n { commit },\n payload: { timeRange: TimeRange; statsMutation: string; statusMutation: string; status: DataStatus },\n ) {\n const { timeRange, statsMutation, statusMutation, status } = payload;\n // set empty values for series' data. To show data unavailable, preventing indefinite loading\n for (const chartID of getChartIDsFor(StatType.PROCESSED)) {\n const payload: SeriesPayload = {\n timeRange: timeRange,\n chartID: chartID,\n seriesArray: emptySeriesArray(),\n };\n commit(statsMutation, payload);\n }\n\n commit(statusMutation, {\n timeRange: timeRange,\n status: status,\n });\n },\n};\n\nconst getters: GetterTree = {\n aggregateSeries: (state, getters, rootState) => (chartID: string, chartIndex: number): false | Series => {\n const series = state.processedStats[rootState.timeRange][chartID][chartIndex];\n if (series) {\n return series;\n }\n return false;\n },\n perServerSeries: (state, getters, rootState) => (chartID: string, chartIndex: number): false | Series => {\n const series = state.perServerProcessedStats[rootState.timeRange][chartID][chartIndex];\n if (series) {\n return series;\n }\n return false;\n },\n perServerSeriesName: (state, getters, rootState) => (chartID: string, chartIndex: number): string => {\n const tags = state.perServerProcessedStats[rootState.timeRange][chartID][chartIndex]?.tags;\n if (tags) {\n return tags.server;\n }\n return \"\";\n },\n // Loading strategy:\n // - if status = FETCHED, data is ready\n // - else if status = FAILED, no data available\n // - else loading (status = UNFETCHED or status = FETCHING)\n perServerSeriesStatus: (state, getters, rootState) => {\n const status = state.perServerProcessedStatsStatus[rootState.timeRange];\n if (status) {\n return status;\n }\n return DataStatus.UNFETCHED;\n },\n statLastHour: state => (chartID: string, statName: string): number | null | false => {\n // Use `LAST_WEEK` because it has one hour granularity\n const series = state.processedStats[TimeRange.LAST_WEEK][chartID][0];\n\n if (!series) {\n return false; // Loading for use with BaseStats. null is a valid value\n }\n\n const points = series.values;\n\n if (points.length < 1) {\n return null; // no data/unavailable\n }\n\n const lastPoint = points[points.length - 1];\n\n const lastTime = new Date(lastPoint[0]);\n\n const timeLimit = new Date();\n timeLimit.setMinutes(timeLimit.getMinutes() - 90);\n\n // Most recent stat is invalid if older than 1 hour\n if (lastTime < timeLimit) {\n return null;\n }\n\n return lastPoint[series.columns.indexOf(statName)];\n },\n};\n\nexport const processedStats: Module = {\n namespaced,\n state,\n mutations,\n actions,\n getters,\n};\n","import { NOTIFICATION_PUSH, NOTIFICATION_DELETE } from \"@/store/mutation-types\";\nimport { RootState } from \"@/types/root-state\";\nimport { NotificationState, NotificationSingle } from \"@/types/notification\";\nimport { Module, MutationTree, ActionTree } from \"vuex\";\n\nconst namespaced = true;\n\nconst state: NotificationState = {\n notifications: [],\n};\n\nlet nextID = 1;\n\nconst mutations: MutationTree = {\n [NOTIFICATION_PUSH]: (state, notification: NotificationSingle) => {\n state.notifications.push({\n ...notification,\n id: nextID++,\n });\n },\n [NOTIFICATION_DELETE]: (state, notificationToRemove: NotificationSingle) => {\n state.notifications = state.notifications.filter(notification => notification.id !== notificationToRemove.id);\n },\n};\n\nconst actions: ActionTree = {\n add({ commit }, notification: NotificationSingle) {\n commit(NOTIFICATION_PUSH, notification);\n },\n remove({ commit }, notificationToRemove: NotificationSingle) {\n commit(NOTIFICATION_DELETE, notificationToRemove);\n },\n};\n\nexport const notifications: Module = {\n namespaced,\n state,\n mutations,\n actions,\n};\n","import {\n SET_ALERTS,\n SET_DELIVERY_CONFIGS,\n SET_SHOW_ADD_DELIVERY_CONFIG,\n SET_SMTP_CONFIG,\n SET_SMTP_CONFIG_IS_DEFAULT,\n} from \"@/store/mutation-types\";\nimport CacheService from \"@/services/CacheService\";\nimport { RequestMethod } from \"@/types/request-method\";\nimport { AlertsState, Alert, DeliveryConfig, SMTPConfig, SMTPConfigResponse, SMTPTestResponse } from \"@/types/alert\";\nimport { RootState } from \"@/types/root-state\";\nimport * as Msg from \"@/config/notification\";\nimport { setNotificationSuccess, setNotificationError } from \"@/utils/notification\";\nimport { isAdminUsingProd } from \"@/utils/admin\";\nimport { Module, MutationTree, ActionTree, GetterTree } from \"vuex\";\n\nconst namespaced = true;\n\nconst state: AlertsState = {\n alerts: null,\n deliveryConfigs: null,\n showAddDeliveryConfig: false,\n SMTPConfig: false,\n SMTPConfigIsDefault: true, // Kapacitor defaults used initially\n};\n\nconst mutations: MutationTree = {\n [SET_ALERTS]: (state, alerts: Alert[]) => {\n state.alerts = alerts;\n },\n [SET_DELIVERY_CONFIGS]: (state, deliveryConfigs: DeliveryConfig[]) => {\n state.deliveryConfigs = deliveryConfigs;\n },\n [SET_SHOW_ADD_DELIVERY_CONFIG]: (state, show: boolean) => {\n state.showAddDeliveryConfig = show;\n },\n [SET_SMTP_CONFIG]: (state, SMTPConfig: SMTPConfig | null) => {\n state.SMTPConfig = SMTPConfig;\n },\n [SET_SMTP_CONFIG_IS_DEFAULT]: (state, isDefault: boolean) => {\n state.SMTPConfigIsDefault = isDefault;\n },\n};\n\nconst actions: ActionTree = {\n fetch({ commit, dispatch, rootState }) {\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/alerts`, RequestMethod.GET)\n .then(response => {\n const alerts: Alert[] = response.data;\n commit(SET_ALERTS, alerts);\n })\n .catch(error => {\n // Set from null to [] to know fetching has completed\n // to differentiate between loading and no data\n commit(SET_ALERTS, []);\n setNotificationError(dispatch, `${Msg.ALERTS_ERROR} (${error})`);\n });\n },\n add({ dispatch, rootState }, alert: Alert) {\n if (isAdminUsingProd()) return;\n const data = {\n trigger_type: alert.trigger_type,\n trigger_threshold: alert.trigger_threshold,\n delivery_config_id: alert.delivery_config_id,\n description: alert.description,\n enabled: true,\n };\n\n const cacheID = rootState.activeCacheID;\n\n return CacheService.request(`caches/${cacheID}/alerts`, RequestMethod.POST, {}, data)\n .then(() => {\n dispatch(\"fetch\");\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.ALERT_ADD_ERROR} (${error})`);\n });\n },\n update({ dispatch, rootState }, alert: Alert) {\n if (isAdminUsingProd()) return;\n const data = {\n id: alert.id,\n trigger_type: alert.trigger_type,\n trigger_threshold: alert.trigger_threshold,\n delivery_config_id: alert.delivery_config_id,\n description: alert.description,\n enabled: alert.enabled,\n };\n\n const cacheID = rootState.activeCacheID;\n\n return CacheService.request(`caches/${cacheID}/alerts/${alert.id}`, RequestMethod.PUT, {}, data)\n .then()\n .catch(error => {\n setNotificationError(dispatch, `${Msg.ALERT_UPDATE_ERROR} (${error})`);\n });\n },\n remove({ dispatch, rootState }, alert: Alert) {\n if (isAdminUsingProd()) return;\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/alerts/${alert.id}`, RequestMethod.DELETE)\n .then(() => {\n dispatch(\"fetch\");\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.ALERT_REMOVE_ERROR} (${error})`);\n });\n },\n fetchDeliveryConfigs({ commit, dispatch, rootState }) {\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/alerts/configs`, RequestMethod.GET)\n .then(response => {\n const deliveryConfigs: DeliveryConfig[] = response.data;\n commit(SET_DELIVERY_CONFIGS, deliveryConfigs);\n })\n .catch(error => {\n // Set from null to [] to know fetching has completed\n // to differentiate between loading and no data\n commit(SET_DELIVERY_CONFIGS, []);\n setNotificationError(dispatch, `${Msg.ALERTS_CONFIG_ERROR} (${error})`);\n });\n },\n addDeliveryConfig({ dispatch, rootState }, deliveryConfig: DeliveryConfig) {\n if (isAdminUsingProd()) return;\n\n // make sure first Slack channel character is #\n if (\n deliveryConfig.delivery_type === \"slack\" &&\n deliveryConfig.slack_channel &&\n !deliveryConfig.slack_channel.startsWith(\"#\")\n ) {\n deliveryConfig.slack_channel = `#${deliveryConfig.slack_channel}`;\n }\n\n const data = {\n delivery_type: deliveryConfig.delivery_type,\n email: deliveryConfig.email,\n slack_url: deliveryConfig.slack_url,\n slack_channel: deliveryConfig.slack_channel,\n };\n\n const cacheID = rootState.activeCacheID;\n\n return CacheService.request(`caches/${cacheID}/alerts/configs`, RequestMethod.POST, {}, data)\n .then(() => {\n dispatch(\"fetchDeliveryConfigs\");\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.ALERT_CONFIG_ADD_ERROR} (${error})`);\n });\n },\n removeDeliveryConfig({ dispatch, rootState }, deliveryConfigID: number) {\n if (isAdminUsingProd()) return;\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/alerts/configs/${deliveryConfigID}`, RequestMethod.DELETE)\n .then(() => {\n dispatch(\"fetchDeliveryConfigs\");\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.ALERT_CONFIG_REMOVE_ERROR} (${error})`);\n });\n },\n setShowAddDeliveryConfig({ commit }, show: boolean) {\n commit(SET_SHOW_ADD_DELIVERY_CONFIG, show);\n },\n fetchSMTPConfig({ commit, dispatch }) {\n return CacheService.request(`smtp`, RequestMethod.GET)\n .then(response => {\n const configResponse: SMTPConfigResponse = response.data;\n const opts = configResponse.elements[0].options;\n\n // Determine Kapacitor defaults are being used if username is an empty string.\n\n const config: SMTPConfig = {\n from: opts.from,\n username: opts.username,\n password: \"\",\n host: opts.username ? opts.host : \"\", // Do not use Kapacitor `localhost` default\n port: opts.port, // Kapacitor default is 25\n };\n\n commit(SET_SMTP_CONFIG, config);\n\n if (opts.username !== \"\") {\n commit(SET_SMTP_CONFIG_IS_DEFAULT, false);\n }\n })\n .catch(error => {\n commit(SET_SMTP_CONFIG, null);\n commit(SET_SMTP_CONFIG_IS_DEFAULT, true);\n setNotificationError(dispatch, `${Msg.SMTP_CONFIG_FETCH_ERROR} (${error})`);\n });\n },\n setSMTPConfig({ commit, dispatch }, config: SMTPConfig) {\n if (isAdminUsingProd()) return;\n\n return CacheService.request(`smtp`, RequestMethod.POST, {}, config)\n .then(response => {\n const configResponse: SMTPConfigResponse = response.data;\n const opts = configResponse.elements[0].options;\n\n const config: SMTPConfig = {\n from: opts.from,\n username: opts.username,\n password: \"\",\n host: opts.host,\n port: opts.port,\n };\n\n commit(SET_SMTP_CONFIG, config);\n\n if (opts.username !== \"\") {\n commit(SET_SMTP_CONFIG_IS_DEFAULT, false);\n }\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.SMTP_CONFIG_SET_ERROR} (${error})`);\n });\n },\n sendTestEmail({ dispatch }, email: string) {\n if (isAdminUsingProd()) return;\n\n const testOpts = {\n to: email,\n subject: \"[CacheSight Alert] Test email alert\",\n body: \"This is test email alert. Your SMTP settings are configured correctly!\",\n };\n\n return CacheService.request(`smtp/test`, RequestMethod.POST, {}, testOpts)\n .then(response => {\n const testResponse: SMTPTestResponse = response.data;\n\n if (testResponse.success) {\n setNotificationSuccess(dispatch, Msg.TEST_EMAIL_SUCCESS);\n } else {\n setNotificationError(dispatch, `${Msg.TEST_EMAIL_ERROR} (${testResponse.message})`);\n }\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.TEST_EMAIL_ERROR} (${error})`);\n });\n },\n};\n\nconst getters: GetterTree = {\n deliveryConfigInUse: state => (deliveryConfigID: number) => {\n return state.alerts?.find(alert => alert.delivery_config_id === deliveryConfigID);\n },\n deliveryConfigByID: state => (deliveryConfigID: number | null) => {\n return state.deliveryConfigs?.find(deliveryConfig => deliveryConfig.id === deliveryConfigID);\n },\n isSMTPConfigSet: (state, getters, rootState, rootGetters) => {\n const features = rootGetters[\"settings/activeCacheFeatures\"];\n if (features[\"alert-config\"] === 0) {\n return true;\n }\n return !state.SMTPConfigIsDefault;\n },\n};\n\nexport const alerts: Module = {\n namespaced,\n state,\n mutations,\n actions,\n getters,\n};\n","import { Series, SeriesPoint } from \"@/types/common\";\nimport {\n PREFIX_COMPOUND_METRIC_PREFIX,\n PREFIX_COMPOUND_METRICS,\n COMPOUND_METRICS_PROCESSED_STATS,\n} from \"@/config/series\";\n\n// Find the compound stats series point which matches\n// the prefix point at an index.\n// There will generally be fewer prefix stats points than compound stats points.\n// Timestamp intervals can be inconsistent, so starting\n// from the first matching timestamp is insufficient.\n// Matching by timestamp, to the minute (assuming minutes are consistent enough)\n// e.g. compound stat - prefix stat\n// 2020-01-07T16:31:26.368201Z - 2020-01-07T16:31:27.496081Z\n// matched on '2020-01-07T16:31' (first 16 chars)\nfunction matchingCompoundPoint(\n prefixPoints: SeriesPoint[],\n prefixIdx: number,\n compoundPoints: SeriesPoint[],\n compoundIdx: number,\n):\n | false\n | {\n point: SeriesPoint;\n index: number;\n } {\n const len = 16; // 'YYYY-MM-HHThh:mm'\n const timeIdx = 0;\n\n const prefixTime = prefixPoints[prefixIdx][timeIdx].substring(0, len);\n\n // Loop through compound stats to find matching index,\n // starting from previous index\n for (let i = compoundIdx; i < compoundPoints.length; i++) {\n const compoundTime = compoundPoints[i][timeIdx].substring(0, len);\n if (compoundTime === prefixTime) {\n return {\n point: compoundPoints[i],\n index: i,\n };\n }\n }\n\n return false; // no match found\n}\n\n// Calculate average granularity for a series\n// granularity is the time between points\nexport function getGranularity(points: SeriesPoint[]) {\n const count = 5; // get average of first 5 points\n let intervals = 0;\n for (let i = 0; i < count; i++) {\n intervals += Date.parse(points[i + 1][0]) - Date.parse(points[i][0]);\n }\n return intervals / count; // milliseconds\n}\n\n// Combine compound stats and processed stats series\n//\n// The closest processed stats point is always matched to the compound stats point\n// being iterated over, meaning the same processed stats point could be reused\n// and matched to multiple compound stats points.\nexport function combineCompoundAndProcessedStatsPoints(\n compoundPoints: SeriesPoint[],\n processedStatsPoints: SeriesPoint[],\n) {\n // If there are no processed stats values, fill out the series with null values\n if (processedStatsPoints.length < 1) {\n return compoundPoints.map(cPoint => {\n const nulls = COMPOUND_METRICS_PROCESSED_STATS.map(() => null);\n return [...cPoint, ...nulls];\n });\n }\n\n const timeIdx = 0; // time always first item in a series\n\n let psStartIdx = 0;\n\n // Loop through all compound stats points in the series\n // and find matching processed stats points\n return compoundPoints.map(cPoint => {\n // Get timestamp for arithmetic\n const cTime = new Date(cPoint[timeIdx]).getTime();\n\n // Continue looping through process stats point for a match to the current\n // compound stats point\n for (let psIdx = psStartIdx; psIdx < processedStatsPoints.length; psIdx++) {\n const psTime = new Date(processedStatsPoints[psIdx][timeIdx]).getTime();\n\n // perfect match, no more to do here\n if (cTime === psTime) {\n psStartIdx = psIdx;\n break;\n }\n\n // no more processed stats points are available, use the last point\n if (!processedStatsPoints[psIdx + 1]) {\n psStartIdx = psIdx;\n break;\n }\n\n const nextPsTime = new Date(processedStatsPoints[psIdx + 1][timeIdx]).getTime();\n\n const diff = Math.abs(psTime - cTime);\n const nextDiff = Math.abs(nextPsTime - cTime);\n\n // if next time difference is greater than current, the current point is the closest\n if (nextDiff > diff) {\n psStartIdx = psIdx;\n break;\n }\n // else the next point is closer (better), so keep searching\n }\n\n return [...cPoint, ...processedStatsPoints[psStartIdx].slice(1)]; // slice time\n });\n}\n\nexport function combineCompoundAndProcessedStats(compoundStats: Series, processedStats: Series) {\n // Combine columns\n compoundStats.columns.push(...processedStats.columns.slice(1)); // remove time\n\n // Combine values\n compoundStats.values = combineCompoundAndProcessedStatsPoints(compoundStats.values, processedStats.values);\n\n return compoundStats;\n}\n\nfunction calcPercent(\n prefixPoint: SeriesPoint,\n compoundPoint: SeriesPoint,\n metric: typeof PREFIX_COMPOUND_METRICS[number],\n prefixMetrics: string[],\n compoundMetrics: string[],\n): number | null {\n const metricSuffix = metric.replace(PREFIX_COMPOUND_METRIC_PREFIX, \"\");\n const cVal = compoundPoint[compoundMetrics.indexOf(`compound_${metricSuffix}`)];\n\n if (cVal === 0) return 0; // don't divide by zero\n\n const pVal = prefixPoint[prefixMetrics.indexOf(`prefix_${metricSuffix}`)];\n\n if (cVal === null || pVal === null) return null;\n\n return pVal / cVal;\n}\n\n// Combine prefix and compound stats series' into a single series\nexport function combinePrefixAndCompoundStatsPoints(prefixSeries: Series, compoundSeries: Series): SeriesPoint[] {\n const prefixPoints = prefixSeries.values;\n const compoundPoints = compoundSeries.values;\n\n const pMetrics = prefixSeries.columns;\n const cMetrics = compoundSeries.columns.slice(1);\n\n // Used to fill out null compound stats point values when while combining\n // prefix and compound series.\n // Slice `1` to remove time, the combined series uses the prefix series' time.\n // Add metrics calculated here.\n const pointLen = cMetrics.length + PREFIX_COMPOUND_METRICS.length;\n\n // if the compound stats point does not exist, populate the combined point\n // with the appropriate amount of null values\n const compoundPointEmpty: SeriesPoint = [];\n for (let i = 0; i < pointLen; i++) {\n compoundPointEmpty.push(null);\n }\n\n let compoundStartingIndex = 0;\n\n return prefixPoints.map((prefixPoint, i) => {\n let compoundPoint = compoundPointEmpty;\n\n const matched = matchingCompoundPoint(prefixPoints, i, compoundPoints, compoundStartingIndex);\n\n if (matched) {\n compoundStartingIndex = matched.index;\n\n // Slice `1` to remove time, the combined series uses the prefix series' time\n compoundPoint = matched.point.slice(1);\n\n // Add points calculated using prefix and compound stats values here,\n // instead of in modules/debug-mode.ts, because here we have checked for,\n // and definitely have, prefix and compound stats values.\n // Checking and fetching within the fetchPrefixStats action would be convoluted\n\n for (const metric of PREFIX_COMPOUND_METRICS) {\n compoundPoint.push(calcPercent(prefixPoint, compoundPoint, metric, pMetrics, cMetrics));\n }\n }\n\n return [...prefixPoint, ...compoundPoint];\n });\n}\n\nexport function combinePrefixAndCompoundStats(prefixStats: Series, compoundStats: Series) {\n // Combine columns\n prefixStats.columns.push(\n ...compoundStats.columns.slice(1), // slice to remove time\n ...PREFIX_COMPOUND_METRICS,\n );\n\n // Combine values\n prefixStats.values = combinePrefixAndCompoundStatsPoints(prefixStats, compoundStats);\n\n return prefixStats;\n}\n","import {\n SET_LOGS,\n SET_SLAB_STATS,\n SET_PROCESSED_SLAB_STATS,\n SET_PROCESSED_SLAB_STATS_FETCHED,\n SET_COMPOUND_STATS,\n SET_PREFIXES,\n SET_POPULAR_ITEMS,\n SET_POPULAR_ITEMS_STATUS,\n SET_PREFIX_POPULAR_ITEMS_STATUS,\n SET_PREFIX_POPULAR_ITEMS_LAST_FETCHED,\n SET_POPULAR_ITEMS_LAST_FETCHED,\n SET_PREFIX_POPULAR_ITEMS,\n SET_PREFIX_STATS,\n SET_COMPOUND_STATS_STATUS,\n SET_COMPOUND_STATS_LAST_FETCHED,\n SET_PREFIX_STATS_STATUS,\n SET_PREFIX_STATS_LAST_FETCHED,\n SET_KEY_STATS,\n SET_KEY_STATS_SERIES,\n SET_SHOW_ADD_PREFIX,\n} from \"@/store/mutation-types\";\nimport CacheService from \"@/services/CacheService\";\nimport { RequestMethod } from \"@/types/request-method\";\nimport { TimeRange, TIME_RANGES } from \"@/types/time-range\";\nimport {\n DebugModeState,\n LogsPerServer,\n Prefix,\n PrefixSeriesPayload,\n PopularItems,\n SlabStatsPoint,\n KeyStatsPoint,\n} from \"@/types/debug-mode\";\nimport { Series, SeriesPoint, SeriesPayload, DataStatus } from \"@/types/common\";\nimport { StatType } from \"@/types/stats\";\nimport { RootState } from \"@/types/root-state\";\nimport { NotificationType, Issue } from \"@/types/notification\";\nimport * as Msg from \"@/config/notification\";\nimport {\n LIFETIME_MARGIN,\n COMPOUND_STATS_LIFETIME,\n PREFIX_STATS_LIFETIME,\n POPULAR_ITEMS_LIFETIME,\n PREFIX_POPULAR_ITEMS_LIFETIME,\n COMPOUND_METRICS_PROCESSED_STATS,\n emptySeriesArray,\n} from \"@/config/series\";\nimport { setNotificationError } from \"@/utils/notification\";\nimport { combineCompoundAndProcessedStats, combinePrefixAndCompoundStats } from \"@/utils/debug-mode\";\nimport { getTimeRange } from \"@/utils/conversion\";\nimport {\n generateProcessedStatsState,\n generateChartSeries,\n appendCalculatedMetricsToSeries,\n prependColumnNames,\n trimNullPoints,\n} from \"@/utils/series\";\nimport { getChartIDsFor, getValuesIdxByMetric } from \"@/utils/chart\";\nimport { isAdminUsingProd } from \"@/utils/admin\";\nimport { Module, MutationTree, ActionTree, GetterTree } from \"vuex\";\nimport Vue from \"vue\";\n\nconst namespaced = true;\n\nconst state: DebugModeState = {\n logs: null,\n slabStats: null,\n processedSlabStats: generateProcessedStatsState(StatType.SLAB),\n processedSlabStatsFetched: false,\n compoundStats: generateProcessedStatsState(StatType.COMPOUND),\n compoundStatsStatus: {},\n compoundStatsLastFetched: {},\n popularItems: null,\n popularItemsStatus: DataStatus.UNFETCHED,\n popularItemsLastFetched: 0,\n prefixPopularItemsStatus: {},\n prefixPopularItemsLastFetched: {},\n prefixes: null, // id, name\n // cached prefix stats\n prefixStats: {},\n prefixStatsStatus: {},\n prefixStatsLastFetched: {},\n prefixPopularItems: {}, // [id]: PopularItems\n // cached key stats\n keyStats: {}, // [key_name]: stats[]\n keyStatsSeries: {}, // stats are transformed to match the InfluxDB format\n showAddPrefix: false,\n};\n\nconst mutations: MutationTree = {\n [SET_LOGS]: (state, logs: LogsPerServer) => {\n state.logs = logs;\n },\n [SET_SLAB_STATS]: (state, stats: SlabStatsPoint[]) => {\n state.slabStats = stats;\n },\n [SET_PROCESSED_SLAB_STATS]: (state, payload: SeriesPayload) => {\n state.processedSlabStats[payload.timeRange][payload.chartID] = payload.seriesArray;\n },\n [SET_PROCESSED_SLAB_STATS_FETCHED]: (state, fetched: boolean) => {\n state.processedSlabStatsFetched = fetched;\n },\n [SET_COMPOUND_STATS]: (state, payload: SeriesPayload) => {\n // Initial state with time ranges is generated, so\n // no need to check if a time range property exists\n Vue.set(state.compoundStats[payload.timeRange], payload.chartID, payload.seriesArray);\n },\n [SET_COMPOUND_STATS_STATUS]: (state, payload: { timeRange: TimeRange; status: DataStatus }) => {\n Vue.set(state.compoundStatsStatus, payload.timeRange, payload.status);\n },\n [SET_PREFIX_STATS_STATUS]: (state, payload: { prefixID: number; timeRange: TimeRange; status: DataStatus }) => {\n if (!state.prefixStatsStatus[payload.prefixID]) {\n Vue.set(state.prefixStatsStatus, payload.prefixID, {});\n }\n\n Vue.set(state.prefixStatsStatus[payload.prefixID], payload.timeRange, payload.status);\n },\n [SET_COMPOUND_STATS_LAST_FETCHED]: (state, payload: { timeRange: TimeRange; timestamp: number }) => {\n Vue.set(state.compoundStatsLastFetched, payload.timeRange, payload.timestamp);\n },\n [SET_PREFIX_STATS_LAST_FETCHED]: (state, payload: { prefixID: number; timeRange: TimeRange; timestamp: number }) => {\n if (!state.prefixStatsLastFetched[payload.prefixID]) {\n Vue.set(state.prefixStatsLastFetched, payload.prefixID, {});\n }\n\n Vue.set(state.prefixStatsLastFetched[payload.prefixID], payload.timeRange, payload.timestamp);\n },\n [SET_POPULAR_ITEMS]: (state, popular_items: PopularItems) => {\n state.popularItems = popular_items;\n },\n [SET_POPULAR_ITEMS_STATUS]: (state, status: DataStatus) => {\n state.popularItemsStatus = status;\n },\n [SET_POPULAR_ITEMS_LAST_FETCHED]: (state, timestamp: number) => {\n state.popularItemsLastFetched = timestamp;\n },\n [SET_PREFIX_POPULAR_ITEMS_STATUS]: (state, payload: { prefixID: number; status: DataStatus }) => {\n Vue.set(state.prefixPopularItemsStatus, payload.prefixID, payload.status);\n },\n [SET_PREFIX_POPULAR_ITEMS_LAST_FETCHED]: (state, payload: { prefixID: number; timestamp: number }) => {\n Vue.set(state.prefixPopularItemsLastFetched, payload.prefixID, payload.timestamp);\n },\n [SET_PREFIXES]: (state, prefixes: Prefix[]) => {\n state.prefixes = prefixes;\n },\n [SET_PREFIX_STATS]: (state, payload: PrefixSeriesPayload) => {\n // Initial state is not generated, because prefixes are initially unknown.\n // Need to check if a prefix ID property, and time range property exist.\n if (!state.prefixStats[payload.prefixID]) {\n Vue.set(state.prefixStats, payload.prefixID, {});\n }\n\n if (!state.prefixStats[payload.prefixID][payload.timeRange]) {\n Vue.set(state.prefixStats[payload.prefixID], payload.timeRange, {});\n }\n\n Vue.set(state.prefixStats[payload.prefixID][payload.timeRange], payload.chartID, payload.seriesArray);\n },\n [SET_PREFIX_POPULAR_ITEMS]: (state, payload: { prefixID: number; popularItems: PopularItems }) => {\n Vue.set(state.prefixPopularItems, payload.prefixID, payload.popularItems);\n },\n [SET_KEY_STATS]: (state, payload: { name: string; stats: KeyStatsPoint[] }) => {\n Vue.set(state.keyStats, payload.name, payload.stats);\n },\n [SET_KEY_STATS_SERIES]: (state, payload: { name: string; series: SeriesPoint[] }) => {\n Vue.set(state.keyStatsSeries, payload.name, payload.series);\n },\n [SET_SHOW_ADD_PREFIX]: (state, show: boolean) => {\n state.showAddPrefix = show;\n },\n};\n\nconst actions: ActionTree = {\n fetchLogs({ commit, dispatch, rootState }) {\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/introspection/recent_logs`, RequestMethod.GET)\n .then(response => {\n const logs: LogsPerServer = response.data;\n commit(SET_LOGS, logs);\n })\n .catch(error => {\n commit(SET_LOGS, {}); // prevent indefinite loading\n setNotificationError(dispatch, `${Msg.LOGS_ERROR} (${error})`);\n });\n },\n fetchProcessedSlabStatsByTimeRange({ dispatch }) {\n for (const timeRange of TIME_RANGES) {\n dispatch(\"fetchProcessedSlabStats\", timeRange);\n }\n },\n fetchSlabStats({ commit, dispatch, rootState }) {\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/introspection/slab_stats`, RequestMethod.GET)\n .then(response => {\n const stats: SlabStatsPoint[] = response.data;\n\n // TODO Is sorting needed?\n stats.sort(function(a: any, b: any) {\n if (a.timestamp < b.timestamp) return -1;\n if (a.timestamp > b.timestamp) return 1;\n return 0;\n });\n\n commit(SET_SLAB_STATS, stats);\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.SLAB_STATS_ERROR} (${error})`);\n });\n },\n // TODO handle indefinite loading on null response, catch errors\n fetchProcessedSlabStats({ commit, dispatch, rootState }, timeRange: TimeRange) {\n const { startTime, endTime } = getTimeRange(rootState.timeRange, timeRange);\n\n const params = {\n startTime,\n endTime,\n };\n\n const cacheID = rootState.activeCacheID;\n\n return CacheService.request(`caches/${cacheID}/introspection/processed_slab_stats`, RequestMethod.GET, params).then(\n response => {\n if (response.data === null) {\n return;\n }\n\n const seriesArray: Series[] = response.data;\n\n for (const chartID of getChartIDsFor(StatType.SLAB)) {\n const payload: SeriesPayload = {\n timeRange,\n chartID,\n seriesArray: generateChartSeries(seriesArray, chartID),\n };\n commit(SET_PROCESSED_SLAB_STATS, payload);\n }\n dispatch(\"setProcessedSlabStatsFetched\");\n },\n );\n },\n setProcessedSlabStatsFetched({ commit }) {\n commit(SET_PROCESSED_SLAB_STATS_FETCHED, true);\n },\n fetchCompoundStatsByTimeRange({ dispatch }) {\n for (const timeRange of TIME_RANGES) {\n dispatch(\"fetchCompoundStats\", timeRange);\n }\n },\n async fetchCompoundStats({ commit, dispatch, state, rootState }, timeRange: TimeRange) {\n // If we are already fetching data, wait until fetched\n if (state.compoundStatsStatus[timeRange] === DataStatus.FETCHING) {\n /*\n Polling is needed for compound stats only (and not prefix stats or processed stats) because prefix stats depend on compound stats.\n \n e.g. While fetching LAST_HOUR stats for prefix A, we need to start fetching LAST_HOUR compound stats (if not already fetched).\n Then we start fetching LAST_HOUR stats for prefix B right after A, and see that LAST_HOUR compound stats \n are currently being fetched, so the prefix B fetch needs to wait. We poll to determine when compound stats are \n ready, and then continue preparing stats for prefix B.\n */\n const poll = (result: { (): boolean }) => {\n const timeout = Date.now() + 10000; // wait up to 10s\n\n const checkStatus = function(resolve: (value?: unknown) => void, reject: (value?: unknown) => void) {\n if (result()) {\n resolve(result);\n } else if (Date.now() < timeout) {\n setTimeout(checkStatus, 500, resolve, reject);\n } else {\n reject(new Error(\"Timed out fetching compound stats\"));\n }\n };\n\n return new Promise(checkStatus);\n };\n\n return await poll(() => state.compoundStatsStatus[timeRange] === DataStatus.FETCHED);\n }\n\n const valid = !!(\n state.compoundStatsLastFetched[timeRange] &&\n state.compoundStatsLastFetched[timeRange] + COMPOUND_STATS_LIFETIME - LIFETIME_MARGIN >= Date.now()\n );\n\n if (state.compoundStatsStatus[timeRange] === DataStatus.FETCHED && valid) {\n // Data already fetched and data valid, or fetching. Do not fetch\n return;\n }\n\n // Data not fetched or invalid, let's fetch\n commit(SET_COMPOUND_STATS_STATUS, {\n timeRange: timeRange,\n status: DataStatus.FETCHING,\n });\n commit(SET_COMPOUND_STATS_LAST_FETCHED, {\n timeRange: timeRange,\n timestamp: Date.now(),\n });\n\n const { startTime, endTime } = getTimeRange(rootState.timeRange, timeRange);\n\n const params = {\n startTime,\n endTime,\n };\n\n const cacheID = rootState.activeCacheID;\n\n return CacheService.request(`caches/${cacheID}/introspection/compound_stats`, RequestMethod.GET, params)\n .then(response => {\n if (response.data === null) {\n dispatch(\"setEmptyCompoundStatSeries\", {\n timeRange: timeRange,\n status: DataStatus.FETCHED,\n });\n return;\n }\n\n let seriesArray: Series[] = response.data;\n\n // compound stats should always be an array of one series,\n // map anyway to be more robust\n seriesArray = seriesArray.map(series => {\n trimNullPoints(series.values);\n\n const appendedSeries = appendCalculatedMetricsToSeries(series);\n\n // prepend columns names only after appending calculated metrics\n const prependedColumns = prependColumnNames(appendedSeries.columns, \"compound_\");\n\n return {\n columns: prependedColumns,\n name: series.name,\n values: appendedSeries.values,\n };\n });\n\n // return because `fetchPrefixStats()` depends on this promise being fulfilled\n return dispatch(\"fetchProcessedStatsForCompoundStats\", {\n startTime,\n endTime,\n }).then(processedStatsSeries => {\n seriesArray = seriesArray.map(series => {\n series = combineCompoundAndProcessedStats(series, processedStatsSeries);\n return series;\n });\n\n // commit all stats so combined prefix stats can be calculated\n const allPayload: SeriesPayload = {\n timeRange,\n chartID: \"allStats\",\n seriesArray: seriesArray,\n };\n commit(SET_COMPOUND_STATS, allPayload);\n\n // commit stats per chart\n for (const chartID of getChartIDsFor(StatType.COMPOUND)) {\n const payload: SeriesPayload = {\n timeRange,\n chartID,\n seriesArray: generateChartSeries(seriesArray, chartID),\n };\n commit(SET_COMPOUND_STATS, payload);\n }\n\n commit(SET_COMPOUND_STATS_STATUS, {\n timeRange: timeRange,\n status: DataStatus.FETCHED,\n });\n });\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.COMPOUND_STATS_ERROR} for ${timeRange} (${error})`);\n\n dispatch(\"setEmptyCompoundStatSeries\", {\n timeRange: timeRange,\n status: DataStatus.FAILED,\n });\n\n commit(SET_COMPOUND_STATS_LAST_FETCHED, {\n timeRange: timeRange,\n timestamp: 0,\n });\n });\n },\n fetchProcessedStatsForCompoundStats({ rootState }, timeRange: { startTime: Date; endTime: Date }) {\n const params = {\n names: COMPOUND_METRICS_PROCESSED_STATS.join(),\n startTime: timeRange.startTime,\n endTime: timeRange.endTime,\n };\n\n const cacheID = rootState.activeCacheID;\n\n return CacheService.request(`caches/${cacheID}/insight/processed_stats`, RequestMethod.GET, params).then(\n response => {\n if (response.data && response.data[0]) {\n const series: Series = response.data[0];\n trimNullPoints(series.values);\n return series;\n }\n return {\n columns: [\"time\", ...COMPOUND_METRICS_PROCESSED_STATS],\n name: \"\",\n values: [],\n };\n },\n );\n },\n fetchPopularItems({ commit, dispatch, rootState }, invalidate?: boolean) {\n let valid = false;\n if (!invalidate) {\n valid = !!(state.popularItemsLastFetched + POPULAR_ITEMS_LIFETIME - LIFETIME_MARGIN >= Date.now());\n }\n\n if (\n (state.popularItemsStatus === DataStatus.FETCHED && valid) ||\n state.popularItemsStatus === DataStatus.FETCHING\n ) {\n // Data already fetched and data valid, or fetching. Do not fetch\n return;\n }\n\n // Data not fetched or invalid, let's fetch\n commit(SET_POPULAR_ITEMS_STATUS, DataStatus.FETCHING);\n commit(SET_POPULAR_ITEMS_LAST_FETCHED, Date.now());\n\n const cacheID = rootState.activeCacheID;\n\n return CacheService.request(`caches/${cacheID}/introspection/popular_items`, RequestMethod.GET)\n .then(response => {\n const popularItems: PopularItems = response.data;\n commit(SET_POPULAR_ITEMS, popularItems);\n commit(SET_POPULAR_ITEMS_STATUS, DataStatus.FETCHED);\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.PREFIX_POPULAR_ITEMS_ERROR} (${error})`);\n\n // Set empty values on error so loading doesn't continue infinitely\n commit(SET_POPULAR_ITEMS, {\n time_slice: 0,\n most_hit_keys: null,\n most_missed_keys: null,\n most_mutated_keys: null,\n popular_prefixes: null,\n });\n\n commit(SET_POPULAR_ITEMS_STATUS, DataStatus.FAILED);\n commit(SET_POPULAR_ITEMS_LAST_FETCHED, 0);\n });\n },\n fetchPrefixes({ commit, dispatch, rootState }) {\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/introspection/prefixes`, RequestMethod.GET)\n .then(response => {\n const prefixes: Prefix[] = response.data;\n prefixes.sort(function(a: Prefix, b: Prefix) {\n const aName = a.name.toLowerCase();\n const bName = b.name.toLowerCase();\n if (aName < bName) return -1;\n if (aName > bName) return 1;\n return 0;\n });\n commit(SET_PREFIXES, prefixes);\n })\n .catch(error => {\n commit(SET_PREFIXES, []);\n setNotificationError(dispatch, `${Msg.PREFIXES_ERROR} (${error})`);\n });\n },\n fetchPrefixStatsByTimeRange({ dispatch }, prefixID: number) {\n for (const timeRange of TIME_RANGES) {\n dispatch(\"fetchPrefixStats\", { timeRange, prefixID });\n }\n },\n fetchPrefixStats({ commit, dispatch, state, rootState }, payload: { timeRange: TimeRange; prefixID: number }) {\n const { timeRange, prefixID } = payload;\n\n const valid = !!(\n state.prefixStatsLastFetched[prefixID] &&\n state.prefixStatsLastFetched[prefixID][timeRange] &&\n state.prefixStatsLastFetched[prefixID][timeRange] + PREFIX_STATS_LIFETIME - LIFETIME_MARGIN >= Date.now()\n );\n\n if (\n (state.prefixStatsStatus[prefixID] &&\n state.prefixStatsStatus[prefixID][timeRange] === DataStatus.FETCHED &&\n valid) ||\n (state.prefixStatsStatus[prefixID] && state.prefixStatsStatus[prefixID][timeRange] === DataStatus.FETCHING)\n ) {\n // Data already fetched and data valid, or fetching. Do not fetch\n return;\n }\n\n // Data not fetched or invalid, let's fetch\n commit(SET_PREFIX_STATS_STATUS, {\n prefixID: prefixID,\n timeRange: timeRange,\n status: DataStatus.FETCHING,\n });\n commit(SET_PREFIX_STATS_LAST_FETCHED, {\n prefixID: prefixID,\n timeRange: timeRange,\n timestamp: Date.now(),\n });\n\n const { startTime, endTime } = getTimeRange(rootState.timeRange, timeRange);\n\n const params = {\n startTime,\n endTime,\n };\n\n const cacheID = rootState.activeCacheID;\n\n return CacheService.request(`caches/${cacheID}/introspection/prefixes/${prefixID}/stats`, RequestMethod.GET, params)\n .then(async response => {\n if (response.data === null) {\n dispatch(\"setEmptyPrefixStatSeries\", {\n timeRange: timeRange,\n status: DataStatus.FETCHED,\n prefixID: prefixID,\n });\n return;\n }\n\n let seriesArray: Series[] = response.data;\n\n // prefix stats should always be an array of one series,\n // unlike processed stats where there is a series per server,\n // map anyway to be more robust\n seriesArray = seriesArray.map(series => {\n trimNullPoints(series.values);\n\n const appendedSeries = appendCalculatedMetricsToSeries(series);\n\n // prepend columns names only after appending calculated metrics\n const prependedColumns = prependColumnNames(appendedSeries.columns, \"prefix_\");\n\n return {\n columns: prependedColumns,\n name: series.name,\n values: appendedSeries.values,\n };\n });\n\n // Combine prefix stats and compound stats into a single series,\n // so prefix stats charts can be created comparing compound stats data\n\n // Fetch compound stats if not already cached\n await dispatch(\"fetchCompoundStats\", timeRange);\n\n // Note: calculate metrics requiring both prefix and compound stats in\n // combinePrefixAndCompoundStats() in utils/debug-mode\n const allCompoundStats = state.compoundStats[timeRange][\"allStats\"];\n\n seriesArray = seriesArray.map((series, i) => {\n series = combinePrefixAndCompoundStats(series, allCompoundStats[i]);\n return series;\n });\n\n // commit all stats to have a convenient way of retrieving data for\n // things like last stats\n const allPayload: PrefixSeriesPayload = {\n prefixID,\n timeRange,\n chartID: \"allStats\",\n seriesArray: seriesArray,\n };\n\n commit(SET_PREFIX_STATS, allPayload);\n\n // commit stats per chart\n for (const chartID of getChartIDsFor(StatType.PREFIX)) {\n const cPayload: PrefixSeriesPayload = {\n prefixID,\n timeRange,\n chartID,\n seriesArray: generateChartSeries(seriesArray, chartID),\n };\n commit(SET_PREFIX_STATS, cPayload);\n }\n\n commit(SET_PREFIX_STATS_STATUS, {\n prefixID: prefixID,\n timeRange: timeRange,\n status: DataStatus.FETCHED,\n });\n })\n .catch(error => {\n setNotificationError(\n dispatch,\n `${Msg.PREFIX_STATS_ERROR} for prefix ID ${prefixID} for ${timeRange} (${error})`,\n );\n\n dispatch(\"setEmptyPrefixStatSeries\", {\n timeRange: timeRange,\n status: DataStatus.FAILED,\n prefixID: prefixID,\n });\n\n commit(SET_PREFIX_STATS_LAST_FETCHED, {\n prefixID: prefixID,\n timeRange: timeRange,\n timestamp: 0,\n });\n });\n },\n fetchPrefixPopularItems({ commit, dispatch, state, rootState }, prefixID: number) {\n const valid = !!(\n state.prefixPopularItemsLastFetched[prefixID] &&\n state.prefixPopularItemsLastFetched[prefixID] + PREFIX_POPULAR_ITEMS_LIFETIME - LIFETIME_MARGIN >= Date.now()\n );\n\n if (\n (state.prefixPopularItemsStatus[prefixID] === DataStatus.FETCHED && valid) ||\n state.prefixPopularItemsStatus[prefixID] === DataStatus.FETCHING\n ) {\n // Data already fetched and data valid, or fetching. Do not fetch\n return;\n }\n\n // Data not fetched or invalid, let's fetch\n commit(SET_PREFIX_POPULAR_ITEMS_STATUS, {\n prefixID: prefixID,\n status: DataStatus.FETCHING,\n });\n commit(SET_PREFIX_POPULAR_ITEMS_LAST_FETCHED, {\n prefixID: prefixID,\n timestamp: Date.now(),\n });\n\n const cacheID = rootState.activeCacheID;\n\n return CacheService.request(`caches/${cacheID}/introspection/prefixes/${prefixID}/popular_items`, RequestMethod.GET)\n .then(response => {\n const popularItems: PopularItems = response.data;\n commit(SET_PREFIX_POPULAR_ITEMS, {\n prefixID: prefixID,\n popularItems: popularItems,\n });\n\n commit(SET_PREFIX_POPULAR_ITEMS_STATUS, {\n prefixID: prefixID,\n status: DataStatus.FETCHED,\n });\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.PREFIX_POPULAR_ITEMS_ERROR} for prefix ID ${prefixID} (${error})`);\n\n commit(SET_PREFIX_POPULAR_ITEMS_STATUS, {\n prefixID: prefixID,\n status: DataStatus.FAILED,\n });\n commit(SET_PREFIX_POPULAR_ITEMS_LAST_FETCHED, {\n prefixID: prefixID,\n timestamp: 0,\n });\n });\n },\n addPrefix({ dispatch, rootState }, prefix: Prefix) {\n if (isAdminUsingProd()) return;\n const data = {\n name: prefix.name,\n };\n\n const cacheID = rootState.activeCacheID;\n\n return CacheService.request(`caches/${cacheID}/introspection/prefixes`, RequestMethod.POST, {}, data)\n .then(() => {\n dispatch(\"fetchPrefixes\");\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.PREFIX_ADD_ERROR} (${error})`);\n });\n },\n removePrefix({ dispatch, rootState }, prefix: Prefix) {\n if (isAdminUsingProd()) return;\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/introspection/prefixes/${prefix.id}`, RequestMethod.DELETE)\n .then(() => {\n dispatch(\"fetchPrefixes\");\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.PREFIX_REMOVE_ERROR} (${error})`);\n });\n },\n fetchKeyStats({ commit, dispatch, rootState }, key: string) {\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/introspection/key_stats?key=${key}`, RequestMethod.GET)\n .then(response => {\n const stats: KeyStatsPoint[] = response.data;\n let statsSeries: SeriesPoint[] = []; // default in case `stats` is empty\n\n if (stats.length > 0) {\n // TODO abstract to helper\n // sort chronologically\n stats.sort(function(a: any, b: any) {\n if (a.timestamp < b.timestamp) return -1;\n if (a.timestamp > b.timestamp) return 1;\n return 0;\n });\n\n // calculate hit rate\n for (const s of stats) {\n const requests = s.hit_count + s.miss_count;\n\n let hitRate = 0;\n if (requests > 0) {\n hitRate = s.hit_count / requests;\n }\n s.hit_rate = hitRate;\n\n // convert per 10 mins to per second\n s.hit_count_per_sec = s.hit_count / 600;\n s.miss_count_per_sec = s.miss_count / 600;\n s.mutation_count_per_sec = s.mutation_count / 600;\n }\n\n // create stats series\n statsSeries = stats.map(s => {\n return [\n s.timestamp,\n s.name,\n s.size,\n s.hit_count,\n s.miss_count,\n s.mutation_count,\n s.hit_rate,\n s.hit_count_per_sec,\n s.miss_count_per_sec,\n s.mutation_count_per_sec,\n ];\n });\n }\n\n commit(SET_KEY_STATS_SERIES, {\n name: key,\n series: statsSeries,\n });\n commit(SET_KEY_STATS, {\n name: key,\n stats: stats,\n });\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.KEY_STATS_ERROR} (${error})`);\n });\n },\n setShowAddPrefix({ commit }, show: boolean) {\n commit(SET_SHOW_ADD_PREFIX, show);\n },\n setEmptyCompoundStatSeries({ commit }, payload: { timeRange: TimeRange; status: DataStatus }) {\n const { timeRange, status } = payload;\n // set empty values for series' data. To show data unavailable, preventing indefinite loading\n const chartIDs = getChartIDsFor(StatType.COMPOUND);\n chartIDs.unshift(\"allStats\");\n\n for (const chartID of chartIDs) {\n const payload: SeriesPayload = {\n timeRange: timeRange,\n chartID: chartID,\n seriesArray: emptySeriesArray(),\n };\n commit(SET_COMPOUND_STATS, payload);\n }\n\n commit(SET_COMPOUND_STATS_STATUS, { timeRange: timeRange, status: status });\n },\n setEmptyPrefixStatSeries(\n { commit },\n payload: {\n timeRange: TimeRange;\n status: DataStatus;\n prefixID: number;\n },\n ) {\n const { timeRange, status, prefixID } = payload;\n // set empty values for series' data. To show data unavailable, preventing indefinite loading\n const chartIDs = getChartIDsFor(StatType.PREFIX);\n chartIDs.unshift(\"allStats\");\n\n for (const chartID of chartIDs) {\n const payload: PrefixSeriesPayload = {\n prefixID: prefixID,\n timeRange: timeRange,\n chartID,\n seriesArray: emptySeriesArray(),\n };\n commit(SET_PREFIX_STATS, payload);\n }\n\n commit(SET_PREFIX_STATS_STATUS, { prefixID: prefixID, timeRange: timeRange, status: status });\n },\n};\n\nconst getters: GetterTree = {\n slabStatsSeries: (state, getters, rootState) => (chartID: string): false | Series => {\n const seriesArray = state.processedSlabStats[rootState.timeRange][chartID];\n\n // Make sure data has been returned by the API before trying to render chart\n if (!seriesArray || (seriesArray && seriesArray.length < 1)) return false;\n\n return seriesArray[0];\n },\n compoundStatsSeries: (state, getters, rootState) => (chartID: string): false | Series => {\n const seriesArray = state.compoundStats[rootState.timeRange][chartID];\n\n // Make sure data has been returned by the API before trying to render chart\n if (!seriesArray || (seriesArray && seriesArray.length < 1)) return false;\n\n return seriesArray[0];\n },\n prefixStatsSeries: (state, getters, rootState) => (\n chartID: string,\n prefixID?: number,\n timeRange?: TimeRange,\n ): Series | false => {\n if (!prefixID) {\n prefixID = rootState.activePrefixID;\n }\n\n if (!timeRange) {\n timeRange = rootState.timeRange;\n }\n\n if (\n state.prefixStats[prefixID] &&\n state.prefixStats[prefixID][timeRange] &&\n state.prefixStats[prefixID][timeRange][chartID] &&\n state.prefixStats[prefixID][timeRange][chartID][0]\n ) {\n return state.prefixStats[prefixID][timeRange][chartID][0];\n }\n return false;\n },\n prefixStatsSeriesColumns: (state, getters) => (prefixID: number): false | string[] => {\n const series = getters.prefixStatsSeries(\"allStats\", prefixID, TimeRange.LAST_DAY);\n if (series) {\n return series.columns;\n }\n return false;\n },\n prefixLastStats: (state, getters) => (prefixID: number): SeriesPoint | null | false => {\n const series = getters.prefixStatsSeries(\"allStats\", prefixID, TimeRange.LAST_DAY);\n if (!series) {\n return false; // Loading\n }\n\n const points = series.values;\n\n if (points.length < 1) {\n return null; // no data/unavailable\n }\n\n return points[points.length - 1];\n },\n allPrefixLastStatsFetched: state => {\n // prefixes default to null, and are unfetched\n if (!state.prefixes) return false;\n\n // if at least one prefix is not fetched\n for (const prefix of state.prefixes) {\n if (\n !state.prefixStatsStatus[prefix.id] ||\n state.prefixStatsStatus[prefix.id][TimeRange.LAST_DAY] !== DataStatus.FETCHED\n ) {\n return false;\n }\n }\n\n return true;\n },\n popularPrefixes: state => {\n return state.popularItems ? state.popularItems.popular_prefixes : undefined;\n },\n prefixIssues: (state, getters) => (prefixID: number) => {\n const issues: {\n activity?: Issue;\n } = {};\n\n const columns = getters.prefixStatsSeriesColumns(prefixID);\n const lastStats = getters.prefixLastStats(prefixID);\n\n if (columns && lastStats) {\n // Prefix per second rates\n const hI = getValuesIdxByMetric(columns, \"prefix_total_hits_rate\");\n const hits = lastStats[hI];\n\n const miI = getValuesIdxByMetric(columns, \"prefix_total_misses_rate\");\n const misses = lastStats[miI];\n\n const muI = getValuesIdxByMetric(columns, \"prefix_total_mutations_rate\");\n const mutations = lastStats[muI];\n\n // The following indicate potential issues:\n\n // Prefix activity issues\n if (hits === 0) {\n let activityMsg = \"\";\n\n if (misses === 0 && mutations > 0) {\n activityMsg = \"You appear to store data that is not fetched.\";\n } else if (misses > 0 && mutations === 0) {\n activityMsg = \"You appear to fetch and miss all values but make no attempt at storing data.\";\n } else if (misses > 0 && mutations > 0) {\n activityMsg = \"You appear to fetch and miss all values. Are you storing the correct data?\";\n }\n\n if (activityMsg) {\n issues.activity = {\n type: NotificationType.WARNING,\n message: activityMsg,\n icon: \"exclamation-circle\",\n };\n }\n }\n }\n\n return issues;\n },\n activePrefix: (state, getters, rootState) => {\n if (state.prefixes) {\n const activePrefix = state.prefixes.find(prefix => prefix.id === rootState.activePrefixID);\n if (activePrefix) {\n return activePrefix;\n }\n }\n return { id: 0, name: \"\" } as Prefix;\n },\n};\n\nexport const debugMode: Module = {\n namespaced,\n state,\n mutations,\n actions,\n getters,\n};\n","import { SET_CACHE_AUTH, SET_CACHES, SET_SERVERS } from \"@/store/mutation-types\";\n\n// CacheService ending must be `ANALYTICS`, this module is part of the store and will\n// be imported by both Analytics and CacheSight (though it's not used by Analytics)\nimport CacheService from \"@/services/CacheService\";\n\nimport { RequestMethod } from \"@/types/request-method\";\nimport { Login, CachesState, CacheSingle, Server } from \"@/types/cachesight\";\nimport { RootState } from \"@/types/root-state\";\nimport * as Msg from \"@/config/notification\";\nimport { setNotificationSuccess, setNotificationError } from \"@/utils/notification\";\nimport { Module, MutationTree, ActionTree, GetterTree } from \"vuex\";\nimport Vue from \"vue\";\n\nconst namespaced = true;\n\nconst state: CachesState = {\n caches: null,\n};\n\nconst mutations: MutationTree = {\n [SET_CACHES]: (state, caches: CacheSingle[]) => {\n state.caches = caches;\n },\n [SET_SERVERS]: (state, payload: { cacheIndex: number; servers: Server[] }) => {\n if (state.caches) {\n Vue.set(state.caches[payload.cacheIndex], \"servers\", payload.servers);\n }\n },\n};\n\nconst actions: ActionTree = {\n // CacheSight login\n login({ commit, dispatch }, login: Login) {\n return CacheService.request(`login`, RequestMethod.POST, {}, login)\n .then(response => {\n const login: { token: string } = response.data;\n commit(SET_CACHE_AUTH, login.token, { root: true });\n dispatch(\"fetch\");\n return true;\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.LOGIN_ERROR} (${error})`);\n return false;\n });\n },\n password({ commit, dispatch }, passwords: { old: string; new: string }) {\n return CacheService.request(`password`, RequestMethod.POST, {}, passwords)\n .then(response => {\n // Save new token\n const password: { token: string } = response.data;\n commit(SET_CACHE_AUTH, password.token, { root: true });\n setNotificationSuccess(dispatch, Msg.PASSWORD_SUCCESS);\n return true;\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.PASSWORD_ERROR} (${error})`);\n return false;\n });\n },\n fetch({ commit }) {\n return CacheService.request(`caches`, RequestMethod.GET).then(response => {\n const caches: CacheSingle[] = response.data;\n commit(SET_CACHES, caches);\n });\n },\n add({ dispatch }, cache: CacheSingle) {\n if (cache.servers) {\n for (const server of cache.servers) {\n // handles the case where empty server field(s) have been submitted\n if (!server.url && !server.port) continue;\n }\n }\n\n return CacheService.request(`caches`, RequestMethod.POST, {}, cache)\n .then(() => {\n // fetch so store is up to date\n dispatch(\"fetch\");\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.CACHE_ADD_ERROR} (${error})`);\n });\n },\n update({ dispatch, rootState }, cache: CacheSingle) {\n // servers can only be added or deleted, not updated\n // save before deleting from cache object\n const servers = cache.servers;\n\n // cache update data should not have servers\n delete cache.servers;\n\n const cacheID = rootState.activeCacheID;\n\n return CacheService.request(`caches/${cacheID}`, RequestMethod.PUT, {}, cache)\n .then(() => {\n // add new servers\n if (servers) {\n for (const server of servers) {\n const data: Server = {\n cache_id: cache.id,\n url: server.url,\n port: server.port,\n };\n\n CacheService.request(`caches/${cacheID}/servers`, RequestMethod.POST, {}, data)\n .then(() => {\n // fetch so servers are up to date in store\n dispatch(\"fetchServers\");\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.SERVER_UPDATE_ERROR} (${error})`);\n });\n }\n }\n\n // fetch so cache is up to date in store\n dispatch(\"fetch\");\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.CACHE_UPDATE_ERROR} (${error})`);\n });\n },\n remove({ dispatch, rootState }) {\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}`, RequestMethod.DELETE)\n .then(() => {\n // fetch so store is up to date\n dispatch(\"fetch\");\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.CACHE_REMOVE_ERROR} (${error})`);\n });\n },\n fetchServers({ commit, getters, rootState }) {\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/servers`, RequestMethod.GET).then(response => {\n const servers: Server[] = response.data;\n const payload = {\n cacheIndex: getters.activeCacheIndex,\n servers: servers,\n };\n commit(SET_SERVERS, payload);\n });\n },\n removeServer({ dispatch, rootState }, serverId: number) {\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/servers/${serverId}`, RequestMethod.DELETE)\n .then(() => {\n // fetch so store is up to date\n dispatch(\"fetchServers\");\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.SERVER_REMOVE_ERROR} (${error})`);\n });\n },\n};\n\nconst getters: GetterTree = {\n activeCache: (state, getters, rootState) => {\n return state.caches?.find(cache => cache.id === rootState.activeCacheID);\n },\n activeCacheIndex: (state, getters, rootState) => {\n return state.caches?.findIndex(cache => cache.id === rootState.activeCacheID);\n },\n};\n\nexport const caches: Module = {\n namespaced,\n state,\n mutations,\n actions,\n getters,\n};\n","import {\n SET_CACHE_AUTH,\n LOGOUT,\n AUTO_LOGOUT,\n SET_ACTIVE_CACHE_ID,\n SET_ACTIVE_PREFIX_ID,\n SET_MOBILE_MENU_OPEN,\n SET_TIME_RANGE,\n SET_LAYOUT,\n SET_PROMO_BANNER_DISMISSED,\n} from \"@/store/mutation-types\";\nimport { State } from \"@/store/state\";\nimport router from \"@/router/router-ANALYTICS\";\n\nimport { RootState } from \"@/types/root-state\";\nimport { TimeRange } from \"@/types/time-range\";\nimport { RequestMethod } from \"@/types/request-method\";\nimport { Layout } from \"@/types/layout\";\nimport { ConsultationRequest } from \"@/types/consultation\";\n\nimport * as Msg from \"@/config/notification\";\n\nimport { setNotificationSuccess, setNotificationError } from \"@/utils/notification\";\nimport { isAdminUsingProd } from \"@/utils/admin\";\nimport { decodeJWT } from \"@/utils/jwt\";\n\nimport CacheService from \"@/services/CacheService\";\n\nimport Vue from \"vue\";\nimport Vuex from \"vuex\";\n\nimport { stats } from \"@/store/modules/stats\";\nimport { settings } from \"@/store/modules/settings\";\nimport { processedStats } from \"@/store/modules/processed-stats\";\nimport { notifications } from \"@/store/modules/notifications\";\nimport { alerts } from \"@/store/modules/alerts\";\nimport { debugMode } from \"@/store/modules/debug-mode\";\nimport { caches } from \"@/store/modules/cachesight/caches\";\nimport { Login } from \"@/types/login\";\n\nVue.use(Vuex);\n\n/*\nFrom component with method, do this.$store.dispatch('actionName')\n\nstate (store data)\nmutations (commit and track state changes)\nactions (best practice: have actions call mutations which update state)\ngetters (computed, for accessing state)\n*/\n\nconst store = new Vuex.Store({\n modules: {\n stats,\n settings,\n processedStats,\n notifications,\n alerts,\n debugMode,\n caches,\n },\n state: new State(),\n mutations: {\n [SET_CACHE_AUTH]: (state, token: string) => {\n state.token = token;\n localStorage.setItem(\"token\", token);\n },\n // `LOGOUT` mutations are CacheSight only, but keeping here as auth is shared with Analytics\n [LOGOUT]: () => {\n localStorage.removeItem(\"token\");\n location.reload();\n },\n [AUTO_LOGOUT]: () => {\n // Do not perform on failed login or password change\n if (router.currentRoute.name === \"login\" || router.currentRoute.name === \"password\") {\n return;\n }\n\n localStorage.removeItem(\"token\");\n location.reload();\n },\n [SET_ACTIVE_CACHE_ID]: (state, cacheID: number) => {\n state.activeCacheID = cacheID;\n },\n [SET_ACTIVE_PREFIX_ID]: (state, prefixID: number) => {\n state.activePrefixID = prefixID;\n },\n [SET_MOBILE_MENU_OPEN]: (state, toggleState: boolean) => {\n state.mobileMenuOpen = toggleState;\n },\n [SET_TIME_RANGE]: (state, timeRange: TimeRange) => {\n state.timeRange = timeRange;\n },\n [SET_LAYOUT]: (state, layout: Layout) => {\n state.layout = layout;\n },\n [SET_PROMO_BANNER_DISMISSED]: (state, dismissed: boolean) => {\n state.promoBannerDismissed = dismissed;\n },\n },\n actions: {\n // Analytics login\n login({ commit, dispatch }, login: Login) {\n return CacheService.request(`login`, RequestMethod.POST, {}, {}, login)\n .then(response => {\n interface LoginResponse {\n cache_id: number;\n token: string;\n }\n const loginResponse: LoginResponse = response.data;\n\n commit(SET_CACHE_AUTH, loginResponse.token);\n commit(SET_ACTIVE_CACHE_ID, loginResponse.cache_id.toString());\n\n return loginResponse.cache_id;\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.LOGIN_ERROR} (${error})`);\n return false;\n });\n },\n // CacheSight logout\n logout({ commit }) {\n return commit(LOGOUT);\n },\n autoLogout({ commit }) {\n return commit(AUTO_LOGOUT);\n },\n flushCache({ dispatch, rootState }) {\n if (isAdminUsingProd()) return;\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/flush`, RequestMethod.POST)\n .then(() => {\n dispatch(\"stats/fetch\");\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.FLUSH_CACHE_ERROR} (${error})`);\n });\n },\n switchCluster({ dispatch, rootState }) {\n if (isAdminUsingProd()) return;\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/switch_cluster`, RequestMethod.POST)\n .then(() => {\n dispatch(\"settings/fetch\");\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.SWITCH_CLUSTER_ERROR} (${error})`);\n });\n },\n reEnableCache({ dispatch, rootState }) {\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/enable_cache`, RequestMethod.POST)\n .then(() => {\n dispatch(\"settings/fetch\");\n setNotificationSuccess(dispatch, Msg.RE_ENABLE_CACHE_SUCCESS);\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.RE_ENABLE_CACHE_ERROR} (${error})`);\n });\n },\n rotateSSO({ commit, dispatch, rootState }) {\n if (isAdminUsingProd()) return;\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/rotate_sso`, RequestMethod.POST)\n .then(response => {\n const token: string = response.data;\n commit(SET_CACHE_AUTH, token);\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.ROTATE_SSO_ERROR} (${error})`);\n });\n },\n setActiveCacheID({ commit }, cacheID: number) {\n commit(SET_ACTIVE_CACHE_ID, cacheID);\n },\n setActivePrefixID({ commit }, prefixID: string) {\n commit(SET_ACTIVE_PREFIX_ID, prefixID);\n },\n toggleMobileMenu({ commit }, toggleState: boolean) {\n commit(SET_MOBILE_MENU_OPEN, toggleState);\n },\n setTimeRange({ commit }, timeRange: TimeRange) {\n commit(SET_TIME_RANGE, timeRange);\n },\n setLayout({ commit }, layout: Layout) {\n commit(SET_LAYOUT, layout);\n },\n setPromoBannerDismissed({ commit }, dismissed: boolean) {\n commit(SET_PROMO_BANNER_DISMISSED, dismissed);\n },\n sendConsultationRequest({ commit, dispatch, rootState }, request: ConsultationRequest) {\n const cacheID = rootState.activeCacheID;\n return CacheService.request(`caches/${cacheID}/consulting`, RequestMethod.POST, {}, request)\n .then(() => {\n commit(SET_PROMO_BANNER_DISMISSED, true);\n setNotificationSuccess(dispatch, Msg.CONSULTATION_REQUEST_SUCCESS);\n })\n .catch(error => {\n setNotificationError(dispatch, `${Msg.CONSULTATION_REQUEST_ERROR} (${error})`);\n });\n },\n },\n getters: {\n provider: state => {\n const decodedJWT = decodeJWT(state.token);\n return decodedJWT && decodedJWT.provider ? decodedJWT.provider : \"\";\n },\n loggedIn: state => {\n return !!state.token;\n },\n },\n});\n\nexport default store;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('LayoutFullWidth',{attrs:{\"layoutWidth\":\"small\"}},[_c('h1',[_vm._v(\"Non-Existent Cache or Authentication (SSO) Problem.\")]),_c('p',[_vm._v(\" There was a problem loading your cache dashboard. One of two things could have happened: \")]),_c('ol',[_c('li',[_vm._v(\" The authentication of your cache failed (perhaps you rotated the SSO secret recently?). \")]),_c('li',[_vm._v(\"The cache you are trying to access does not exist.\")])]),_c('h2',[_vm._v(\"Heroku customers\")]),_c('p',[_vm._v(\" In order to access your stats, please follow the link to the MemCachier add-on from your application's resources page on the Heroku site. \")]),_c('h2',[_vm._v(\"Other customers\")]),_c('p',[_vm._v(\" If you have an account through another PaaS provider, please follow the link to the MemCachier add-on from your application's resources page on the PaaS provider's site. \"),_c('br')]),_c('p',[_vm._v(\" If this fails, please contact \"),_c('a',{attrs:{\"href\":\"mailto:support@memcachier.com\"}},[_vm._v(\"support@memcachier.com\")]),_vm._v(\" for assistance. \")]),_c('h2',[_vm._v(\"Direct sign-up customers\")]),_c('p',[_vm._v(\" In order to access your stats, if you have an account with us directly, please try the following: \")]),_c('ol',[_c('li',[_c('a',{attrs:{\"href\":_vm.url.login}},[_vm._v(\"Login\")]),_vm._v(\" to Memcachier.\")]),_c('li',[_vm._v(\" Select \"),_c('strong',[_vm._v(\"Your Caches\")]),_vm._v(\" from the menu bar \")]),_c('li',[_vm._v(\" Press the \\\"Analytics Dashboard\\\" button next to the cache you want to view. \")])]),_c('p',[_vm._v(\"Or sign in below with your cache username and password\")]),_c('BaseCard',[_c('form',{attrs:{\"data-testid\":\"login-form\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.loginUser($event)}}},[_c('FormInputError',{attrs:{\"message\":_vm.usernameError,\"data-testid\":\"username-error\"}}),_c('FormInput',{staticClass:\"inline\",attrs:{\"label\":\"Cache Username\",\"screenReaderLabel\":false,\"placeholder\":\"e.g. B5FE6C\",\"type\":\"text\",\"required\":\"\",\"data-testid\":\"username\"},model:{value:(_vm.login.username),callback:function ($$v) {_vm.$set(_vm.login, \"username\", $$v)},expression:\"login.username\"}}),_c('FormInputError',{attrs:{\"message\":_vm.passwordError,\"data-testid\":\"password-error\"}}),_c('FormInput',{staticClass:\"inline\",attrs:{\"label\":\"Cache Password\",\"screenReaderLabel\":false,\"type\":\"password\",\"required\":\"\",\"data-testid\":\"password\"},model:{value:(_vm.login.password),callback:function ($$v) {_vm.$set(_vm.login, \"password\", $$v)},expression:\"login.password\"}}),_c('BaseButton',{attrs:{\"buttonClass\":\"button-primary\",\"disabled\":_vm.loggingIn,\"type\":\"submit\",\"data-testid\":\"login-button\"}},[_vm._v(\" \"+_vm._s(_vm.title)+\" \"),(_vm.loggingIn)?_c('BaseIcon',{attrs:{\"icon\":\"spinner\",\"spin\":\"true\"}}):_vm._e()],1)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"layout-full-width\",class:_vm.widthClass},[_c('main',[_vm._t(\"default\")],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\nimport { Layout } from \"@/types/layout\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class LayoutFullWidth extends Vue {\n beforeCreate() {\n this.$store.dispatch(\"setLayout\", Layout.IS_FULL_WIDTH);\n }\n\n @Prop({ required: false, default: \"\" })\n layoutWidth!: \"small\" | \"form\";\n\n get widthClass() {\n return this.layoutWidth ? `layout-full-width-${this.layoutWidth}` : ``;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutFullWidth.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutFullWidth.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LayoutFullWidth.vue?vue&type=template&id=74bba6ac&scoped=true&\"\nimport script from \"./LayoutFullWidth.vue?vue&type=script&lang=ts&\"\nexport * from \"./LayoutFullWidth.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LayoutFullWidth.vue?vue&type=style&index=0&id=74bba6ac&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"74bba6ac\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.label)?_c('label',{class:_vm.screenReaderLabelClass},[_vm._v(\" \"+_vm._s(_vm.label)+\" \")]):_vm._e(),_c('input',_vm._b({class:_vm.inputClass,domProps:{\"value\":_vm.value},on:{\"input\":_vm.updateValue}},'input',_vm.$attrs,false))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component({ inheritAttrs: false })\nexport default class FormInput extends Vue {\n @Prop({ required: false, default: \"\" })\n label!: string;\n\n @Prop({ required: false, default: true })\n screenReaderLabel!: boolean;\n\n @Prop({ required: true })\n value!: string | number;\n\n @Prop({ required: false, default: \"\" })\n inputClass!: \"inline\" | \"block\";\n\n get screenReaderLabelClass() {\n return this.screenReaderLabel ? \"screen-reader-text\" : \"\";\n }\n\n updateValue(event: any) {\n this.$emit(\"input\", event.target.value);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormInput.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FormInput.vue?vue&type=template&id=769f4d90&scoped=true&\"\nimport script from \"./FormInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./FormInput.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FormInput.vue?vue&type=style&index=0&id=769f4d90&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"769f4d90\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.message)?_c('div',{staticClass:\"error\",attrs:{\"role\":\"alert\"}},[_vm._v(\" \"+_vm._s(_vm.message)+\" \")]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class FormInputError extends Vue {\n @Prop({ required: true })\n message!: string;\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormInputError.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormInputError.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FormInputError.vue?vue&type=template&id=3500c26b&scoped=true&\"\nimport script from \"./FormInputError.vue?vue&type=script&lang=ts&\"\nexport * from \"./FormInputError.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FormInputError.vue?vue&type=style&index=0&id=3500c26b&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3500c26b\",\n null\n \n)\n\nexport default component.exports","import { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class FormValidation extends Vue {\n // Validation methods return an empty string if valid or an error message string if invalid\n\n validateEmail(email: string): string {\n // \"Unnecessary escape character: \\[ (no-useless-escape)\" warning\n // is incorrectly triggered by eslint on build\n // eslint-disable-next-line\n const regex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n if (email && regex.test(String(email).toLowerCase())) {\n return \"\";\n }\n return \"Please enter a valid email\";\n }\n\n validateString(string: string, error = \"Please fill in this field\"): string {\n if (string) {\n return \"\";\n }\n return error;\n }\n\n validateNumber(number: number | null, error = \"Please fill in a number\"): string {\n if (number) {\n return \"\";\n }\n return error;\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport LayoutFullWidth from \"@/components/layouts/LayoutFullWidth.vue\";\nimport FormInput from \"@/components/FormInput.vue\";\nimport FormInputError from \"@/components/FormInputError.vue\";\nimport FormValidation from \"@/mixins/form-validation\";\nimport { Login } from \"@/types/login\";\nimport url from \"@/mixins/analytics/url\";\nimport { Component, Mixins } from \"vue-property-decorator\";\n\n@Component({\n components: {\n LayoutFullWidth,\n FormInput,\n FormInputError,\n },\n})\nexport default class LoginView extends Mixins(url, FormValidation) {\n login: Login = {\n username: \"\",\n password: \"\",\n };\n\n title = \"Sign in\";\n loggingIn = false;\n\n usernameError = \"\";\n passwordError = \"\";\n\n loginUser() {\n this.usernameError = this.validateString(this.login.username);\n if (this.usernameError) return;\n\n this.passwordError = this.validateString(this.login.password);\n if (this.passwordError) return;\n\n this.$ga.button(\"Sign in user\");\n\n this.title = \"Signing in\";\n this.loggingIn = true;\n\n this.$store.dispatch(\"login\", this.login).then((cacheId: number) => {\n this.title = \"Sign in\";\n this.loggingIn = false;\n\n if (cacheId) {\n this.$router.push({\n name: \"overview\",\n params: { cacheId: cacheId.toString() },\n });\n }\n });\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LoginView.vue?vue&type=template&id=0b863fb4&scoped=true&\"\nimport script from \"./LoginView.vue?vue&type=script&lang=ts&\"\nexport * from \"./LoginView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LoginView.vue?vue&type=style&index=0&id=0b863fb4&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0b863fb4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('LayoutSidebar',{scopedSlots:_vm._u([{key:\"sidebar\",fn:function(){return [_c('CacheSidebar')]},proxy:true},{key:\"main\",fn:function(){return [(_vm.settingsStatus === 'fetched' && _vm.featuresStatus === 'fetched')?[_c('PromoBanner'),_c('RouterView')]:(_vm.settingsStatus === 'failed' || _vm.featuresStatus === 'failed')?_c('BaseNoDataDefault',{attrs:{\"message\":\"Data unavailable\"}}):_c('BaseLoading',{attrs:{\"spacing\":\"top\"}})]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"layout-sidebar\"},[_c('SidebarMobileToggle'),_c('aside',{staticClass:\"sidebar\",class:_vm.mobileMenuOpen ? 'is-open' : 'is-closed',on:{\"click\":_vm.closeMobileMenu}},[_vm._t(\"sidebar\")],2),_c('main',{staticClass:\"main\"},[_vm._t(\"main\")],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseButton',{staticClass:\"mobile-toggle\",attrs:{\"buttonClass\":\"button-tab button-full-width button-inline-items\",\"aria-label\":_vm.title,\"aria-controls\":\"dashboard-tabs\",\"aria-expanded\":_vm.ARIAState,\"aria-pressed\":_vm.ARIAState},on:{\"click\":function($event){return _vm.toggle()},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"escape\",undefined,$event.key,undefined)){ return null; }return _vm.close($event)}}},[_c('BaseIcon',{staticClass:\"icon\",attrs:{\"icon\":_vm.mobileMenuOpen ? 'close' : 'bars',\"fixedWidth\":true,\"align\":\"left\",\"screenReaderLabel\":_vm.title}}),_c('span',[_vm._v(\"Cache Menu\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { State } from \"vuex-class\";\n\n@Component\nexport default class SidebarMobileToggle extends Vue {\n @State(\"mobileMenuOpen\") mobileMenuOpen!: boolean;\n\n title = \"Toggle cache navigation\";\n\n get ARIAState() {\n return this.mobileMenuOpen ? \"true\" : \"false\";\n }\n\n toggle() {\n this.$ga.toggle(this.title);\n this.$store.dispatch(\"toggleMobileMenu\", !this.mobileMenuOpen);\n }\n\n close() {\n if (this.mobileMenuOpen) {\n this.toggle();\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarMobileToggle.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarMobileToggle.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SidebarMobileToggle.vue?vue&type=template&id=c0127908&scoped=true&\"\nimport script from \"./SidebarMobileToggle.vue?vue&type=script&lang=ts&\"\nexport * from \"./SidebarMobileToggle.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SidebarMobileToggle.vue?vue&type=style&index=0&id=c0127908&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c0127908\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\nimport SidebarMobileToggle from \"@/components/SidebarMobileToggle.vue\";\nimport { Layout } from \"@/types/layout\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { State } from \"vuex-class\";\n\n@Component({ components: { SidebarMobileToggle } })\nexport default class LayoutSideBar extends Vue {\n beforeCreate() {\n this.$store.dispatch(\"setLayout\", Layout.HAS_SIDEBAR);\n }\n\n @State(\"mobileMenuOpen\") mobileMenuOpen!: boolean;\n\n // Close sidebar mobile menu on click (when an item in the sidebar has been clicked)\n closeMobileMenu() {\n if (this.mobileMenuOpen) this.$store.dispatch(\"toggleMobileMenu\", false);\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutSidebar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutSidebar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LayoutSidebar.vue?vue&type=template&id=10031bf9&scoped=true&\"\nimport script from \"./LayoutSidebar.vue?vue&type=script&lang=ts&\"\nexport * from \"./LayoutSidebar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LayoutSidebar.vue?vue&type=style&index=0&id=10031bf9&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"10031bf9\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"link-groups\"},[_c('ul',{staticClass:\"links\"},[_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'overview' }}},[_c('BaseIcon',{attrs:{\"icon\":\"tachometer\",\"fixedWidth\":true,\"padRight\":true}}),_vm._v(\" Overview \")],1)],1),_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'metrics' }}},[_c('BaseIcon',{attrs:{\"icon\":\"bar-chart\",\"fixedWidth\":true,\"padRight\":true}}),_vm._v(\" Metrics \")],1),(_vm.settings.servers.length > 1)?_c('ul',[_c('li',[_c('router-link',{attrs:{\"to\":{\n name: 'metric',\n params: { metricId: 'hitRate' },\n }}},[_vm._v(\" Hit Rate \")])],1),_c('li',[_c('router-link',{attrs:{\"to\":{\n name: 'metric',\n params: { metricId: 'requestRate' },\n }}},[_vm._v(\" Request Rate \")])],1),_c('li',[_c('router-link',{attrs:{\"to\":{\n name: 'metric',\n params: { metricId: 'requestDistribution' },\n }}},[_vm._v(\" Request Distribution \")])],1),_c('li',[_c('router-link',{attrs:{\"to\":{\n name: 'metric',\n params: { metricId: 'connections' },\n }}},[_vm._v(\" Connections \")])],1),_c('li',[_c('router-link',{attrs:{\"to\":{\n name: 'metric',\n params: { metricId: 'dataTraffic' },\n }}},[_vm._v(\" Data Traffic \")])],1),(_vm.settings.cache_type === 'memcached')?[_c('li',[_c('router-link',{attrs:{\"to\":{\n name: 'metric',\n params: { metricId: 'memory' },\n }}},[_vm._v(\" Memory \")])],1),_c('li',[_c('router-link',{attrs:{\"to\":{\n name: 'metric',\n params: { metricId: 'items' },\n }}},[_vm._v(\" Stored Items \")])],1)]:_vm._e()],2):_vm._e()],1),(_vm.features['debug-mode'] !== 0)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'introspection' }}},[_c('BaseIcon',{attrs:{\"icon\":\"crosshairs\",\"fixedWidth\":true,\"padRight\":true}}),_vm._v(\" Introspection \"),_c('BaseBadge',{attrs:{\"type\":\"beta\"}})],1),(_vm.features['debug-mode'] > 0)?_c('ul',[_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'popularKeys', params: { keyCat: 'hit' } }}},[_vm._v(\" Keys \")])],1),_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'prefixes' }}},[_vm._v(\" Prefixes \")])],1),_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'recentRequests' }}},[_vm._v(\" Recent Requests \")])],1)]):_vm._e()],1):_vm._e(),(_vm.features['alert-config'] !== -1)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'alerts' }}},[_c('BaseIcon',{attrs:{\"icon\":\"bell\",\"fixedWidth\":true,\"padRight\":true}}),_vm._v(\" Alerts \")],1)],1):_vm._e(),_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'settings' }}},[_c('BaseIcon',{attrs:{\"icon\":\"cog\",\"fixedWidth\":true,\"padRight\":true}}),_vm._v(\" Settings \")],1)],1)]),_c('ul',{staticClass:\"links-secondary\"},[(_vm.features['consulting-offer'] === 1)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'consulting' }}},[_c('BaseIcon',{attrs:{\"fixedWidth\":true,\"icon\":\"users\",\"padRight\":true}}),_vm._v(\" Consulting \"),_c('transition',{attrs:{\"name\":\"show-badge\"}},[(_vm.promoBannerDismissed)?_c('BaseBadge',{attrs:{\"type\":\"offer\"}}):_vm._e()],1)],1)],1):_vm._e(),_c('li',[_c('a',{attrs:{\"href\":_vm.url.feedback}},[_c('BaseIcon',{attrs:{\"fixedWidth\":true,\"icon\":\"comments\",\"padRight\":true}}),_vm._v(\" Feedback \")],1)]),_c('li',[_c('a',{attrs:{\"href\":_vm.url.support}},[_c('BaseIcon',{attrs:{\"fixedWidth\":true,\"icon\":\"life-ring\",\"padRight\":true}}),_vm._v(\" Support \")],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Settings, Features } from \"@/types/settings\";\nimport url from \"@/mixins/analytics/url\";\nimport { Component, Mixins } from \"vue-property-decorator\";\nimport { State, Getter } from \"vuex-class\";\n\n@Component\nexport default class CacheSidebar extends Mixins(url) {\n @State(\"promoBannerDismissed\") promoBannerDismissed!: boolean;\n\n @Getter(\"settings/activeCacheFeatures\") features!: Features;\n @Getter(\"settings/activeCacheSettings\") settings!: Settings;\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CacheSidebar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CacheSidebar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CacheSidebar.vue?vue&type=template&id=314c6477&scoped=true&\"\nimport script from \"./CacheSidebar.vue?vue&type=script&lang=ts&\"\nexport * from \"./CacheSidebar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CacheSidebar.vue?vue&type=style&index=0&id=314c6477&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"314c6477\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.features['consulting-offer'] === 1 && !_vm.isConsultingView && !_vm.promoBannerDismissed)?_c('BaseNotice',{staticClass:\"promo-banner\",attrs:{\"type\":\"info\"}},[_c('div',[_c('div',{staticClass:\"promo-banner-content\"},[_c('div',{staticClass:\"promo-banner-copy\"},[_c('h3',[_vm._v(\"Free Cache Consultation\")]),_c('p',[_vm._v(\" Get a one-on-one consulting session focused on gaining insight to improve cache performance. \")])]),_c('BaseButton',{staticClass:\"promo-banner-button\",attrs:{\"buttonClass\":\"button-secondary\"},on:{\"click\":function($event){return _vm.$router.push({ name: 'consulting' })}}},[_c('BaseIcon',{attrs:{\"icon\":\"users\"}}),_vm._v(\" Request Consultation\")],1)],1)]),_c('BaseActions',[_c('BaseButton',{attrs:{\"defaultButtonClass\":\"button-transparent\",\"aria-label\":\"Dismiss offer\"},on:{\"click\":function($event){return _vm.dismissPromoBanner()}}},[_c('BaseIcon',{attrs:{\"icon\":\"close\",\"screenReaderLabel\":\"Dismiss offer\"}})],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Features } from \"@/types/settings\";\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\nimport { State, Getter } from \"vuex-class\";\n\n@Component\nexport default class PromoBanner extends Vue {\n created() {\n // If cookie is not set, show the promo banner\n if (!document.cookie.split(\";\").some(item => item.trim().startsWith(\"promoBannerDismissed=\"))) {\n this.$store.dispatch(\"setPromoBannerDismissed\", false);\n }\n }\n\n @State(\"promoBannerDismissed\") promoBannerDismissed!: boolean;\n\n @Getter(\"settings/activeCacheFeatures\") features!: Features;\n\n // route changes are not reactive, so watch for changes\n @Watch(\"$route\")\n onRouteUpdate() {\n this.checkIsConsultingView();\n }\n\n isConsultingView = false;\n\n dismissPromoBanner() {\n document.cookie = \"promoBannerDismissed=true\";\n this.$store.dispatch(\"setPromoBannerDismissed\", true);\n }\n\n checkIsConsultingView() {\n if (this.$router.currentRoute.name === \"consulting\") {\n this.isConsultingView = true;\n } else {\n this.isConsultingView = false;\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PromoBanner.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PromoBanner.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PromoBanner.vue?vue&type=template&id=1d5ff8ee&scoped=true&\"\nimport script from \"./PromoBanner.vue?vue&type=script&lang=ts&\"\nexport * from \"./PromoBanner.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PromoBanner.vue?vue&type=style&index=0&id=1d5ff8ee&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d5ff8ee\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport LayoutSidebar from \"@/components/layouts/LayoutSidebar.vue\";\nimport CacheSidebar from \"@/components/CacheSidebar.vue\";\nimport PromoBanner from \"@/components/PromoBanner.vue\";\nimport { DataStatus } from \"@/types/common\";\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\nimport { State, Getter } from \"vuex-class\";\n\n@Component({ components: { LayoutSidebar, CacheSidebar, PromoBanner } })\nexport default class CacheView extends Vue {\n created() {\n // fetch on component creation\n this.fetchCacheData();\n }\n\n @State(\"activeCacheID\") activeCacheID!: number;\n\n @Getter(\"settings/activeCacheSettingsStatus\") settingsStatus!: DataStatus;\n @Getter(\"settings/activeCacheFeaturesStatus\") featuresStatus!: DataStatus;\n\n @Watch(\"activeCacheID\")\n onCacheIDUpdate() {\n // fetch on cache ID update, because the component is not re-rendered\n // on param change so lifecycle hooks will not be called\n this.fetchCacheData();\n }\n\n fetchCacheData() {\n // reset state when switching cache so previous cache data\n // does not remain if fetching fails\n this.$store.dispatch(\"stats/resetState\");\n this.$store.dispatch(\"processedStats/resetState\");\n\n this.$store.dispatch(\"settings/fetch\");\n this.$store.dispatch(\"settings/fetchFeatures\");\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=7fd336ad&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7fd336ad\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('h1',{staticClass:\"screen-reader-text\"},[_vm._v(\"Overview\")]),_c('div',{staticClass:\"grid-half\"},[_c('div',{staticClass:\"grid-col-grow\"},[_c('div',[_c('div',{staticClass:\"grid-half\"},[_c('HitRate'),_c('OverviewIssues')],1)]),_c('OverviewStorage')],1),_c('div',{staticClass:\"grid-col-grow\"},[_c('OverviewConnections'),_c('OverviewStats')],1)]),_c('OverviewChart')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('HeadingButtons',{scopedSlots:_vm._u([{key:\"heading\",fn:function(){return [_c('h2',[_vm._v(\"Storage\")])]},proxy:true},{key:\"buttons\",fn:function(){return [_c('OverviewFlushCache',{staticClass:\"button-round\"})]},proxy:true}])}),_c('BaseCard',{attrs:{\"grow\":true}},[_c('DonutChart',{attrs:{\"values\":_vm.donutChartValues}}),_c('BaseStats',{attrs:{\"stats\":[\n {\n value: (_vm.memoryUsed + \"/\" + _vm.totalMemory),\n label: 'memory used / total memory',\n small: true,\n },\n {\n value: _vm.stats.curr_items,\n label: 'items',\n small: true,\n } ]}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseButton',{attrs:{\"buttonClass\":\"button-alert\",\"tooltipTitle\":\"Remove all data from your cache\"},on:{\"click\":_vm.flushCache}},[_c('BaseIcon',{attrs:{\"icon\":\"trash\"}}),_vm._v(\" \"+_vm._s(_vm.title)+\" \")],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class OverviewFlushCache extends Vue {\n title = \"Flush Cache\";\n\n flushCache() {\n if (window.confirm(\"Clicking OK will remove all the data from your cache. Are you sure you want to do this?\")) {\n this.$ga.button(this.title);\n this.$store.dispatch(\"flushCache\");\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewFlushCache.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewFlushCache.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OverviewFlushCache.vue?vue&type=template&id=dd5270ba&scoped=true&\"\nimport script from \"./OverviewFlushCache.vue?vue&type=script&lang=ts&\"\nexport * from \"./OverviewFlushCache.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dd5270ba\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chart-donut-container\"},[_c('div',{staticClass:\"chart-donut\"})])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { COLOR_PALETTE } from \"@/colors\";\nimport { legendTemplate } from \"@/utils/chart\";\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\nimport * as d3 from \"d3\";\n\n@Component\nexport default class DonutChart extends Vue {\n mounted() {\n // $el is from the Vue API.\n // See: https://vuejs.org/v2/api/#el\n this.d3Node = d3.select(this.$el);\n\n // Initial render\n this.renderChart();\n }\n\n @Prop({ required: true })\n values!: [{ label: string; value: number | false }];\n\n // Update chart when values change\n @Watch(\"values\")\n onValuesChange() {\n this.renderChart();\n }\n\n // `div.chart-donut-container`, set in in mounted lifecycle hook\n d3Node: any;\n\n get svgContainer() {\n return this.d3Node.select(\".chart-donut\");\n }\n\n renderChart() {\n const radius = 1;\n const diameter = radius * 2;\n\n /**\n * Re-typing as `any` here, because type definitions from `@types/d3` complain\n * when using an allowed data structure\n * https://github.com/d3/d3-shape/blob/v1.3.5/README.md#pie_value\n */\n const values: any = this.values;\n\n this.d3Node.selectAll(\"svg\").remove();\n this.d3Node.selectAll(\".legend\").remove();\n\n const pie = d3\n .pie()\n .sort(null)\n .value((d: any) => {\n return d.value;\n });\n\n const goldenRatio = 1.618;\n const innerRadius = radius * (1 / goldenRatio);\n\n const arc = d3\n .arc()\n .outerRadius(radius)\n .innerRadius(innerRadius);\n\n /**\n * The chart svg has no height or width attributes to allow scaling\n * The `viewbox` attribute sets the svg aspect ratio\n * `'perserveAspectRatio', 'xMinYMin'` scales uniformly\n */\n const svg = this.svgContainer\n .append(\"svg\")\n .attr(\"viewBox\", `0 0 ${diameter} ${diameter}`)\n .attr(\"perserveAspectRatio\", \"xMinYMin\")\n .append(\"g\")\n .attr(\"transform\", `translate(${radius},${radius})`);\n\n const g = svg\n .selectAll(\".arc\")\n .data(pie(values))\n .enter()\n .append(\"g\")\n .attr(\"class\", \"arc\");\n\n g.append(\"path\")\n .attr(\"d\", arc)\n .style(\"fill\", (d: any) => {\n return COLOR_PALETTE[d.index];\n });\n\n // Define div for the legend\n const legend = this.d3Node.append(\"div\").attr(\"class\", \"legend\");\n const legendList = legend.append(\"ul\").attr(\"class\", \"legend-list\");\n\n values.forEach((value: any, idx: number) => {\n legendList.append(\"li\").html(() => {\n return legendTemplate(value.label, idx);\n });\n });\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DonutChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DonutChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DonutChart.vue?vue&type=template&id=43c73336&\"\nimport script from \"./DonutChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./DonutChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DonutChart.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"header\"},[_vm._t(\"heading\"),_c('BaseActions',[_vm._t(\"buttons\")],2)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class HeadingButtons extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadingButtons.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadingButtons.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HeadingButtons.vue?vue&type=template&id=7cee73f5&scoped=true&\"\nimport script from \"./HeadingButtons.vue?vue&type=script&lang=ts&\"\nexport * from \"./HeadingButtons.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./HeadingButtons.vue?vue&type=style&index=0&id=7cee73f5&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7cee73f5\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport OverviewFlushCache from \"@/components/OverviewFlushCache.vue\";\nimport DonutChart from \"@/components/DonutChart.vue\";\nimport HeadingButtons from \"@/components/HeadingButtons.vue\";\nimport { Stats } from \"@/types/stats\";\nimport { bytesToSize } from \"@/utils/conversion\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { State } from \"vuex-class\";\n\n@Component({\n components: {\n OverviewFlushCache,\n DonutChart,\n HeadingButtons,\n },\n})\nexport default class OverviewStorage extends Vue {\n @State(state => state.stats.stats) stats!: Stats;\n\n get memoryUsed() {\n return bytesToSize(this.stats.bytes);\n }\n\n get totalMemory() {\n return bytesToSize(this.stats.limit_maxbytes);\n }\n\n get donutChartValues() {\n const used = this.stats.bytes;\n const total = this.stats.limit_maxbytes;\n\n return [\n { label: \"used\", value: used },\n { label: \"available\", value: total - used },\n ];\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewStorage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewStorage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OverviewStorage.vue?vue&type=template&id=fd2bc5f2&scoped=true&\"\nimport script from \"./OverviewStorage.vue?vue&type=script&lang=ts&\"\nexport * from \"./OverviewStorage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fd2bc5f2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h2',[_vm._v(_vm._s(_vm.title))]),_c('BaseCard',[_c('BaseStats',{attrs:{\"stats\":[\n {\n value: _vm.hitRateWithUnit,\n label: _vm.label,\n icon: 'question-circle',\n iconToolTip: _vm.status.message,\n iconIssueType: _vm.status.type,\n } ]}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { NotificationType } from \"@/types/notification\";\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class HitRateStatus extends Vue {\n hitRateStatus(hitRate: number) {\n let type: NotificationType = NotificationType.DEFAULT;\n const message = `Hit rate is the main measure of performance for your cache, generally you should strive for a hit rate of above 80%`;\n\n const good = 0.8; // > 80%\n const average = 0.5; // > 50%\n // < 50% bad\n\n if (hitRate >= good) {\n type = NotificationType.SUCCESS;\n } else if (hitRate >= average) {\n type = NotificationType.WARNING;\n } else if (hitRate !== null) {\n type = NotificationType.ERROR;\n }\n\n return { type, message };\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Features } from \"@/types/settings\";\nimport hitRateStatus from \"@/mixins/hit-rate-status\";\nimport { Component, Mixins, Prop } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component\nexport default class HitRate extends Mixins(hitRateStatus) {\n @Getter(\"stats/allTimeHitRate\") allTimeHitRate!: number;\n @Getter(\"settings/activeCacheFeatures\") features!: Features;\n @Getter(\"processedStats/statLastHour\") statLastHour!: (chartID: string, statName: string) => number | null | false;\n\n @Prop({ required: false, default: \"Hit Rate\" })\n title!: string;\n\n get hitRate() {\n if (this.features[\"collect-granularity\"] !== 0) {\n return this.statLastHour(\"hitRate\", \"hit_rate\");\n }\n return this.allTimeHitRate;\n }\n\n get hitRateWithUnit() {\n const hr = this.hitRate;\n if ((hr === 0 || hr) && typeof hr === \"number\") {\n return `${(hr * 100).toFixed()}%`;\n }\n return hr;\n }\n\n get label() {\n if (this.features[\"collect-granularity\"] !== 0) {\n return \"hit rate last hour\";\n }\n return \"all time hit rate\";\n }\n\n get status() {\n if (this.hitRate === 0 || this.hitRate) {\n return this.hitRateStatus(this.hitRate);\n }\n return { message: \"\", type: \"\" };\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HitRate.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HitRate.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HitRate.vue?vue&type=template&id=31fd5cde&scoped=true&\"\nimport script from \"./HitRate.vue?vue&type=script&lang=ts&\"\nexport * from \"./HitRate.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"31fd5cde\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h2',[_vm._v(\" Issues \"),(!_vm.settings.enabled)?_c('BaseIcon',{staticClass:\"issues-icon\",attrs:{\"icon\":\"exclamation-triangle\"}}):_vm._e()],1),_c('BaseCard',[(_vm.settings.enabled)?_c('div',{staticClass:\"no-issues\"},[_c('BaseIcon',{staticClass:\"no-issues-icon\",attrs:{\"icon\":\"check\"}}),_c('div',{staticClass:\"no-issues-text\"},[_vm._v(\"Business as usual.\")])],1):_c('BaseNotice',{attrs:{\"type\":\"error\"}},[(_vm.features['collect-granularity'] !== 0)?_c('p',[_vm._v(\" Your cache has been disabled by a MemCachier admin. Please contact \"),_c('a',{attrs:{\"href\":_vm.url.support}},[_vm._v(\"support\")]),_vm._v(\". \")]):_vm._e(),(_vm.features['collect-granularity'] === 0)?[_c('p',[_vm._v(\"Your cache has been disabled due to 30 days of inactivity.\")]),_c('ReEnableCache')]:_vm._e()],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.settings.enabled && _vm.features['collect-granularity'] === 0)?_c('BaseButton',{attrs:{\"buttonClass\":\"button button-alert\",\"tooltipTitle\":\"Re-enable your cache\"},on:{\"click\":_vm.reEnableCache}},[_c('BaseIcon',{attrs:{\"icon\":\"play-circle\"}}),_vm._v(\" \"+_vm._s(_vm.title)+\" \")],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Settings, Features } from \"@/types/settings\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component\nexport default class ReEnableCache extends Vue {\n @Getter(\"settings/activeCacheSettings\") settings!: Settings;\n @Getter(\"settings/activeCacheFeatures\") features!: Features;\n\n title = \"Re-enable Cache\";\n\n isSaving = false;\n\n reEnableCache() {\n this.$ga.button(this.title);\n this.title = \"Enabling\";\n this.isSaving = true;\n\n this.$store.dispatch(\"reEnableCache\").then(() => {\n this.title = \"Enabled!\";\n this.isSaving = false;\n setTimeout(() => {\n this.title = \"Re-enable Cache\";\n }, 1000);\n });\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReEnableCache.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReEnableCache.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ReEnableCache.vue?vue&type=template&id=694a579e&scoped=true&\"\nimport script from \"./ReEnableCache.vue?vue&type=script&lang=ts&\"\nexport * from \"./ReEnableCache.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"694a579e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport ReEnableCache from \"@/components/analytics/ReEnableCache.vue\";\nimport { Settings, Features } from \"@/types/settings\";\nimport url from \"@/mixins/analytics/url\";\nimport { Component, Mixins } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component({ components: { ReEnableCache } })\nexport default class OverviewIssues extends Mixins(url) {\n @Getter(\"settings/activeCacheSettings\") settings!: Settings;\n @Getter(\"settings/activeCacheFeatures\") features!: Features;\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewIssues.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewIssues.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OverviewIssues.vue?vue&type=template&id=ce9eb4fe&scoped=true&\"\nimport script from \"./OverviewIssues.vue?vue&type=script&lang=ts&\"\nexport * from \"./OverviewIssues.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./OverviewIssues.vue?vue&type=style&index=0&id=ce9eb4fe&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ce9eb4fe\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('HeadingButtons',{scopedSlots:_vm._u([{key:\"heading\",fn:function(){return [_c('h2',[_vm._v(\"All Time Stats\")])]},proxy:true},{key:\"buttons\",fn:function(){return [_c('BaseButtonRefresh',{attrs:{\"action\":\"stats/fetch\",\"context\":\"stats\"}})]},proxy:true}])}),_c('BaseCard',{attrs:{\"grow\":true}},[_c('BarChart',{attrs:{\"rows\":_vm.rows}}),_c('BaseStats',{attrs:{\"stats\":[\n {\n value: _vm.stats.cmd_set,\n label: 'set cmds',\n small: true,\n },\n {\n value: _vm.stats.cmd_flush,\n label: 'flush cmds',\n small: true,\n } ]}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"bar-chart\"},_vm._l((_vm.rows),function(values,index){return _c('BarChartRow',{key:index,attrs:{\"values\":values}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"row\"},[_c('div',{staticClass:\"stat\"},[_vm._v(\" \"+_vm._s(_vm.values.a.label)+\" \"),_c('span',{staticClass:\"screen-reader-text\"},[_vm._v(_vm._s(_vm._f(\"number\")(_vm.values.a.value)))])]),_c('div',{staticClass:\"bar\",attrs:{\"aria-hidden\":\"true\"}},[_c('div',{staticClass:\"bar-fill\",class:_vm.fillBackground,style:(_vm.fill)}),_c('div',{staticClass:\"bar-value a\"},[_vm._v(_vm._s(_vm._f(\"number\")(_vm.values.a.value)))]),_c('div',{staticClass:\"bar-value b\"},[_vm._v(_vm._s(_vm._f(\"number\")(_vm.values.b.value)))])]),_c('div',{staticClass:\"stat\"},[_vm._v(\" \"+_vm._s(_vm.values.b.label)+\" \"),_c('span',{staticClass:\"screen-reader-text\"},[_vm._v(_vm._s(_vm._f(\"number\")(_vm.values.b.value)))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { BarChartValues } from \"@/types/bar-chart\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class BarChartRow extends Vue {\n @Prop({ required: true })\n values!: BarChartValues;\n\n get total() {\n return this.values.a.value + this.values.b.value;\n }\n\n get fill() {\n const percent = this.total > 0 ? (this.values.a.value / this.total) * 100 : 0;\n return { transform: `translateX(${percent}%)` };\n }\n\n get fillBackground() {\n return this.total > 0 ? \"filled\" : \"\";\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BarChartRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BarChartRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BarChartRow.vue?vue&type=template&id=48278163&scoped=true&\"\nimport script from \"./BarChartRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./BarChartRow.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BarChartRow.vue?vue&type=style&index=0&id=48278163&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48278163\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\nimport { BarChartValues } from \"@/types/bar-chart\";\nimport BarChartRow from \"@/components/BarChartRow.vue\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component({ components: { BarChartRow } })\nexport default class BarChart extends Vue {\n @Prop({ required: true })\n rows!: BarChartValues[];\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BarChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BarChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BarChart.vue?vue&type=template&id=7782a13e&scoped=true&\"\nimport script from \"./BarChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./BarChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BarChart.vue?vue&type=style&index=0&id=7782a13e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7782a13e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport HeadingButtons from \"@/components/HeadingButtons.vue\";\nimport BarChart from \"@/components/BarChart.vue\";\nimport { Stats } from \"@/types/stats\";\nimport { BarChartValues } from \"@/types/bar-chart\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { State } from \"vuex-class\";\n\n@Component({\n components: {\n HeadingButtons,\n BarChart,\n },\n})\nexport default class OverviewStats extends Vue {\n @State(state => state.stats.stats) stats!: Stats;\n\n get rows(): BarChartValues[] {\n const types = [\"get\", \"delete\", \"incr\", \"decr\", \"cas\", \"touch\"];\n\n const rows: BarChartValues[] = [];\n for (const type of types) {\n const values: BarChartValues = {\n a: { label: `${type} hits`, value: this.stats[`${type}_hits`] },\n b: { label: `${type} misses`, value: this.stats[`${type}_misses`] },\n };\n rows.push(values);\n }\n\n return rows;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewStats.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewStats.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OverviewStats.vue?vue&type=template&id=cd0e621c&scoped=true&\"\nimport script from \"./OverviewStats.vue?vue&type=script&lang=ts&\"\nexport * from \"./OverviewStats.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cd0e621c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h2',[_vm._v(\"Connections\")]),_c('BaseCard',[_c('BaseStats',{attrs:{\"stats\":[\n {\n value: _vm.stats.curr_connections,\n label: 'active connections',\n },\n {\n value: _vm.historicalConnections,\n label: _vm.historicalConnectionsLabel,\n } ]}}),(_vm.issue)?_c('BaseNotice',{staticClass:\"connections-notice\",attrs:{\"type\":\"warning\"}},[_vm._v(\" \"+_vm._s(_vm.issue)+\" \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Stats } from \"@/types/stats\";\nimport { Features } from \"@/types/settings\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { State, Getter } from \"vuex-class\";\n\n@Component\nexport default class OverviewConnections extends Vue {\n @State(state => state.stats.stats) stats!: Stats;\n\n @Getter(\"settings/activeCacheFeatures\") features!: Features;\n @Getter(\"processedStats/statLastHour\") statLastHour!: (chartID: string, statName: string) => number | null | false;\n\n get connectionsLastHour() {\n return this.statLastHour(\"connections\", \"connection_rate\");\n }\n\n get historicalConnections() {\n if (this.features[\"collect-granularity\"] !== 0) {\n const conns = this.connectionsLastHour;\n if ((conns === 0 || conns) && typeof conns === \"number\") {\n return `${conns.toFixed(2)}/s`;\n }\n return conns;\n }\n return this.stats.total_connections as number;\n }\n\n get historicalConnectionsLabel() {\n if (this.features[\"collect-granularity\"] !== 0) {\n return \"new connections last hour\";\n }\n return \"all time connections\";\n }\n\n get issue() {\n if (this.features[\"collect-granularity\"] !== 0 && this.connectionsLastHour && this.connectionsLastHour > 10) {\n return \"New connections are high! Consider using permanent connections to consume fewer resources.\";\n }\n // Analytics only\n if (this.features[\"collect-granularity\"] === 0 && this.stats.curr_connections > 10) {\n return \"Only 10 active connections are included in our Developer plan!\";\n }\n return \"\";\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewConnections.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewConnections.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OverviewConnections.vue?vue&type=template&id=99962144&scoped=true&\"\nimport script from \"./OverviewConnections.vue?vue&type=script&lang=ts&\"\nexport * from \"./OverviewConnections.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./OverviewConnections.vue?vue&type=style&index=0&id=99962144&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"99962144\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"title-horz-buttons\"},[_c('h2',[_vm._v(\" \"+_vm._s(_vm.chartTitle(\"memoryAndHitRate\"))+\" \")]),_c('TimeRangeControls')],1),_c('ProcessedStatsChart',{attrs:{\"chartID\":\"memoryAndHitRate\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"inline-buttons\"},_vm._l((_vm.timeRanges),function(timeRange,name,index){return _c('li',{key:index},[_c('BaseButton',{attrs:{\"isActive\":_vm.isActive(timeRange)},on:{\"click\":function($event){return _vm.setTimeRange(timeRange)}}},[_vm._v(_vm._s(_vm.buttonTitle(timeRange))+\" \")])],1)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\nimport { constToTitle } from \"@/utils/conversion\";\nimport { TimeRange } from \"@/types/time-range\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { State } from \"vuex-class\";\n\n@Component\nexport default class TimeRangeControls extends Vue {\n @State(state => state.timeRange) currentTimeRange!: TimeRange;\n\n get timeRanges() {\n return TimeRange;\n }\n\n isActive(timeRange: TimeRange): boolean {\n return this.currentTimeRange === timeRange;\n }\n\n setTimeRange(newTimeRange: TimeRange) {\n this.$ga.toggle(newTimeRange);\n this.$store.dispatch(\"setTimeRange\", newTimeRange);\n }\n\n buttonTitle(value: string): string {\n return constToTitle(value);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeRangeControls.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeRangeControls.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TimeRangeControls.vue?vue&type=template&id=614ee548&scoped=true&\"\nimport script from \"./TimeRangeControls.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimeRangeControls.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TimeRangeControls.vue?vue&type=style&index=0&id=614ee548&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"614ee548\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.features['collect-granularity'] !== 0)?_c('BaseChart',{attrs:{\"chartID\":_vm.chartID,\"chartIndex\":_vm.chartIndex,\"series\":_vm.series}}):_vm._e(),(_vm.features['collect-granularity'] === 0)?_c('ProcessedStatsChartDisabled',{attrs:{\"chartID\":_vm.chartID}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),_c('BaseChart',{attrs:{\"chartID\":_vm.chartID,\"series\":_vm.sampleSeries[_vm.chartID][0]}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sample-chart-wrap\"},[_c('div',{staticClass:\"sample-chart-overlay-wrap\"},[_c('div',{staticClass:\"sample-chart-overlay\"},[_vm._v(\"Upgrade to a paid plan to unlock\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\nimport { SeriesByChartID } from \"@/types/common\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class ProcessedStatsChartDisabled extends Vue {\n @Prop({ required: true })\n chartID!: string;\n\n sampleServerName = \"sample.server\";\n\n sampleSeries: SeriesByChartID = {\n memoryAndHitRate: [\n {\n name: \"processed_stats\",\n tags: { server: this.sampleServerName },\n columns: [\"time\", \"bytes\", \"max_bytes\", \"hit_rate\"],\n values: [\n [\"2019-09-29T08:10:00Z\", 116611968, 115343360, 0.426752],\n [\"2019-09-29T08:20:00Z\", 116613248, 115343360, 0.457163],\n [\"2019-09-29T08:30:00Z\", 116611968, 115343360, 0.426752],\n [\"2019-09-29T08:40:00Z\", 116611072, 115343360, 0.598703],\n [\"2019-09-29T08:50:00Z\", 116607744, 115343360, 0.471333],\n [\"2019-09-29T09:00:00Z\", 116606720, 115343360, 0.458515],\n [\"2019-09-29T09:10:00Z\", 116606208, 115343360, 0.492891],\n [\"2019-09-29T09:20:00Z\", 116605312, 115343360, 0.569434],\n [\"2019-09-29T09:30:00Z\", 116603776, 115343360, 0.53879],\n [\"2019-09-29T09:40:00Z\", 116603008, 115343360, 0.496],\n [\"2019-09-29T09:50:00Z\", 116601984, 115343360, 0.524223],\n [\"2019-09-29T10:00:00Z\", 116601344, 115343360, 0.451895],\n [\"2019-09-29T10:10:00Z\", 116600704, 115343360, 0.481272],\n [\"2019-09-29T10:20:00Z\", 116599936, 115343360, 0.633381],\n [\"2019-09-29T10:30:00Z\", 116599552, 115343360, 0.432734],\n [\"2019-09-29T10:40:00Z\", 116598528, 115343360, 0.584878],\n [\"2019-09-29T10:50:00Z\", 116598016, 115343360, 0.724191],\n [\"2019-09-29T11:00:00Z\", 116596992, 115343360, 0.533086],\n [\"2019-09-29T11:10:00Z\", 116594688, 115343360, 0.674808],\n [\"2019-09-29T11:20:00Z\", 116592000, 115343360, 0.407246],\n [\"2019-09-29T11:30:00Z\", 116588800, 115343360, 0.49899],\n [\"2019-09-29T11:40:00Z\", 116587008, 115343360, 0.55681],\n [\"2019-09-29T11:50:00Z\", 116583936, 115343360, 0.574089],\n [\"2019-09-29T12:00:00Z\", 116583680, 115343360, 0.349436],\n [\"2019-09-29T12:10:00Z\", 116581504, 115343360, 0.498944],\n [\"2019-09-29T12:20:00Z\", 116581504, 115343360, 0.470309],\n [\"2019-09-29T12:30:00Z\", 116576000, 115343360, 0.684441],\n [\"2019-09-29T12:40:00Z\", 116573568, 115343360, 0.536657],\n [\"2019-09-29T12:50:00Z\", 116573056, 115343360, 0.298052],\n [\"2019-09-29T13:00:00Z\", 116572416, 115343360, 0.344471],\n [\"2019-09-29T13:10:00Z\", 116568960, 115343360, 0.414219],\n [\"2019-09-29T13:20:00Z\", 116568320, 115343360, 0.355178],\n [\"2019-09-29T13:30:00Z\", 116565504, 115343360, 0.428686],\n [\"2019-09-29T13:40:00Z\", 116564736, 115343360, 0.213659],\n [\"2019-09-29T13:50:00Z\", 116564224, 115343360, 0.408852],\n [\"2019-09-29T14:00:00Z\", 116562816, 115343360, 0.395468],\n [\"2019-09-29T14:10:00Z\", 116561408, 115343360, 0.39707],\n [\"2019-09-29T14:20:00Z\", 116557056, 115343360, 0.473645],\n [\"2019-09-29T14:30:00Z\", 116555520, 115343360, 0.296378],\n [\"2019-09-29T14:40:00Z\", 116555392, 115343360, 0.419331],\n [\"2019-09-29T14:50:00Z\", 116544128, 115343360, 0.487491],\n [\"2019-09-29T15:00:00Z\", 116543104, 115343360, 0.457244],\n [\"2019-09-29T15:10:00Z\", 116542464, 115343360, 0.356491],\n [\"2019-09-29T15:20:00Z\", 116541184, 115343360, 0.378788],\n [\"2019-09-29T15:30:00Z\", 116539776, 115343360, 0.462963],\n [\"2019-09-29T15:40:00Z\", 116534784, 115343360, 0.322022],\n [\"2019-09-29T15:50:00Z\", 116533504, 115343360, 0.387482],\n [\"2019-09-29T16:00:00Z\", 116531968, 115343360, 0.344877],\n [\"2019-09-29T16:10:00Z\", 116529280, 115343360, 0.388571],\n [\"2019-09-29T16:20:00Z\", 116527488, 115343360, 0.270896],\n [\"2019-09-29T16:30:00Z\", 116526080, 115343360, 0.468327],\n [\"2019-09-29T16:40:00Z\", 116525440, 115343360, 0.473177],\n [\"2019-09-29T16:50:00Z\", 116524416, 115343360, 0.452243],\n [\"2019-09-29T17:00:00Z\", 116523136, 115343360, 0.442577],\n [\"2019-09-29T17:10:00Z\", 116523008, 115343360, 0.351839],\n [\"2019-09-29T17:20:00Z\", 116521088, 115343360, 0.403141],\n [\"2019-09-29T17:30:00Z\", 116520576, 115343360, 0.394334],\n [\"2019-09-29T17:40:00Z\", 116519040, 115343360, 0.36896],\n [\"2019-09-29T17:50:00Z\", 116516864, 115343360, 0.488629],\n [\"2019-09-29T18:00:00Z\", 116513152, 115343360, 0.391579],\n [\"2019-09-29T18:10:00Z\", 116512768, 115343360, 0.459779],\n [\"2019-09-29T18:20:00Z\", 116511104, 115343360, 0.357698],\n [\"2019-09-29T18:30:00Z\", 116507904, 115343360, 0.491499],\n [\"2019-09-29T18:40:00Z\", 116507392, 115343360, 0.408563],\n [\"2019-09-29T18:50:00Z\", 116506752, 115343360, 0.421898],\n [\"2019-09-29T19:00:00Z\", 116506496, 115343360, 0.421384],\n [\"2019-09-29T19:10:00Z\", 116504704, 115343360, 0.351482],\n [\"2019-09-29T19:20:00Z\", 116504064, 115343360, 0.321532],\n [\"2019-09-29T19:30:00Z\", 116503168, 115343360, 0.434103],\n [\"2019-09-29T19:40:00Z\", 116502656, 115343360, 0.383602],\n [\"2019-09-29T19:50:00Z\", 116493056, 115343360, 0.556245],\n [\"2019-09-29T20:00:00Z\", 116492672, 115343360, 0.345095],\n [\"2019-09-29T20:10:00Z\", 116492416, 115343360, 0.412106],\n [\"2019-09-29T20:20:00Z\", 116492416, 115343360, 0.356187],\n [\"2019-09-29T20:30:00Z\", 116491520, 115343360, 0.446748],\n [\"2019-09-29T20:40:00Z\", 116491520, 115343360, 0.541364],\n [\"2019-09-29T20:50:00Z\", 116490112, 115343360, 0.416667],\n [\"2019-09-29T21:00:00Z\", 116489472, 115343360, 0.484784],\n [\"2019-09-29T21:10:00Z\", 116487936, 115343360, 0.334595],\n [\"2019-09-29T21:20:00Z\", 116486400, 115343360, 0.401015],\n [\"2019-09-29T21:30:00Z\", 116486144, 115343360, 0.345779],\n [\"2019-09-29T21:40:00Z\", 116483712, 115343360, 0.447489],\n [\"2019-09-29T21:50:00Z\", 116483072, 115343360, 0.338794],\n [\"2019-09-29T22:00:00Z\", 116482432, 115343360, 0.360682],\n [\"2019-09-29T22:10:00Z\", 116471424, 115343360, 0.257025],\n [\"2019-09-29T22:20:00Z\", 116470400, 115343360, 0.302218],\n [\"2019-09-29T22:30:00Z\", 116469888, 115343360, 0.442071],\n [\"2019-09-29T22:40:00Z\", 116467840, 115343360, 0.32327],\n [\"2019-09-29T22:50:00Z\", 116467584, 115343360, 0.464085],\n [\"2019-09-29T23:00:00Z\", 116467072, 115343360, 0.358398],\n [\"2019-09-29T23:10:00Z\", 116466560, 115343360, 0.50554],\n [\"2019-09-29T23:20:00Z\", 116465536, 115343360, 0.395924],\n [\"2019-09-29T23:30:00Z\", 116459136, 115343360, 0.465347],\n [\"2019-09-29T23:40:00Z\", 116458624, 115343360, 0.348297],\n [\"2019-09-29T23:50:00Z\", 116457600, 115343360, 0.523529],\n [\"2019-09-30T00:00:00Z\", 116454784, 115343360, 0.551247],\n [\"2019-09-30T00:10:00Z\", 116454016, 115343360, 0.720608],\n [\"2019-09-30T00:20:00Z\", 116449664, 115343360, 0.558405],\n [\"2019-09-30T00:30:00Z\", 116446848, 115343360, 0.462409],\n [\"2019-09-30T00:40:00Z\", 116446336, 115343360, 0.616595],\n [\"2019-09-30T00:50:00Z\", 116445824, 115343360, 0.613827],\n [\"2019-09-30T01:00:00Z\", 116445184, 115343360, 0.577649],\n [\"2019-09-30T01:10:00Z\", 116444928, 115343360, 0.523054],\n [\"2019-09-30T01:20:00Z\", 116441856, 115343360, 0.556988],\n [\"2019-09-30T01:30:00Z\", 116441088, 115343360, 0.561475],\n [\"2019-09-30T01:40:00Z\", 116429184, 115343360, 0.62069],\n [\"2019-09-30T01:50:00Z\", 116424064, 115343360, 0.544453],\n [\"2019-09-30T02:00:00Z\", 116423168, 115343360, 0.411278],\n [\"2019-09-30T02:10:00Z\", 116422784, 115343360, 0.526588],\n [\"2019-09-30T02:20:00Z\", 116422272, 115343360, 0.565401],\n [\"2019-09-30T02:30:00Z\", 116418688, 115343360, 0.647185],\n [\"2019-09-30T02:40:00Z\", 116416896, 115343360, 0.562919],\n [\"2019-09-30T02:50:00Z\", 116415360, 115343360, 0.493604],\n [\"2019-09-30T03:00:00Z\", 116415360, 115343360, 0.491564],\n [\"2019-09-30T03:10:00Z\", 116405888, 115343360, 0.530461],\n [\"2019-09-30T03:20:00Z\", 116395008, 115343360, 0.60701],\n [\"2019-09-30T03:30:00Z\", 116394624, 115343360, 0.580861],\n [\"2019-09-30T03:40:00Z\", 116394624, 115343360, 0.380109],\n [\"2019-09-30T03:50:00Z\", 116390784, 115343360, 0.49965],\n [\"2019-09-30T04:00:00Z\", 116387712, 115343360, 0.560172],\n [\"2019-09-30T04:10:00Z\", 116386688, 115343360, 0.360327],\n [\"2019-09-30T04:20:00Z\", 116384384, 115343360, 0.548949],\n [\"2019-09-30T04:30:00Z\", 116382464, 115343360, 0.517066],\n [\"2019-09-30T04:40:00Z\", 116378624, 115343360, 0.478386],\n [\"2019-09-30T04:50:00Z\", 116375296, 115343360, 0.575613],\n [\"2019-09-30T05:00:00Z\", 116369664, 115343360, 0.53206],\n [\"2019-09-30T05:10:00Z\", 116366720, 115343360, 0.601852],\n [\"2019-09-30T05:20:00Z\", 116364800, 115343360, 0.460627],\n [\"2019-09-30T05:30:00Z\", 116363520, 115343360, 0.545183],\n [\"2019-09-30T05:40:00Z\", 116361216, 115343360, 0.535159],\n [\"2019-09-30T05:50:00Z\", 116360576, 115343360, 0.51379],\n [\"2019-09-30T06:00:00Z\", 116359040, 115343360, 0.326677],\n [\"2019-09-30T06:10:00Z\", 116354176, 115343360, 0.464579],\n [\"2019-09-30T06:20:00Z\", 116353152, 115343360, 0.401753],\n [\"2019-09-30T06:30:00Z\", 116352384, 115343360, 0.490856],\n [\"2019-09-30T06:40:00Z\", 116349056, 115343360, 0.514079],\n [\"2019-09-30T06:50:00Z\", 116346496, 115343360, 0.516461],\n [\"2019-09-30T07:00:00Z\", 116345472, 115343360, 0.455735],\n [\"2019-09-30T07:10:00Z\", 116345216, 115343360, 0.534684],\n [\"2019-09-30T07:20:00Z\", 116344960, 115343360, 0.481799],\n [\"2019-09-30T07:30:00Z\", 116344192, 115343360, 0.444283],\n [\"2019-09-30T07:40:00Z\", 116343936, 115343360, 0.585631],\n [\"2019-09-30T07:50:00Z\", 116342656, 115343360, 0.506173],\n [\"2019-09-30T08:00:00Z\", 116342656, 115343360, 0.57413],\n [\"2019-09-30T08:10:00Z\", 116342144, 115343360, 0.609076],\n ],\n },\n ],\n requestRate: [\n {\n name: \"processed_stats\",\n tags: { server: this.sampleServerName },\n columns: [\n \"time\",\n \"request_rate\",\n \"get_rate\",\n \"set_rate\",\n \"delete_rate\",\n \"incr_rate\",\n \"decr_rate\",\n \"cas_rate\",\n \"touch_rate\",\n \"flush_rate\",\n ],\n values: [\n [\"2019-09-29T08:10:00Z\", 2.506667, 2.313333, 0.193333, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T08:20:00Z\", 2.533334, 2.311667, 0.218333, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T08:30:00Z\", 2.495001, 2.090001, 0.401667, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T08:40:00Z\", 2.506667, 2.313333, 0.193333, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T08:50:00Z\", 2.498333, 2.236666, 0.26, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T09:00:00Z\", 2.500001, 2.288334, 0.21, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T09:10:00Z\", 2.508334, 2.105, 0.398333, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-29T09:20:00Z\", 2.528332, 2.264999, 0.26, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T09:30:00Z\", 2.591667, 2.34, 0.25, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T09:40:00Z\", 2.535, 2.288333, 0.243333, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T09:50:00Z\", 2.516668, 2.301668, 0.211667, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T10:00:00Z\", 2.508335, 2.278335, 0.221667, 0, 0.008333, 0, 0, 0, 0],\n [\"2019-09-29T10:10:00Z\", 2.519995, 2.354996, 0.161666, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T10:20:00Z\", 2.509983, 2.334985, 0.173332, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T10:30:00Z\", 2.525017, 1.94168, 0.580004, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T10:40:00Z\", 2.528335, 2.246668, 0.28, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T10:50:00Z\", 2.504998, 2.161665, 0.341666, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T11:00:00Z\", 2.503333, 2.241666, 0.261667, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T11:10:00Z\", 2.510004, 2.385004, 0.121667, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T11:20:00Z\", 2.573331, 2.296665, 0.273333, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T11:30:00Z\", 2.635, 2.468334, 0.16, 0, 0.006667, 0, 0, 0, 0],\n [\"2019-09-29T11:40:00Z\", 2.615, 2.36, 0.253333, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T11:50:00Z\", 2.638333, 2.058333, 0.58, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T12:00:00Z\", 2.551652, 2.066655, 0.481664, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T12:10:00Z\", 2.545018, 2.366683, 0.176668, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T12:20:00Z\", 2.483329, 2.099996, 0.378333, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-29T12:30:00Z\", 2.491667, 2.281667, 0.21, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T12:40:00Z\", 2.476668, 2.268335, 0.203333, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-29T12:50:00Z\", 2.478334, 1.965001, 0.51, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T13:00:00Z\", 2.516664, 2.093331, 0.421666, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T13:10:00Z\", 2.481661, 2.153328, 0.324999, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T13:20:00Z\", 2.450007, 2.058339, 0.390001, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T13:30:00Z\", 2.463335, 2.078334, 0.383334, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T13:40:00Z\", 2.518331, 1.708332, 0.809999, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T13:50:00Z\", 2.506668, 2.220001, 0.285, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T14:00:00Z\", 2.471665, 2.278332, 0.191667, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T14:10:00Z\", 2.490005, 2.273338, 0.215, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T14:20:00Z\", 2.411663, 2.21333, 0.198333, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T14:30:00Z\", 2.535, 2.253333, 0.28, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T14:40:00Z\", 2.485001, 2.240001, 0.243333, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T14:50:00Z\", 2.538331, 2.329998, 0.206666, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T15:00:00Z\", 2.644943, 2.354949, 0.28666, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T15:10:00Z\", 2.651726, 2.373387, 0.276673, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T15:20:00Z\", 2.621662, 2.416662, 0.201666, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T15:30:00Z\", 2.588337, 2.428337, 0.158334, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T15:40:00Z\", 2.599999, 2.401665, 0.193333, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-29T15:50:00Z\", 2.576667, 2.366667, 0.206667, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T16:00:00Z\", 2.543336, 2.310002, 0.233334, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T16:10:00Z\", 2.623333, 2.329999, 0.29, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T16:20:00Z\", 2.629999, 2.228333, 0.396667, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-29T16:30:00Z\", 2.631667, 2.336667, 0.29, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-29T16:40:00Z\", 2.598334, 2.420001, 0.175, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T16:50:00Z\", 2.558333, 2.303333, 0.255, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T17:00:00Z\", 2.635, 2.376667, 0.255, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T17:10:00Z\", 2.609997, 2.309998, 0.298333, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T17:20:00Z\", 2.620001, 2.223334, 0.391667, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-29T17:30:00Z\", 2.580002, 2.176669, 0.403334, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T17:40:00Z\", 2.566667, 2.273334, 0.29, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T17:50:00Z\", 2.618333, 2.413333, 0.2, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-29T18:00:00Z\", 2.588334, 2.368334, 0.213333, 0, 0.006667, 0, 0, 0, 0],\n [\"2019-09-29T18:10:00Z\", 2.509998, 2.253332, 0.251667, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-29T18:20:00Z\", 2.523328, 2.139995, 0.379999, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T18:30:00Z\", 2.466673, 2.153339, 0.310001, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T18:40:00Z\", 2.506663, 2.29333, 0.21, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T18:50:00Z\", 2.505002, 2.281669, 0.221667, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T19:00:00Z\", 2.513333, 1.853333, 0.658333, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T19:10:00Z\", 2.65, 2.413333, 0.231667, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-29T19:20:00Z\", 2.646664, 2.301664, 0.34, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-29T19:30:00Z\", 2.685003, 2.448336, 0.231667, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-29T19:40:00Z\", 2.608328, 2.273329, 0.331666, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T19:50:00Z\", 2.626671, 2.14667, 0.478334, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T20:00:00Z\", 2.669999, 2.358333, 0.308333, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T20:10:00Z\", 2.681667, 2.01, 0.671667, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T20:20:00Z\", 2.633332, 1.991665, 0.64, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T20:30:00Z\", 2.538339, 2.330006, 0.206667, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T20:40:00Z\", 2.516663, 2.29333, 0.22, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T20:50:00Z\", 2.535, 2.218334, 0.315, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T21:00:00Z\", 2.616664, 2.351664, 0.261666, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T21:10:00Z\", 2.535002, 2.198335, 0.333334, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T21:20:00Z\", 2.513333, 2.293333, 0.215, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-29T21:30:00Z\", 2.530002, 2.050002, 0.476667, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T21:40:00Z\", 2.529998, 2.188331, 0.34, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T21:50:00Z\", 2.506667, 2.235001, 0.268333, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T22:00:00Z\", 2.498332, 2.048332, 0.446666, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T22:10:00Z\", 2.533337, 2.013336, 0.516667, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-29T22:20:00Z\", 2.605, 1.801666, 0.801667, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T22:30:00Z\", 2.581665, 2.026665, 0.553333, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T22:40:00Z\", 2.545003, 2.261669, 0.281667, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T22:50:00Z\", 2.638332, 2.364999, 0.271667, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T23:00:00Z\", 2.65, 2.37, 0.278333, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T23:10:00Z\", 2.559997, 2.404998, 0.153333, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T23:20:00Z\", 2.486668, 2.288334, 0.196667, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T23:30:00Z\", 2.52, 2.186667, 0.331667, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T23:40:00Z\", 2.533333, 2.151666, 0.38, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-29T23:50:00Z\", 2.506669, 2.263335, 0.24, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-30T00:00:00Z\", 2.598331, 2.404998, 0.191667, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T00:10:00Z\", 2.676667, 2.521667, 0.153333, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T00:20:00Z\", 2.661665, 2.339998, 0.321666, 0, 0, 0, 0, 0, 0],\n [\"2019-09-30T00:30:00Z\", 2.601667, 2.060001, 0.54, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T00:40:00Z\", 2.613335, 2.326668, 0.283334, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-30T00:50:00Z\", 2.555, 2.386666, 0.168333, 0, 0, 0, 0, 0, 0],\n [\"2019-09-30T01:00:00Z\", 2.498333, 2.291666, 0.201667, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-30T01:10:00Z\", 2.536666, 2.201666, 0.331667, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-30T01:20:00Z\", 2.63, 2.453333, 0.173333, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-30T01:30:00Z\", 2.680002, 2.435002, 0.24, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-30T01:40:00Z\", 2.649998, 2.221665, 0.426666, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T01:50:00Z\", 2.659994, 2.264995, 0.391666, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-30T02:00:00Z\", 2.520004, 2.21167, 0.303334, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-30T02:10:00Z\", 2.510001, 2.251667, 0.253333, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-30T02:20:00Z\", 2.551666, 2.366666, 0.181667, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-30T02:30:00Z\", 2.521666, 2.338332, 0.183333, 0, 0, 0, 0, 0, 0],\n [\"2019-09-30T02:40:00Z\", 2.540004, 2.235003, 0.301667, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-30T02:50:00Z\", 2.503321, 2.213323, 0.288332, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T03:00:00Z\", 2.536678, 2.17001, 0.363335, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-30T03:10:00Z\", 2.524988, 2.241656, 0.281665, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T03:20:00Z\", 2.523343, 2.233342, 0.288334, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T03:30:00Z\", 2.518336, 2.245003, 0.271667, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T03:40:00Z\", 2.544996, 2.446662, 0.098333, 0, 0, 0, 0, 0, 0],\n [\"2019-09-30T03:50:00Z\", 2.561669, 2.378335, 0.18, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-30T04:00:00Z\", 2.521665, 2.324998, 0.195, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T04:10:00Z\", 2.574999, 2.238333, 0.331667, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-30T04:20:00Z\", 2.528335, 2.296669, 0.23, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T04:30:00Z\", 2.546668, 2.291668, 0.251667, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-30T04:40:00Z\", 2.654998, 2.306665, 0.341666, 0, 0.006667, 0, 0, 0, 0],\n [\"2019-09-30T04:50:00Z\", 2.656669, 2.441669, 0.21, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-30T05:00:00Z\", 2.656662, 2.441662, 0.213333, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T05:10:00Z\", 2.605002, 2.335002, 0.265, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-30T05:20:00Z\", 2.641666, 2.39, 0.25, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T05:30:00Z\", 2.580002, 2.230001, 0.348334, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T05:40:00Z\", 2.566666, 2.25, 0.315, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T05:50:00Z\", 2.631667, 2.111667, 0.516667, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-30T06:00:00Z\", 2.616665, 2.083332, 0.53, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-30T06:10:00Z\", 2.68, 2.231667, 0.445, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-30T06:20:00Z\", 2.573337, 2.278336, 0.291667, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-30T06:30:00Z\", 2.524999, 2.274999, 0.246667, 0, 0.003333, 0, 0, 0, 0],\n [\"2019-09-30T06:40:00Z\", 2.566666, 2.306666, 0.258333, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T06:50:00Z\", 2.678334, 2.425, 0.248333, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-30T07:00:00Z\", 2.610002, 2.163335, 0.445, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T07:10:00Z\", 2.564999, 2.138333, 0.426667, 0, 0, 0, 0, 0, 0],\n [\"2019-09-30T07:20:00Z\", 2.531663, 2.329997, 0.196666, 0, 0.005, 0, 0, 0, 0],\n [\"2019-09-30T07:30:00Z\", 2.555004, 2.28667, 0.266667, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T07:40:00Z\", 2.633329, 2.296663, 0.336666, 0, 0, 0, 0, 0, 0],\n [\"2019-09-30T07:50:00Z\", 2.645003, 2.023336, 0.620001, 0, 0.001667, 0, 0, 0, 0],\n [\"2019-09-30T08:00:00Z\", 2.711668, 2.203335, 0.508334, 0, 0, 0, 0, 0, 0],\n [\"2019-09-30T08:10:00Z\", 2.593331, 2.093332, 0.5, 0, 0, 0, 0, 0, 0],\n ],\n },\n ],\n requestDistribution: [\n {\n name: \"processed_stats\",\n tags: { server: this.sampleServerName },\n columns: [\n \"time\",\n \"get_fraction\",\n \"set_fraction\",\n \"delete_fraction\",\n \"incr_fraction\",\n \"decr_fraction\",\n \"cas_fraction\",\n \"touch_fraction\",\n \"flush_fraction\",\n ],\n values: [\n [\"2019-09-29T08:30:00Z\", 0.837675, 0.160989, 0, 0.001336, 0, 0, 0, 0],\n [\"2019-09-29T08:20:00Z\", 0.9125, 0.086184, 0, 0.001316, 0, 0, 0, 0],\n [\"2019-09-29T08:30:00Z\", 0.837675, 0.160989, 0, 0.001336, 0, 0, 0, 0],\n [\"2019-09-29T08:40:00Z\", 0.922872, 0.077128, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T08:50:00Z\", 0.895264, 0.104069, 0, 0.000667, 0, 0, 0, 0],\n [\"2019-09-29T09:00:00Z\", 0.915333, 0.084, 0, 0.000667, 0, 0, 0, 0],\n [\"2019-09-29T09:10:00Z\", 0.839203, 0.158804, 0, 0.001993, 0, 0, 0, 0],\n [\"2019-09-29T09:20:00Z\", 0.895847, 0.102835, 0, 0.001318, 0, 0, 0, 0],\n [\"2019-09-29T09:30:00Z\", 0.902894, 0.096463, 0, 0.000643, 0, 0, 0, 0],\n [\"2019-09-29T09:40:00Z\", 0.902696, 0.095989, 0, 0.001315, 0, 0, 0, 0],\n [\"2019-09-29T09:50:00Z\", 0.91457, 0.084106, 0, 0.001325, 0, 0, 0, 0],\n [\"2019-09-29T10:00:00Z\", 0.908306, 0.088372, 0, 0.003322, 0, 0, 0, 0],\n [\"2019-09-29T10:10:00Z\", 0.934524, 0.064153, 0, 0.001323, 0, 0, 0, 0],\n [\"2019-09-29T10:20:00Z\", 0.930279, 0.069057, 0, 0.000664, 0, 0, 0, 0],\n [\"2019-09-29T10:30:00Z\", 0.768977, 0.229703, 0, 0.00132, 0, 0, 0, 0],\n [\"2019-09-29T10:40:00Z\", 0.888596, 0.110745, 0, 0.000659, 0, 0, 0, 0],\n [\"2019-09-29T10:50:00Z\", 0.862941, 0.136394, 0, 0.000665, 0, 0, 0, 0],\n [\"2019-09-29T11:00:00Z\", 0.895473, 0.104527, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T11:10:00Z\", 0.950199, 0.048473, 0, 0.001328, 0, 0, 0, 0],\n [\"2019-09-29T11:20:00Z\", 0.892487, 0.106218, 0, 0.001295, 0, 0, 0, 0],\n [\"2019-09-29T11:30:00Z\", 0.936749, 0.060721, 0, 0.00253, 0, 0, 0, 0],\n [\"2019-09-29T11:40:00Z\", 0.902486, 0.096877, 0, 0.000637, 0, 0, 0, 0],\n [\"2019-09-29T11:50:00Z\", 0.780164, 0.219836, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T12:00:00Z\", 0.809928, 0.188766, 0, 0.001306, 0, 0, 0, 0],\n [\"2019-09-29T12:10:00Z\", 0.929928, 0.069417, 0, 0.000655, 0, 0, 0, 0],\n [\"2019-09-29T12:20:00Z\", 0.845638, 0.152349, 0, 0.002013, 0, 0, 0, 0],\n [\"2019-09-29T12:30:00Z\", 0.915719, 0.084281, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T12:40:00Z\", 0.915882, 0.0821, 0, 0.002019, 0, 0, 0, 0],\n [\"2019-09-29T12:50:00Z\", 0.792872, 0.205783, 0, 0.001345, 0, 0, 0, 0],\n [\"2019-09-29T13:00:00Z\", 0.831788, 0.16755, 0, 0.000662, 0, 0, 0, 0],\n [\"2019-09-29T13:10:00Z\", 0.867696, 0.13096, 0, 0.001343, 0, 0, 0, 0],\n [\"2019-09-29T13:20:00Z\", 0.840136, 0.159184, 0, 0.00068, 0, 0, 0, 0],\n [\"2019-09-29T13:30:00Z\", 0.843708, 0.155616, 0, 0.000677, 0, 0, 0, 0],\n [\"2019-09-29T13:40:00Z\", 0.678359, 0.321641, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T13:50:00Z\", 0.885638, 0.113697, 0, 0.000665, 0, 0, 0, 0],\n [\"2019-09-29T14:00:00Z\", 0.92178, 0.077546, 0, 0.000674, 0, 0, 0, 0],\n [\"2019-09-29T14:10:00Z\", 0.912985, 0.086345, 0, 0.000669, 0, 0, 0, 0],\n [\"2019-09-29T14:20:00Z\", 0.917761, 0.082239, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T14:30:00Z\", 0.888889, 0.110454, 0, 0.000657, 0, 0, 0, 0],\n [\"2019-09-29T14:40:00Z\", 0.901408, 0.097921, 0, 0.000671, 0, 0, 0, 0],\n [\"2019-09-29T14:50:00Z\", 0.917925, 0.081418, 0, 0.000657, 0, 0, 0, 0],\n [\"2019-09-29T15:00:00Z\", 0.890359, 0.108381, 0, 0.00126, 0, 0, 0, 0],\n [\"2019-09-29T15:10:00Z\", 0.895035, 0.104337, 0, 0.000629, 0, 0, 0, 0],\n [\"2019-09-29T15:20:00Z\", 0.921805, 0.076923, 0, 0.001271, 0, 0, 0, 0],\n [\"2019-09-29T15:30:00Z\", 0.938184, 0.061172, 0, 0.000644, 0, 0, 0, 0],\n [\"2019-09-29T15:40:00Z\", 0.923718, 0.074359, 0, 0.001923, 0, 0, 0, 0],\n [\"2019-09-29T15:50:00Z\", 0.918499, 0.080207, 0, 0.001294, 0, 0, 0, 0],\n [\"2019-09-29T16:00:00Z\", 0.908257, 0.091743, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T16:10:00Z\", 0.888183, 0.110546, 0, 0.001271, 0, 0, 0, 0],\n [\"2019-09-29T16:20:00Z\", 0.847275, 0.150824, 0, 0.001901, 0, 0, 0, 0],\n [\"2019-09-29T16:30:00Z\", 0.887904, 0.110196, 0, 0.0019, 0, 0, 0, 0],\n [\"2019-09-29T16:40:00Z\", 0.931366, 0.067351, 0, 0.001283, 0, 0, 0, 0],\n [\"2019-09-29T16:50:00Z\", 0.900326, 0.099674, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T17:00:00Z\", 0.901961, 0.096774, 0, 0.001265, 0, 0, 0, 0],\n [\"2019-09-29T17:10:00Z\", 0.885057, 0.114304, 0, 0.000639, 0, 0, 0, 0],\n [\"2019-09-29T17:20:00Z\", 0.848601, 0.149491, 0, 0.001908, 0, 0, 0, 0],\n [\"2019-09-29T17:30:00Z\", 0.843669, 0.156331, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T17:40:00Z\", 0.885714, 0.112987, 0, 0.001299, 0, 0, 0, 0],\n [\"2019-09-29T17:50:00Z\", 0.921706, 0.076384, 0, 0.00191, 0, 0, 0, 0],\n [\"2019-09-29T18:00:00Z\", 0.915003, 0.082421, 0, 0.002576, 0, 0, 0, 0],\n [\"2019-09-29T18:10:00Z\", 0.897742, 0.100266, 0, 0.001992, 0, 0, 0, 0],\n [\"2019-09-29T18:20:00Z\", 0.848085, 0.150594, 0, 0.001321, 0, 0, 0, 0],\n [\"2019-09-29T18:30:00Z\", 0.872973, 0.125676, 0, 0.001351, 0, 0, 0, 0],\n [\"2019-09-29T18:40:00Z\", 0.914894, 0.083777, 0, 0.00133, 0, 0, 0, 0],\n [\"2019-09-29T18:50:00Z\", 0.910845, 0.08849, 0, 0.000665, 0, 0, 0, 0],\n [\"2019-09-29T19:00:00Z\", 0.737401, 0.261936, 0, 0.000663, 0, 0, 0, 0],\n [\"2019-09-29T19:10:00Z\", 0.910692, 0.087421, 0, 0.001887, 0, 0, 0, 0],\n [\"2019-09-29T19:20:00Z\", 0.869647, 0.128463, 0, 0.001889, 0, 0, 0, 0],\n [\"2019-09-29T19:30:00Z\", 0.911856, 0.086282, 0, 0.001862, 0, 0, 0, 0],\n [\"2019-09-29T19:40:00Z\", 0.871565, 0.127157, 0, 0.001278, 0, 0, 0, 0],\n [\"2019-09-29T19:50:00Z\", 0.817259, 0.182107, 0, 0.000635, 0, 0, 0, 0],\n [\"2019-09-29T20:00:00Z\", 0.883271, 0.115481, 0, 0.001248, 0, 0, 0, 0],\n [\"2019-09-29T20:10:00Z\", 0.749534, 0.250466, 0, 0, 0, 0, 0, 0],\n [\"2019-09-29T20:20:00Z\", 0.756329, 0.243038, 0, 0.000633, 0, 0, 0, 0],\n [\"2019-09-29T20:30:00Z\", 0.917925, 0.081418, 0, 0.000657, 0, 0, 0, 0],\n [\"2019-09-29T20:40:00Z\", 0.911258, 0.087417, 0, 0.001325, 0, 0, 0, 0],\n [\"2019-09-29T20:50:00Z\", 0.875082, 0.12426, 0, 0.000657, 0, 0, 0, 0],\n [\"2019-09-29T21:00:00Z\", 0.898726, 0.1, 0, 0.001274, 0, 0, 0, 0],\n [\"2019-09-29T21:10:00Z\", 0.867193, 0.131492, 0, 0.001315, 0, 0, 0, 0],\n [\"2019-09-29T21:20:00Z\", 0.912467, 0.085544, 0, 0.001989, 0, 0, 0, 0],\n [\"2019-09-29T21:30:00Z\", 0.810277, 0.188406, 0, 0.001318, 0, 0, 0, 0],\n [\"2019-09-29T21:40:00Z\", 0.864954, 0.134387, 0, 0.000659, 0, 0, 0, 0],\n [\"2019-09-29T21:50:00Z\", 0.891622, 0.107048, 0, 0.00133, 0, 0, 0, 0],\n [\"2019-09-29T22:00:00Z\", 0.81988, 0.178786, 0, 0.001334, 0, 0, 0, 0],\n [\"2019-09-29T22:10:00Z\", 0.794737, 0.203947, 0, 0.001316, 0, 0, 0, 0],\n [\"2019-09-29T22:20:00Z\", 0.691619, 0.307742, 0, 0.00064, 0, 0, 0, 0],\n [\"2019-09-29T22:30:00Z\", 0.785023, 0.214332, 0, 0.000646, 0, 0, 0, 0],\n [\"2019-09-29T22:40:00Z\", 0.888671, 0.110675, 0, 0.000655, 0, 0, 0, 0],\n [\"2019-09-29T22:50:00Z\", 0.896399, 0.102969, 0, 0.000632, 0, 0, 0, 0],\n [\"2019-09-29T23:00:00Z\", 0.89434, 0.105031, 0, 0.000629, 0, 0, 0, 0],\n [\"2019-09-29T23:10:00Z\", 0.939453, 0.059896, 0, 0.000651, 0, 0, 0, 0],\n [\"2019-09-29T23:20:00Z\", 0.920241, 0.079088, 0, 0.00067, 0, 0, 0, 0],\n [\"2019-09-29T23:30:00Z\", 0.867725, 0.131614, 0, 0.000661, 0, 0, 0, 0],\n [\"2019-09-29T23:40:00Z\", 0.849342, 0.15, 0, 0.000658, 0, 0, 0, 0],\n [\"2019-09-29T23:50:00Z\", 0.902926, 0.095745, 0, 0.00133, 0, 0, 0, 0],\n [\"2019-09-30T00:00:00Z\", 0.925593, 0.073765, 0, 0.000641, 0, 0, 0, 0],\n [\"2019-09-30T00:10:00Z\", 0.942092, 0.057285, 0, 0.000623, 0, 0, 0, 0],\n [\"2019-09-30T00:20:00Z\", 0.879148, 0.120852, 0, 0, 0, 0, 0, 0],\n [\"2019-09-30T00:30:00Z\", 0.7918, 0.207559, 0, 0.000641, 0, 0, 0, 0],\n [\"2019-09-30T00:40:00Z\", 0.890306, 0.108418, 0, 0.001276, 0, 0, 0, 0],\n [\"2019-09-30T00:50:00Z\", 0.934116, 0.065884, 0, 0, 0, 0, 0, 0],\n [\"2019-09-30T01:00:00Z\", 0.917278, 0.08072, 0, 0.002001, 0, 0, 0, 0],\n [\"2019-09-30T01:10:00Z\", 0.867937, 0.130749, 0, 0.001314, 0, 0, 0, 0],\n [\"2019-09-30T01:20:00Z\", 0.932826, 0.065906, 0, 0.001267, 0, 0, 0, 0],\n [\"2019-09-30T01:30:00Z\", 0.908582, 0.089552, 0, 0.001866, 0, 0, 0, 0],\n [\"2019-09-30T01:40:00Z\", 0.838365, 0.161006, 0, 0.000629, 0, 0, 0, 0],\n [\"2019-09-30T01:50:00Z\", 0.851504, 0.147243, 0, 0.001253, 0, 0, 0, 0],\n [\"2019-09-30T02:00:00Z\", 0.877646, 0.12037, 0, 0.001984, 0, 0, 0, 0],\n [\"2019-09-30T02:10:00Z\", 0.897078, 0.10093, 0, 0.001992, 0, 0, 0, 0],\n [\"2019-09-30T02:20:00Z\", 0.927498, 0.071195, 0, 0.001306, 0, 0, 0, 0],\n [\"2019-09-30T02:30:00Z\", 0.927297, 0.072703, 0, 0, 0, 0, 0, 0],\n [\"2019-09-30T02:40:00Z\", 0.879921, 0.118766, 0, 0.001312, 0, 0, 0, 0],\n [\"2019-09-30T02:50:00Z\", 0.884154, 0.11518, 0, 0.000666, 0, 0, 0, 0],\n [\"2019-09-30T03:00:00Z\", 0.855453, 0.143233, 0, 0.001314, 0, 0, 0, 0],\n [\"2019-09-30T03:10:00Z\", 0.887789, 0.111551, 0, 0.00066, 0, 0, 0, 0],\n [\"2019-09-30T03:20:00Z\", 0.885073, 0.114267, 0, 0.000661, 0, 0, 0, 0],\n [\"2019-09-30T03:30:00Z\", 0.891463, 0.107876, 0, 0.000662, 0, 0, 0, 0],\n [\"2019-09-30T03:40:00Z\", 0.961362, 0.038638, 0, 0, 0, 0, 0, 0],\n [\"2019-09-30T03:50:00Z\", 0.928432, 0.070267, 0, 0.001301, 0, 0, 0, 0],\n [\"2019-09-30T04:00:00Z\", 0.922009, 0.07733, 0, 0.000661, 0, 0, 0, 0],\n [\"2019-09-30T04:10:00Z\", 0.869256, 0.128803, 0, 0.001942, 0, 0, 0, 0],\n [\"2019-09-30T04:20:00Z\", 0.908372, 0.090969, 0, 0.000659, 0, 0, 0, 0],\n [\"2019-09-30T04:30:00Z\", 0.899869, 0.098822, 0, 0.001309, 0, 0, 0, 0],\n [\"2019-09-30T04:40:00Z\", 0.868801, 0.128688, 0, 0.002511, 0, 0, 0, 0],\n [\"2019-09-30T04:50:00Z\", 0.919072, 0.079046, 0, 0.001882, 0, 0, 0, 0],\n [\"2019-09-30T05:00:00Z\", 0.919072, 0.080301, 0, 0.000627, 0, 0, 0, 0],\n [\"2019-09-30T05:10:00Z\", 0.896353, 0.101727, 0, 0.001919, 0, 0, 0, 0],\n [\"2019-09-30T05:20:00Z\", 0.904732, 0.094637, 0, 0.000631, 0, 0, 0, 0],\n [\"2019-09-30T05:30:00Z\", 0.864341, 0.135013, 0, 0.000646, 0, 0, 0, 0],\n [\"2019-09-30T05:40:00Z\", 0.876623, 0.122727, 0, 0.000649, 0, 0, 0, 0],\n [\"2019-09-30T05:50:00Z\", 0.802407, 0.196327, 0, 0.001267, 0, 0, 0, 0],\n [\"2019-09-30T06:00:00Z\", 0.796178, 0.202548, 0, 0.001274, 0, 0, 0, 0],\n [\"2019-09-30T06:10:00Z\", 0.832711, 0.166045, 0, 0.001244, 0, 0, 0, 0],\n [\"2019-09-30T06:20:00Z\", 0.885363, 0.113342, 0, 0.001295, 0, 0, 0, 0],\n [\"2019-09-30T06:30:00Z\", 0.90099, 0.09769, 0, 0.00132, 0, 0, 0, 0],\n [\"2019-09-30T06:40:00Z\", 0.898701, 0.100649, 0, 0.000649, 0, 0, 0, 0],\n [\"2019-09-30T06:50:00Z\", 0.905414, 0.092719, 0, 0.001867, 0, 0, 0, 0],\n [\"2019-09-30T07:00:00Z\", 0.828863, 0.170498, 0, 0.000639, 0, 0, 0, 0],\n [\"2019-09-30T07:10:00Z\", 0.833658, 0.166342, 0, 0, 0, 0, 0, 0],\n [\"2019-09-30T07:20:00Z\", 0.920342, 0.077683, 0, 0.001975, 0, 0, 0, 0],\n [\"2019-09-30T07:30:00Z\", 0.894977, 0.104371, 0, 0.000652, 0, 0, 0, 0],\n [\"2019-09-30T07:40:00Z\", 0.872152, 0.127848, 0, 0, 0, 0, 0, 0],\n [\"2019-09-30T07:50:00Z\", 0.764965, 0.234405, 0, 0.00063, 0, 0, 0, 0],\n [\"2019-09-30T08:00:00Z\", 0.812538, 0.187462, 0, 0, 0, 0, 0, 0],\n [\"2019-09-30T08:10:00Z\", 0.807198, 0.192802, 0, 0, 0, 0, 0, 0],\n ],\n },\n ],\n hitRate: [\n {\n name: \"processed_stats\",\n tags: { server: this.sampleServerName },\n columns: [\n \"time\",\n \"hit_rate\",\n \"get_hit_rate\",\n \"delete_hit_rate\",\n \"incr_hit_rate\",\n \"decr_hit_rate\",\n \"touch_hit_rate\",\n ],\n values: [\n [\"2019-09-29T08:10:00Z\", 0.426752, 0.427432, null, 0, null, null],\n [\"2019-09-29T08:20:00Z\", 0.457163, 0.457102, null, 0.5, null, null],\n [\"2019-09-29T08:30:00Z\", 0.426752, 0.427432, null, 0, null, null],\n [\"2019-09-29T08:40:00Z\", 0.598703, 0.598703, null, 0.5, null, null],\n [\"2019-09-29T08:50:00Z\", 0.471333, 0.470939, null, 1, null, null],\n [\"2019-09-29T09:00:00Z\", 0.458515, 0.458121, null, 1, null, null],\n [\"2019-09-29T09:10:00Z\", 0.492891, 0.49327, null, 0.333333, null, null],\n [\"2019-09-29T09:20:00Z\", 0.569434, 0.569536, null, 0.5, null, null],\n [\"2019-09-29T09:30:00Z\", 0.53879, 0.538462, null, 1, null, null],\n [\"2019-09-29T09:40:00Z\", 0.496, 0.495994, null, 0.5, null, null],\n [\"2019-09-29T09:50:00Z\", 0.524223, 0.524258, null, 0.5, null, null],\n [\"2019-09-29T10:00:00Z\", 0.451895, 0.451353, null, 0.6, null, null],\n [\"2019-09-29T10:10:00Z\", 0.481272, 0.480538, null, 1, null, null],\n [\"2019-09-29T10:20:00Z\", 0.633381, 0.633833, null, 0, null, null],\n [\"2019-09-29T10:30:00Z\", 0.432734, 0.43176, null, 1, null, null],\n [\"2019-09-29T10:40:00Z\", 0.584878, 0.58457, null, 1, null, null],\n [\"2019-09-29T10:50:00Z\", 0.724191, 0.723978, null, 1, null, null],\n [\"2019-09-29T11:00:00Z\", 0.533086, 0.533086, null, 0.5, null, null],\n [\"2019-09-29T11:10:00Z\", 0.674808, 0.675751, null, 0, null, null],\n [\"2019-09-29T11:20:00Z\", 0.407246, 0.407112, null, 0.5, null, null],\n [\"2019-09-29T11:30:00Z\", 0.49899, 0.499662, null, 0.25, null, null],\n [\"2019-09-29T11:40:00Z\", 0.55681, 0.556497, null, 1, null, null],\n [\"2019-09-29T11:50:00Z\", 0.574089, 0.574089, null, 0.75, null, null],\n [\"2019-09-29T12:00:00Z\", 0.349436, 0.349194, null, 0.5, null, null],\n [\"2019-09-29T12:10:00Z\", 0.498944, 0.498592, null, 1, null, null],\n [\"2019-09-29T12:20:00Z\", 0.470309, 0.469048, null, 1, null, null],\n [\"2019-09-29T12:30:00Z\", 0.684441, 0.684441, null, 1, null, null],\n [\"2019-09-29T12:40:00Z\", 0.536657, 0.535636, null, 1, null, null],\n [\"2019-09-29T12:50:00Z\", 0.298052, 0.296862, null, 1, null, null],\n [\"2019-09-29T13:00:00Z\", 0.344471, 0.343949, null, 1, null, null],\n [\"2019-09-29T13:10:00Z\", 0.414219, 0.414087, null, 0.5, null, null],\n [\"2019-09-29T13:20:00Z\", 0.355178, 0.354656, null, 1, null, null],\n [\"2019-09-29T13:30:00Z\", 0.428686, 0.428228, null, 1, null, null],\n [\"2019-09-29T13:40:00Z\", 0.213659, 0.213659, null, 0.5, null, null],\n [\"2019-09-29T13:50:00Z\", 0.408852, 0.409159, null, 0, null, null],\n [\"2019-09-29T14:00:00Z\", 0.395468, 0.395026, null, 1, null, null],\n [\"2019-09-29T14:10:00Z\", 0.39707, 0.396628, null, 1, null, null],\n [\"2019-09-29T14:20:00Z\", 0.473645, 0.473645, null, 1, null, null],\n [\"2019-09-29T14:30:00Z\", 0.296378, 0.295858, null, 1, null, null],\n [\"2019-09-29T14:40:00Z\", 0.419331, 0.418899, null, 1, null, null],\n [\"2019-09-29T14:50:00Z\", 0.487491, 0.487124, null, 1, null, null],\n [\"2019-09-29T15:00:00Z\", 0.457244, 0.457891, null, 0, null, null],\n [\"2019-09-29T15:10:00Z\", 0.356491, 0.356039, null, 1, null, null],\n [\"2019-09-29T15:20:00Z\", 0.378788, 0.378621, null, 0.5, null, null],\n [\"2019-09-29T15:30:00Z\", 0.462963, 0.462594, null, 1, null, null],\n [\"2019-09-29T15:40:00Z\", 0.322022, 0.321305, null, 0.666667, null, null],\n [\"2019-09-29T15:50:00Z\", 0.387482, 0.387324, null, 0.5, null, null],\n [\"2019-09-29T16:00:00Z\", 0.344877, 0.344877, null, 0.75, null, null],\n [\"2019-09-29T16:10:00Z\", 0.388571, 0.387697, null, 1, null, null],\n [\"2019-09-29T16:20:00Z\", 0.270896, 0.271503, null, 0, null, null],\n [\"2019-09-29T16:30:00Z\", 0.468327, 0.468616, null, 0.333333, null, null],\n [\"2019-09-29T16:40:00Z\", 0.473177, 0.47314, null, 0.5, null, null],\n [\"2019-09-29T16:50:00Z\", 0.452243, 0.452243, null, 0.75, null, null],\n [\"2019-09-29T17:00:00Z\", 0.442577, 0.441795, null, 1, null, null],\n [\"2019-09-29T17:10:00Z\", 0.351839, 0.351371, null, 1, null, null],\n [\"2019-09-29T17:20:00Z\", 0.403141, 0.403298, null, 0.333333, null, null],\n [\"2019-09-29T17:30:00Z\", 0.394334, 0.394334, null, 0.6666665, null, null],\n [\"2019-09-29T17:40:00Z\", 0.36896, 0.368035, null, 1, null, null],\n [\"2019-09-29T17:50:00Z\", 0.488629, 0.487569, null, 1, null, null],\n [\"2019-09-29T18:00:00Z\", 0.391579, 0.391274, null, 0.5, null, null],\n [\"2019-09-29T18:10:00Z\", 0.459779, 0.460059, null, 0.333333, null, null],\n [\"2019-09-29T18:20:00Z\", 0.357698, 0.357477, null, 0.5, null, null],\n [\"2019-09-29T18:30:00Z\", 0.491499, 0.490712, null, 1, null, null],\n [\"2019-09-29T18:40:00Z\", 0.408563, 0.407703, null, 1, null, null],\n [\"2019-09-29T18:50:00Z\", 0.421898, 0.421476, null, 1, null, null],\n [\"2019-09-29T19:00:00Z\", 0.421384, 0.421763, null, 0, null, null],\n [\"2019-09-29T19:10:00Z\", 0.351482, 0.351519, null, 0.333333, null, null],\n [\"2019-09-29T19:20:00Z\", 0.321532, 0.321506, null, 0.333333, null, null],\n [\"2019-09-29T19:30:00Z\", 0.434103, 0.433628, null, 0.666667, null, null],\n [\"2019-09-29T19:40:00Z\", 0.383602, 0.383431, null, 0.5, null, null],\n [\"2019-09-29T19:50:00Z\", 0.556245, 0.555901, null, 1, null, null],\n [\"2019-09-29T20:00:00Z\", 0.345095, 0.34417, null, 1, null, null],\n [\"2019-09-29T20:10:00Z\", 0.412106, 0.412106, null, 1, null, null],\n [\"2019-09-29T20:20:00Z\", 0.356187, 0.355649, null, 1, null, null],\n [\"2019-09-29T20:30:00Z\", 0.446748, 0.446352, null, 1, null, null],\n [\"2019-09-29T20:40:00Z\", 0.541364, 0.541424, null, 0.5, null, null],\n [\"2019-09-29T20:50:00Z\", 0.416667, 0.416228, null, 1, null, null],\n [\"2019-09-29T21:00:00Z\", 0.484784, 0.484054, null, 1, null, null],\n [\"2019-09-29T21:10:00Z\", 0.334595, 0.334344, null, 0.5, null, null],\n [\"2019-09-29T21:20:00Z\", 0.401015, 0.400436, null, 0.666667, null, null],\n [\"2019-09-29T21:30:00Z\", 0.345779, 0.345528, null, 0.5, null, null],\n [\"2019-09-29T21:40:00Z\", 0.447489, 0.447068, null, 1, null, null],\n [\"2019-09-29T21:50:00Z\", 0.338794, 0.337808, null, 1, null, null],\n [\"2019-09-29T22:00:00Z\", 0.360682, 0.359642, null, 1, null, null],\n [\"2019-09-29T22:10:00Z\", 0.257025, 0.25745, null, 0, null, null],\n [\"2019-09-29T22:20:00Z\", 0.302218, 0.302498, null, 0, null, null],\n [\"2019-09-29T22:30:00Z\", 0.442071, 0.442434, null, 0, null, null],\n [\"2019-09-29T22:40:00Z\", 0.32327, 0.322771, null, 1, null, null],\n [\"2019-09-29T22:50:00Z\", 0.464085, 0.464412, null, 0, null, null],\n [\"2019-09-29T23:00:00Z\", 0.358398, 0.357947, null, 1, null, null],\n [\"2019-09-29T23:10:00Z\", 0.50554, 0.505198, null, 1, null, null],\n [\"2019-09-29T23:20:00Z\", 0.395924, 0.395484, null, 1, null, null],\n [\"2019-09-29T23:30:00Z\", 0.465347, 0.464939, null, 1, null, null],\n [\"2019-09-29T23:40:00Z\", 0.348297, 0.347792, null, 1, null, null],\n [\"2019-09-29T23:50:00Z\", 0.523529, 0.523564, null, 0.5, null, null],\n [\"2019-09-30T00:00:00Z\", 0.551247, 0.550936, null, 1, null, null],\n [\"2019-09-30T00:10:00Z\", 0.720608, 0.720423, null, 1, null, null],\n [\"2019-09-30T00:20:00Z\", 0.558405, 0.558405, null, 1, null, null],\n [\"2019-09-30T00:30:00Z\", 0.462409, 0.461974, null, 1, null, null],\n [\"2019-09-30T00:40:00Z\", 0.616595, 0.616762, null, 0.5, null, null],\n [\"2019-09-30T00:50:00Z\", 0.613827, 0.613827, null, 0.4166665, null, null],\n [\"2019-09-30T01:00:00Z\", 0.577649, 0.578182, null, 0.333333, null, null],\n [\"2019-09-30T01:10:00Z\", 0.523054, 0.523846, null, 0, null, null],\n [\"2019-09-30T01:20:00Z\", 0.556988, 0.556386, null, 1, null, null],\n [\"2019-09-30T01:30:00Z\", 0.561475, 0.561944, null, 0.333333, null, null],\n [\"2019-09-30T01:40:00Z\", 0.62069, 0.620405, null, 1, null, null],\n [\"2019-09-30T01:50:00Z\", 0.544453, 0.544518, null, 0.5, null, null],\n [\"2019-09-30T02:00:00Z\", 0.411278, 0.411454, null, 0.333333, null, null],\n [\"2019-09-30T02:10:00Z\", 0.526588, 0.527017, null, 0.333333, null, null],\n [\"2019-09-30T02:20:00Z\", 0.565401, 0.564789, null, 1, null, null],\n [\"2019-09-30T02:30:00Z\", 0.647185, 0.647185, null, 1, null, null],\n [\"2019-09-30T02:40:00Z\", 0.562919, 0.562267, null, 1, null, null],\n [\"2019-09-30T02:50:00Z\", 0.493604, 0.493223, null, 1, null, null],\n [\"2019-09-30T03:00:00Z\", 0.491564, 0.49232, null, 0, null, null],\n [\"2019-09-30T03:10:00Z\", 0.530461, 0.530112, null, 1, null, null],\n [\"2019-09-30T03:20:00Z\", 0.60701, 0.606716, null, 1, null, null],\n [\"2019-09-30T03:30:00Z\", 0.580861, 0.580549, null, 1, null, null],\n [\"2019-09-30T03:40:00Z\", 0.380109, 0.380109, null, 0.5, null, null],\n [\"2019-09-30T03:50:00Z\", 0.49965, 0.50035, null, 0, null, null],\n [\"2019-09-30T04:00:00Z\", 0.560172, 0.559857, null, 1, null, null],\n [\"2019-09-30T04:10:00Z\", 0.360327, 0.360387, null, 0.333333, null, null],\n [\"2019-09-30T04:20:00Z\", 0.548949, 0.549347, null, 0, null, null],\n [\"2019-09-30T04:30:00Z\", 0.517066, 0.517091, null, 0.5, null, null],\n [\"2019-09-30T04:40:00Z\", 0.478386, 0.478324, null, 0.5, null, null],\n [\"2019-09-30T04:50:00Z\", 0.575613, 0.575427, null, 0.666667, null, null],\n [\"2019-09-30T05:00:00Z\", 0.53206, 0.531741, null, 1, null, null],\n [\"2019-09-30T05:10:00Z\", 0.601852, 0.601713, null, 0.666667, null, null],\n [\"2019-09-30T05:20:00Z\", 0.460627, 0.460251, null, 1, null, null],\n [\"2019-09-30T05:30:00Z\", 0.545183, 0.544843, null, 1, null, null],\n [\"2019-09-30T05:40:00Z\", 0.535159, 0.535556, null, 0, null, null],\n [\"2019-09-30T05:50:00Z\", 0.51379, 0.513812, null, 0.5, null, null],\n [\"2019-09-30T06:00:00Z\", 0.326677, 0.3264, null, 0.5, null, null],\n [\"2019-09-30T06:10:00Z\", 0.464579, 0.465273, null, 0, null, null],\n [\"2019-09-30T06:20:00Z\", 0.401753, 0.401609, null, 0.5, null, null],\n [\"2019-09-30T06:30:00Z\", 0.490856, 0.490842, null, 0.5, null, null],\n [\"2019-09-30T06:40:00Z\", 0.514079, 0.513728, null, 1, null, null],\n [\"2019-09-30T06:50:00Z\", 0.516461, 0.516838, null, 0.333333, null, null],\n [\"2019-09-30T07:00:00Z\", 0.455735, 0.455316, null, 1, null, null],\n [\"2019-09-30T07:10:00Z\", 0.534684, 0.534684, null, 0.8333335, null, null],\n [\"2019-09-30T07:20:00Z\", 0.481799, 0.481402, null, 0.666667, null, null],\n [\"2019-09-30T07:30:00Z\", 0.444283, 0.443878, null, 1, null, null],\n [\"2019-09-30T07:40:00Z\", 0.585631, 0.585631, null, 1, null, null],\n [\"2019-09-30T07:50:00Z\", 0.506173, 0.505766, null, 1, null, null],\n [\"2019-09-30T08:00:00Z\", 0.57413, 0.57413, null, null, null, null],\n [\"2019-09-30T08:10:00Z\", 0.609076, 0.609076, null, null, null, null],\n ],\n },\n ],\n items: [\n {\n name: \"processed_stats\",\n tags: { server: this.sampleServerName },\n columns: [\"time\", \"items\", \"eviction_rate\", \"get_expired_rate\"],\n values: [\n [\"2019-09-29T08:10:00Z\", 51915, 0.151667, 0],\n [\"2019-09-29T08:20:00Z\", 51924, 0.201667, 0],\n [\"2019-09-29T08:30:00Z\", 51919, 0.37, 0],\n [\"2019-09-29T08:40:00Z\", 51915, 0.151667, 0],\n [\"2019-09-29T08:50:00Z\", 51903, 0.201667, 0],\n [\"2019-09-29T09:00:00Z\", 51898, 0.145, 0],\n [\"2019-09-29T09:10:00Z\", 51895, 0.371667, 0],\n [\"2019-09-29T09:20:00Z\", 51891, 0.228333, 0],\n [\"2019-09-29T09:30:00Z\", 51885, 0.218333, 0],\n [\"2019-09-29T09:40:00Z\", 51881, 0.178333, 0],\n [\"2019-09-29T09:50:00Z\", 51878, 0.171667, 0],\n [\"2019-09-29T10:00:00Z\", 51874, 0.193333, 0],\n [\"2019-09-29T10:10:00Z\", 51872, 0.091666, 0],\n [\"2019-09-29T10:20:00Z\", 51868, 0.149999, 0],\n [\"2019-09-29T10:30:00Z\", 51866, 0.565004, 0],\n [\"2019-09-29T10:40:00Z\", 51860, 0.236667, 0],\n [\"2019-09-29T10:50:00Z\", 51858, 0.331666, 0],\n [\"2019-09-29T11:00:00Z\", 51853, 0.193333, 0],\n [\"2019-09-29T11:10:00Z\", 51847, 0.081667, 0],\n [\"2019-09-29T11:20:00Z\", 51842, 0.25, 0],\n [\"2019-09-29T11:30:00Z\", 51834, 0.101667, 0],\n [\"2019-09-29T11:40:00Z\", 51829, 0.198333, 0],\n [\"2019-09-29T11:50:00Z\", 51816, 0.431667, 0],\n [\"2019-09-29T12:00:00Z\", 51814, 0.443331, 0],\n [\"2019-09-29T12:10:00Z\", 51805, 0.116667, 0],\n [\"2019-09-29T12:20:00Z\", 51805, 0.341666, 0],\n [\"2019-09-29T12:30:00Z\", 51786, 0.085, 0],\n [\"2019-09-29T12:40:00Z\", 51778, 0.11, 0],\n [\"2019-09-29T12:50:00Z\", 51775, 0.458334, 0],\n [\"2019-09-29T13:00:00Z\", 51772, 0.391666, 0],\n [\"2019-09-29T13:10:00Z\", 51764, 0.288333, 0],\n [\"2019-09-29T13:20:00Z\", 51764, 0.350001, 0],\n [\"2019-09-29T13:30:00Z\", 51754, 0.316667, 0],\n [\"2019-09-29T13:40:00Z\", 51751, 0.786666, 0],\n [\"2019-09-29T13:50:00Z\", 51749, 0.25, 0],\n [\"2019-09-29T14:00:00Z\", 51746, 0.161667, 0],\n [\"2019-09-29T14:10:00Z\", 51742, 0.176667, 0],\n [\"2019-09-29T14:20:00Z\", 51740, 0.146666, 0],\n [\"2019-09-29T14:30:00Z\", 51736, 0.248333, 0],\n [\"2019-09-29T14:40:00Z\", 51735, 0.221667, 0],\n [\"2019-09-29T14:50:00Z\", 51721, 0.166667, 0],\n [\"2019-09-29T15:00:00Z\", 51717, 0.239995, 0],\n [\"2019-09-29T15:10:00Z\", 51714, 0.228338, 0],\n [\"2019-09-29T15:20:00Z\", 51709, 0.17, 0],\n [\"2019-09-29T15:30:00Z\", 51706, 0.123333, 0],\n [\"2019-09-29T15:40:00Z\", 51698, 0.143333, 0],\n [\"2019-09-29T15:50:00Z\", 51694, 0.165, 0],\n [\"2019-09-29T16:00:00Z\", 51689, 0.205, 0],\n [\"2019-09-29T16:10:00Z\", 51682, 0.203333, 0],\n [\"2019-09-29T16:20:00Z\", 51678, 0.358333, 0],\n [\"2019-09-29T16:30:00Z\", 51672, 0.243333, 0],\n [\"2019-09-29T16:40:00Z\", 51670, 0.135, 0],\n [\"2019-09-29T16:50:00Z\", 51669, 0.23, 0],\n [\"2019-09-29T17:00:00Z\", 51663, 0.22, 0],\n [\"2019-09-29T17:10:00Z\", 51662, 0.268333, 0],\n [\"2019-09-29T17:20:00Z\", 51657, 0.375, 0],\n [\"2019-09-29T17:30:00Z\", 51655, 0.36, 0],\n [\"2019-09-29T17:40:00Z\", 51648, 0.245, 0],\n [\"2019-09-29T17:50:00Z\", 51641, 0.173333, 0],\n [\"2019-09-29T18:00:00Z\", 51633, 0.166667, 0],\n [\"2019-09-29T18:10:00Z\", 51631, 0.213333, 0],\n [\"2019-09-29T18:20:00Z\", 51627, 0.351666, 0],\n [\"2019-09-29T18:30:00Z\", 51619, 0.278334, 0],\n [\"2019-09-29T18:40:00Z\", 51617, 0.188333, 0],\n [\"2019-09-29T18:50:00Z\", 51614, 0.17, 0],\n [\"2019-09-29T19:00:00Z\", 51613, 0.445, 0],\n [\"2019-09-29T19:10:00Z\", 51606, 0.181667, 0],\n [\"2019-09-29T19:20:00Z\", 51603, 0.296666, 0],\n [\"2019-09-29T19:30:00Z\", 51600, 0.18, 0],\n [\"2019-09-29T19:40:00Z\", 51598, 0.298333, 0],\n [\"2019-09-29T19:50:00Z\", 51560, 0.22, 0],\n [\"2019-09-29T20:00:00Z\", 51558, 0.288333, 0],\n [\"2019-09-29T20:10:00Z\", 51557, 0.658333, 0],\n [\"2019-09-29T20:20:00Z\", 51557, 0.633333, 0],\n [\"2019-09-29T20:30:00Z\", 51553, 0.161667, 0],\n [\"2019-09-29T20:40:00Z\", 51553, 0.201666, 0],\n [\"2019-09-29T20:50:00Z\", 51550, 0.29, 0],\n [\"2019-09-29T21:00:00Z\", 51547, 0.156667, 0],\n [\"2019-09-29T21:10:00Z\", 51542, 0.206667, 0],\n [\"2019-09-29T21:20:00Z\", 51535, 0.178333, 0],\n [\"2019-09-29T21:30:00Z\", 51534, 0.42, 0],\n [\"2019-09-29T21:40:00Z\", 51524, 0.251666, 0],\n [\"2019-09-29T21:50:00Z\", 51521, 0.24, 0],\n [\"2019-09-29T22:00:00Z\", 51518, 0.433333, 0],\n [\"2019-09-29T22:10:00Z\", 51511, 0.460001, 0],\n [\"2019-09-29T22:20:00Z\", 51510, 0.776667, 0],\n [\"2019-09-29T22:30:00Z\", 51508, 0.543333, 0],\n [\"2019-09-29T22:40:00Z\", 51504, 0.233334, 0],\n [\"2019-09-29T22:50:00Z\", 51503, 0.246667, 0],\n [\"2019-09-29T23:00:00Z\", 51502, 0.225, 0],\n [\"2019-09-29T23:10:00Z\", 51501, 0.121667, 0],\n [\"2019-09-29T23:20:00Z\", 51497, 0.158333, 0],\n [\"2019-09-29T23:30:00Z\", 51473, 0.216667, 0],\n [\"2019-09-29T23:40:00Z\", 51471, 0.34, 0],\n [\"2019-09-29T23:50:00Z\", 51468, 0.208334, 0],\n [\"2019-09-30T00:00:00Z\", 51465, 0.146667, 0],\n [\"2019-09-30T00:10:00Z\", 51462, 0.126667, 0],\n [\"2019-09-30T00:20:00Z\", 51456, 0.271666, 0],\n [\"2019-09-30T00:30:00Z\", 51445, 0.468333, 0],\n [\"2019-09-30T00:40:00Z\", 51443, 0.265, 0],\n [\"2019-09-30T00:50:00Z\", 51441, 0.141667, 0],\n [\"2019-09-30T01:00:00Z\", 51438, 0.161667, 0],\n [\"2019-09-30T01:10:00Z\", 51437, 0.295, 0],\n [\"2019-09-30T01:20:00Z\", 51428, 0.145, 0],\n [\"2019-09-30T01:30:00Z\", 51425, 0.196667, 0],\n [\"2019-09-30T01:40:00Z\", 51393, 0.256667, 0],\n [\"2019-09-30T01:50:00Z\", 51379, 0.349999, 0],\n [\"2019-09-30T02:00:00Z\", 51376, 0.238334, 0],\n [\"2019-09-30T02:10:00Z\", 51374, 0.226667, 0],\n [\"2019-09-30T02:20:00Z\", 51372, 0.138333, 0],\n [\"2019-09-30T02:30:00Z\", 51372, 0.138333, 0],\n [\"2019-09-30T02:40:00Z\", 51366, 0.155, 0],\n [\"2019-09-30T02:50:00Z\", 51362, 0.221666, 0],\n [\"2019-09-30T03:00:00Z\", 51362, 0.335002, 0],\n [\"2019-09-30T03:10:00Z\", 51359, 0.251666, 0],\n [\"2019-09-30T03:20:00Z\", 51352, 0.243334, 0],\n [\"2019-09-30T03:30:00Z\", 51351, 0.215, 0],\n [\"2019-09-30T03:40:00Z\", 51351, 0.088333, 0],\n [\"2019-09-30T03:50:00Z\", 51346, 0.115, 0],\n [\"2019-09-30T04:00:00Z\", 51334, 0.141667, 0],\n [\"2019-09-30T04:10:00Z\", 51330, 0.301667, 0],\n [\"2019-09-30T04:20:00Z\", 51328, 0.191667, 0],\n [\"2019-09-30T04:30:00Z\", 51323, 0.216667, 0],\n [\"2019-09-30T04:40:00Z\", 51318, 0.305, 0],\n [\"2019-09-30T04:50:00Z\", 51312, 0.168333, 0],\n [\"2019-09-30T05:00:00Z\", 51302, 0.116666, 0],\n [\"2019-09-30T05:10:00Z\", 51293, 0.173333, 0],\n [\"2019-09-30T05:20:00Z\", 51285, 0.208333, 0],\n [\"2019-09-30T05:30:00Z\", 51280, 0.296667, 0],\n [\"2019-09-30T05:40:00Z\", 51270, 0.221667, 0],\n [\"2019-09-30T05:50:00Z\", 51267, 0.498333, 0],\n [\"2019-09-30T06:00:00Z\", 51260, 0.493333, 0],\n [\"2019-09-30T06:10:00Z\", 51249, 0.33, 0],\n [\"2019-09-30T06:20:00Z\", 51245, 0.251667, 0],\n [\"2019-09-30T06:30:00Z\", 51242, 0.215, 0],\n [\"2019-09-30T06:40:00Z\", 51237, 0.211667, 0],\n [\"2019-09-30T06:50:00Z\", 51233, 0.215, 0],\n [\"2019-09-30T07:00:00Z\", 51229, 0.395, 0],\n [\"2019-09-30T07:10:00Z\", 51228, 0.395, 0],\n [\"2019-09-30T07:20:00Z\", 51227, 0.168333, 0],\n [\"2019-09-30T07:30:00Z\", 51224, 0.238334, 0],\n [\"2019-09-30T07:40:00Z\", 51223, 0.323333, 0],\n [\"2019-09-30T07:50:00Z\", 51218, 0.608334, 0],\n [\"2019-09-30T08:00:00Z\", 51218, 0.498334, 0],\n [\"2019-09-30T08:10:00Z\", 51217, 0.496666, 0],\n ],\n },\n ],\n dataTraffic: [\n {\n name: \"processed_stats\",\n tags: { server: this.sampleServerName },\n columns: [\"time\", \"bytes_read_rate\", \"bytes_write_rate\"],\n values: [\n [\"2019-09-29T08:10:00Z\", 293.646615, 2158.811287],\n [\"2019-09-29T08:20:00Z\", 312.003387, 1277.020218],\n [\"2019-09-29T08:30:00Z\", 359.19347, 1854.209039],\n [\"2019-09-29T08:40:00Z\", 271.361668, 1786.355011],\n [\"2019-09-29T08:50:00Z\", 293.646615, 2158.811287],\n [\"2019-09-29T09:00:00Z\", 263.256776, 1870.215776],\n [\"2019-09-29T09:10:00Z\", 298.550042, 627.631755],\n [\"2019-09-29T09:20:00Z\", 307.919821, 2045.770479],\n [\"2019-09-29T09:30:00Z\", 591.669976, 1401.93161],\n [\"2019-09-29T09:40:00Z\", 265.156648, 1336.354905],\n [\"2019-09-29T09:50:00Z\", 276.991804, 1839.542579],\n [\"2019-09-29T10:00:00Z\", 270.281887, 2259.538506],\n [\"2019-09-29T10:10:00Z\", 267.93451, 1758.103452],\n [\"2019-09-29T10:20:00Z\", 264.938242, 1109.054308],\n [\"2019-09-29T10:30:00Z\", 298.452017, 1035.143663],\n [\"2019-09-29T10:40:00Z\", 333.26685, 862.87214],\n [\"2019-09-29T10:50:00Z\", 397.453088, 592.377967],\n [\"2019-09-29T11:00:00Z\", 263.703299, 1517.219801],\n [\"2019-09-29T11:10:00Z\", 272.968742, 1033.893213],\n [\"2019-09-29T11:20:00Z\", 260.6931, 1098.939016],\n [\"2019-09-29T11:30:00Z\", 264.660026, 1736.631835],\n [\"2019-09-29T11:40:00Z\", 460.668342, 1138.591689],\n [\"2019-09-29T11:50:00Z\", 545.543295, 555.684961],\n [\"2019-09-29T12:00:00Z\", 647.993043, 867.690148],\n [\"2019-09-29T12:10:00Z\", 327.447286, 1499.893805],\n [\"2019-09-29T12:20:00Z\", 391.197664, 828.551916],\n [\"2019-09-29T12:30:00Z\", 364.161661, 1520.461641],\n [\"2019-09-29T12:40:00Z\", 282.271842, 1914.486187],\n [\"2019-09-29T12:50:00Z\", 313.033462, 1194.813825],\n [\"2019-09-29T13:00:00Z\", 293.60474, 1510.843663],\n [\"2019-09-29T13:10:00Z\", 293.352664, 1378.236857],\n [\"2019-09-29T13:20:00Z\", 269.449072, 1161.838187],\n [\"2019-09-29T13:30:00Z\", 288.226804, 1000.538812],\n [\"2019-09-29T13:40:00Z\", 372.376289, 717.764272],\n [\"2019-09-29T13:50:00Z\", 300.538528, 1417.50925],\n [\"2019-09-29T14:00:00Z\", 234.099819, 1217.547392],\n [\"2019-09-29T14:10:00Z\", 260.923857, 1676.065029],\n [\"2019-09-29T14:20:00Z\", 234.938023, 1471.309721],\n [\"2019-09-29T14:30:00Z\", 275.604995, 959.164984],\n [\"2019-09-29T14:40:00Z\", 357.18188, 1226.874066],\n [\"2019-09-29T14:50:00Z\", 309.619696, 1605.205091],\n [\"2019-09-29T15:00:00Z\", 271.892441, 1544.823186],\n [\"2019-09-29T15:10:00Z\", 254.472386, 876.496368],\n [\"2019-09-29T15:20:00Z\", 251.89956, 1117.424713],\n [\"2019-09-29T15:30:00Z\", 248.153669, 1320.160117],\n [\"2019-09-29T15:40:00Z\", 274.403179, 1052.616074],\n [\"2019-09-29T15:50:00Z\", 239.979988, 1203.179942],\n [\"2019-09-29T16:00:00Z\", 270.701914, 1194.737758],\n [\"2019-09-29T16:10:00Z\", 279.916593, 1404.409633],\n [\"2019-09-29T16:20:00Z\", 276.696567, 1289.766204],\n [\"2019-09-29T16:30:00Z\", 431.7717, 1357.533437],\n [\"2019-09-29T16:40:00Z\", 258.801753, 1175.133726],\n [\"2019-09-29T16:50:00Z\", 273.679946, 1848.381299],\n [\"2019-09-29T17:00:00Z\", 286.451716, 1188.811871],\n [\"2019-09-29T17:10:00Z\", 318.286357, 1309.500392],\n [\"2019-09-29T17:20:00Z\", 258.086789, 893.173758],\n [\"2019-09-29T17:30:00Z\", 260.10525, 1120.88441],\n [\"2019-09-29T17:40:00Z\", 280.548373, 1364.436859],\n [\"2019-09-29T17:50:00Z\", 311.103316, 1009.018278],\n [\"2019-09-29T18:00:00Z\", 251.290074, 1592.452137],\n [\"2019-09-29T18:10:00Z\", 323.476456, 1379.202435],\n [\"2019-09-29T18:20:00Z\", 248.46778, 1289.132128],\n [\"2019-09-29T18:30:00Z\", 1016.565954, 820.718783],\n [\"2019-09-29T18:40:00Z\", 251.766297, 1489.166147],\n [\"2019-09-29T18:50:00Z\", 299.665271, 1161.507719],\n [\"2019-09-29T19:00:00Z\", 397.938343, 857.240021],\n [\"2019-09-29T19:10:00Z\", 258.068299, 1363.59982],\n [\"2019-09-29T19:20:00Z\", 304.663036, 1262.783768],\n [\"2019-09-29T19:30:00Z\", 280.251969, 1523.02831],\n [\"2019-09-29T19:40:00Z\", 533.058886, 1749.064679],\n [\"2019-09-29T19:50:00Z\", 374.217309, 1339.862301],\n [\"2019-09-29T20:00:00Z\", 346.919904, 1011.616387],\n [\"2019-09-29T20:10:00Z\", 463.138362, 874.658388],\n [\"2019-09-29T20:20:00Z\", 362.373089, 724.342844],\n [\"2019-09-29T20:30:00Z\", 259.765616, 1062.179186],\n [\"2019-09-29T20:40:00Z\", 366.899504, 821.52889],\n [\"2019-09-29T20:50:00Z\", 315.26005, 1141.680181],\n [\"2019-09-29T21:00:00Z\", 475.511193, 663.454338],\n [\"2019-09-29T21:10:00Z\", 276.438555, 993.452464],\n [\"2019-09-29T21:20:00Z\", 291.436611, 1691.668012],\n [\"2019-09-29T21:30:00Z\", 246.005204, 847.675704],\n [\"2019-09-29T21:40:00Z\", 300.331371, 1050.213965],\n [\"2019-09-29T21:50:00Z\", 292.25175, 1177.562003],\n [\"2019-09-29T22:00:00Z\", 322.631486, 1069.177733],\n [\"2019-09-29T22:10:00Z\", 284.343718, 1450.785297],\n [\"2019-09-29T22:20:00Z\", 322.616622, 646.031577],\n [\"2019-09-29T22:30:00Z\", 299.576429, 1564.815426],\n [\"2019-09-29T22:40:00Z\", 296.455368, 1289.761599],\n [\"2019-09-29T22:50:00Z\", 294.711514, 1075.236111],\n [\"2019-09-29T23:00:00Z\", 308.906677, 1228.153374],\n [\"2019-09-29T23:10:00Z\", 261.533065, 1159.257142],\n [\"2019-09-29T23:20:00Z\", 279.000112, 1281.495513],\n [\"2019-09-29T23:30:00Z\", 280.525053, 1350.581921],\n [\"2019-09-29T23:40:00Z\", 283.699974, 624.791609],\n [\"2019-09-29T23:50:00Z\", 285.37026, 906.135825],\n [\"2019-09-30T00:00:00Z\", 263.864807, 873.871029],\n [\"2019-09-30T00:10:00Z\", 302.388407, 1284.468648],\n [\"2019-09-30T00:20:00Z\", 322.623107, 1207.445819],\n [\"2019-09-30T00:30:00Z\", 353.760107, 1096.16033],\n [\"2019-09-30T00:40:00Z\", 361.303606, 922.489029],\n [\"2019-09-30T00:50:00Z\", 390.259946, 1790.823087],\n [\"2019-09-30T01:00:00Z\", 261.859932, 1548.566264],\n [\"2019-09-30T01:10:00Z\", 309.553213, 1281.027835],\n [\"2019-09-30T01:20:00Z\", 309.068338, 1652.613357],\n [\"2019-09-30T01:30:00Z\", 330.061942, 1459.574551],\n [\"2019-09-30T01:40:00Z\", 313.889815, 1987.135497],\n [\"2019-09-30T01:50:00Z\", 426.852436, 834.513245],\n [\"2019-09-30T02:00:00Z\", 289.987139, 1621.495973],\n [\"2019-09-30T02:10:00Z\", 322.15344, 1210.128732],\n [\"2019-09-30T02:20:00Z\", 379.464935, 1290.948111],\n [\"2019-09-30T02:30:00Z\", 349.781519, 850.941309],\n [\"2019-09-30T02:40:00Z\", 262.135389, 1905.499494],\n [\"2019-09-30T02:50:00Z\", 278.570333, 1358.095166],\n [\"2019-09-30T03:00:00Z\", 263.709541, 747.608424],\n [\"2019-09-30T03:10:00Z\", 349.738388, 1233.534313],\n [\"2019-09-30T03:20:00Z\", 348.584666, 1528.107507],\n [\"2019-09-30T03:30:00Z\", 339.515395, 760.669218],\n [\"2019-09-30T03:40:00Z\", 469.28586, 364.71104],\n [\"2019-09-30T03:50:00Z\", 343.578617, 1307.039412],\n [\"2019-09-30T04:00:00Z\", 257.406488, 1515.322284],\n [\"2019-09-30T04:10:00Z\", 320.663234, 1277.897937],\n [\"2019-09-30T04:20:00Z\", 334.68028, 1429.402861],\n [\"2019-09-30T04:30:00Z\", 275.620148, 1542.942495],\n [\"2019-09-30T04:40:00Z\", 270.014802, 1397.23731],\n [\"2019-09-30T04:50:00Z\", 318.376956, 2394.110512],\n [\"2019-09-30T05:00:00Z\", 289.65281, 1795.436758],\n [\"2019-09-30T05:10:00Z\", 309.646935, 1848.929934],\n [\"2019-09-30T05:20:00Z\", 297.453285, 1466.309761],\n [\"2019-09-30T05:30:00Z\", 290.521843, 943.258905],\n [\"2019-09-30T05:40:00Z\", 342.263269, 1819.747989],\n [\"2019-09-30T05:50:00Z\", 401.965059, 1061.723489],\n [\"2019-09-30T06:00:00Z\", 307.263153, 1315.990895],\n [\"2019-09-30T06:10:00Z\", 359.238349, 1998.87509],\n [\"2019-09-30T06:20:00Z\", 354.797114, 1259.088254],\n [\"2019-09-30T06:30:00Z\", 307.511496, 1311.977603],\n [\"2019-09-30T06:40:00Z\", 294.333226, 2310.105827],\n [\"2019-09-30T06:50:00Z\", 317.68505, 1583.266917],\n [\"2019-09-30T07:00:00Z\", 307.468591, 1239.251037],\n [\"2019-09-30T07:10:00Z\", 390.156541, 1150.37463],\n [\"2019-09-30T07:20:00Z\", 279.551311, 1858.925968],\n [\"2019-09-30T07:30:00Z\", 304.817135, 1628.952504],\n [\"2019-09-30T07:40:00Z\", 375.939426, 1594.845899],\n [\"2019-09-30T07:50:00Z\", 356.220388, 237.700259],\n [\"2019-09-30T08:00:00Z\", 444.60029, 278.901849],\n [\"2019-09-30T08:10:00Z\", 731.584386, 358.849699],\n ],\n },\n ],\n connections: [\n {\n name: \"processed_stats\",\n tags: { server: this.sampleServerName },\n columns: [\"time\", \"connections\", \"connection_rate\"],\n values: [\n [\"2019-09-29T08:10:00Z\", 1, 0],\n [\"2019-09-29T08:20:00Z\", 1, 0],\n [\"2019-09-29T08:30:00Z\", 1, 0],\n [\"2019-09-29T08:40:00Z\", 1, 0],\n [\"2019-09-29T08:50:00Z\", 1, 0],\n [\"2019-09-29T09:00:00Z\", 1, 0],\n [\"2019-09-29T09:10:00Z\", 1, 0.001667],\n [\"2019-09-29T09:20:00Z\", 1, 0],\n [\"2019-09-29T09:30:00Z\", 1, 0],\n [\"2019-09-29T09:40:00Z\", 1, 0],\n [\"2019-09-29T09:50:00Z\", 1, 0],\n [\"2019-09-29T10:00:00Z\", 1, 0],\n [\"2019-09-29T10:10:00Z\", 1, 0.001667],\n [\"2019-09-29T10:20:00Z\", 1, 0],\n [\"2019-09-29T10:30:00Z\", 1, 0],\n [\"2019-09-29T10:40:00Z\", 1, 0],\n [\"2019-09-29T10:50:00Z\", 1, 0],\n [\"2019-09-29T11:00:00Z\", 1, 0],\n [\"2019-09-29T11:10:00Z\", 1, 0.001667],\n [\"2019-09-29T11:20:00Z\", 1, 0],\n [\"2019-09-29T11:30:00Z\", 1, 0],\n [\"2019-09-29T11:40:00Z\", 1, 0],\n [\"2019-09-29T11:50:00Z\", 1, 0],\n [\"2019-09-29T12:00:00Z\", 1, 0],\n [\"2019-09-29T12:10:00Z\", 1, 0.001667],\n [\"2019-09-29T12:20:00Z\", 1, 0],\n [\"2019-09-29T12:30:00Z\", 1, 0],\n [\"2019-09-29T12:40:00Z\", 1, 0],\n [\"2019-09-29T12:50:00Z\", 1, 0],\n [\"2019-09-29T13:00:00Z\", 1, 0],\n [\"2019-09-29T13:10:00Z\", 1, 0.001667],\n [\"2019-09-29T13:20:00Z\", 1, 0],\n [\"2019-09-29T13:30:00Z\", 1, 0],\n [\"2019-09-29T13:40:00Z\", 1, 0],\n [\"2019-09-29T13:50:00Z\", 1, 0],\n [\"2019-09-29T14:00:00Z\", 1, 0],\n [\"2019-09-29T14:10:00Z\", 1, 0.001667],\n [\"2019-09-29T14:20:00Z\", 1, 0],\n [\"2019-09-29T14:30:00Z\", 1, 0],\n [\"2019-09-29T14:40:00Z\", 1, 0],\n [\"2019-09-29T14:50:00Z\", 1, 0],\n [\"2019-09-29T15:00:00Z\", 1, 0],\n [\"2019-09-29T15:10:00Z\", 1, 0.001667],\n [\"2019-09-29T15:20:00Z\", 1, 0],\n [\"2019-09-29T15:30:00Z\", 1, 0],\n [\"2019-09-29T15:40:00Z\", 1, 0],\n [\"2019-09-29T15:50:00Z\", 1, 0],\n [\"2019-09-29T16:00:00Z\", 1, 0.001667],\n [\"2019-09-29T16:10:00Z\", 1, 0],\n [\"2019-09-29T16:20:00Z\", 1, 0],\n [\"2019-09-29T16:30:00Z\", 1, 0],\n [\"2019-09-29T16:40:00Z\", 1, 0],\n [\"2019-09-29T16:50:00Z\", 1, 0],\n [\"2019-09-29T17:00:00Z\", 1, 0],\n [\"2019-09-29T17:10:00Z\", 1, 0.001667],\n [\"2019-09-29T17:20:00Z\", 1, 0],\n [\"2019-09-29T17:30:00Z\", 1, 0],\n [\"2019-09-29T17:40:00Z\", 1, 0],\n [\"2019-09-29T17:50:00Z\", 1, 0],\n [\"2019-09-29T18:00:00Z\", 1, 0],\n [\"2019-09-29T18:10:00Z\", 1, 0.001667],\n [\"2019-09-29T18:20:00Z\", 1, 0],\n [\"2019-09-29T18:30:00Z\", 1, 0],\n [\"2019-09-29T18:40:00Z\", 1, 0],\n [\"2019-09-29T18:50:00Z\", 1, 0],\n [\"2019-09-29T19:00:00Z\", 1, 0],\n [\"2019-09-29T19:10:00Z\", 1, 0.001667],\n [\"2019-09-29T19:20:00Z\", 1, 0],\n [\"2019-09-29T19:30:00Z\", 1, 0],\n [\"2019-09-29T19:40:00Z\", 1, 0],\n [\"2019-09-29T19:50:00Z\", 1, 0],\n [\"2019-09-29T20:00:00Z\", 1, 0],\n [\"2019-09-29T20:10:00Z\", 1, 0.001667],\n [\"2019-09-29T20:20:00Z\", 1, 0],\n [\"2019-09-29T20:30:00Z\", 1, 0],\n [\"2019-09-29T20:40:00Z\", 1, 0],\n [\"2019-09-29T20:50:00Z\", 1, 0],\n [\"2019-09-29T21:00:00Z\", 1, 0],\n [\"2019-09-29T21:10:00Z\", 1, 0.001667],\n [\"2019-09-29T21:20:00Z\", 1, 0],\n [\"2019-09-29T21:30:00Z\", 1, 0],\n [\"2019-09-29T21:40:00Z\", 1, 0],\n [\"2019-09-29T21:50:00Z\", 1, 0],\n [\"2019-09-29T22:00:00Z\", 1, 0],\n [\"2019-09-29T22:10:00Z\", 1, 0.001667],\n [\"2019-09-29T22:20:00Z\", 1, 0],\n [\"2019-09-29T22:30:00Z\", 1, 0],\n [\"2019-09-29T22:40:00Z\", 1, 0],\n [\"2019-09-29T22:50:00Z\", 1, 0],\n [\"2019-09-29T23:00:00Z\", 1, 0],\n [\"2019-09-29T23:10:00Z\", 1, 0.001667],\n [\"2019-09-29T23:20:00Z\", 1, 0],\n [\"2019-09-29T23:30:00Z\", 1, 0],\n [\"2019-09-29T23:40:00Z\", 1, 0],\n [\"2019-09-29T23:50:00Z\", 1, 0],\n [\"2019-09-30T00:00:00Z\", 1, 0],\n [\"2019-09-30T00:10:00Z\", 1, 0.001667],\n [\"2019-09-30T00:20:00Z\", 1, 0],\n [\"2019-09-30T00:30:00Z\", 1, 0],\n [\"2019-09-30T00:40:00Z\", 1, 0],\n [\"2019-09-30T00:50:00Z\", 1, 0],\n [\"2019-09-30T01:00:00Z\", 1, 0],\n [\"2019-09-30T01:10:00Z\", 1, 0.001667],\n [\"2019-09-30T01:20:00Z\", 1, 0],\n [\"2019-09-30T01:30:00Z\", 1, 0],\n [\"2019-09-30T01:40:00Z\", 1, 0],\n [\"2019-09-30T01:50:00Z\", 1, 0],\n [\"2019-09-30T02:00:00Z\", 1, 0],\n [\"2019-09-30T02:10:00Z\", 1, 0.001667],\n [\"2019-09-30T02:20:00Z\", 1, 0],\n [\"2019-09-30T02:30:00Z\", 1, 0],\n [\"2019-09-30T02:40:00Z\", 1, 0],\n [\"2019-09-30T02:50:00Z\", 1, 0],\n [\"2019-09-30T03:00:00Z\", 1, 0],\n [\"2019-09-30T03:10:00Z\", 1, 0.001667],\n [\"2019-09-30T03:20:00Z\", 1, 0],\n [\"2019-09-30T03:30:00Z\", 1, 0],\n [\"2019-09-30T03:40:00Z\", 1, 0],\n [\"2019-09-30T03:50:00Z\", 1, 0],\n [\"2019-09-30T04:00:00Z\", 1, 0],\n [\"2019-09-30T04:10:00Z\", 1, 0.001667],\n [\"2019-09-30T04:20:00Z\", 1, 0],\n [\"2019-09-30T04:30:00Z\", 1, 0],\n [\"2019-09-30T04:40:00Z\", 1, 0],\n [\"2019-09-30T04:50:00Z\", 1, 0],\n [\"2019-09-30T05:00:00Z\", 1, 0],\n [\"2019-09-30T05:10:00Z\", 1, 0.001667],\n [\"2019-09-30T05:20:00Z\", 1, 0],\n [\"2019-09-30T05:30:00Z\", 1, 0],\n [\"2019-09-30T05:40:00Z\", 1, 0],\n [\"2019-09-30T05:50:00Z\", 1, 0],\n [\"2019-09-30T06:00:00Z\", 1, 0],\n [\"2019-09-30T06:10:00Z\", 1, 0.001667],\n [\"2019-09-30T06:20:00Z\", 1, 0],\n [\"2019-09-30T06:30:00Z\", 1, 0],\n [\"2019-09-30T06:40:00Z\", 1, 0],\n [\"2019-09-30T06:50:00Z\", 1, 0],\n [\"2019-09-30T07:00:00Z\", 1, 0],\n [\"2019-09-30T07:10:00Z\", 1, 0.001667],\n [\"2019-09-30T07:20:00Z\", 1, 0],\n [\"2019-09-30T07:30:00Z\", 1, 0],\n [\"2019-09-30T07:40:00Z\", 1, 0],\n [\"2019-09-30T07:50:00Z\", 1, 0],\n [\"2019-09-30T08:00:00Z\", 1, 0],\n [\"2019-09-30T08:10:00Z\", 1, 0.001667],\n ],\n },\n ],\n memory: [\n {\n name: \"processed_stats\",\n tags: { server: this.sampleServerName },\n columns: [\"time\", \"bytes\", \"max_bytes\"],\n values: [\n [\"2019-09-29T08:10:00Z\", 116611968, 115343360],\n [\"2019-09-29T08:20:00Z\", 116613248, 115343360],\n [\"2019-09-29T08:30:00Z\", 116611968, 115343360],\n [\"2019-09-29T08:40:00Z\", 116611072, 115343360],\n [\"2019-09-29T08:50:00Z\", 116607744, 115343360],\n [\"2019-09-29T09:00:00Z\", 116606720, 115343360],\n [\"2019-09-29T09:10:00Z\", 116606208, 115343360],\n [\"2019-09-29T09:20:00Z\", 116605312, 115343360],\n [\"2019-09-29T09:30:00Z\", 116603776, 115343360],\n [\"2019-09-29T09:40:00Z\", 116603008, 115343360],\n [\"2019-09-29T09:50:00Z\", 116601984, 115343360],\n [\"2019-09-29T10:00:00Z\", 116601344, 115343360],\n [\"2019-09-29T10:10:00Z\", 116600704, 115343360],\n [\"2019-09-29T10:20:00Z\", 116599936, 115343360],\n [\"2019-09-29T10:30:00Z\", 116599552, 115343360],\n [\"2019-09-29T10:40:00Z\", 116598528, 115343360],\n [\"2019-09-29T10:50:00Z\", 116598016, 115343360],\n [\"2019-09-29T11:00:00Z\", 116596992, 115343360],\n [\"2019-09-29T11:10:00Z\", 116594688, 115343360],\n [\"2019-09-29T11:20:00Z\", 116592000, 115343360],\n [\"2019-09-29T11:30:00Z\", 116588800, 115343360],\n [\"2019-09-29T11:40:00Z\", 116587008, 115343360],\n [\"2019-09-29T11:50:00Z\", 116583936, 115343360],\n [\"2019-09-29T12:00:00Z\", 116583680, 115343360],\n [\"2019-09-29T12:10:00Z\", 116581504, 115343360],\n [\"2019-09-29T12:20:00Z\", 116581504, 115343360],\n [\"2019-09-29T12:30:00Z\", 116576000, 115343360],\n [\"2019-09-29T12:40:00Z\", 116573568, 115343360],\n [\"2019-09-29T12:50:00Z\", 116573056, 115343360],\n [\"2019-09-29T13:00:00Z\", 116572416, 115343360],\n [\"2019-09-29T13:10:00Z\", 116568960, 115343360],\n [\"2019-09-29T13:20:00Z\", 116568320, 115343360],\n [\"2019-09-29T13:30:00Z\", 116565504, 115343360],\n [\"2019-09-29T13:40:00Z\", 116564736, 115343360],\n [\"2019-09-29T13:50:00Z\", 116564224, 115343360],\n [\"2019-09-29T14:00:00Z\", 116562816, 115343360],\n [\"2019-09-29T14:10:00Z\", 116561408, 115343360],\n [\"2019-09-29T14:20:00Z\", 116557056, 115343360],\n [\"2019-09-29T14:30:00Z\", 116555520, 115343360],\n [\"2019-09-29T14:40:00Z\", 116555392, 115343360],\n [\"2019-09-29T14:50:00Z\", 116544128, 115343360],\n [\"2019-09-29T15:00:00Z\", 116543104, 115343360],\n [\"2019-09-29T15:10:00Z\", 116542464, 115343360],\n [\"2019-09-29T15:20:00Z\", 116541184, 115343360],\n [\"2019-09-29T15:30:00Z\", 116539776, 115343360],\n [\"2019-09-29T15:40:00Z\", 116534784, 115343360],\n [\"2019-09-29T15:50:00Z\", 116533504, 115343360],\n [\"2019-09-29T16:00:00Z\", 116531968, 115343360],\n [\"2019-09-29T16:10:00Z\", 116529280, 115343360],\n [\"2019-09-29T16:20:00Z\", 116527488, 115343360],\n [\"2019-09-29T16:30:00Z\", 116526080, 115343360],\n [\"2019-09-29T16:40:00Z\", 116525440, 115343360],\n [\"2019-09-29T16:50:00Z\", 116524416, 115343360],\n [\"2019-09-29T17:00:00Z\", 116523136, 115343360],\n [\"2019-09-29T17:10:00Z\", 116523008, 115343360],\n [\"2019-09-29T17:20:00Z\", 116521088, 115343360],\n [\"2019-09-29T17:30:00Z\", 116520576, 115343360],\n [\"2019-09-29T17:40:00Z\", 116519040, 115343360],\n [\"2019-09-29T17:50:00Z\", 116516864, 115343360],\n [\"2019-09-29T18:00:00Z\", 116513152, 115343360],\n [\"2019-09-29T18:10:00Z\", 116512768, 115343360],\n [\"2019-09-29T18:20:00Z\", 116511104, 115343360],\n [\"2019-09-29T18:30:00Z\", 116507904, 115343360],\n [\"2019-09-29T18:40:00Z\", 116507392, 115343360],\n [\"2019-09-29T18:50:00Z\", 116506752, 115343360],\n [\"2019-09-29T19:00:00Z\", 116506496, 115343360],\n [\"2019-09-29T19:10:00Z\", 116504704, 115343360],\n [\"2019-09-29T19:20:00Z\", 116504064, 115343360],\n [\"2019-09-29T19:30:00Z\", 116503168, 115343360],\n [\"2019-09-29T19:40:00Z\", 116502656, 115343360],\n [\"2019-09-29T19:50:00Z\", 116493056, 115343360],\n [\"2019-09-29T20:00:00Z\", 116492672, 115343360],\n [\"2019-09-29T20:10:00Z\", 116492416, 115343360],\n [\"2019-09-29T20:20:00Z\", 116492416, 115343360],\n [\"2019-09-29T20:30:00Z\", 116491520, 115343360],\n [\"2019-09-29T20:40:00Z\", 116491520, 115343360],\n [\"2019-09-29T20:50:00Z\", 116490112, 115343360],\n [\"2019-09-29T21:00:00Z\", 116489472, 115343360],\n [\"2019-09-29T21:10:00Z\", 116487936, 115343360],\n [\"2019-09-29T21:20:00Z\", 116486400, 115343360],\n [\"2019-09-29T21:30:00Z\", 116486144, 115343360],\n [\"2019-09-29T21:40:00Z\", 116483712, 115343360],\n [\"2019-09-29T21:50:00Z\", 116483072, 115343360],\n [\"2019-09-29T22:00:00Z\", 116482432, 115343360],\n [\"2019-09-29T22:10:00Z\", 116471424, 115343360],\n [\"2019-09-29T22:20:00Z\", 116470400, 115343360],\n [\"2019-09-29T22:30:00Z\", 116469888, 115343360],\n [\"2019-09-29T22:40:00Z\", 116467840, 115343360],\n [\"2019-09-29T22:50:00Z\", 116467584, 115343360],\n [\"2019-09-29T23:00:00Z\", 116467072, 115343360],\n [\"2019-09-29T23:10:00Z\", 116466560, 115343360],\n [\"2019-09-29T23:20:00Z\", 116465536, 115343360],\n [\"2019-09-29T23:30:00Z\", 116459136, 115343360],\n [\"2019-09-29T23:40:00Z\", 116458624, 115343360],\n [\"2019-09-29T23:50:00Z\", 116457600, 115343360],\n [\"2019-09-30T00:00:00Z\", 116454784, 115343360],\n [\"2019-09-30T00:10:00Z\", 116454016, 115343360],\n [\"2019-09-30T00:20:00Z\", 116449664, 115343360],\n [\"2019-09-30T00:30:00Z\", 116446848, 115343360],\n [\"2019-09-30T00:40:00Z\", 116446336, 115343360],\n [\"2019-09-30T00:50:00Z\", 116445824, 115343360],\n [\"2019-09-30T01:00:00Z\", 116445184, 115343360],\n [\"2019-09-30T01:10:00Z\", 116444928, 115343360],\n [\"2019-09-30T01:20:00Z\", 116441856, 115343360],\n [\"2019-09-30T01:30:00Z\", 116441088, 115343360],\n [\"2019-09-30T01:40:00Z\", 116429184, 115343360],\n [\"2019-09-30T01:50:00Z\", 116424064, 115343360],\n [\"2019-09-30T02:00:00Z\", 116423168, 115343360],\n [\"2019-09-30T02:10:00Z\", 116422784, 115343360],\n [\"2019-09-30T02:20:00Z\", 116422272, 115343360],\n [\"2019-09-30T02:30:00Z\", 116418688, 115343360],\n [\"2019-09-30T02:40:00Z\", 116416896, 115343360],\n [\"2019-09-30T02:50:00Z\", 116415360, 115343360],\n [\"2019-09-30T03:00:00Z\", 116415360, 115343360],\n [\"2019-09-30T03:10:00Z\", 116405888, 115343360],\n [\"2019-09-30T03:20:00Z\", 116395008, 115343360],\n [\"2019-09-30T03:30:00Z\", 116394624, 115343360],\n [\"2019-09-30T03:40:00Z\", 116394624, 115343360],\n [\"2019-09-30T03:50:00Z\", 116390784, 115343360],\n [\"2019-09-30T04:00:00Z\", 116387712, 115343360],\n [\"2019-09-30T04:10:00Z\", 116386688, 115343360],\n [\"2019-09-30T04:20:00Z\", 116384384, 115343360],\n [\"2019-09-30T04:30:00Z\", 116382464, 115343360],\n [\"2019-09-30T04:40:00Z\", 116378624, 115343360],\n [\"2019-09-30T04:50:00Z\", 116375296, 115343360],\n [\"2019-09-30T05:00:00Z\", 116369664, 115343360],\n [\"2019-09-30T05:10:00Z\", 116366720, 115343360],\n [\"2019-09-30T05:20:00Z\", 116364800, 115343360],\n [\"2019-09-30T05:30:00Z\", 116363520, 115343360],\n [\"2019-09-30T05:40:00Z\", 116361216, 115343360],\n [\"2019-09-30T05:50:00Z\", 116360576, 115343360],\n [\"2019-09-30T06:00:00Z\", 116359040, 115343360],\n [\"2019-09-30T06:10:00Z\", 116354176, 115343360],\n [\"2019-09-30T06:20:00Z\", 116353152, 115343360],\n [\"2019-09-30T06:30:00Z\", 116352384, 115343360],\n [\"2019-09-30T06:40:00Z\", 116349056, 115343360],\n [\"2019-09-30T06:50:00Z\", 116346496, 115343360],\n [\"2019-09-30T07:00:00Z\", 116345472, 115343360],\n [\"2019-09-30T07:10:00Z\", 116345216, 115343360],\n [\"2019-09-30T07:20:00Z\", 116344960, 115343360],\n [\"2019-09-30T07:30:00Z\", 116344192, 115343360],\n [\"2019-09-30T07:40:00Z\", 116343936, 115343360],\n [\"2019-09-30T07:50:00Z\", 116342656, 115343360],\n [\"2019-09-30T08:00:00Z\", 116342656, 115343360],\n [\"2019-09-30T08:10:00Z\", 116342144, 115343360],\n ],\n },\n ],\n };\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProcessedStatsChartDisabled.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProcessedStatsChartDisabled.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProcessedStatsChartDisabled.vue?vue&type=template&id=1b3b62be&scoped=true&\"\nimport script from \"./ProcessedStatsChartDisabled.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProcessedStatsChartDisabled.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProcessedStatsChartDisabled.vue?vue&type=style&index=0&id=1b3b62be&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1b3b62be\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\nimport ProcessedStatsChartDisabled from \"@/components/ProcessedStatsChartDisabled.vue\";\nimport { Features } from \"@/types/settings\";\nimport { Series } from \"@/types/common\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component({ components: { ProcessedStatsChartDisabled } })\nexport default class ProcessedStatsChart extends Vue {\n @Getter(\"settings/activeCacheFeatures\") features!: Features;\n\n @Prop({ required: true })\n chartID!: string;\n\n @Prop({ required: false, default: 0 })\n chartIndex!: number;\n\n @Prop({ required: false, default: false })\n perServer!: boolean;\n\n @Getter(\"processedStats/aggregateSeries\") aggregateSeries!: (chartID: string, chartIndex: number) => Series;\n @Getter(\"processedStats/perServerSeries\") perServerSeries!: (chartID: string, chartIndex: number) => Series;\n\n get series() {\n if (this.perServer) {\n return this.perServerSeries(this.chartID, this.chartIndex);\n }\n return this.aggregateSeries(this.chartID, this.chartIndex);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProcessedStatsChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProcessedStatsChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProcessedStatsChart.vue?vue&type=template&id=8fec3bda&scoped=true&\"\nimport script from \"./ProcessedStatsChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProcessedStatsChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8fec3bda\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\nimport TimeRangeControls from \"@/components/TimeRangeControls.vue\";\nimport ProcessedStatsChart from \"@/components/ProcessedStatsChart.vue\";\nimport { getTitle } from \"@/utils/chart\";\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component({ components: { TimeRangeControls, ProcessedStatsChart } })\nexport default class OverviewChart extends Vue {\n chartTitle(chartID: string): string {\n return getTitle(chartID);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OverviewChart.vue?vue&type=template&id=2de205d8&scoped=true&\"\nimport script from \"./OverviewChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./OverviewChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2de205d8\",\n null\n \n)\n\nexport default component.exports","import { Features } from \"@/types/settings\";\nimport { DataStatus } from \"@/types/common\";\nimport { PROCESSED_STATS_LIFETIME } from \"@/config/series\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component\nexport default class GetProcessedStats extends Vue {\n @Getter(\"settings/activeCacheFeatures\") features!: Features;\n @Getter(\"settings/activeCacheFeaturesStatus\") featuresStatus!: DataStatus;\n\n intervalID = 0;\n\n // Use in created()\n getProcessedStats() {\n // Depends on features being fetched before being called, because `collect-granularity` defaults to 0,\n // meaning processed stats could not be fetched if fetching is attempted before features are fetched.\n // Features are first fetched in `views/cache/index.vue` before loading child views.\n if (this.features[\"collect-granularity\"] === 0) {\n return;\n }\n\n this.$store.dispatch(\"processedStats/fetchPlotsByTimeRange\");\n\n // Refetch data periodically\n this.intervalID = setInterval(() => {\n this.$store.dispatch(\"processedStats/fetchPlotsByTimeRange\");\n }, PROCESSED_STATS_LIFETIME);\n }\n\n // Use in beforeDestroy()\n cleanUpProcessedStats() {\n if (this.features[\"collect-granularity\"] === 0) {\n return;\n }\n\n clearInterval(this.intervalID);\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport OverviewStorage from \"@/components/OverviewStorage.vue\";\nimport HitRate from \"@/components/HitRate.vue\";\nimport OverviewIssues from \"@/components/OverviewIssues.vue\";\nimport OverviewStats from \"@/components/OverviewStats.vue\";\nimport OverviewConnections from \"@/components/OverviewConnections.vue\";\nimport OverviewChart from \"@/components/OverviewChart.vue\";\nimport { Settings } from \"@/types/settings\";\nimport { STATS_LIFETIME } from \"@/config/series\";\nimport GetProcessedStats from \"@/mixins/get-processed-stats\";\nimport { Component, Mixins } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component({\n components: {\n OverviewStorage,\n OverviewConnections,\n HitRate,\n OverviewIssues,\n OverviewChart,\n OverviewStats,\n },\n})\nexport default class OverviewView extends Mixins(GetProcessedStats) {\n created() {\n this.getProcessedStats();\n\n if (this.settings.enabled) {\n this.$store.dispatch(\"stats/fetch\");\n\n // Refetch data periodically\n this.intervalID = setInterval(() => {\n this.$store.dispatch(\"stats/fetch\");\n }, STATS_LIFETIME);\n }\n }\n\n beforeDestroy() {\n // Refetch data clean up\n this.cleanUpProcessedStats();\n\n clearInterval(this.intervalID);\n }\n\n @Getter(\"settings/activeCacheSettings\") settings!: Settings;\n\n intervalID = 0;\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OverviewView.vue?vue&type=template&id=7300a5a5&scoped=true&\"\nimport script from \"./OverviewView.vue?vue&type=script&lang=ts&\"\nexport * from \"./OverviewView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./OverviewView.vue?vue&type=style&index=0&id=7300a5a5&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7300a5a5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"title-horz-buttons\"},[_c('h1',[_vm._v(\"Metrics\")]),_c('TimeRangeControls')],1),_c('h2',[_vm._v(\" \"+_vm._s(_vm.chartTitle(_vm.featuredChartID))+\" \")]),_c('ProcessedStatsChart',{attrs:{\"chartID\":_vm.featuredChartID}}),_c('div',{staticClass:\"grid-half-charts\"},_vm._l((_vm.chartIDs),function(chartID,index){return _c('div',{key:index},[_c('h2',[_vm._v(\" \"+_vm._s(_vm.chartTitle(chartID))+\" \")]),_c('ProcessedStatsChart',{attrs:{\"chartID\":chartID}})],1)}),0)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport TimeRangeControls from \"@/components/TimeRangeControls.vue\";\nimport ProcessedStatsChart from \"@/components/ProcessedStatsChart.vue\";\nimport GetProcessedStats from \"@/mixins/get-processed-stats\";\nimport { getTitle } from \"@/utils/chart\";\nimport { Component, Mixins } from \"vue-property-decorator\";\n\n@Component({ components: { TimeRangeControls, ProcessedStatsChart } })\nexport default class MetricsView extends Mixins(GetProcessedStats) {\n created() {\n this.getProcessedStats();\n }\n\n beforeDestroy() {\n this.cleanUpProcessedStats();\n }\n\n chartIDs = [\"memory\", \"items\", \"requestRate\", \"requestDistribution\", \"connections\", \"dataTraffic\"];\n\n featuredChartID = \"hitRate\";\n\n chartTitle(chartID: string): string {\n return getTitle(chartID);\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MetricsView.vue?vue&type=template&id=89bd85a8&scoped=true&\"\nimport script from \"./MetricsView.vue?vue&type=script&lang=ts&\"\nexport * from \"./MetricsView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"89bd85a8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"title-horz-buttons\"},[_c('h1',[_vm._v(_vm._s(_vm.chartTitle))]),_c('TimeRangeControls')],1),_c('div',[_c('div',[_c('h2',[_vm._v(\"Aggregate\")]),_c('ProcessedStatsChart',{attrs:{\"chartID\":_vm.chartID}})],1),(_vm.perServerSeriesStatus === 'fetched')?[_c('h2',[_vm._v(\"Per Server Breakdown\")]),_vm._l((_vm.settings.servers),function(server,chartIndex){return _c('div',{key:chartIndex},[_c('h3',[_vm._v(_vm._s(_vm.perServerSeriesName(_vm.chartID, chartIndex)))]),_c('ProcessedStatsChart',{attrs:{\"chartID\":_vm.chartID,\"chartIndex\":chartIndex,\"perServer\":true}})],1)})]:(_vm.perServerSeriesStatus === 'failed')?_c('BaseNoDataDefault',{attrs:{\"message\":\"Per server series unavailable\"}}):_c('BaseLoading',{attrs:{\"spacing\":\"top\"}})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Features } from \"@/types/settings\";\nimport { DataStatus } from \"@/types/common\";\nimport { PROCESSED_STATS_LIFETIME } from \"@/config/series\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component\nexport default class GetPerServerProcessedStats extends Vue {\n @Getter(\"settings/activeCacheFeatures\") features!: Features;\n @Getter(\"settings/activeCacheFeaturesStatus\") featuresStatus!: DataStatus;\n\n intervalID = 0;\n\n // Use in created()\n getPerServerProcessedStats() {\n // Depends on features being fetched before being called, because `collect-granularity` defaults to 0,\n // meaning processed stats could not be fetched if fetching is attempted before features are fetched.\n // Features are first fetched in `views/cache/index.vue` before loading child views.\n if (this.features[\"collect-granularity\"] === 0) {\n return;\n }\n\n this.$store.dispatch(\"processedStats/fetchPerServerPlotsByTimeRange\");\n\n // Refetch data periodically\n this.intervalID = setInterval(() => {\n this.$store.dispatch(\"processedStats/fetchPerServerPlotsByTimeRange\");\n }, PROCESSED_STATS_LIFETIME);\n }\n\n // Use in beforeDestroy()\n cleanUpPerServerProcessedStats() {\n if (this.features[\"collect-granularity\"] === 0) {\n return;\n }\n\n clearInterval(this.intervalID);\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport TimeRangeControls from \"@/components/TimeRangeControls.vue\";\nimport ProcessedStatsChart from \"@/components/ProcessedStatsChart.vue\";\nimport { DataStatus } from \"@/types/common\";\nimport { Settings } from \"@/types/settings\";\nimport GetProcessedStats from \"@/mixins/get-processed-stats\";\nimport GetPerServerProcessedStats from \"@/mixins/get-per-server-processed-stats\";\nimport { getTitle } from \"@/utils/chart\";\nimport { Component, Mixins, Watch } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\nimport { Route } from \"vue-router\";\n\n@Component({\n components: { TimeRangeControls, ProcessedStatsChart },\n})\nexport default class MetricView extends Mixins(GetProcessedStats, GetPerServerProcessedStats) {\n created() {\n this.getProcessedStats();\n this.getPerServerProcessedStats();\n this.chartID = this.$route.params.metricId;\n }\n\n beforeDestroy() {\n this.cleanUpProcessedStats();\n this.cleanUpPerServerProcessedStats();\n }\n\n // route param changes are not reactive, so watch for updates\n @Watch(\"$route\")\n onRouteUpdate(to: Route, from: Route) {\n if (to.params.metricId !== from.params.metricId) {\n this.chartID = to.params.metricId;\n }\n }\n\n @Getter(\"processedStats/perServerSeriesName\") perServerSeriesName!: (chartID: string, chartIndex: number) => string;\n @Getter(\"processedStats/perServerSeriesStatus\") perServerSeriesStatus!: DataStatus;\n @Getter(\"settings/activeCacheSettings\") settings!: Settings;\n\n chartID = \"\";\n\n get chartTitle(): string {\n return getTitle(this.chartID);\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MetricView.vue?vue&type=template&id=0fe6a422&scoped=true&\"\nimport script from \"./MetricView.vue?vue&type=script&lang=ts&\"\nexport * from \"./MetricView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0fe6a422\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('div',{staticClass:\"grid-half\"},[_c('div',[_c('HeadingButtons',{scopedSlots:_vm._u([{key:\"heading\",fn:function(){return [_c('HeadingInline',{scopedSlots:_vm._u([{key:\"heading\",fn:function(){return [_c('h1',[_vm._v(\"Alerts\")])]},proxy:true},{key:\"items\",fn:function(){return [(_vm.alertLimit !== -1)?[_c('div',{attrs:{\"data-testid\":\"alert-usage\"}},[_vm._v(_vm._s(_vm.alertUsage))]),(_vm.alertLimit === 0 || _vm.alertLimitReached)?_c('div',{staticClass:\"notice notice-compact info\"},[(_vm.alertLimit === 0)?_c('span',{attrs:{\"data-testid\":\"alert-upgrade-notice-a\"}},[_vm._v(\"Upgrade your plan to create alerts\")]):(_vm.alertLimitReached && _vm.alertLimit < _vm.features['alert-max'])?_c('span',{attrs:{\"data-testid\":\"alert-upgrade-notice-b\"}},[_vm._v(\" Upgrade your plan to create more alerts \")]):(_vm.alertLimitReached)?_c('span',{attrs:{\"data-testid\":\"alert-upgrade-notice-c\"}},[_vm._v(\" Need more alerts? Please contact \"),_c('a',{attrs:{\"href\":\"mailto:support@memcachier.com\"}},[_vm._v(\"support@memcachier.com\")])]):_vm._e()]):_vm._e()]:_vm._e()]},proxy:true}])})]},proxy:true},{key:\"buttons\",fn:function(){return [(_vm.deliveryConfigs && _vm.hasAlerts)?_c('BaseButton',{staticClass:\"button-round\",attrs:{\"buttonClass\":\"button-primary\",\"disabled\":_vm.alertLimitReached},on:{\"click\":_vm.toggleAddAlert}},[_c('BaseIcon',{attrs:{\"icon\":\"plus\"}}),_vm._v(\" Add Alert \")],1):_vm._e()]},proxy:true}])}),(_vm.showAddAlert)?_c('AlertsAdd',{on:{\"cancelAddAlert\":_vm.toggleAddAlert}}):_vm._e(),(_vm.showFirstDeliveryConfigCard)?[_c('BaseCard',{staticClass:\"first-delivery-config\"},[_c('p',[_vm._v(\" To start adding alerts first create a delivery destination. A delivery destination is a place alerts can be sent to, like an email address, or Slack channel. \")]),_c('BaseButton',{attrs:{\"buttonClass\":\"button-primary\"},on:{\"click\":_vm.toggleAddDeliveryConfig}},[_c('BaseIcon',{attrs:{\"icon\":\"plus\"}}),_vm._v(\" Add Delivery Destination \")],1)],1)]:_vm._e(),(_vm.showFirstAlertCard)?[_c('BaseCard',{staticClass:\"first-alert\"},[_c('h2',[_vm._v(\"Add your first alert\")]),_c('BaseButton',{attrs:{\"buttonClass\":\"button-primary\"},on:{\"click\":_vm.toggleAddAlert}},[_c('BaseIcon',{attrs:{\"icon\":\"plus\"}}),_vm._v(\" Add Alert \")],1)],1)]:_vm._e(),(_vm.alerts && _vm.deliveryConfigs)?[(_vm.hasAlerts)?_vm._l((_vm.alerts),function(alert){return _c('AlertItem',{key:alert.id,attrs:{\"alert\":alert}})}):_vm._l((_vm.previewAlerts),function(previewAlert){return _c('AlertItem',{key:previewAlert.id,attrs:{\"alert\":previewAlert,\"isDisabled\":true}})})]:_c('BaseCard',[_c('BaseLoading')],1)],2),_c('div',[_c('AlertsDeliveryConfig'),_c('h2',[_vm._v(\"What other alert types would you like?\")]),_c('BaseCard',[_c('p',[_vm._v(\" Let us know what other alert triggers (e.g. hit rate, active connections) and delivery types (e.g. PagerDuty, Telegram) would be useful for your business. \")]),_c('a',{staticClass:\"button\",attrs:{\"href\":_vm.url.feedback}},[_c('BaseIcon',{attrs:{\"icon\":\"comments\"}}),_vm._v(\" Send Feedback \")],1)])],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseCard',{staticClass:\"alert\",attrs:{\"isDisabled\":_vm.isDisabled}},[_c('div',{staticClass:\"alert-info\"},[_c('AlertInfo',{attrs:{\"alert\":_vm.alert}}),(_vm.showEditAlert)?_c('AlertForm',{attrs:{\"alert\":_vm.alert,\"action\":\"update\"},on:{\"closeAfterSave\":_vm.toggleEditAlert}}):_vm._e()],1),_c('BaseActions',[(!_vm.showEditAlert)?_c('AlertEnableToggle',{attrs:{\"alert\":_vm.alert,\"isDisabled\":_vm.isDisabled}}):_vm._e(),_c('BaseButton',{staticClass:\"button-round\",attrs:{\"disabled\":_vm.isDisabled},on:{\"click\":_vm.toggleEditAlert}},[(_vm.showEditAlert)?[_vm._v(\" Cancel \")]:_c('BaseIcon',{attrs:{\"icon\":\"pencil\",\"screenReaderLabel\":\"Edit alert\"}})],2),(!_vm.showEditAlert)?_c('AlertRemove',{staticClass:\"button-delete\",attrs:{\"alert\":_vm.alert,\"isDisabled\":_vm.isDisabled}}):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseButton',{staticClass:\"button-round\",attrs:{\"buttonClass\":_vm.buttonClass,\"title\":\"Toggle the status of this alert\",\"disabled\":_vm.isDisabled},on:{\"click\":_vm.toggleEnabled}},[(_vm.isSaving)?_c('BaseIcon',{attrs:{\"icon\":\"spinner\",\"spin\":\"true\"}}):[_vm._v(_vm._s(_vm.title))]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Alert } from \"@/types/alert\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class AlertEnableToggle extends Vue {\n @Prop({ required: true })\n alert!: Alert;\n\n @Prop({ required: false, default: false })\n isDisabled!: boolean;\n\n isSaving = false;\n\n get buttonClass() {\n return this.alert.enabled ? \"button-primary\" : \"\";\n }\n\n get title() {\n return this.alert.enabled ? \"Enabled\" : \"Disabled\";\n }\n\n toggleEnabled() {\n this.alert.enabled = !this.alert.enabled;\n this.$ga.button(`Alert ${this.title}`);\n\n this.isSaving = true;\n\n this.$store.dispatch(\"alerts/update\", this.alert).then(() => {\n this.isSaving = false;\n });\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertEnableToggle.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertEnableToggle.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertEnableToggle.vue?vue&type=template&id=10b98ad5&scoped=true&\"\nimport script from \"./AlertEnableToggle.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertEnableToggle.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"10b98ad5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseButton',{staticClass:\"button-round\",attrs:{\"disabled\":_vm.isDisabled},on:{\"click\":function($event){return _vm.removeAlert()}}},[_c('BaseIcon',{attrs:{\"icon\":\"trash\",\"screenReaderLabel\":_vm.title}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { Alert } from \"@/types/alert\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class AlertRemove extends Vue {\n @Prop({ required: true })\n alert!: Alert;\n\n @Prop({ required: false, default: false })\n isDisabled!: boolean;\n\n title = \"Remove alert\";\n\n removeAlert() {\n if (window.confirm(\"Clicking OK will remove this alert from your cache. Are you sure you want to do this?\")) {\n this.$ga.button(this.title);\n this.$store.dispatch(\"alerts/remove\", this.alert);\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertRemove.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertRemove.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertRemove.vue?vue&type=template&id=0659f5ce&scoped=true&\"\nimport script from \"./AlertRemove.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertRemove.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0659f5ce\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{staticClass:\"alert-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.saveAlert($event)}}},[_c('FormInputError',{attrs:{\"message\":_vm.triggerTypeError}}),_c('FormSelect',{staticClass:\"inline\",attrs:{\"label\":\"Trigger Type\",\"name\":\"trigger-type\",\"defaultOption\":\"Select trigger type\",\"screenReaderLabel\":false,\"options\":_vm.triggerTypeOpts,\"required\":\"\"},model:{value:(_vm.alert.trigger_type),callback:function ($$v) {_vm.$set(_vm.alert, \"trigger_type\", $$v)},expression:\"alert.trigger_type\"}}),_c('FormInputError',{attrs:{\"message\":_vm.thresholdError}}),_c('FormInput',{staticClass:\"inline\",attrs:{\"label\":\"Trigger Threshold (%)\",\"screenReaderLabel\":false,\"placeholder\":\"e.g. 80\",\"type\":\"number\",\"min\":\"1\",\"max\":\"100\",\"required\":\"\"},model:{value:(_vm.alert.trigger_threshold),callback:function ($$v) {_vm.$set(_vm.alert, \"trigger_threshold\", _vm._n($$v))},expression:\"alert.trigger_threshold\"}}),_c('FormInputError',{attrs:{\"message\":_vm.deliveryConfigError}}),_c('FormSelect',{staticClass:\"inline\",attrs:{\"label\":\"Delivery Destination\",\"name\":\"delivery-config\",\"defaultOption\":\"Select delivery destination\",\"screenReaderLabel\":false,\"options\":_vm.deliveryConfigOpts,\"required\":\"\"},model:{value:(_vm.alert.delivery_config_id),callback:function ($$v) {_vm.$set(_vm.alert, \"delivery_config_id\", _vm._n($$v))},expression:\"alert.delivery_config_id\"}}),_c('FormInput',{staticClass:\"inline\",attrs:{\"label\":\"Description\",\"screenReaderLabel\":false,\"placeholder\":\"e.g. app name\",\"type\":\"text\"},model:{value:(_vm.alert.description),callback:function ($$v) {_vm.$set(_vm.alert, \"description\", $$v)},expression:\"alert.description\"}}),_c('BaseButton',{attrs:{\"buttonClass\":\"button-primary\",\"disabled\":_vm.isSaving,\"type\":\"submit\"}},[_vm._v(\" \"+_vm._s(_vm.title)+\" \"),(_vm.isSaving)?_c('BaseIcon',{attrs:{\"icon\":\"spinner\",\"spin\":\"true\"}}):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"select\"},[(_vm.label)?_c('label',{class:_vm.screenReaderLabelClass},[_vm._v(\" \"+_vm._s(_vm.label)+\" \")]):_vm._e(),_c('select',_vm._b({class:_vm.inputClass,on:{\"input\":_vm.updateValue}},'select',_vm.$attrs,false),[(_vm.defaultOption)?_c('option',{attrs:{\"disabled\":\"\",\"value\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.defaultOption)+\" \")]):_vm._e(),_vm._l((_vm.options),function(option,name,index){return _c('option',{key:index,domProps:{\"value\":name}},[_vm._v(_vm._s(option))])})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component({ inheritAttrs: false })\nexport default class FormSelect extends Vue {\n @Prop({ required: false, default: \"\" })\n label!: string;\n\n @Prop({ required: false, default: true })\n screenReaderLabel!: boolean;\n\n @Prop({ required: false, default: \"\" })\n inputClass!: string;\n\n @Prop({ required: true })\n options!: { [valueName: string]: string }; // e.g. { memory_usage: 'Memory usage' }\n\n // Default recommended for iOS\n // https://vuejs.org/v2/guide/forms.html#Select\n @Prop({ required: false, default: \"\" })\n defaultOption!: string; // e.g. \"Select server\"\n\n get screenReaderLabelClass() {\n return this.screenReaderLabel ? \"screen-reader-text\" : \"\";\n }\n\n updateValue(event: any) {\n this.$emit(\"input\", event.target.value);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FormSelect.vue?vue&type=template&id=287c62ba&scoped=true&\"\nimport script from \"./FormSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./FormSelect.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FormSelect.vue?vue&type=style&index=0&id=287c62ba&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"287c62ba\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport FormInput from \"@/components/FormInput.vue\";\nimport FormSelect from \"@/components/FormSelect.vue\";\nimport FormInputError from \"@/components/FormInputError.vue\";\nimport FormValidation from \"@/mixins/form-validation\";\nimport { TRIGGER_TYPE } from \"@/config/alert\";\nimport { Alert, DeliveryConfig } from \"@/types/alert\";\nimport { Component, Mixins, Prop } from \"vue-property-decorator\";\nimport { State } from \"vuex-class\";\n\n@Component({ components: { FormInput, FormSelect, FormInputError } })\nexport default class AlertForm extends Mixins(FormValidation) {\n @State(state => state.alerts.deliveryConfigs)\n deliveryConfigs!: DeliveryConfig[];\n\n @Prop({ required: true })\n alert!: Alert;\n\n @Prop({ required: true })\n action!: \"add\" | \"update\";\n\n title = \"Save\";\n\n isSaving = false;\n\n triggerTypeError = \"\";\n thresholdError = \"\";\n deliveryConfigError = \"\";\n\n // Map trigger types to the required FormSelect format\n get triggerTypeOpts() {\n const opts: { [propName: string]: string } = {};\n for (const type in TRIGGER_TYPE) {\n opts[type] = TRIGGER_TYPE[type].label;\n }\n return opts;\n }\n\n // Map delivery configs to the required FormSelect format\n get deliveryConfigOpts() {\n const opts: { [propName: string]: string } = {};\n\n for (const deliveryConfig of this.deliveryConfigs) {\n let address = deliveryConfig.email;\n if (deliveryConfig.delivery_type === \"slack\") {\n address = deliveryConfig.slack_channel;\n }\n if (deliveryConfig.id) {\n opts[deliveryConfig.id] = `${deliveryConfig.delivery_type}: ${address}`;\n }\n }\n return opts;\n }\n\n saveAlert() {\n this.triggerTypeError = this.validateString(this.alert.trigger_type, \"Please choose a trigger type\");\n if (this.triggerTypeError) return;\n\n this.thresholdError = this.validateTriggerThreshold(this.alert.trigger_threshold);\n if (this.thresholdError) return;\n\n this.deliveryConfigError = this.validateNumber(\n this.alert.delivery_config_id,\n \"Please choose a delivery destination\",\n );\n if (this.deliveryConfigError) return;\n\n this.$ga.button(`${this.action} alert`);\n\n this.title = \"Saving\";\n this.isSaving = true;\n\n this.$store.dispatch(`alerts/${this.action}`, this.alert).then(() => {\n this.title = \"Saved!\";\n this.isSaving = false;\n setTimeout(() => {\n this.title = \"Save\";\n this.$emit(\"closeAfterSave\");\n }, 1000);\n });\n }\n\n validateTriggerThreshold(threshold: number | null): string {\n if (threshold && threshold >= 1 && threshold <= 99) {\n return \"\";\n }\n return \"Choose a threshold must be between 1-99\";\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertForm.vue?vue&type=template&id=f116fa64&scoped=true&\"\nimport script from \"./AlertForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertForm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AlertForm.vue?vue&type=style&index=0&id=f116fa64&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f116fa64\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h2',{staticClass:\"alert-heading\"},[_vm._v(\" If \"),_c('span',{class:_vm.triggerTypeClass},[_c('b',[_vm._v(_vm._s(_vm.triggerType))]),_vm._v(\" \"+_vm._s(_vm.comparison))]),_c('b',[_c('span',{class:_vm.triggerThresholdClass},[_vm._v(\" \"+_vm._s(_vm.triggerThreshold))]),_vm._v(\"%\")])]),_c('div',[_vm._v(\" send an alert via \"),(_vm.deliveryConfig && _vm.deliveryConfig.delivery_type)?[_c('b',{class:_vm.deliveryTypeClass},[_vm._v(_vm._s(_vm.deliveryType))]),_vm._v(\" to \"),(_vm.deliveryType === 'email')?[_c('b',{class:_vm.emailClass},[_vm._v(_vm._s(_vm.email))])]:_vm._e(),(_vm.deliveryType === 'slack')?[_c('b',{class:_vm.slackChannelClass},[_vm._v(_vm._s(_vm.slackChannel))])]:_vm._e()]:_c('span',{staticClass:\"default\"},[_vm._v(\"...\")])],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { TRIGGER_TYPE } from \"@/config/alert\";\nimport { Alert, DeliveryConfig } from \"@/types/alert\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component\nexport default class AlertInfo extends Vue {\n @Prop({ required: true })\n alert!: Alert;\n\n @Getter(\"alerts/deliveryConfigByID\") deliveryConfigByID!: (deliveryConfigID: number | null) => DeliveryConfig;\n\n defaultClass = \"default\";\n\n get deliveryConfig(): DeliveryConfig {\n return this.deliveryConfigByID(this.alert.delivery_config_id);\n }\n\n get triggerType() {\n if (this.alert.trigger_type) {\n return TRIGGER_TYPE[this.alert.trigger_type].label;\n }\n return TRIGGER_TYPE.hit_rate.label;\n }\n\n get triggerTypeClass() {\n if (!this.alert.trigger_type) return this.defaultClass;\n return \"\";\n }\n\n get comparison() {\n if (this.alert.trigger_type) {\n return TRIGGER_TYPE[this.alert.trigger_type].comparison;\n }\n return TRIGGER_TYPE.hit_rate.comparison;\n }\n\n get triggerThreshold() {\n if (this.alert.trigger_threshold) {\n return this.alert.trigger_threshold;\n }\n return 80;\n }\n\n get triggerThresholdClass() {\n if (!this.alert.trigger_threshold) return this.defaultClass;\n return \"\";\n }\n\n get deliveryType() {\n if (this.deliveryConfig.delivery_type) {\n return this.deliveryConfig.delivery_type;\n }\n return \"email\";\n }\n\n get deliveryTypeClass() {\n if (!this.deliveryConfig.delivery_type) return this.defaultClass;\n if (this.deliveryConfig.delivery_type === \"slack\") return \"capitalize\";\n return \"\";\n }\n\n get email() {\n if (this.deliveryConfig.email) {\n return this.deliveryConfig.email;\n }\n return \"jane@example.com\";\n }\n\n get emailClass() {\n if (!this.deliveryConfig.email) return this.defaultClass;\n return \"\";\n }\n\n get slackChannel() {\n if (this.deliveryConfig.slack_channel) {\n return this.deliveryConfig.slack_channel;\n }\n return \"#alerts\";\n }\n\n get slackChannelClass() {\n if (!this.deliveryConfig.slack_channel) return this.defaultClass;\n return \"\";\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertInfo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertInfo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertInfo.vue?vue&type=template&id=dfa21eea&scoped=true&\"\nimport script from \"./AlertInfo.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertInfo.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AlertInfo.vue?vue&type=style&index=0&id=dfa21eea&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dfa21eea\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport AlertEnableToggle from \"@/components/AlertEnableToggle.vue\";\nimport AlertRemove from \"@/components/AlertRemove.vue\";\nimport AlertForm from \"@/components/AlertForm.vue\";\nimport AlertInfo from \"@/components/AlertInfo.vue\";\nimport { Alert } from \"@/types/alert\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component({\n components: {\n AlertEnableToggle,\n AlertRemove,\n AlertForm,\n AlertInfo,\n },\n})\nexport default class AlertItem extends Vue {\n @Prop({ required: true })\n alert!: Alert;\n\n @Prop({ required: false, default: false })\n isDisabled!: boolean;\n\n showEditAlert = false;\n\n toggleEditAlert() {\n this.showEditAlert = !this.showEditAlert;\n this.$ga.toggle(\"Toggle edit alert\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertItem.vue?vue&type=template&id=cbbcad10&scoped=true&\"\nimport script from \"./AlertItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AlertItem.vue?vue&type=style&index=0&id=cbbcad10&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cbbcad10\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseCard',{staticClass:\"alert\"},[_c('div',{staticClass:\"alert-info\"},[_c('AlertInfo',{attrs:{\"alert\":_vm.alert,\"deliveryConfig\":_vm.deliveryConfig}}),_c('AlertForm',{attrs:{\"alert\":_vm.alert,\"action\":\"add\"},on:{\"closeAfterSave\":_vm.cancel}})],1),_c('BaseButton',{staticClass:\"button-round cancel\",on:{\"click\":_vm.cancel}},[_vm._v(\" Cancel \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\nimport AlertInfo from \"@/components/AlertInfo.vue\";\nimport AlertForm from \"@/components/AlertForm.vue\";\nimport { Alert, DeliveryConfig } from \"@/types/alert\";\nimport { Settings } from \"@/types/settings\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component({ components: { AlertInfo, AlertForm } })\nexport default class AlertsAdd extends Vue {\n created() {\n this.alert.description = this.settings.label;\n }\n @Getter(\"settings/activeCacheSettings\") settings!: Settings;\n\n alert: Alert = {\n id: 0,\n trigger_type: \"\",\n trigger_threshold: null,\n delivery_config_id: null,\n description: \"\",\n enabled: true,\n };\n\n deliveryConfig: DeliveryConfig = {\n id: 0,\n delivery_type: \"\",\n email: \"\",\n slack_url: \"\",\n slack_channel: \"\",\n };\n\n cancel() {\n this.$emit(\"cancelAddAlert\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsAdd.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsAdd.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertsAdd.vue?vue&type=template&id=1be5b0aa&scoped=true&\"\nimport script from \"./AlertsAdd.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertsAdd.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AlertsAdd.vue?vue&type=style&index=0&id=1be5b0aa&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1be5b0aa\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('HeadingButtons',{scopedSlots:_vm._u([{key:\"heading\",fn:function(){return [_c('h2',[_vm._v(\"Delivery Destinations\")])]},proxy:true},{key:\"buttons\",fn:function(){return [(_vm.hasDeliveryConfigs)?_c('BaseButton',{staticClass:\"button-round\",attrs:{\"buttonClass\":\"button-primary\"},on:{\"click\":_vm.toggleAddDeliveryConfig}},[_c('BaseIcon',{attrs:{\"icon\":\"plus\"}}),_vm._v(\" Add Delivery Destination \")],1):_vm._e()]},proxy:true}])}),(_vm.showAddDeliveryConfig)?_c('AlertsDeliveryConfigForm'):_vm._e(),(_vm.deliveryConfigs)?[(_vm.hasDeliveryConfigs)?_vm._l((_vm.deliveryConfigs),function(deliveryConfig){return _c('AlertsDeliveryConfigItem',{key:deliveryConfig.id,attrs:{\"deliveryConfig\":deliveryConfig}})}):(!_vm.showAddDeliveryConfig)?_vm._l((_vm.previewDeliveryConfigs),function(previewDeliveryConfig){return _c('AlertsDeliveryConfigItem',{key:previewDeliveryConfig.id,attrs:{\"deliveryConfig\":previewDeliveryConfig,\"isDisabled\":true}})}):_vm._e()]:_c('BaseCard',[_c('BaseLoading')],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseCard',{staticClass:\"delivery-config\",attrs:{\"isDisabled\":_vm.isDisabled}},[_c('div',{staticClass:\"delivery-config-info\"},[_c('div',{staticClass:\"delivery-type\"},[_vm._v(_vm._s(_vm.deliveryConfig.delivery_type))]),(_vm.deliveryConfig.delivery_type === 'email')?[_vm._v(_vm._s(_vm.deliveryConfig.email))]:_vm._e(),(_vm.deliveryConfig.delivery_type === 'slack')?[_vm._v(_vm._s(_vm.deliveryConfig.slack_channel)+\" \")]:_vm._e()],2),_c('BaseActions',[_c('AlertDeliveryConfigRemove',{attrs:{\"deliveryConfigID\":_vm.deliveryConfig.id,\"isDisabled\":_vm.isDisabled}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseButton',{staticClass:\"button-round\",attrs:{\"tooltipTitle\":_vm.title,\"disabled\":_vm.isDisabled || _vm.deliveryConfigInUse(_vm.deliveryConfigID)},on:{\"click\":function($event){return _vm.removeDeliveryConfig()}}},[_c('BaseIcon',{attrs:{\"icon\":\"trash\",\"screenReaderLabel\":_vm.title}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component\nexport default class AlertDeliveryConfigRemove extends Vue {\n @Prop({ required: true })\n deliveryConfigID!: number;\n\n @Prop({ required: false, default: false })\n isDisabled!: boolean;\n\n title = \"Remove delivery destination\";\n\n @Getter(\"alerts/deliveryConfigInUse\") deliveryConfigInUse!: (deliveryConfigID: number) => boolean;\n\n removeDeliveryConfig() {\n if (\n window.confirm(\n \"Clicking OK will remove this alert delivery destination from your cache. Are you sure you want to do this?\",\n )\n ) {\n this.$ga.button(this.title);\n this.$store.dispatch(\"alerts/removeDeliveryConfig\", this.deliveryConfigID);\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertDeliveryConfigRemove.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertDeliveryConfigRemove.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertDeliveryConfigRemove.vue?vue&type=template&id=33700aec&scoped=true&\"\nimport script from \"./AlertDeliveryConfigRemove.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertDeliveryConfigRemove.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"33700aec\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport AlertDeliveryConfigRemove from \"@/components/AlertDeliveryConfigRemove.vue\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport { DeliveryConfig } from \"@/types/alert\";\n\n@Component({ components: { AlertDeliveryConfigRemove } })\nexport default class AlertsDeliveryConfigItem extends Vue {\n @Prop({ required: true })\n deliveryConfig!: DeliveryConfig;\n\n @Prop({ required: false, default: false })\n isDisabled!: boolean;\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsDeliveryConfigItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsDeliveryConfigItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertsDeliveryConfigItem.vue?vue&type=template&id=51941fca&scoped=true&\"\nimport script from \"./AlertsDeliveryConfigItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertsDeliveryConfigItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AlertsDeliveryConfigItem.vue?vue&type=style&index=0&id=51941fca&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"51941fca\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseCard',[_c('div',{staticClass:\"delivery-config\"},[(_vm.deliveryConfig)?_c('form',{staticClass:\"delivery-config-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.addDeliveryConfig($event)}}},[_c('FormInputError',{attrs:{\"message\":_vm.deliveryTypeError}}),_c('FormSelect',{staticClass:\"inline\",attrs:{\"label\":\"Delivery Type\",\"name\":\"delivery-type\",\"defaultOption\":\"Select delivery type\",\"screenReaderLabel\":false,\"options\":_vm.deliveryTypeOpts,\"required\":\"\"},model:{value:(_vm.deliveryConfig.delivery_type),callback:function ($$v) {_vm.$set(_vm.deliveryConfig, \"delivery_type\", $$v)},expression:\"deliveryConfig.delivery_type\"}}),(_vm.deliveryConfig.delivery_type === 'email' && _vm.isSMTPConfigSet)?[_c('FormInputError',{attrs:{\"message\":_vm.emailError}}),_c('FormInput',{staticClass:\"inline\",attrs:{\"label\":\"Email\",\"screenReaderLabel\":false,\"placeholder\":\"e.g. jane@example.com\",\"type\":\"email\",\"required\":\"\"},model:{value:(_vm.deliveryConfig.email),callback:function ($$v) {_vm.$set(_vm.deliveryConfig, \"email\", $$v)},expression:\"deliveryConfig.email\"}})]:(_vm.deliveryConfig.delivery_type === 'slack')?[_c('p',{staticClass:\"help-text\"},[_vm._v(\" The Slack webhook URL. This can be obtained by adding an Incoming Webhook integration. Login to your Slack workspace in your browser and \"),_c('a',{attrs:{\"href\":\"https://slack.com/services/new/incoming-webhook\",\"target\":\"_blank\"}},[_vm._v(\"add a new webhook\")]),_vm._v(\". Slack will provide you the webhook URL. \")]),_c('FormInputError',{attrs:{\"message\":_vm.slackURLError}}),_c('FormInput',{staticClass:\"inline\",attrs:{\"label\":\"Slack webhook URL\",\"screenReaderLabel\":false,\"placeholder\":\"e.g. https://hooks.slack.com/services/...\",\"type\":\"url\",\"required\":\"\"},model:{value:(_vm.deliveryConfig.slack_url),callback:function ($$v) {_vm.$set(_vm.deliveryConfig, \"slack_url\", $$v)},expression:\"deliveryConfig.slack_url\"}}),_c('FormInputError',{attrs:{\"message\":_vm.slackChannelError}}),_c('FormInput',{staticClass:\"inline\",attrs:{\"label\":\"Slack Channel\",\"screenReaderLabel\":false,\"placeholder\":\"e.g. #alerts\",\"type\":\"text\",\"required\":\"\"},model:{value:(_vm.deliveryConfig.slack_channel),callback:function ($$v) {_vm.$set(_vm.deliveryConfig, \"slack_channel\", $$v)},expression:\"deliveryConfig.slack_channel\"}})]:_vm._e(),(!(_vm.deliveryConfig.delivery_type === 'email' && !_vm.isSMTPConfigSet))?_c('BaseButton',{attrs:{\"buttonClass\":\"button-primary\",\"disabled\":_vm.isSaving,\"type\":\"submit\"}},[_vm._v(\" \"+_vm._s(_vm.title)+\" \"),(_vm.isSaving)?_c('BaseIcon',{attrs:{\"icon\":\"spinner\",\"spin\":\"true\"}}):_vm._e()],1):_vm._e()],2):_vm._e(),_c('BaseButton',{staticClass:\"button-round cancel\",on:{\"click\":_vm.cancel}},[_vm._v(\" Cancel \")])],1),(_vm.deliveryConfig.delivery_type === 'email' && !_vm.isSMTPConfigSet)?_c('BaseNotice',{staticClass:\"add-smtp-notice\",attrs:{\"type\":\"warning\"}},[_c('p',[_vm._v(\"To send alerts via email first add your SMTP settings.\")]),_c('BaseButton',{attrs:{\"buttonClass\":\"button-warning\"},on:{\"click\":function($event){return _vm.$router.push({ name: 'smtp' })}}},[_c('BaseIcon',{attrs:{\"icon\":\"plus\"}}),_vm._v(\" Add SMTP Settings \")],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport FormSelect from \"@/components/FormSelect.vue\";\nimport FormInput from \"@/components/FormInput.vue\";\nimport FormInputError from \"@/components/FormInputError.vue\";\nimport { DeliveryConfig, SMTPConfig } from \"@/types/alert\";\nimport { Features } from \"@/types/settings\";\nimport FormValidation from \"@/mixins/form-validation\";\nimport { Component, Mixins } from \"vue-property-decorator\";\nimport { State, Getter } from \"vuex-class\";\n\n@Component({\n components: {\n FormSelect,\n FormInput,\n FormInputError,\n },\n})\nexport default class AlertsDeliveryConfigForm extends Mixins(FormValidation) {\n created() {\n // Simple caching\n // Only fetch if custom SMTP enabled. i.e. do not fetch for Analytics\n if (!this.SMTPConfig && this.features[\"alert-config\"] === 1) {\n this.$store.dispatch(\"alerts/fetchSMTPConfig\");\n }\n }\n\n @State(state => state.alerts.SMTPConfig)\n SMTPConfig!: SMTPConfig;\n\n @Getter(\"alerts/isSMTPConfigSet\") isSMTPConfigSet!: boolean;\n @Getter(\"settings/activeCacheFeatures\") features!: Features;\n\n deliveryConfig: DeliveryConfig = {\n id: 0,\n delivery_type: \"\",\n email: \"\",\n slack_url: \"\",\n slack_channel: \"\",\n };\n\n title = \"Save\";\n\n isSaving = false;\n\n deliveryTypeOpts = {\n email: \"email\",\n slack: \"slack\",\n };\n\n deliveryTypeError = \"\";\n emailError = \"\";\n slackURLError = \"\";\n slackChannelError = \"\";\n\n addDeliveryConfig() {\n this.deliveryTypeError = this.validateString(this.deliveryConfig.delivery_type, \"Please choose a delivery type\");\n if (this.deliveryTypeError) return;\n\n if (this.deliveryConfig.delivery_type === \"email\") {\n this.emailError = this.validateEmail(this.deliveryConfig.email);\n if (this.emailError) return;\n } else if (this.deliveryConfig.delivery_type === \"slack\") {\n this.slackURLError = this.validateString(this.deliveryConfig.slack_url);\n if (this.slackURLError) return;\n this.slackChannelError = this.validateString(this.deliveryConfig.slack_channel);\n if (this.slackChannelError) return;\n }\n\n this.$ga.button(\"Add delivery config\");\n\n this.title = \"Saving\";\n this.isSaving = true;\n\n this.$store.dispatch(\"alerts/addDeliveryConfig\", this.deliveryConfig).then(() => {\n this.title = \"Saved!\";\n this.isSaving = false;\n setTimeout(() => {\n this.title = \"Save\";\n this.cancel();\n }, 1000);\n });\n }\n\n cancel() {\n this.$ga.toggle(\"Hide add delivery config\");\n this.$store.dispatch(\"alerts/setShowAddDeliveryConfig\", false);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsDeliveryConfigForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsDeliveryConfigForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertsDeliveryConfigForm.vue?vue&type=template&id=7b8ef557&scoped=true&\"\nimport script from \"./AlertsDeliveryConfigForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertsDeliveryConfigForm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AlertsDeliveryConfigForm.vue?vue&type=style&index=0&id=7b8ef557&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b8ef557\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport HeadingButtons from \"@/components/HeadingButtons.vue\";\nimport AlertsDeliveryConfigItem from \"@/components/AlertsDeliveryConfigItem.vue\";\nimport AlertsDeliveryConfigForm from \"@/components/AlertsDeliveryConfigForm.vue\";\nimport { DeliveryConfig } from \"@/types/alert\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { State } from \"vuex-class\";\n\n@Component({\n components: {\n HeadingButtons,\n AlertsDeliveryConfigItem,\n AlertsDeliveryConfigForm,\n },\n})\nexport default class AlertsDeliveryConfig extends Vue {\n created() {\n this.$store.dispatch(\"alerts/fetchDeliveryConfigs\");\n }\n\n @State(state => state.alerts.deliveryConfigs)\n deliveryConfigs!: DeliveryConfig[];\n @State(state => state.alerts.showAddDeliveryConfig)\n showAddDeliveryConfig!: boolean;\n\n get hasDeliveryConfigs() {\n return this.deliveryConfigs && this.deliveryConfigs.length > 0;\n }\n\n get previewDeliveryConfigs(): DeliveryConfig[] {\n return [\n {\n id: 0,\n delivery_type: \"email\",\n email: \"jane@example.com\",\n slack_url: \"\",\n slack_channel: \"\",\n },\n {\n id: 1,\n delivery_type: \"slack\",\n email: \"\",\n slack_url: \"https://...\",\n slack_channel: \"#alerts\",\n },\n ];\n }\n\n toggleAddDeliveryConfig() {\n const toggle = this.showAddDeliveryConfig ? \"Hide\" : \"Show\";\n this.$ga.toggle(`${toggle} add delivery config`);\n this.$store.dispatch(\"alerts/setShowAddDeliveryConfig\", !this.showAddDeliveryConfig);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsDeliveryConfig.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsDeliveryConfig.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertsDeliveryConfig.vue?vue&type=template&id=37da1a36&scoped=true&\"\nimport script from \"./AlertsDeliveryConfig.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertsDeliveryConfig.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"37da1a36\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"header-inline\"},[_vm._t(\"heading\"),_c('div',{staticClass:\"items\"},[_vm._t(\"items\")],2)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class HeadingInline extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadingInline.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadingInline.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HeadingInline.vue?vue&type=template&id=6b7d20e6&scoped=true&\"\nimport script from \"./HeadingInline.vue?vue&type=script&lang=ts&\"\nexport * from \"./HeadingInline.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./HeadingInline.vue?vue&type=style&index=0&id=6b7d20e6&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6b7d20e6\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport url from \"@/mixins/analytics/url\";\nimport AlertItem from \"@/components/AlertItem.vue\";\nimport AlertsAdd from \"@/components/AlertsAdd.vue\";\nimport AlertsDeliveryConfig from \"@/components/AlertsDeliveryConfig.vue\";\nimport HeadingButtons from \"@/components/HeadingButtons.vue\";\nimport HeadingInline from \"@/components/HeadingInline.vue\";\nimport { Alert, DeliveryConfig } from \"@/types/alert\";\nimport { Features } from \"@/types/settings\";\nimport { Component, Mixins } from \"vue-property-decorator\";\nimport { State, Getter } from \"vuex-class\";\n\n@Component({\n components: {\n AlertItem,\n AlertsAdd,\n HeadingButtons,\n HeadingInline,\n AlertsDeliveryConfig,\n },\n})\nexport default class AlertsView extends Mixins(url) {\n created() {\n // Simple caching\n // The more elaborate `fetch, fetching, fetched...` strategy is overkill here\n if (!this.alerts) {\n this.$store.dispatch(\"alerts/fetch\");\n }\n }\n\n @State(state => state.token) token!: string;\n @State(state => state.alerts.alerts) alerts!: Alert[];\n @State(state => state.alerts.deliveryConfigs)\n deliveryConfigs!: DeliveryConfig[];\n @State(state => state.alerts.showAddDeliveryConfig)\n showAddDeliveryConfig!: boolean;\n\n @Getter(\"settings/activeCacheFeatures\") features!: Features;\n\n showAddAlert = false;\n\n get alertLimit() {\n return this.features[\"alert-limit\"] as number;\n }\n\n get canAddAlerts() {\n return this.alertLimit !== 0;\n }\n\n get hasDeliveryConfigs() {\n return this.deliveryConfigs && this.deliveryConfigs.length > 0;\n }\n\n get hasAlerts() {\n return this.alerts && this.alerts.length > 0;\n }\n\n get showFirstDeliveryConfigCard() {\n return (\n this.deliveryConfigs && // if delivery configs fetched\n this.canAddAlerts &&\n !this.hasDeliveryConfigs &&\n !this.showAddDeliveryConfig\n );\n }\n\n get showFirstAlertCard() {\n return (\n this.canAddAlerts &&\n this.hasDeliveryConfigs && // do not show if has 0 delivery configs\n !this.showAddAlert &&\n !this.hasAlerts\n );\n }\n\n get alertUsage() {\n const alertLen = this.alerts ? this.alerts.length : 0;\n return `${alertLen}/${this.alertLimit}`;\n }\n\n get alertLimitReached() {\n return this.alertLimit !== -1 && this.alerts && this.alerts.length >= this.alertLimit;\n }\n\n get previewAlerts(): Alert[] {\n return [\n {\n id: 0,\n trigger_type: \"hit_rate\",\n trigger_threshold: 70,\n delivery_config_id: 0,\n description: \"\",\n enabled: true,\n },\n {\n id: 1,\n trigger_type: \"memory_usage\",\n trigger_threshold: 85,\n delivery_config_id: 0,\n description: \"\",\n enabled: true,\n },\n ];\n }\n\n toggleAddDeliveryConfig() {\n const toggle = this.showAddDeliveryConfig ? \"Hide\" : \"Show\";\n this.$ga.toggle(`${toggle} add delivery config`);\n this.$store.dispatch(\"alerts/setShowAddDeliveryConfig\", !this.showAddDeliveryConfig);\n }\n\n toggleAddAlert() {\n this.showAddAlert = !this.showAddAlert;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertsView.vue?vue&type=template&id=1fe5878a&scoped=true&\"\nimport script from \"./AlertsView.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertsView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AlertsView.vue?vue&type=style&index=0&id=1fe5878a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1fe5878a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-medium\"},[_c('h1',[_vm._v(\"Cache Settings\")]),(_vm.settingsStatus === 'fetched')?[_c('SettingsGeneral'),_c('SettingsCredentials'),(_vm.features['debug-mode'] === 2 || _vm.features['debug-mode'] === -2)?[_c('h2',[_vm._v(\"Features\")]),_c('BaseCard',[_c('p',[_vm._v(\" If this cache is too busy for Introspection to keep up, disabling can be useful. \")]),_c('BaseButton',{attrs:{\"buttonClass\":_vm.introspectionEnabled ? 'button-primary' : '',\"title\":\"Enable/disable Introspection\"},on:{\"click\":_vm.toggleIntrospection}},[_c('BaseIcon',{attrs:{\"icon\":_vm.introspectionEnabled ? 'toggle-on' : 'toggle-off'}}),_vm._v(\" \"+_vm._s(_vm.introspectionTitle)+\" \")],1)],1)]:_vm._e()]:(_vm.settingsStatus === 'failed')?_c('BaseNoDataDefault',{attrs:{\"message\":\"Settings unavailable\"}}):_c('BaseLoading')],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('BaseCard',[_c('div',{staticClass:\"grid-sidebar-right\"},[_c('BaseTable',{attrs:{\"cols\":\"1\"}},[_c('tbody',[_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\" Limit \")]),_c('td',{attrs:{\"data-th\":\"Limit\"}},[_vm._v(_vm._s(_vm.settingsLimit))])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\" Cache ID \")]),_c('td',{attrs:{\"data-th\":\"Cache ID\"}},[_vm._v(_vm._s(_vm.settings.id))])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\" Cache Name \")]),_c('td',{attrs:{\"data-th\":\"Cache Name\"}},[_vm._v(_vm._s(_vm.settings.name))])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\" Cluster \")]),_c('td',{attrs:{\"data-th\":\"Cluster\"}},[_vm._v(_vm._s(_vm.settings.cluster_name))])]),_c('tr',[_c('th',[_vm._v(\"MEMCACHIER_USERNAME\")]),_c('td',{attrs:{\"data-th\":\"MEMCACHIER_USERNAME\"}},[_vm._v(\" \"+_vm._s(_vm.primaryCredentials.sasl_username)+\" \")])]),_c('tr',[_c('th',[_vm._v(\"MEMCACHIER_PASSWORD\")]),_c('td',{attrs:{\"data-th\":\"MEMCACHIER_PASSWORD\"}},[_vm._v(\" \"+_vm._s(_vm.primaryCredentials.sasl_password)+\" \")])]),_c('tr',[_c('th',[_vm._v(\"MEMCACHIER_SERVERS\")]),_c('td',{attrs:{\"data-th\":\"MEMCACHIER_SERVERS\"}},[_vm._v(\" \"+_vm._s(_vm.serversString)+\" \")])])])]),_c('aside',{staticClass:\"sidebar\"},[_c('SettingsChangeClusters'),_c('ReEnableCache')],1)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseButton',{attrs:{\"buttonClass\":\"button-primary\",\"disabled\":!_vm.settings.can_switch,\"tooltipTitle\":\"Move your cache to a different cluster\"},on:{\"click\":_vm.changeClusters}},[_c('BaseIcon',{attrs:{\"icon\":\"random\"}}),_vm._v(\" \"+_vm._s(_vm.title)+\" \")],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Settings } from \"@/types/settings\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component\nexport default class SettingsChangeClusters extends Vue {\n @Getter(\"settings/activeCacheSettings\") settings!: Settings;\n\n title = \"Change Clusters\";\n\n changeClusters() {\n if (\n window.confirm(\n \"This will move your cache to a different cluster. As a result all data from your cache will be lost. Are you sure you want to do this?\",\n )\n ) {\n this.$ga.button(this.title);\n this.$store.dispatch(\"switchCluster\");\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsChangeClusters.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsChangeClusters.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SettingsChangeClusters.vue?vue&type=template&id=08454346&scoped=true&\"\nimport script from \"./SettingsChangeClusters.vue?vue&type=script&lang=ts&\"\nexport * from \"./SettingsChangeClusters.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"08454346\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport SettingsChangeClusters from \"@/components/analytics/SettingsChangeClusters.vue\";\nimport ReEnableCache from \"@/components/analytics/ReEnableCache.vue\";\nimport { Settings } from \"@/types/settings\";\nimport { bytesToPlan } from \"@/utils/conversion\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component({\n components: {\n SettingsChangeClusters,\n ReEnableCache,\n },\n})\nexport default class SettingsGeneral extends Vue {\n @Getter(\"settings/activeCacheSettings\") settings!: Settings;\n\n get settingsLimit() {\n return bytesToPlan(this.settings.plan);\n }\n\n get primaryCredentials() {\n return this.settings.credentials.find(credential => credential.primary);\n }\n \n get serversString() {\n const serversWithPort = this.settings.servers.map((server) => `${server}:11211`);\n return serversWithPort.join(\", \");\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsGeneral.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsGeneral.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SettingsGeneral.vue?vue&type=template&id=db8a8224&scoped=true&\"\nimport script from \"./SettingsGeneral.vue?vue&type=script&lang=ts&\"\nexport * from \"./SettingsGeneral.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"db8a8224\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeadingInline',{scopedSlots:_vm._u([{key:\"heading\",fn:function(){return [_c('h2',[_vm._v(\"Credentials\")])]},proxy:true},{key:\"items\",fn:function(){return [_c('a',{staticClass:\"help-link\",attrs:{\"href\":_vm.url.docsCredentials}},[_vm._v(\"[Help]\")])]},proxy:true}])}),_c('BaseCard',[_c('div',{staticClass:\"grid-sidebar-right\"},[_c('BaseTable',{attrs:{\"cols\":\"credentials\"}},[_c('colgroup',[_c('col'),_c('col'),_c('col',{staticClass:\"capabilities-col\",attrs:{\"span\":\"3\"}}),_c('col')]),_c('thead',[_c('tr',[_c('th'),_c('th'),_c('th',{staticClass:\"capabilities-cell\",attrs:{\"colspan\":\"3\"}},[_vm._v(\"Capabilities\")]),_c('th')]),_c('tr',[_c('th',[_vm._v(\"Username\")]),_c('th',[_vm._v(\"Password\")]),_c('th',{staticClass:\"capabilities-cell\"},[_vm._v(\"Write\")]),_c('th',{staticClass:\"capabilities-cell\"},[_vm._v(\"Flush\")]),_c('th',{staticClass:\"capabilities-cell\"},[_vm._v(\"API\")]),_c('th')])]),_c('tbody',_vm._l((_vm.credentials),function(credential){return _c('SettingsCredentialsItem',{key:credential.id,attrs:{\"credential\":credential,\"title\":_vm.credentialRowTitle(credential)}})}),1)]),_c('aside',{staticClass:\"sidebar\"},[_c('SettingsCredentialsAdd'),_c('BaseButton',{attrs:{\"buttonClass\":\"button-primary\",\"tooltipTitle\":\"Rotate SSO secret for analytics dashboard, invalidating dashboard URLs\"},on:{\"click\":_vm.rotateSSO}},[_c('BaseIcon',{attrs:{\"icon\":\"refresh\",\"spin\":_vm.isSaving}}),_vm._v(\" \"+_vm._s(_vm.rotateSSOButtonTitle)+\" \")],1)],1)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',{attrs:{\"data-th\":\"Username\"}},[_vm._v(_vm._s(_vm.credential.sasl_username))]),_c('td',{attrs:{\"data-th\":\"Password\"}},[_vm._v(_vm._s(_vm.credential.sasl_password))]),_c('td',{attrs:{\"data-th\":\"Write\"}},[_c('FormCheckbox',{attrs:{\"label\":\"Change credential write capability\",\"inputAlign\":\"center\",\"title\":_vm.checkboxTitleAttr,\"disabled\":!_vm.settings.can_update_capabilities},on:{\"updated\":_vm.setCredentialsCapabilities},model:{value:(_vm.credential.write_capability),callback:function ($$v) {_vm.$set(_vm.credential, \"write_capability\", $$v)},expression:\"credential.write_capability\"}})],1),_c('td',{attrs:{\"data-th\":\"Flush\"}},[_c('FormCheckbox',{attrs:{\"label\":\"Change credential flush capability\",\"inputAlign\":\"center\",\"title\":_vm.checkboxTitleAttr,\"disabled\":!_vm.settings.can_update_capabilities},on:{\"updated\":_vm.setCredentialsCapabilities},model:{value:(_vm.credential.flush_capability),callback:function ($$v) {_vm.$set(_vm.credential, \"flush_capability\", $$v)},expression:\"credential.flush_capability\"}})],1),_c('td',{attrs:{\"data-th\":\"API\"}},[_c('FormCheckbox',{attrs:{\"label\":\"Change credential API capability\",\"inputAlign\":\"center\",\"title\":_vm.checkboxTitleAttr,\"disabled\":!_vm.settings.can_update_capabilities},on:{\"updated\":_vm.setCredentialsCapabilities},model:{value:(_vm.credential.api_capability),callback:function ($$v) {_vm.$set(_vm.credential, \"api_capability\", $$v)},expression:\"credential.api_capability\"}})],1),_c('td',{staticClass:\"buttons-cell\"},[(_vm.credential.primary)?[_c('span',{staticClass:\"tag-primary\"},[_vm._v(\"Primary\")])]:[_c('BaseButton',{attrs:{\"buttonClass\":['button-icon-only'],\"tooltipTitle\":_vm.removeCredentialsButtonTitle},on:{\"click\":function($event){return _vm.removeCredentials()}}},[_c('span',{staticClass:\"screen-reader-text\"},[_vm._v(_vm._s(_vm.removeCredentialsButtonTitle))]),_c('BaseIcon',{attrs:{\"icon\":\"close\"}})],1),_c('BaseButton',{attrs:{\"buttonClass\":['button-icon-only'],\"tooltipTitle\":_vm.promoteCredentialsButtonTitle},on:{\"click\":function($event){return _vm.promoteCredentials()}}},[_c('span',{staticClass:\"screen-reader-text\"},[_vm._v(_vm._s(_vm.promoteCredentialsButtonTitle))]),_c('BaseIcon',{attrs:{\"icon\":\"arrow-up\"}})],1)]],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"checkbox\",class:_vm.alignClass},[_c('label',[_c('input',_vm._b({class:[_vm.inputClass, _vm.disabledClass],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.value},on:{\"change\":_vm.updateChecked}},'input',_vm.$attrs,false)),(_vm.label)?_c('span',{class:_vm.screenReaderLabelClass},[_vm._v(\" \"+_vm._s(_vm.label)+\" \")]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component({ inheritAttrs: false })\nexport default class FormCheckbox extends Vue {\n @Prop({ required: true })\n value!: boolean;\n\n @Prop({ required: false, default: \"\" })\n label!: string;\n\n @Prop({ required: false, default: true })\n screenReaderLabel!: boolean;\n\n @Prop({ required: false, default: \"\" })\n inputClass!: string;\n\n @Prop({ required: false, default: \"\" })\n inputAlign!: \"center\"; // default left\n\n get disabledClass() {\n return this.$attrs[\"disabled\"] ? \"disabled\" : \"\";\n }\n\n get screenReaderLabelClass() {\n return this.screenReaderLabel ? \"screen-reader-text\" : \"\";\n }\n\n get alignClass() {\n return this.inputAlign ? \"checkbox-center\" : \"\";\n }\n\n updateChecked(event: any) {\n this.$ga.checkbox(this.label, event.target.checked);\n this.$emit(\"input\", event.target.checked);\n this.$emit(\"updated\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormCheckbox.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormCheckbox.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FormCheckbox.vue?vue&type=template&id=0f3c7c2a&scoped=true&\"\nimport script from \"./FormCheckbox.vue?vue&type=script&lang=ts&\"\nexport * from \"./FormCheckbox.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FormCheckbox.vue?vue&type=style&index=0&id=0f3c7c2a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0f3c7c2a\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport FormCheckbox from \"@/components/FormCheckbox.vue\";\nimport { Credentials, Settings } from \"@/types/settings\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component({ components: { FormCheckbox } })\nexport default class SettingsCredentialsItem extends Vue {\n @Getter(\"settings/activeCacheSettings\") settings!: Settings;\n\n @Prop({ required: true })\n credential!: Credentials;\n\n removeCredentialsButtonTitle = \"Remove credentials\";\n promoteCredentialsButtonTitle = \"Promote credentials to primary\";\n\n get checkboxTitleAttr(): string {\n return !this.settings.can_update_capabilities ? \"Your current plan does not allow this feature\" : \"\";\n }\n\n removeCredentials() {\n if (\n window.confirm(\n \"Clicking OK will remove that username and password from your cache. Are you sure you want to do this?\",\n )\n ) {\n this.$ga.button(this.removeCredentialsButtonTitle);\n this.$store.dispatch(\"settings/removeCredentials\", this.credential.sasl_username);\n }\n }\n\n promoteCredentials() {\n if (\n window.confirm(\n \"Clicking OK will promote selected secondary credentials to the primary username and password for your cache. Are you sure you want to do this?\",\n )\n ) {\n this.$ga.button(this.promoteCredentialsButtonTitle);\n this.$store.dispatch(\"settings/promoteCredentials\", this.credential.sasl_username);\n }\n }\n\n setCredentialsCapabilities() {\n const payload = {\n username: this.credential.sasl_username,\n capabilities: {\n write_capability: this.credential.write_capability,\n flush_capability: this.credential.flush_capability,\n api_capability: this.credential.api_capability,\n },\n };\n\n this.$store.dispatch(\"settings/setCredentialsCapabilities\", payload);\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsCredentialsItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsCredentialsItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SettingsCredentialsItem.vue?vue&type=template&id=54637135&scoped=true&\"\nimport script from \"./SettingsCredentialsItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./SettingsCredentialsItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SettingsCredentialsItem.vue?vue&type=style&index=0&id=54637135&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"54637135\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseButton',{attrs:{\"disabled\":!_vm.settings.can_manage_credentials,\"title\":_vm.buttonTitleAttr},on:{\"click\":_vm.addCredentials}},[_c('BaseIcon',{attrs:{\"icon\":\"plus\"}}),_vm._v(\" \"+_vm._s(_vm.buttonTitle)+\" \")],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\nimport { Settings } from \"@/types/settings\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component\nexport default class SettingsCredentialsAdd extends Vue {\n @Getter(\"settings/activeCacheSettings\") settings!: Settings;\n\n buttonTitle = \"Add New Credentials\";\n\n isSaving = false;\n\n get buttonTitleAttr() {\n if (!this.settings.can_manage_credentials) {\n return \"Your current plan does not allow this feature\";\n } else {\n return \"\";\n }\n }\n\n addCredentials() {\n this.$ga.button(this.buttonTitle);\n\n this.buttonTitle = \"Adding\";\n this.isSaving = true;\n this.$store.dispatch(\"settings/addCredentials\").then(() => {\n this.buttonTitle = \"Added!\";\n this.isSaving = false;\n setTimeout(() => {\n this.buttonTitle = \"Add New Credentials\";\n }, 1000);\n });\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsCredentialsAdd.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsCredentialsAdd.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SettingsCredentialsAdd.vue?vue&type=template&id=40220ef7&scoped=true&\"\nimport script from \"./SettingsCredentialsAdd.vue?vue&type=script&lang=ts&\"\nexport * from \"./SettingsCredentialsAdd.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"40220ef7\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport HeadingInline from \"@/components/HeadingInline.vue\";\nimport SettingsCredentialsItem from \"@/components/analytics/SettingsCredentialsItem.vue\";\nimport SettingsCredentialsAdd from \"@/components/analytics/SettingsCredentialsAdd.vue\";\nimport { Settings, Credentials } from \"@/types/settings\";\nimport url from \"@/mixins/analytics/url\";\nimport { Getter } from \"vuex-class\";\nimport { Component, Mixins } from \"vue-property-decorator\";\n\n@Component({\n components: { HeadingInline, SettingsCredentialsAdd, SettingsCredentialsItem },\n})\nexport default class SettingsCredentials extends Mixins(url) {\n @Getter(\"settings/activeCacheSettings\") settings!: Settings;\n\n rotateSSOButtonTitle = \"Rotate SSO Secret\";\n\n isSaving = false;\n\n get credentials() {\n const credentials = this.settings.credentials;\n return [\n credentials.find(credential => credential.primary),\n ...credentials.filter(credential => !credential.primary),\n ];\n }\n\n credentialRowTitle({ primary }: Credentials) {\n return primary\n ? \"This row shows the primary credentials for this cache. The primary credentials are the username and password stored with your cache provider (e.g. Heroku, Azure, Rackspace, etc.)\"\n : \"\";\n }\n\n rotateSSO() {\n if (\n window.confirm(\n \"Clicking OK will rotate the SSO secret for your cache. This will require you to login again. Are you sure you want to do this?\",\n )\n ) {\n this.$ga.button(this.rotateSSOButtonTitle);\n\n this.rotateSSOButtonTitle = \"Rotating\";\n this.isSaving = true;\n this.$store.dispatch(\"rotateSSO\").then(() => {\n this.$store.dispatch(\"logout\");\n });\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsCredentials.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsCredentials.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SettingsCredentials.vue?vue&type=template&id=360fb20a&scoped=true&\"\nimport script from \"./SettingsCredentials.vue?vue&type=script&lang=ts&\"\nexport * from \"./SettingsCredentials.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SettingsCredentials.vue?vue&type=style&index=0&id=360fb20a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"360fb20a\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport SettingsGeneral from \"@/components/analytics/SettingsGeneral.vue\";\nimport SettingsCredentials from \"@/components/analytics/SettingsCredentials.vue\";\nimport { Settings, Features } from \"@/types/settings\";\nimport { DataStatus } from \"@/types/common\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component({ components: { SettingsGeneral, SettingsCredentials } })\nexport default class SettingsView extends Vue {\n created() {\n this.setIntrospectionStatus();\n }\n\n @Getter(\"settings/activeCacheSettings\") settings!: Settings;\n @Getter(\"settings/activeCacheSettingsStatus\") settingsStatus!: DataStatus;\n @Getter(\"settings/activeCacheFeatures\") features!: Features;\n\n introspectionEnabled = false;\n\n get introspectionTitle() {\n return this.introspectionEnabled ? \"Disable Introspection\" : \"Enable Introspection\";\n }\n\n setIntrospectionStatus(): void {\n if (this.features[\"debug-mode\"] === 2) {\n this.introspectionEnabled = true;\n } else if (this.features[\"debug-mode\"] === -2) {\n this.introspectionEnabled = false;\n }\n }\n\n toggleIntrospection() {\n this.$ga.button(this.introspectionTitle);\n this.$store.dispatch(\"settings/toggleIntrospection\").then(() => this.setIntrospectionStatus());\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SettingsView.vue?vue&type=template&id=33be18b5&scoped=true&\"\nimport script from \"./SettingsView.vue?vue&type=script&lang=ts&\"\nexport * from \"./SettingsView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"33be18b5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"container-small\"},[_c('h1',[_vm._v(\"Free Cache Consulting\")]),_c('BaseCard',[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.sendRequest($event)}}},[_c('p',[_vm._v(\" Get a one-on-one consulting session focused on gaining insight to improve cache performance and detect possible bugs. \")]),_c('p',[_vm._v(\" To get the most out of the consulting session, please answer the following questions. \")]),_c('FormInputError',{attrs:{\"message\":_vm.emailError}}),_c('FormInput',{staticClass:\"block\",attrs:{\"label\":\"Email\",\"screenReaderLabel\":false,\"placeholder\":\"e.g. jane@memcachier.com\",\"type\":\"email\",\"required\":\"\"},model:{value:(_vm.request.email),callback:function ($$v) {_vm.$set(_vm.request, \"email\", $$v)},expression:\"request.email\"}}),_c('FormInputError',{attrs:{\"message\":_vm.answersError}}),_vm._l((_vm.request.questions),function(question,index){return _c('div',{key:index},[_c('FormInput',{staticClass:\"block\",attrs:{\"label\":question,\"screenReaderLabel\":false,\"type\":\"text\",\"required\":\"\"},model:{value:(_vm.request.answers[index]),callback:function ($$v) {_vm.$set(_vm.request.answers, index, $$v)},expression:\"request.answers[index]\"}})],1)}),_c('FormInputError',{attrs:{\"message\":_vm.consentError}}),_c('FormCheckbox',{attrs:{\"label\":\"Allow MemCachier to review my cache analytics to prepare for session.\",\"screenReaderLabel\":false,\"required\":\"\"},model:{value:(_vm.request.consent),callback:function ($$v) {_vm.$set(_vm.request, \"consent\", $$v)},expression:\"request.consent\"}}),_c('BaseButton',{attrs:{\"buttonClass\":\"button-secondary\",\"disabled\":_vm.isSending,\"type\":\"submit\"}},[_vm._v(\" \"+_vm._s(_vm.title)+\" \"),(_vm.isSending)?_c('BaseIcon',{attrs:{\"icon\":\"spinner\",\"spin\":\"true\"}}):_vm._e()],1)],2)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport FormInput from \"@/components/FormInput.vue\";\nimport FormCheckbox from \"@/components/FormCheckbox.vue\";\nimport FormInputError from \"@/components/FormInputError.vue\";\nimport { ConsultationRequest } from \"@/types/consultation\";\nimport FormValidation from \"@/mixins/form-validation\";\nimport { Component, Mixins } from \"vue-property-decorator\";\n\n@Component({ components: { FormInput, FormCheckbox, FormInputError } })\nexport default class ConsultingView extends Mixins(FormValidation) {\n initialRequest: ConsultationRequest = {\n email: \"\",\n questions: [\n \"What stack/framework are you using? (e.g., Rails, Django, ...)\",\n \"What are you caching?\",\n \"What is the main reason you are using a cache?\",\n \"What is your biggest pain point when implementing/using caching?\",\n ],\n answers: [],\n consent: true,\n };\n\n request = this.initialRequest;\n\n title = \"Send\";\n\n isSending = false;\n\n emailError = \"\";\n answersError = \"\";\n consentError = \"\";\n\n sendRequest() {\n this.emailError = this.validateEmail(this.request.email);\n if (this.emailError) return;\n\n this.answersError = this.validateAnswers();\n if (this.answersError) return;\n\n this.consentError = this.validateConsent();\n if (this.consentError) return;\n\n this.$ga.button(\"Send consultation request\");\n\n this.title = \"Sending\";\n this.isSending = true;\n\n this.$store.dispatch(\"sendConsultationRequest\", this.request).then(() => {\n this.title = \"Sent!\";\n this.isSending = false;\n setTimeout(() => {\n this.title = \"Send\";\n this.request = this.initialRequest;\n }, 1000);\n });\n }\n\n validateAnswers(): string {\n for (let i = 0; i < this.request.questions.length; i++) {\n if (!this.request.answers[i]) {\n return \"An answer is required for each question\";\n }\n }\n return \"\";\n }\n\n validateConsent(): string {\n if (this.request.consent) {\n return \"\";\n }\n return \"Without reviewing your cache we will not be able to provide useful insight\";\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConsultingView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConsultingView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ConsultingView.vue?vue&type=template&id=2373a5ac&scoped=true&\"\nimport script from \"./ConsultingView.vue?vue&type=script&lang=ts&\"\nexport * from \"./ConsultingView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ConsultingView.vue?vue&type=style&index=0&id=2373a5ac&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2373a5ac\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('HeadingInline',{scopedSlots:_vm._u([{key:\"heading\",fn:function(){return [_c('h1',[_vm._v(\"Introspection\")])]},proxy:true},{key:\"items\",fn:function(){return [(_vm.features['debug-mode'] === -1)?_c('div',{staticClass:\"notice notice-compact info\"},[_vm._v(\" Upgrade your plan to use Introspection \")]):(_vm.features['debug-mode'] === -2)?_c('div',{staticClass:\"notice notice-compact warning\"},[_vm._v(\" Introspection is disabled. To enable, go to \"),_c('router-link',{attrs:{\"to\":{ name: 'settings' }}},[_vm._v(\"settings\")]),_vm._v(\". \")],1):_vm._e()]},proxy:true}])}),_c('div',{staticClass:\"grid-teaser\"},[(_vm.features['consulting-offer'] === 1)?_c('BaseCard',{staticClass:\"teaser\"},[_c('div',{staticClass:\"img-wrap img-center\"},[_c('img',{attrs:{\"src\":require(\"@/assets/preview-consulting.png\"),\"alt\":\"\",\"height\":\"386\",\"width\":\"750\"}})]),_c('h2',[_vm._v(\"Free Cache Consultation\")]),_c('div',{staticClass:\"teaser-copy\"},[_c('p',[_vm._v(\" Get a one-on-one consulting session focused on gaining insight to improve cache performance and detect possible bugs. \")])]),_c('BaseButton',{attrs:{\"buttonClass\":\"button-secondary\",\"disabled\":_vm.features['debug-mode'] < 1},on:{\"click\":function($event){return _vm.$router.push({ name: 'consulting' })}}},[_c('BaseIcon',{attrs:{\"icon\":\"users\"}}),_vm._v(\" Request Consultation\")],1)],1):_vm._e(),_c('BaseCard',{staticClass:\"teaser\"},[_c('div',{staticClass:\"img-wrap\"},[_c('img',{attrs:{\"src\":require(\"@/assets/preview-keys.png\"),\"alt\":\"Screenshot of the Introspection Keys view\",\"height\":\"386\",\"width\":\"750\"}})]),_c('h2',[_vm._v(\"Keys\")]),_c('div',{staticClass:\"teaser-copy\"},[_c('p',[_vm._v(\" Get insight into the most popular keys in your cache and how they are performing. \")])]),_c('BaseButton',{attrs:{\"disabled\":_vm.features['debug-mode'] < 1},on:{\"click\":function($event){return _vm.$router.push({ name: 'popularKeys', params: { keyCat: 'hit' } })}}},[_c('BaseIcon',{attrs:{\"icon\":\"crosshairs\"}}),_vm._v(\" Explore Keys\")],1)],1),_c('BaseCard',{staticClass:\"teaser\"},[_c('div',{staticClass:\"img-wrap\"},[_c('img',{attrs:{\"src\":require(\"@/assets/preview-prefixes.png\"),\"alt\":\"Screenshot of the Introspection Prefixes view\",\"height\":\"386\",\"width\":\"750\"}})]),_c('h2',[_vm._v(\"Prefixes\")]),_c('div',{staticClass:\"teaser-copy\"},[_c('p',[_vm._v(\" Track key prefixes to monitor the performance of your cache. \")])]),_c('BaseButton',{attrs:{\"disabled\":_vm.features['debug-mode'] < 1},on:{\"click\":function($event){return _vm.$router.push({ name: 'prefixes' })}}},[_c('BaseIcon',{attrs:{\"icon\":\"crosshairs\"}}),_vm._v(\" Explore Prefixes\")],1)],1),_c('BaseCard',{staticClass:\"teaser\"},[_c('div',{staticClass:\"img-wrap\"},[_c('img',{attrs:{\"src\":require(\"@/assets/preview-logs.png\"),\"alt\":\"Screenshot of the Introspection Recent Requests view\",\"height\":\"386\",\"width\":\"750\"}})]),_c('h2',[_vm._v(\"Recent Requests\")]),_c('div',{staticClass:\"teaser-copy\"},[_c('p',[_vm._v(\" Recent Requests is useful for quick debugging and making sure your cache is working as expected. \")])]),_c('BaseButton',{attrs:{\"disabled\":_vm.features['debug-mode'] < 1},on:{\"click\":function($event){return _vm.$router.push({ name: 'recentRequests' })}}},[_c('BaseIcon',{attrs:{\"icon\":\"crosshairs\"}}),_vm._v(\" Explore Requests\")],1)],1),_c('BaseCard',{staticClass:\"card-last\"},[_c('h2',[_vm._v(\"What other insight would be valuable?\")]),_c('div',{staticClass:\"teaser-copy\"},[_c('p',[_vm._v(\" Let us know what other insight into your cache would be useful for your business. \")])]),_c('a',{staticClass:\"button\",attrs:{\"href\":_vm.url.feedback}},[_c('BaseIcon',{attrs:{\"icon\":\"comments\"}}),_vm._v(\" Send Feedback \")],1)])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport HeadingInline from \"@/components/HeadingInline.vue\";\nimport { Features } from \"@/types/settings\";\nimport url from \"@/mixins/analytics/url\";\nimport { Component, Mixins } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component({ components: { HeadingInline } })\nexport default class IntrospectionView extends Mixins(url) {\n @Getter(\"settings/activeCacheFeatures\") features!: Features;\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=8d990f70&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=8d990f70&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8d990f70\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.dataReady)?_c('div',[_c('div',{staticClass:\"info\"},[_c('h2',[_c('BaseIcon',{attrs:{\"icon\":\"info-circle\"}}),_vm._v(\" Info\")],1),_c('BaseCard',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hit),expression:\"hit\"}],attrs:{\"help\":true}},[_c('p',[_vm._v(\" The hottest keys in your cache. Make sure they stay there. \")])]),_c('BaseCard',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.missed),expression:\"missed\"}],attrs:{\"help\":true}},[_c('p',[_vm._v(\" Keys are missed because they are not stored yet, or because they expired, or got evicted. \")]),_c('ul',[_c('li',[_vm._v(\" Keys should not be missed more than once in a reasonable period. \")]),_c('li',[_vm._v(\" If a key is missed a few times, it can hint at the cache being too small. \")]),_c('li',[_vm._v(\" If a key is missed a lot, it hints at an implementation bug, i.e., items are being fetched but never actually stored. \")])])]),_c('BaseCard',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mutated),expression:\"mutated\"}],attrs:{\"help\":true}},[_c('p',[_vm._v(\" A key should only be mutated when its value changes. Some keys, like counters, may have a high mutation rate. Seeing a high mutation rate for value that stays relatively constant hints at an implementation bug, i.e., a key being repeatingly set with the same value. \")])])],1),_c('div',{staticClass:\"sub-header\"},[_c('span',{staticClass:\"popularity-unit\",attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.popularityunit)+\" \")])]),(_vm.hasKeys)?_c('div',_vm._l((_vm.keys),function(key,index){return _c('PopularKey',{key:index,attrs:{\"cacheKey\":key,\"keyCat\":_vm.keyCat,\"timeSlice\":_vm.popularItems.time_slice}})}),1):_c('BaseNoDataDefault',{attrs:{\"message\":\"Keys currently unavailable\",\"spacing\":\"top\"}})],1):_c('BaseLoading')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseCard',{staticClass:\"key\",attrs:{\"issueType\":_vm.issue.type}},[_c('div',{staticClass:\"key-header\"},[_c('div',{staticClass:\"name-popularity\"},[(_vm.features['persist-key-stats'] === 1)?_c('div',{staticClass:\"key-button\",attrs:{\"aria-label\":\"Toggle key stats\",\"role\":\"button\",\"tabindex\":\"0\"},on:{\"click\":_vm.toggleShowKeyStats,\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.toggleShowKeyStats($event)}}},[_c('BaseIcon',{staticClass:\"caret\",attrs:{\"icon\":_vm.icon}}),_c('KeyName',{staticClass:\"key-name\",attrs:{\"name\":_vm.cacheKey.name}})],1):_c('KeyName',{staticClass:\"key-name\",attrs:{\"name\":_vm.cacheKey.name}}),_c('div',{staticClass:\"key-popularity\"},[_c('span',{staticClass:\"screen-reader-text\"},[_vm._v(\"Popularity\")]),_vm._v(\" \"+_vm._s(_vm.popularity)+\" \"),(_vm.issue.icon)?_c('BaseIcon',{staticClass:\"key-issue-icon\",attrs:{\"icon\":_vm.issue.icon,\"iconToolTip\":_vm.issue.message,\"issueType\":_vm.issue.type}}):_vm._e()],1)],1)]),(_vm.showKeyStats)?_c('KeyStats',{attrs:{\"keyName\":_vm.cacheKey.name,\"keyCat\":_vm.keyCat}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"key-stats\"},[(_vm.stats)?[(_vm.hasStats)?_c('div',[_c('KeyStatsChart',{attrs:{\"chartID\":\"keyHitsMissesMutations\",\"keyName\":_vm.keyName}})],1):_c('BaseNoDataDefault',{attrs:{\"spacing\":\"top\",\"message\":\"Keys stats unavailable\"}})]:_c('BaseLoading',{attrs:{\"spacing\":\"top\"}})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseChart',{attrs:{\"chartID\":_vm.chartID,\"values\":_vm.values(),\"isCard\":false}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\nimport * as c from \"@/utils/chart\";\nimport { KEY_METRICS } from \"@/config/series\";\nimport { KeyStats } from \"@/types/debug-mode\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport { State } from \"vuex-class\";\n\n@Component\nexport default class KeyStatsChart extends Vue {\n @State(state => state.debugMode.keyStatsSeries) keyStatsSeries!: KeyStats;\n\n @Prop({ required: true })\n chartID!: string;\n\n @Prop({ required: true })\n keyName!: string;\n\n get keySeries() {\n return this.keyStatsSeries[this.keyName];\n }\n\n // Make sure data has been returned by the API before trying to render chart\n get dataReady() {\n return this.keySeries && this.keySeries.length > 0;\n }\n\n // Get only the required columns from all values\n values() {\n if (!this.dataReady) {\n return;\n }\n\n const metrics = c.getMetrics(this.chartID);\n const matchedIndexes = metrics.map(metric => {\n return c.getValuesIdxByMetric(KEY_METRICS, metric);\n });\n\n return this.keySeries.map(point => {\n const updatedPoint = [];\n updatedPoint.push(point[0]); // add time\n // [1] `name` always skipped\n // loop through metrics and push matched IDs only\n for (const i of matchedIndexes) {\n updatedPoint.push(point[i]);\n }\n return updatedPoint;\n });\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyStatsChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyStatsChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./KeyStatsChart.vue?vue&type=template&id=3cea7706&scoped=true&\"\nimport script from \"./KeyStatsChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./KeyStatsChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3cea7706\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"key\"},[_vm._v(_vm._s(_vm.name))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class KeyName extends Vue {\n @Prop({ required: true })\n name!: string;\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyName.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyName.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./KeyName.vue?vue&type=template&id=b372f4e6&scoped=true&\"\nimport script from \"./KeyName.vue?vue&type=script&lang=ts&\"\nexport * from \"./KeyName.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./KeyName.vue?vue&type=style&index=0&id=b372f4e6&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b372f4e6\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\nimport KeyStatsChart from \"@/components/KeyStatsChart.vue\";\nimport KeyName from \"@/components/KeyName.vue\";\nimport { KeyStats, KeyCat } from \"@/types/debug-mode\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport { State } from \"vuex-class\";\n\n@Component({\n components: { KeyStatsChart, KeyName },\n})\nexport default class KeyStatsSingle extends Vue {\n created() {\n // Check for cached stats\n if (!this.keyStats[this.keyName]) {\n // if not cached, fetch stats\n this.$store.dispatch(\"debugMode/fetchKeyStats\", this.keyName);\n }\n }\n\n @State(state => state.debugMode.keyStats) keyStats!: KeyStats;\n\n @Prop({ required: true })\n keyName!: string;\n\n @Prop({ required: true })\n keyCat!: KeyCat;\n\n get stats() {\n return this.keyStats[this.keyName];\n }\n\n get hasStats() {\n return this.stats && this.stats.length > 0;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyStats.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyStats.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./KeyStats.vue?vue&type=template&id=e0c6bc22&scoped=true&\"\nimport script from \"./KeyStats.vue?vue&type=script&lang=ts&\"\nexport * from \"./KeyStats.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./KeyStats.vue?vue&type=style&index=0&id=e0c6bc22&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e0c6bc22\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport KeyStats from \"@/components/KeyStats.vue\";\nimport KeyName from \"@/components/KeyName.vue\";\nimport { Key, KeyCat } from \"@/types/debug-mode\";\nimport { NotificationType, Issue } from \"@/types/notification\";\nimport { Features } from \"@/types/settings\";\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component({\n components: {\n KeyStats,\n KeyName,\n },\n})\nexport default class PopularKey extends Vue {\n created() {\n // Set issue initially, then watch for changes below to re-evaluate\n this.setIssue();\n }\n\n @Getter(\"settings/activeCacheFeatures\") features!: Features;\n\n @Prop({ required: true })\n cacheKey!: Key;\n\n @Prop({ required: true })\n keyCat!: KeyCat;\n\n @Prop({ required: true })\n timeSlice!: number; // nanoseconds\n\n @Watch(\"cacheKey\")\n onUpdate() {\n this.setIssue();\n }\n\n showKeyStats = false;\n\n initalIssue: Issue = {\n type: NotificationType.DEFAULT,\n message: \"\",\n icon: \"\",\n };\n\n issue = this.initalIssue;\n\n // format popularity\n // e.g. 1200.321 => 1,200.32/s\n get popularity() {\n return `${this.cacheKey.popularity.toFixed(2).toLocaleString()}/s`;\n }\n\n get icon() {\n return this.showKeyStats ? \"caret-up\" : \"caret-down\";\n }\n\n toggleShowKeyStats() {\n this.showKeyStats = !this.showKeyStats;\n\n const ga = this.showKeyStats ? \"Show key stats\" : \"Hide key stats\";\n this.$ga.toggle(ga);\n }\n\n setIssue() {\n // if we have data for at least 10s\n if (this.timeSlice / 10 ** 9 > 10) {\n // help for Most Missed Keys\n if (this.keyCat === \"missed\") {\n const helpText = \"missed key. Cache too small or possible implementation bug (i.e. item never stored)\";\n if (this.cacheKey.popularity >= 1) {\n this.issue = {\n type: NotificationType.ERROR,\n message: `Very frequently ${helpText}`,\n icon: \"exclamation-circle\",\n };\n return;\n } else if (this.cacheKey.popularity > 0.1) {\n this.issue = {\n type: NotificationType.WARNING,\n message: `Frequently ${helpText}`,\n icon: \"exclamation-circle\",\n };\n return;\n }\n }\n }\n\n // reset\n if (this.issue.type !== \"\") {\n this.issue = Object.assign({}, this.initalIssue);\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopularKey.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopularKey.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PopularKey.vue?vue&type=template&id=d25ed936&scoped=true&\"\nimport script from \"./PopularKey.vue?vue&type=script&lang=ts&\"\nexport * from \"./PopularKey.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PopularKey.vue?vue&type=style&index=0&id=d25ed936&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d25ed936\",\n null\n \n)\n\nexport default component.exports","import { POPULAR_ITEMS_LIFETIME } from \"@/config/series\";\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class GetPopularItems extends Vue {\n intervalID = 0;\n\n // Use in created()\n getPopularItems() {\n this.$store.dispatch(\"debugMode/fetchPopularItems\");\n\n // Refetch data periodically\n this.intervalID = setInterval(() => {\n this.$store.dispatch(\"debugMode/fetchPopularItems\");\n }, POPULAR_ITEMS_LIFETIME);\n }\n\n // Use in beforeDestroy()\n cleanUpPopularItems() {\n clearInterval(this.intervalID);\n }\n}\n","import { PREFIX_POPULAR_ITEMS_LIFETIME } from \"@/config/series\";\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class GetPrefixPopularItems extends Vue {\n intervalID = 0;\n\n // Use in created()\n getPrefixPopularItems(prefixID: number) {\n this.$store.dispatch(\"debugMode/fetchPrefixPopularItems\", prefixID);\n\n // Refetch data periodically\n this.intervalID = setInterval(() => {\n this.$store.dispatch(\"debugMode/fetchPrefixPopularItems\", prefixID);\n }, PREFIX_POPULAR_ITEMS_LIFETIME);\n }\n\n // Use in beforeDestroy()\n cleanUpPrefixPopularItems() {\n clearInterval(this.intervalID);\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport PopularKey from \"@/components/PopularKey.vue\";\nimport { PopularItems, PrefixPopularItems, Key, KeyCat, KeyCatUnit } from \"@/types/debug-mode\";\nimport GetPopularItems from \"@/mixins/get-popular-items\";\nimport GetPrefixPopularItems from \"@/mixins/get-prefix-popular-items\";\nimport { Component, Mixins, Watch } from \"vue-property-decorator\";\nimport { Route } from \"vue-router\";\nimport { State } from \"vuex-class\";\n\n@Component({ components: { PopularKey } })\nexport default class PopularKeysView extends Mixins(GetPopularItems, GetPrefixPopularItems) {\n created() {\n // Get the key category (hit, missed, mutated) from the route param\n this.keyCat = this.$route.params.keyCat as KeyCat;\n\n // Determine is view is for overall keys or prefix keys by route name\n // Get data if not cached\n if (this.$route.name === \"prefixPopularKeys\") {\n this.viewName = \"prefixPopularKeys\";\n this.getPrefixPopularItems(this.activePrefixID);\n } else {\n this.viewName = \"\";\n this.getPopularItems();\n }\n }\n\n // Clean up fetching/caching data\n beforeDestroy() {\n if (this.$route.name === \"prefixPopularKeys\") {\n this.cleanUpPrefixPopularItems();\n } else {\n this.cleanUpPopularItems();\n }\n }\n\n // Route param changes are not reactive, so watch for updates\n @Watch(\"$route\")\n onRouteUpdate(to: Route, from: Route) {\n if (to.params.keyCat !== from.params.keyCat) {\n this.keyCat = to.params.keyCat as KeyCat;\n }\n\n // Only if the route name changes, fetch data if not cached\n if (to.name !== from.name) {\n if (to.name === \"prefixPopularKeys\") {\n this.viewName = \"prefixPopularKeys\";\n this.getPrefixPopularItems(this.activePrefixID);\n } else {\n this.viewName = \"\";\n this.getPopularItems();\n }\n }\n }\n\n @State(state => state.debugMode.popularItems)\n overallPopularItems!: PopularItems;\n @State(state => state.debugMode.prefixPopularItems)\n prefixPopularItems!: PrefixPopularItems;\n\n // Only used for prefix keys\n @State(\"activePrefixID\") activePrefixID!: number;\n\n // Set a view data property so we can react to view name changes\n // and set which popular items values to use (overall or prefix)\n viewName = \"\";\n\n keys: null | Key[] = null;\n keyCat: KeyCat = \"hit\";\n keyCatUnit: KeyCatUnit = \"hits\";\n\n get popularItems() {\n if (this.viewName === \"prefixPopularKeys\") {\n return this.prefixPopularItems[this.activePrefixID];\n }\n return this.overallPopularItems;\n }\n\n get hit() {\n if (this.keyCat === \"hit\") {\n this.keys = this.popularItems.most_hit_keys;\n this.keyCatUnit = \"hits\";\n return true;\n }\n return false;\n }\n\n get missed() {\n if (this.keyCat === \"missed\") {\n this.keys = this.popularItems.most_missed_keys;\n this.keyCatUnit = \"misses\";\n return true;\n }\n return false;\n }\n\n get mutated() {\n if (this.keyCat === \"mutated\") {\n this.keys = this.popularItems.most_mutated_keys;\n this.keyCatUnit = \"mutations\";\n return true;\n }\n return false;\n }\n\n get hasKeys() {\n return this.keys && this.keys.length > 0;\n }\n\n get dataReady() {\n return !!this.popularItems;\n }\n\n get timeSlice() {\n // nanoseconds to seconds\n const secs = this.popularItems.time_slice / 10 ** 9;\n let time = secs;\n let unit = \"secs\";\n\n if (secs > 60) {\n time = secs / 60;\n unit = \"mins\";\n }\n\n return `${time.toFixed()} ${unit}`;\n }\n\n get popularityunit() {\n return `${this.keyCatUnit} in last ${this.timeSlice}`;\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopularKeysView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopularKeysView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PopularKeysView.vue?vue&type=template&id=2f59b6ec&scoped=true&\"\nimport script from \"./PopularKeysView.vue?vue&type=script&lang=ts&\"\nexport * from \"./PopularKeysView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PopularKeysView.vue?vue&type=style&index=0&id=2f59b6ec&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2f59b6ec\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-medium\"},[_c('HeadingButtons',{scopedSlots:_vm._u([{key:\"heading\",fn:function(){return [_c('h1',[_vm._v(\"Keys\")])]},proxy:true},{key:\"buttons\",fn:function(){return [_c('BaseButtonRefresh',{attrs:{\"action\":\"debugMode/fetchPopularItems\",\"context\":\"keys\"}})]},proxy:true}])}),_c('PopularKeysTabs'),_c('RouterView')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_c('router-link',{staticClass:\"button\",attrs:{\"to\":{ name: 'popularKeys', params: { keyCat: 'hit' } },\"exact-active-class\":\"button-primary\"}},[_vm._v(\" Most Hit Keys \")])],1),_c('li',[_c('router-link',{staticClass:\"button\",attrs:{\"to\":{ name: 'popularKeys', params: { keyCat: 'missed' } },\"exact-active-class\":\"button-primary\"}},[_vm._v(\" Most Missed Keys \")])],1),_c('li',[_c('router-link',{staticClass:\"button\",attrs:{\"to\":{ name: 'popularKeys', params: { keyCat: 'mutated' } },\"exact-active-class\":\"button-primary\"}},[_vm._v(\" Most Mutated Keys \")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class PopularKeysTabs extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopularKeysTabs.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopularKeysTabs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PopularKeysTabs.vue?vue&type=template&id=1cb5e20e&scoped=true&\"\nimport script from \"./PopularKeysTabs.vue?vue&type=script&lang=ts&\"\nexport * from \"./PopularKeysTabs.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PopularKeysTabs.vue?vue&type=style&index=0&id=1cb5e20e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1cb5e20e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport HeadingButtons from \"@/components/HeadingButtons.vue\";\nimport PopularKeysTabs from \"@/components/PopularKeysTabs.vue\";\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component({\n components: {\n HeadingButtons,\n PopularKeysTabs,\n },\n})\nexport default class KeysView extends Vue {}\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=74dcbd4b&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"74dcbd4b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-medium\"},[(_vm.prefixes)?[_c('HeadingButtons',{scopedSlots:_vm._u([{key:\"heading\",fn:function(){return [_c('HeadingInline',{scopedSlots:_vm._u([{key:\"heading\",fn:function(){return [_c('h1',[_vm._v(\"Watched Prefixes\")])]},proxy:true},{key:\"items\",fn:function(){return [_c('div',[_vm._v(_vm._s(_vm.prefixUsage))]),(_vm.prefixLimit === 0 || _vm.prefixLimitReached)?_c('div',{staticClass:\"notice notice-compact info\"},[(_vm.prefixLimit === 0)?_c('span',{attrs:{\"data-testid\":\"prefixes-upgrade-notice-a\"}},[_vm._v(\"Upgrade your plan to create prefixes\")]):(_vm.prefixLimitReached && _vm.prefixLimit < _vm.features['prefix-max'])?_c('span',{attrs:{\"data-testid\":\"prefixes-upgrade-notice-b\"}},[_vm._v(\" Upgrade your plan to create more prefixes \")]):(_vm.prefixLimitReached)?_c('span',{attrs:{\"data-testid\":\"prefixes-upgrade-notice-c\"}},[_vm._v(\" Need more prefixes? Please contact \"),_c('a',{attrs:{\"href\":\"mailto:support@memcachier.com\"}},[_vm._v(\"support@memcachier.com\")])]):_vm._e()]):_vm._e()]},proxy:true}],null,false,989149235)})]},proxy:true},{key:\"buttons\",fn:function(){return [_c('PrefixesAddToggle',{on:{\"toggle\":_vm.toggleAddPrefix}})]},proxy:true}],null,false,1809044964)}),(_vm.showAddPrefix)?_c('PrefixesAdd'):_vm._e(),(_vm.showFirstPrefixCard)?[_c('BaseCard',{staticClass:\"first-prefix\"},[_c('h2',[_vm._v(\"Watch your first prefix\")]),_c('BaseButton',{attrs:{\"buttonClass\":\"button-primary\"},on:{\"click\":_vm.toggleAddPrefix}},[_c('BaseIcon',{attrs:{\"icon\":\"plus\"}}),_vm._v(\" Watch Prefix \")],1)],1)]:_vm._e(),_c('div',{staticClass:\"grid-one-two stats-help\"},[_c('div',[_c('PrefixesOverallStats')],1),_c('div',[_c('h2',[_c('BaseIcon',{attrs:{\"icon\":\"info-circle\"}}),_vm._v(\" Info\")],1),_c('BaseCard',{attrs:{\"help\":true}},[_c('p',[_vm._v(\" Watching prefixes enables you to analyse the performance of different parts of your caching strategy. \")]),_c('p',[_vm._v(\"It allows you to answer questions such as:\")]),_c('ul',{staticClass:\"question-list\"},[_c('li',[_c('div',{staticClass:\"question\"},[_vm._v(\" How is template/session caching performing in relation to the whole cache? \")]),_c('div',{staticClass:\"answer\"},[_vm._v(\" See hit rates of individual prefixes and their weight (fraction). \")])]),_c('li',[_c('div',{staticClass:\"question\"},[_vm._v(\" Am I caching a prefix but never fetching it? \")]),_c('div',{staticClass:\"answer\"},[_vm._v(\" This would suggest a bug in your code. Looking at most missed keys could help you find such a prefix. \")])]),_c('li',[_c('div',{staticClass:\"question\"},[_vm._v(\" Would a particular part of my cache benefit from preemtive caching? \")]),_c('div',{staticClass:\"answer\"},[_vm._v(\" This could be the case for a prefix with low hit rate compared to the overall hit rate. \")])]),_c('li',[_c('div',{staticClass:\"question\"},[_vm._v(\" Is it worth caching a certain prefix? \")]),_c('div',{staticClass:\"answer\"},[_vm._v(\" This could be the case for a prefix that uses a large memory fraction, but a small item fraction, and has a low hit rate. Preemtive caching might also improve this. \")])])])])],1)]),_c('div',{staticClass:\"sub-header\"},[_c('div',{staticClass:\"stat-label requests\"},[_vm._v(\" \"+_vm._s(_vm.metricLabel(\"prefix_over_compound_requests\"))+\" \"),_c('BaseIcon',{attrs:{\"icon\":\"question-circle\",\"iconToolTip\":_vm.helpPrefixFractionRequests}})],1),_c('div',{staticClass:\"stat-label items\"},[_vm._v(\" \"+_vm._s(_vm.metricLabel(\"prefix_over_compound_num_keys\"))+\" \"),_c('BaseIcon',{attrs:{\"icon\":\"question-circle\",\"iconToolTip\":_vm.helpPrefixFractionItems}})],1),_c('div',{staticClass:\"stat-label memory\"},[_vm._v(\" \"+_vm._s(_vm.metricLabel(\"prefix_over_compound_total_size\"))+\" \"),_c('BaseIcon',{attrs:{\"icon\":\"question-circle\",\"iconToolTip\":_vm.helpPrefixFractionMemory}})],1),_c('div',{staticClass:\"stat-label hitrate\"},[_vm._v(_vm._s(_vm.hitRateLabel))])]),(_vm.prefixes && _vm.prefixes.length > 0)?_vm._l((_vm.prefixes),function(prefix){return _c('PrefixItem',{key:prefix.id,attrs:{\"prefix\":prefix}})}):(_vm.prefixes)?_vm._l((_vm.previewPrefixes),function(previewPrefix){return _c('PrefixItem',{key:previewPrefix.id,attrs:{\"prefix\":previewPrefix,\"isDisabled\":true}})}):_c('BaseLoading')]:_c('BaseLoading',{attrs:{\"spacing\":\"top\"}})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ButtonCard',{staticClass:\"prefix\",attrs:{\"ariaLabel\":\"View prefix stats\",\"isDisabled\":_vm.isDisabled,\"issueType\":_vm.issue.type ? _vm.issue.type : ''},on:{\"clicked\":_vm.showStats}},[_c('div',{staticClass:\"prefix-inner\"},[_c('div',{staticClass:\"prefix-issue-name\"},[(_vm.issue)?_c('BaseIcon',{staticClass:\"prefix-issue-icon\",attrs:{\"icon\":_vm.issue.icon,\"iconToolTip\":_vm.issue.message,\"issueType\":_vm.issue.type}}):_vm._e(),_c('KeyName',{staticClass:\"prefix-name\",attrs:{\"name\":_vm.prefix.name}})],1),_c('PrefixItemStats',{attrs:{\"prefix\":_vm.prefix,\"isDisabled\":_vm.isDisabled}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"aria-label\":_vm.ariaLabel,\"role\":\"button\",\"tabindex\":\"0\"},on:{\"click\":_vm.click,\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.click($event)}}},[_c('BaseCard',{attrs:{\"isDisabled\":_vm.isDisabled,\"isButton\":true,\"issueType\":_vm.issueType}},[_vm._t(\"default\")],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\nimport { NotificationType } from \"@/types/notification\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class ButtonCard extends Vue {\n @Prop({ required: true })\n ariaLabel!: string;\n\n @Prop({ required: false, default: false })\n isDisabled!: boolean;\n\n @Prop({ required: false, default: NotificationType.DEFAULT })\n issueType!: NotificationType;\n\n click() {\n this.$emit(\"clicked\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ButtonCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ButtonCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ButtonCard.vue?vue&type=template&id=39626e18&scoped=true&\"\nimport script from \"./ButtonCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./ButtonCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"39626e18\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"prefix-stats\"},[(_vm.lastStats(_vm.prefix.id) || _vm.isDisabled)?[_c('div',{staticClass:\"requests\"},[_c('span',{staticClass:\"screen-reader-text\"},[_vm._v(_vm._s(_vm.metricLabel(\"prefix_over_compound_requests\"))+\": \")]),_vm._v(\" \"+_vm._s(_vm.getPercentByMetric(\"prefix_over_compound_requests\"))+\" \")]),_c('div',{staticClass:\"items\"},[_c('span',{staticClass:\"screen-reader-text\"},[_vm._v(_vm._s(_vm.metricLabel(\"prefix_over_compound_num_keys\"))+\": \")]),_vm._v(\" \"+_vm._s(_vm.getPercentByMetric(\"prefix_over_compound_num_keys\"))+\" \")]),_c('div',{staticClass:\"memory\"},[_c('span',{staticClass:\"screen-reader-text\"},[_vm._v(_vm._s(_vm.metricLabel(\"prefix_over_compound_total_size\"))+\": \")]),_vm._v(\" \"+_vm._s(_vm.getPercentByMetric(\"prefix_over_compound_total_size\"))+\" \")]),_c('div',{staticClass:\"hitrate\"},[_c('span',{staticClass:\"screen-reader-text\"},[_vm._v(_vm._s(_vm.hitRateLabel)+\": \")]),_vm._v(\" \"+_vm._s(_vm.getPercentByMetric(\"prefix_hit_rate\"))+\" \")])]:(_vm.lastStats(_vm.prefix.id) === false)?_c('BaseLoading',{attrs:{\"ellipsisOnly\":true}}):[_vm._v(\"-\")]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Prefix } from \"@/types/debug-mode\";\n\n// Used to display preview watched prefixes, before any prefixes have been watched\nexport const PREVIEW_PREFIXES: Prefix[] = [\n {\n id: 0,\n name: \"sample_prefix_a\",\n },\n {\n id: 1,\n name: \"sample_prefix_b\",\n },\n {\n id: 2,\n name: \"sample_prefix_c\",\n },\n];\n\n// Used to display preview watched prefix stats, before any prefixes have been watched\n// The number of items in this array must correspond to the number of items in\n// PREVIEW_PREFIXES, plus 1 for sum\n// The prop names must correspond to those displayed in PrefixItemStats\nconst requestsA = 21;\nconst requestsB = 16;\nconst requestsC = 53;\n\nconst numKeysA = 34;\nconst numKeysB = 2;\nconst numKeysC = 25;\n\nconst totalSizeA = 65;\nconst totalSizeB = 0;\nconst totalSizeC = 29;\n\nconst hitRateA = 99;\nconst hitRateB = 95;\nconst hitRateC = 96;\n\n// TODO add request fraction\nexport const PREVIEW_PREFIXES_STATS: { [propName: string]: string }[] = [\n {\n prefix_over_compound_requests: `${requestsA}%`,\n prefix_over_compound_num_keys: `${numKeysA}%`,\n prefix_over_compound_total_size: `${totalSizeA}%`,\n prefix_hit_rate: `${hitRateA}%`,\n },\n {\n prefix_over_compound_requests: `${requestsB}%`,\n prefix_over_compound_num_keys: `${numKeysB}%`,\n prefix_over_compound_total_size: `${totalSizeB}%`,\n prefix_hit_rate: `${hitRateB}%`,\n },\n {\n prefix_over_compound_requests: `${requestsC}%`,\n prefix_over_compound_num_keys: `${numKeysC}%`,\n prefix_over_compound_total_size: `${totalSizeC}%`,\n prefix_hit_rate: `${hitRateC}%`,\n },\n // sum should always be last item, used for Watched Totals in PrefixesOverallStats\n // hit rate not required for Watched Totals\n {\n prefix_over_compound_requests: `${requestsA + requestsB + requestsC}%`,\n prefix_over_compound_num_keys: `${numKeysA + numKeysB + numKeysC}%`,\n prefix_over_compound_total_size: `${totalSizeA + totalSizeB + totalSizeC}%`,\n },\n];\n","import { TimeRange } from \"@/types/time-range\";\nimport { PREFIX_STATS_LIFETIME } from \"@/config/series\";\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class GetPrefixStats extends Vue {\n intervalID = 0;\n\n // Use in created()\n getPrefixStats(prefixID: number, timeRange?: TimeRange) {\n const action: () => void = () => {\n if (timeRange) {\n this.$store.dispatch(\"debugMode/fetchPrefixStats\", { timeRange, prefixID });\n } else {\n this.$store.dispatch(\"debugMode/fetchPrefixStatsByTimeRange\", prefixID);\n }\n };\n\n action();\n\n // Refetch data periodically\n this.intervalID = setInterval(() => {\n action();\n }, PREFIX_STATS_LIFETIME);\n }\n\n // Use in beforeDestroy()\n cleanUpPrefixStats() {\n clearInterval(this.intervalID);\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { getValuesIdxByMetric, getMetricLabel } from \"@/utils/chart\";\nimport { PREFIX_HIT_RATE_LABEL } from \"@/config/series\";\nimport { PREVIEW_PREFIXES_STATS } from \"@/config/preview\";\nimport { Prefix } from \"@/types/debug-mode\";\nimport { SeriesPoint } from \"@/types/common\";\nimport { TimeRange } from \"@/types/time-range\";\nimport GetPrefixStats from \"@/mixins/get-prefix-stats\";\nimport { Component, Mixins, Prop } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component\nexport default class PrefixItemStats extends Mixins(GetPrefixStats) {\n created() {\n if (!this.isDisabled) {\n this.getPrefixStats(this.prefix.id, TimeRange.LAST_DAY);\n }\n }\n\n beforeDestroy() {\n if (!this.isDisabled) {\n this.cleanUpPrefixStats();\n }\n }\n\n @Getter(\"debugMode/prefixLastStats\") lastStats!: (prefixID: number) => SeriesPoint | null | false;\n\n @Getter(\"debugMode/prefixStatsSeriesColumns\") columns!: (prefixID: number) => false | string[];\n\n @Prop({ required: true })\n prefix!: Prefix;\n\n @Prop({ required: false, default: false })\n isDisabled!: boolean;\n\n hitRateLabel = PREFIX_HIT_RATE_LABEL;\n\n getPercentByMetric(metricID: string) {\n // if disabled, show sample preview data\n if (this.isDisabled) {\n return PREVIEW_PREFIXES_STATS[this.prefix.id][metricID];\n }\n\n const columns = this.columns(this.prefix.id);\n if (!columns) return \"-\";\n\n const lastStats = this.lastStats(this.prefix.id);\n if (!lastStats) return \"-\";\n\n const i = getValuesIdxByMetric(columns, metricID);\n const val = lastStats[i];\n if ((val === 0 || val) && typeof val === \"number\") {\n return `${(val * 100).toFixed()}%`;\n }\n // if val is not a number, treat as data unavailable\n return \"-\";\n }\n\n metricLabel(metricID: string): string {\n return getMetricLabel(metricID);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixItemStats.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixItemStats.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PrefixItemStats.vue?vue&type=template&id=a5bdaf1e&scoped=true&\"\nimport script from \"./PrefixItemStats.vue?vue&type=script&lang=ts&\"\nexport * from \"./PrefixItemStats.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PrefixItemStats.vue?vue&type=style&index=0&id=a5bdaf1e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a5bdaf1e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport KeyName from \"@/components/KeyName.vue\";\nimport ButtonCard from \"@/components/ButtonCard.vue\";\nimport PrefixItemStats from \"@/components/PrefixItemStats.vue\";\nimport { Prefix } from \"@/types/debug-mode\";\nimport { NotificationType, Issue } from \"@/types/notification\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component({\n components: {\n KeyName,\n ButtonCard,\n PrefixItemStats,\n },\n})\nexport default class PrefixItem extends Vue {\n @Getter(\"debugMode/prefixIssues\") issues!: (prefixID: number) => { [propName: string]: Issue };\n\n @Prop({ required: true })\n prefix!: Prefix;\n\n @Prop({ required: false, default: false })\n isDisabled!: boolean;\n\n get issue(): Issue | false {\n if (Object.keys(this.issues(this.prefix.id)).length > 0) {\n return {\n type: NotificationType.WARNING,\n message: \"Issues found, view prefix to learn more\",\n icon: \"exclamation-circle\",\n };\n }\n return false;\n }\n\n showStats() {\n if (this.isDisabled) return;\n\n this.$router.push({\n name: \"prefixOverview\",\n params: { prefixId: this.prefix.id.toString() },\n });\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PrefixItem.vue?vue&type=template&id=32817d3a&scoped=true&\"\nimport script from \"./PrefixItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./PrefixItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PrefixItem.vue?vue&type=style&index=0&id=32817d3a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"32817d3a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseCard',[_c('h2',[_vm._v(\"Add a prefix\")]),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.save($event)}}},[_c('FormInputError',{attrs:{\"message\":_vm.nameError}}),_c('FormInputGroup',[_c('FormInput',{staticClass:\"prefix-input\",attrs:{\"label\":\"Prefix\",\"placeholder\":\"Prefix...\",\"type\":\"text\",\"required\":\"\"},model:{value:(_vm.prefix.name),callback:function ($$v) {_vm.$set(_vm.prefix, \"name\", $$v)},expression:\"prefix.name\"}}),_c('BaseButton',{attrs:{\"buttonClass\":\"button-primary\",\"disabled\":_vm.isSaving,\"type\":\"submit\"}},[_vm._v(\" \"+_vm._s(_vm.title)+\" \"),(_vm.isSaving)?_c('BaseIcon',{attrs:{\"icon\":\"spinner\",\"spin\":\"true\"}}):_vm._e()],1)],1)],1),_c('h2',[_vm._v(\"Or choose a popular prefix\")]),(_vm.popularPrefixes !== undefined)?_c('PrefixesPopular',{attrs:{\"popularPrefixes\":_vm.popularPrefixes,\"maxHeight\":\"224px\"}}):_c('BaseLoading')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"group\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class FormInputGroup extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormInputGroup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormInputGroup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FormInputGroup.vue?vue&type=template&id=a8f1fdf4&scoped=true&\"\nimport script from \"./FormInputGroup.vue?vue&type=script&lang=ts&\"\nexport * from \"./FormInputGroup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FormInputGroup.vue?vue&type=style&index=0&id=a8f1fdf4&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a8f1fdf4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.popularPrefixesFiltered.length > 0)?_c('div',{staticClass:\"popular-prefixes\",style:(_vm.inlineStyles)},[_c('BaseTable',{attrs:{\"cols\":\"popular-prefixes\",\"slim\":true}},[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Prefix\")]),_c('th',[_vm._v(\"Popularity\")]),_c('th')])]),_c('tbody',_vm._l((_vm.popularPrefixesFiltered),function(prefix,index){return _c('tr',{key:index},[_c('td',{attrs:{\"data-th\":\"Prefix\"}},[_c('KeyName',{attrs:{\"name\":prefix.name}})],1),_c('td',{attrs:{\"data-th\":\"Popularity\"}},[_vm._v(_vm._s(_vm._f(\"number\")(prefix.popularity)))]),_c('td',{staticClass:\"actions-cell\"},[_c('BaseActions',[_c('PrefixesPopularAdd',{attrs:{\"prefix\":prefix}})],1)],1)])}),0)])],1):_c('BaseNoDataDefault',{attrs:{\"message\":\"Popular prefixes unavailable\",\"data-testid\":\"popular-prefixes-unavailable\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseButton',{staticClass:\"button-round\",attrs:{\"tooltipTitle\":\"Watch prefix\",\"tooltipPosition\":\"right\",\"noBorder\":true},on:{\"click\":function($event){return _vm.add(_vm.prefix)}}},[_c('BaseIcon',{attrs:{\"icon\":\"plus\",\"screenReaderLabel\":\"Watch prefix\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Prefix } from \"@/types/debug-mode\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class PrefixesPopularAdd extends Vue {\n @Prop({ required: true })\n prefix!: Prefix;\n\n add(prefix: Prefix) {\n this.$ga.button(\"Add prefix (popular)\");\n this.$store.dispatch(\"debugMode/addPrefix\", prefix);\n // close the Add Prefix card\n this.$store.dispatch(\"debugMode/setShowAddPrefix\", false);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesPopularAdd.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesPopularAdd.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PrefixesPopularAdd.vue?vue&type=template&id=99c9195a&scoped=true&\"\nimport script from \"./PrefixesPopularAdd.vue?vue&type=script&lang=ts&\"\nexport * from \"./PrefixesPopularAdd.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"99c9195a\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport PrefixesPopularAdd from \"@/components/PrefixesPopularAdd.vue\";\nimport KeyName from \"@/components/KeyName.vue\";\nimport { Prefix, Key } from \"@/types/debug-mode\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport { State } from \"vuex-class\";\n\n@Component({\n components: {\n PrefixesPopularAdd,\n KeyName,\n },\n})\nexport default class PrefixesPopular extends Vue {\n @State(state => state.debugMode.prefixes) watchedPrefixes!: Prefix[] | null;\n\n @Prop({ required: true })\n popularPrefixes!: undefined | null | Key[];\n\n @Prop({ required: false, default: \"\" })\n subPrefixBase!: string;\n\n @Prop({ required: false, default: \"\" })\n maxHeight!: string; // e.g. 224px\n\n get inlineStyles() {\n return this.maxHeight ? { maxHeight: this.maxHeight } : \"\";\n }\n\n get popularPrefixesFiltered(): Key[] {\n let popularPrefixes = this.popularPrefixes;\n if (!popularPrefixes) return [];\n\n const watchedPrefixes = this.watchedPrefixes;\n\n // Exclude prefixes where popularity = 1 because it\n // represents a prefix that includes 100% of requests\n popularPrefixes = popularPrefixes.filter(popularPrefix => popularPrefix.popularity !== 1);\n\n // If watching prefixes...\n if (watchedPrefixes && watchedPrefixes.length > 0) {\n // Exclude watched prefixes\n const watchedPrefixNames = watchedPrefixes.map(prefix => prefix.name);\n popularPrefixes = popularPrefixes.filter(popularPrefix => watchedPrefixNames.indexOf(popularPrefix.name) === -1);\n\n // Exclude sub prefixes of watched prefixes for overall popular prefixes\n if (!this.subPrefixBase) {\n popularPrefixes = popularPrefixes.filter(\n popularPrefix =>\n !watchedPrefixNames.some(watchedPrefixName => popularPrefix.name.startsWith(watchedPrefixName)),\n );\n }\n }\n\n // Exclude sub prefixes\n // sort prefixes by name ASC\n popularPrefixes.sort(function(a: any, b: any) {\n if (a.name < b.name) return -1;\n if (a.name > b.name) return 1;\n return 0;\n });\n\n let parentPrefixName: string;\n popularPrefixes = popularPrefixes.filter((popularPrefix, i) => {\n const prefixName = popularPrefix.name;\n\n if (i === 0) {\n parentPrefixName = prefixName;\n return true;\n }\n\n if (prefixName.startsWith(parentPrefixName)) {\n return false;\n }\n\n parentPrefixName = prefixName;\n return true;\n });\n\n // For prefix-specific popular sub prefixes, exclude prefixes not starting with the sub prefix base.\n if (this.subPrefixBase) {\n popularPrefixes = popularPrefixes.filter(popularPrefix => popularPrefix.name.startsWith(this.subPrefixBase));\n }\n\n // Sort filtered prefixes by greatest popularity\n popularPrefixes.sort((a, b) => b.popularity - a.popularity);\n\n return popularPrefixes;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesPopular.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesPopular.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PrefixesPopular.vue?vue&type=template&id=bf1555f4&scoped=true&\"\nimport script from \"./PrefixesPopular.vue?vue&type=script&lang=ts&\"\nexport * from \"./PrefixesPopular.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PrefixesPopular.vue?vue&type=style&index=0&id=bf1555f4&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bf1555f4\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport FormInput from \"@/components/FormInput.vue\";\nimport FormInputError from \"@/components/FormInputError.vue\";\nimport FormInputGroup from \"@/components/FormInputGroup.vue\";\nimport PrefixesPopular from \"@/components/PrefixesPopular.vue\";\nimport { Prefix, Key } from \"@/types/debug-mode\";\nimport GetPopularItems from \"@/mixins/get-popular-items\";\nimport FormValidation from \"@/mixins/form-validation\";\nimport { Component, Mixins } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component({\n components: {\n FormInput,\n FormInputError,\n FormInputGroup,\n PrefixesPopular,\n },\n})\nexport default class PrefixesAdd extends Mixins(GetPopularItems, FormValidation) {\n created() {\n this.getPopularItems();\n }\n\n beforeDestroy() {\n this.cleanUpPopularItems();\n }\n\n @Getter(\"debugMode/popularPrefixes\") popularPrefixes!: undefined | null | Key[];\n\n title = \"Save\";\n\n isSaving = false;\n\n nameError = \"\";\n\n initialPrefix: Prefix = { id: 0, name: \"\" };\n\n prefix = Object.assign({}, this.initialPrefix);\n\n save() {\n this.nameError = this.validateString(this.prefix.name);\n if (this.nameError) return;\n\n this.$ga.button(\"Add prefix (text field)\");\n\n this.title = \"Saving\";\n this.isSaving = true;\n\n this.$store.dispatch(\"debugMode/addPrefix\", this.prefix).then(() => {\n this.title = \"Saved!\";\n this.isSaving = false;\n setTimeout(() => {\n this.title = \"Save\";\n this.prefix = Object.assign({}, this.initialPrefix);\n }, 1000);\n });\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesAdd.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesAdd.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PrefixesAdd.vue?vue&type=template&id=16bea12e&scoped=true&\"\nimport script from \"./PrefixesAdd.vue?vue&type=script&lang=ts&\"\nexport * from \"./PrefixesAdd.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PrefixesAdd.vue?vue&type=style&index=0&id=16bea12e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"16bea12e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('HitRate',{attrs:{\"title\":\"Overall Hit Rate\"}}),_c('h2',[_vm._v(\"Watched Totals\")]),_c('BaseCard',{attrs:{\"isDisabled\":_vm.prefixes && _vm.prefixes.length === 0}},[_c('BaseStats',{attrs:{\"stats\":[\n {\n value: _vm.getPercentByMetric('prefix_over_compound_requests'),\n label: _vm.metricLabel('prefix_over_compound_requests'),\n icon: 'question-circle',\n iconToolTip: 'Total watched % of recent requests',\n small: true,\n labelNarrow: true,\n iconBlock: true,\n },\n {\n value: _vm.getPercentByMetric('prefix_over_compound_num_keys'),\n label: _vm.metricLabel('prefix_over_compound_num_keys'),\n icon: 'question-circle',\n iconToolTip: 'Total watched % of recently active items',\n small: true,\n labelNarrow: true,\n iconBlock: true,\n },\n {\n value: _vm.getPercentByMetric('prefix_over_compound_total_size'),\n label: _vm.metricLabel('prefix_over_compound_total_size'),\n icon: 'question-circle',\n iconToolTip: 'Total watched % of recently active memory',\n small: true,\n labelNarrow: true,\n iconBlock: true,\n } ]}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport HitRate from \"@/components/HitRate.vue\";\nimport { getValuesIdxByMetric, getMetricLabel } from \"@/utils/chart\";\nimport { PREVIEW_PREFIXES_STATS } from \"@/config/preview\";\nimport { Prefix, PrefixStats } from \"@/types/debug-mode\";\nimport { SeriesPoint } from \"@/types/common\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { State, Getter } from \"vuex-class\";\n\n@Component({ components: { HitRate } })\nexport default class PrefixesOverallStats extends Vue {\n @State(state => state.debugMode.prefixStats)\n prefixStats!: PrefixStats;\n @State(state => state.debugMode.prefixes) prefixes!: Prefix[] | null;\n\n @Getter(\"debugMode/prefixLastStats\") lastStats!: (prefixID: number) => SeriesPoint | null | false;\n\n @Getter(\"debugMode/prefixStatsSeriesColumns\") columns!: (prefixID: number) => false | string[];\n\n @Getter(\"debugMode/allPrefixLastStatsFetched\")\n allPrefixLastStatsFetched!: boolean;\n\n // prefixes excluding sub prefixes\n // TODO essentially same logic as filterSubPrefixes() in PrefixesPopular\n get topLevelPrefixes() {\n if (!this.prefixes) {\n return [];\n }\n\n let previous: string;\n\n // Note: prefixes are sorted when fetched, they\n // must be sorted for filtering to work\n return this.prefixes.filter(prefix => {\n const current = prefix.name;\n\n // `previous` is initially undefined, only check for a sub prefix match\n // when `previous` has been set. In other words, always keep the first prefix\n if (previous) {\n // slice the first x chars of the current prefix name,\n // where x is the length of the previous prefix name\n const currentSlice = current.slice(0, previous.length);\n\n // if the current prefix name starts with the previous\n // prefix name, remove, and keep the same `previous` value\n if (currentSlice === previous) {\n return false;\n }\n }\n\n previous = current;\n return true;\n });\n }\n\n get lastPointsSummed(): SeriesPoint | false {\n if (!this.prefixes) return false; // loading\n if (!this.allPrefixLastStatsFetched) return false; // loading\n\n let sumPoint: SeriesPoint = [];\n\n // skip sub prefixes\n const topLevelPrefixIDs = this.topLevelPrefixes.map(prefix => prefix.id);\n\n for (const prefixID of topLevelPrefixIDs) {\n const lastPoint: SeriesPoint | null | false = this.lastStats(prefixID);\n\n if (!lastPoint) continue;\n\n if (sumPoint.length === 0) {\n // copy initial values, without reference\n sumPoint = [...lastPoint];\n } else {\n // start at 1 to skip time\n for (let i = 1; i < lastPoint.length; i++) {\n const nextVal = lastPoint[i];\n // Only sum numbers. Values could be null, and `null + null = 0`.\n if ((nextVal === 0 || nextVal) && typeof nextVal === \"number\") {\n sumPoint[i] += lastPoint[i];\n }\n }\n }\n }\n\n return sumPoint;\n }\n\n getPercentByMetric(metricID: string) {\n if (!this.prefixes) return false; // loading\n if (this.lastPointsSummed === false) return false; // loading\n\n // if disabled, show sample preview data\n if (this.prefixes && this.prefixes.length === 0) {\n return PREVIEW_PREFIXES_STATS[3][metricID];\n }\n\n const columns = this.columns(this.prefixes[0].id);\n if (!columns) return false; // loading...\n\n const i = getValuesIdxByMetric(columns, metricID);\n const val = this.lastPointsSummed[i];\n\n if ((val === 0 || val) && typeof val === \"number\") {\n return `${(val * 100).toFixed()}%`;\n }\n return val;\n }\n\n metricLabel(metricID: string): string {\n return getMetricLabel(metricID);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesOverallStats.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesOverallStats.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PrefixesOverallStats.vue?vue&type=template&id=43203cba&scoped=true&\"\nimport script from \"./PrefixesOverallStats.vue?vue&type=script&lang=ts&\"\nexport * from \"./PrefixesOverallStats.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"43203cba\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('BaseButton',{staticClass:\"button-round\",attrs:{\"buttonClass\":_vm.buttonClass,\"disabled\":_vm.prefixLimitReached},on:{\"click\":_vm.toggle}},[_c('BaseIcon',{attrs:{\"icon\":_vm.icon}}),_vm._v(\" \"+_vm._s(_vm.title)+\" \")],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\nimport { Prefix } from \"@/types/debug-mode\";\nimport { Features } from \"@/types/settings\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { State, Getter } from \"vuex-class\";\n\n@Component\nexport default class PrefixesAddToggle extends Vue {\n @State(state => state.debugMode.prefixes) prefixes!: Prefix[] | null;\n @State(state => state.debugMode.showAddPrefix) showAddPrefix!: boolean;\n\n @Getter(\"settings/activeCacheFeatures\") features!: Features;\n\n get buttonClass() {\n return this.showAddPrefix ? \"\" : \"button-primary\";\n }\n\n get icon() {\n return this.showAddPrefix ? \"close\" : \"plus\";\n }\n\n get title() {\n return this.showAddPrefix ? \"Cancel\" : \"Watch Prefix\";\n }\n\n get prefixLimitReached() {\n const prefixLimit = this.features[\"prefix-limit\"] as number;\n return this.prefixes && this.prefixes.length >= prefixLimit;\n }\n\n toggle() {\n this.$emit(\"toggle\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesAddToggle.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesAddToggle.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PrefixesAddToggle.vue?vue&type=template&id=9a17d2d6&scoped=true&\"\nimport script from \"./PrefixesAddToggle.vue?vue&type=script&lang=ts&\"\nexport * from \"./PrefixesAddToggle.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9a17d2d6\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport PrefixItem from \"@/components/PrefixItem.vue\";\nimport PrefixesAdd from \"@/components/PrefixesAdd.vue\";\nimport HeadingButtons from \"@/components/HeadingButtons.vue\";\nimport HeadingInline from \"@/components/HeadingInline.vue\";\nimport PrefixesOverallStats from \"@/components/PrefixesOverallStats.vue\";\nimport PrefixesAddToggle from \"@/components/PrefixesAddToggle.vue\";\nimport { getMetricLabel } from \"@/utils/chart\";\nimport {\n PREFIX_HIT_RATE_LABEL,\n HELP_PREFIX_FRACTION_REQUESTS,\n HELP_PREFIX_FRACTION_ITEMS,\n HELP_PREFIX_FRACTION_MEMORY,\n} from \"@/config/series\";\nimport { PREVIEW_PREFIXES } from \"@/config/preview\";\nimport { Prefix } from \"@/types/debug-mode\";\nimport GetProcessedStats from \"@/mixins/get-processed-stats\";\nimport { Component, Mixins } from \"vue-property-decorator\";\nimport { State } from \"vuex-class\";\n\n@Component({\n components: {\n PrefixItem,\n PrefixesAdd,\n HeadingButtons,\n HeadingInline,\n PrefixesOverallStats,\n PrefixesAddToggle,\n },\n})\nexport default class PrefixesView extends Mixins(GetProcessedStats) {\n created() {\n // Simple caching\n // The more elaborate `fetch, fetching, fetched...` strategy is overkill here\n if (!this.prefixes) {\n this.$store.dispatch(\"debugMode/fetchPrefixes\");\n }\n\n // For overall hit rate\n this.getProcessedStats();\n }\n\n beforeDestroy() {\n // Refetch data clean up\n this.cleanUpProcessedStats();\n }\n\n @State(state => state.debugMode.prefixes) prefixes!: Prefix[] | null;\n @State(state => state.debugMode.showAddPrefix) showAddPrefix!: boolean;\n\n hitRateLabel = PREFIX_HIT_RATE_LABEL;\n\n helpPrefixFractionRequests = HELP_PREFIX_FRACTION_REQUESTS;\n\n helpPrefixFractionItems = HELP_PREFIX_FRACTION_ITEMS;\n\n helpPrefixFractionMemory = HELP_PREFIX_FRACTION_MEMORY;\n\n get prefixLimit() {\n return this.features[\"prefix-limit\"] as number;\n }\n\n get canAddPrefixes() {\n return this.prefixLimit > 0 && !this.prefixLimitReached;\n }\n\n get previewPrefixes() {\n return PREVIEW_PREFIXES;\n }\n\n get prefixLimitReached() {\n return this.prefixes && this.prefixes.length >= this.prefixLimit;\n }\n\n get showFirstPrefixCard() {\n // if the Add Prefix form card is hidden\n // and prefixes have been fetched, but there are zero prefixes\n // and prefixes can be added, then show.\n return !this.showAddPrefix && this.prefixes && this.prefixes.length === 0 && this.canAddPrefixes;\n }\n\n get prefixUsage() {\n const prefixLen = this.prefixes ? this.prefixes.length : 0;\n return `${prefixLen}/${this.prefixLimit}`;\n }\n\n toggleAddPrefix() {\n const toggle = this.showAddPrefix ? \"Hide\" : \"Show\";\n this.$ga.toggle(`${toggle} add prefix`);\n this.$store.dispatch(\"debugMode/setShowAddPrefix\", !this.showAddPrefix);\n }\n\n metricLabel(metricID: string): string {\n return getMetricLabel(metricID);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixesView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PrefixesView.vue?vue&type=template&id=aa0efe4c&scoped=true&\"\nimport script from \"./PrefixesView.vue?vue&type=script&lang=ts&\"\nexport * from \"./PrefixesView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PrefixesView.vue?vue&type=style&index=0&id=aa0efe4c&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"aa0efe4c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-medium\"},[(_vm.prefix.id !== 0)?[_c('div',{staticClass:\"heading-back-button\"},[_c('BaseButton',{staticClass:\"back-button button-round\",attrs:{\"tooltipTitle\":_vm.backButtonTitle},on:{\"click\":function($event){return _vm.$router.push({ name: 'prefixes' })}}},[_c('BaseIcon',{attrs:{\"icon\":\"arrow-left\",\"screenReaderLabel\":_vm.backButtonTitle}})],1),_c('h1',[_c('KeyName',{attrs:{\"name\":_vm.prefix.name}})],1)],1),_c('div',{staticClass:\"actions\"},[_c('PrefixStatsTabs'),_c('PrefixRemove',{staticClass:\"prefix-remove\",attrs:{\"prefix\":_vm.prefix}})],1),_c('RouterView')]:_c('BaseLoading',{attrs:{\"spacing\":\"top\"}})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_c('router-link',{staticClass:\"button\",attrs:{\"to\":{ name: 'prefixOverview' },\"exact-active-class\":\"button-primary\"}},[_vm._v(\" Overview \")])],1),_c('li',[_c('router-link',{staticClass:\"button\",attrs:{\"to\":{ name: 'prefixPopularKeys', params: { keyCat: 'hit' } },\"exact-active-class\":\"button-primary\"}},[_vm._v(\" Most Hit Keys \")])],1),_c('li',[_c('router-link',{staticClass:\"button\",attrs:{\"to\":{ name: 'prefixPopularKeys', params: { keyCat: 'missed' } },\"exact-active-class\":\"button-primary\"}},[_vm._v(\" Most Missed Keys \")])],1),_c('li',[_c('router-link',{staticClass:\"button\",attrs:{\"to\":{ name: 'prefixPopularKeys', params: { keyCat: 'mutated' } },\"exact-active-class\":\"button-primary\"}},[_vm._v(\" Most Mutated Keys \")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class PrefixStatsTabs extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixStatsTabs.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixStatsTabs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PrefixStatsTabs.vue?vue&type=template&id=1e92524e&scoped=true&\"\nimport script from \"./PrefixStatsTabs.vue?vue&type=script&lang=ts&\"\nexport * from \"./PrefixStatsTabs.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PrefixStatsTabs.vue?vue&type=style&index=0&id=1e92524e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1e92524e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseButton',{staticClass:\"button-round\",attrs:{\"buttonClass\":\"button-warning\"},on:{\"click\":function($event){return _vm.remove(_vm.prefix)}}},[_vm._v(\" Unwatch \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { Prefix } from \"@/types/debug-mode\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class PrefixRemove extends Vue {\n @Prop({ required: true })\n prefix!: Prefix;\n\n remove(prefix: Prefix) {\n if (window.confirm(\"Clicking OK will stop watching this prefix. Are you sure you want to do this?\")) {\n this.$ga.button(\"Unwatch prefix\");\n this.$store.dispatch(\"debugMode/removePrefix\", prefix);\n\n this.$router.push({ name: \"prefixes\" });\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixRemove.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixRemove.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PrefixRemove.vue?vue&type=template&id=e8d6ee34&scoped=true&\"\nimport script from \"./PrefixRemove.vue?vue&type=script&lang=ts&\"\nexport * from \"./PrefixRemove.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e8d6ee34\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport KeyName from \"@/components/KeyName.vue\";\nimport PrefixStatsTabs from \"@/components/PrefixStatsTabs.vue\";\nimport PrefixRemove from \"@/components/PrefixRemove.vue\";\nimport { Prefix } from \"@/types/debug-mode\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { State, Getter } from \"vuex-class\";\n\n@Component({\n components: {\n PrefixStatsTabs,\n PrefixRemove,\n KeyName,\n },\n})\nexport default class PrefixView extends Vue {\n created() {\n // Get prefixes, in case of landing on this view directly, or on refresh.\n if (!this.prefixes) {\n this.$store.dispatch(\"debugMode/fetchPrefixes\");\n }\n }\n\n @State(state => state.debugMode.prefixes) prefixes!: Prefix[] | null;\n\n @Getter(\"debugMode/activePrefix\") prefix!: Prefix;\n\n backButtonTitle = \"Back to Prefixes\";\n}\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=f45cd6de&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=f45cd6de&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f45cd6de\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.lastStats(_vm.prefix.id))?[_c('div',{staticClass:\"grid-half\"},[_c('div',{staticClass:\"grow-col\"},[_c('PrefixLastStats',{attrs:{\"prefix\":_vm.prefix}})],1),_c('PrefixSubPrefixes',{staticClass:\"grow-col\",attrs:{\"prefix\":_vm.prefix}})],1),_vm._l((_vm.chartIDs),function(chartID,i){return _c('div',{key:i},[(i === 0)?_c('div',{staticClass:\"title-horz-buttons\"},[_c('h2',[_vm._v(_vm._s(_vm.chartTitle(chartID)))]),_c('TimeRangeControls')],1):_c('h2',[_vm._v(_vm._s(_vm.chartTitle(chartID)))]),_c('BaseChart',{attrs:{\"chartID\":chartID,\"series\":_vm.series(chartID)}})],1)})]:(_vm.lastStats(_vm.prefix.id) === false)?_c('BaseLoading',{attrs:{\"spacing\":\"top\"}}):_c('BaseNoDataDefault',{attrs:{\"spacing\":\"top\",\"message\":\"Prefix stats unavailable\"}})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.lastStats(_vm.prefix.id))?[_c('h2',[_vm._v(\"Hit Rates\")]),_c('BaseCard',{staticClass:\"card-top\",attrs:{\"grow\":true}},[_c('BaseStats',{attrs:{\"stats\":[\n {\n value: _vm.getValByMetric('hit_rate', _vm.unit.PERCENT),\n label: _vm.metricLabel('hit_rate'),\n },\n {\n value: _vm.getValByMetric('prefix_hit_rate', _vm.unit.PERCENT),\n label: _vm.metricLabel('prefix_hit_rate'),\n icon: 'question-circle',\n iconToolTip: _vm.hrStatus.message,\n iconIssueType: _vm.hrStatus.type,\n } ]}})],1),_c('h2',[_vm._v(\"Prefix Weight\")]),_c('BaseCard',{attrs:{\"grow\":true}},[_c('BaseStats',{attrs:{\"stats\":[\n {\n value: _vm.getValByMetric('prefix_over_compound_requests', _vm.unit.PERCENT),\n label: _vm.metricLabel('prefix_over_compound_requests'),\n icon: 'question-circle',\n iconToolTip: _vm.helpPrefixFractionRequests,\n },\n {\n value: _vm.getValByMetric('prefix_over_compound_num_keys', _vm.unit.PERCENT),\n label: _vm.metricLabel('prefix_over_compound_num_keys'),\n icon: 'question-circle',\n iconToolTip: _vm.helpPrefixFractionItems,\n },\n {\n value: _vm.getValByMetric('prefix_over_compound_total_size', _vm.unit.PERCENT),\n label: _vm.metricLabel('prefix_over_compound_total_size'),\n icon: 'question-circle',\n iconToolTip: _vm.helpPrefixFractionMemory,\n } ]}})],1),_c('h2',[_vm._v(\"Prefix Activity\")]),_c('BaseCard',{attrs:{\"grow\":true}},[_c('BaseStats',{attrs:{\"stats\":[\n {\n value: _vm.getValByMetric('prefix_total_hits_rate', _vm.unit.PER_SECOND),\n label: _vm.metricLabel('prefix_total_hits_rate'),\n small: true,\n },\n {\n value: _vm.getValByMetric('prefix_total_misses_rate', _vm.unit.PER_SECOND),\n label: _vm.metricLabel('prefix_total_misses_rate'),\n small: true,\n },\n {\n value: _vm.getValByMetric('prefix_total_mutations_rate', _vm.unit.PER_SECOND),\n label: _vm.metricLabel('prefix_total_mutations_rate'),\n small: true,\n } ]}}),(_vm.issue('activity').message)?_c('BaseNotice',{staticClass:\"notice\",attrs:{\"type\":_vm.issue('activity').type}},[_vm._v(\" \"+_vm._s(_vm.issue(\"activity\").message)+\" \")]):_vm._e()],1)]:_c('BaseLoading')],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { getMetricLabel, getValuesIdxByMetric } from \"@/utils/chart\";\nimport {\n HELP_PREFIX_FRACTION_REQUESTS,\n HELP_PREFIX_FRACTION_ITEMS,\n HELP_PREFIX_FRACTION_MEMORY,\n} from \"@/config/series\";\nimport { Prefix } from \"@/types/debug-mode\";\nimport { SeriesPoint } from \"@/types/common\";\nimport { Unit } from \"@/types/unit\";\nimport { Issue, NotificationType } from \"@/types/notification\";\nimport hitRateStatus from \"@/mixins/hit-rate-status\";\nimport { Component, Mixins, Prop } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component\nexport default class PrefixLastStats extends Mixins(hitRateStatus) {\n @Getter(\"debugMode/prefixLastStats\") lastStats!: (prefixID: number) => SeriesPoint | null | false;\n\n @Getter(\"debugMode/prefixStatsSeriesColumns\") columns!: (prefixID: number) => false | string[];\n\n @Getter(\"debugMode/prefixIssues\") issues!: (prefixID: number) => { [propName: string]: Issue };\n\n @Prop({ required: true })\n prefix!: Prefix;\n\n helpPrefixFractionRequests = HELP_PREFIX_FRACTION_REQUESTS;\n\n helpPrefixFractionItems = HELP_PREFIX_FRACTION_ITEMS;\n\n helpPrefixFractionMemory = HELP_PREFIX_FRACTION_MEMORY;\n\n initialIssue: Issue = {\n type: NotificationType.DEFAULT,\n message: \"\",\n icon: \"\",\n };\n\n get unit() {\n return Unit;\n }\n\n get hrStatus() {\n return this.hitRateStatus(this.getStat(\"prefix_hit_rate\"));\n }\n\n metricLabel(metricID: string): string {\n return getMetricLabel(metricID);\n }\n\n getStat(metricID: string) {\n const columns = this.columns(this.prefix.id);\n if (!columns) return false;\n\n const lastStats = this.lastStats(this.prefix.id);\n if (!lastStats) return false;\n\n const i = getValuesIdxByMetric(columns, metricID);\n return lastStats[i];\n }\n\n // TODO rename to getFormattedStat\n getValByMetric(metricID: string, unit?: Unit) {\n const val = this.getStat(metricID);\n\n if ((val === 0 || val) && typeof val === \"number\") {\n if (unit === Unit.PERCENT) {\n return `${(val * 100).toFixed()}${Unit.PERCENT}`;\n } else if (unit === Unit.PER_SECOND) {\n return `${val.toFixed(2)}${Unit.PER_SECOND}`;\n }\n return val.toFixed(2);\n }\n\n return val;\n }\n\n issue(ID: string) {\n if (this.issues(this.prefix.id)[ID]) {\n return this.issues(this.prefix.id)[ID];\n }\n return Object.assign({}, this.initialIssue);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixLastStats.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixLastStats.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PrefixLastStats.vue?vue&type=template&id=70fa327f&scoped=true&\"\nimport script from \"./PrefixLastStats.vue?vue&type=script&lang=ts&\"\nexport * from \"./PrefixLastStats.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PrefixLastStats.vue?vue&type=style&index=0&id=70fa327f&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"70fa327f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h2',[_vm._v(\"Popular Sub Prefixes\")]),_c('BaseCard',{attrs:{\"grow\":true}},[(_vm.popularItems)?[_c('PrefixesPopular',{attrs:{\"popularPrefixes\":_vm.popularPrefixes,\"subPrefixBase\":_vm.prefix.name,\"maxHeight\":\"382px\"}})]:_c('BaseLoading')],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\nimport PrefixesPopular from \"@/components/PrefixesPopular.vue\";\nimport { Prefix, PrefixPopularItems } from \"@/types/debug-mode\";\nimport GetPrefixPopularItems from \"@/mixins/get-prefix-popular-items\";\nimport { Component, Mixins, Prop } from \"vue-property-decorator\";\nimport { State } from \"vuex-class\";\n\n@Component({ components: { PrefixesPopular } })\nexport default class PrefixSubPrefixes extends Mixins(GetPrefixPopularItems) {\n created() {\n this.getPrefixPopularItems(this.prefix.id);\n }\n\n beforeDestroy() {\n this.cleanUpPrefixPopularItems();\n }\n\n @State(state => state.debugMode.prefixPopularItems)\n prefixPopularItems!: PrefixPopularItems;\n\n @Prop({ required: true })\n prefix!: Prefix;\n\n get popularItems() {\n return this.prefixPopularItems[this.prefix.id];\n }\n\n get popularPrefixes() {\n if (this.popularItems) {\n return this.popularItems.popular_prefixes;\n }\n return [];\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixSubPrefixes.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixSubPrefixes.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PrefixSubPrefixes.vue?vue&type=template&id=29557287&scoped=true&\"\nimport script from \"./PrefixSubPrefixes.vue?vue&type=script&lang=ts&\"\nexport * from \"./PrefixSubPrefixes.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"29557287\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport PrefixLastStats from \"@/components/PrefixLastStats.vue\";\nimport PrefixSubPrefixes from \"@/components/PrefixSubPrefixes.vue\";\nimport TimeRangeControls from \"@/components/TimeRangeControls.vue\";\nimport { Prefix } from \"@/types/debug-mode\";\nimport { Series, SeriesPoint } from \"@/types/common\";\nimport { getTitle } from \"@/utils/chart\";\nimport GetPrefixStats from \"@/mixins/get-prefix-stats\";\nimport { Component, Mixins, Watch } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component({\n components: {\n PrefixLastStats,\n PrefixSubPrefixes,\n TimeRangeControls,\n },\n})\nexport default class PrefixOverview extends Mixins(GetPrefixStats) {\n created() {\n if (this.prefix.id) {\n this.getPrefixStats(this.prefix.id);\n }\n }\n\n beforeDestroy() {\n this.cleanUpPrefixStats();\n }\n\n @Getter(\"debugMode/activePrefix\") prefix!: Prefix;\n @Getter(\"debugMode/prefixStatsSeries\") series!: (chartID: string) => false | Series;\n @Getter(\"debugMode/prefixLastStats\") lastStats!: (chartID: string) => SeriesPoint | null | false;\n\n @Watch(\"prefix\")\n onPrefixUpdate() {\n this.getPrefixStats(this.prefix.id);\n }\n\n chartIDs: string[] = [\n \"prefixHitRate\",\n \"prefixRelativeActivity\",\n \"prefixHitsMissesMutations\",\n \"prefixHitsMissesMutationsRate\",\n ];\n\n chartTitle(chartID: string): string {\n return getTitle(chartID);\n }\n}\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OverviewView.vue?vue&type=template&id=6617b750&scoped=true&\"\nimport script from \"./OverviewView.vue?vue&type=script&lang=ts&\"\nexport * from \"./OverviewView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./OverviewView.vue?vue&type=style&index=0&id=6617b750&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6617b750\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"logs-component\"},[_c('div',[_c('HeadingButtons',{scopedSlots:_vm._u([{key:\"heading\",fn:function(){return [_c('h1',[_vm._v(\" Recent Requests \"),_c('BaseIcon',{staticClass:\"help\",attrs:{\"icon\":\"question-circle\",\"iconToolTip\":\"Shows the last 100 requests\"}})],1)]},proxy:true},{key:\"buttons\",fn:function(){return [_c('BaseButtonRefresh',{attrs:{\"action\":\"debugMode/fetchLogs\",\"context\":\"recent request logs\"}})]},proxy:true}])})],1),(_vm.logsPerServer && Object.keys(_vm.logsPerServer).length > 0)?[_c('ul',{staticClass:\"tabs\"},_vm._l((Object.keys(this.logsPerServer)),function(serverID){return _c('li',{key:serverID},[_c('BaseButton',{attrs:{\"isActive\":serverID === _vm.currentServerID},on:{\"click\":function($event){return _vm.setServer(serverID)}}},[_c('span',[_vm._v(_vm._s(serverID))])])],1)}),0),(_vm.logsPerServer[_vm.currentServerID])?_c('BaseCard',{staticClass:\"logs-card\",attrs:{\"dark\":true,\"id\":\"logs-card\"}},[_c('ul',{staticClass:\"logs\"},_vm._l((_vm.logsPerServer[_vm.currentServerID]),function(log,name,index){return _c('li',{key:index},[_c('span',{staticClass:\"time\"},[_vm._v(_vm._s(log.timestamp))]),_c('span',{staticClass:\"cmd\"},[_vm._v(_vm._s(log.command))]),_c('span',{staticClass:\"status\"},[_vm._v(_vm._s(log.status))]),_c('span',{staticClass:\"size\"},[_vm._v(_vm._s(_vm.bytesToSize(log.size)))]),_c('span',[_vm._v(_vm._s(log.key))])])}),0)]):_vm._e()]:(_vm.logsPerServer === null)?_c('BaseLoading'):_c('div',[_vm._v(\"Recent requests unavailable.\")])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport HeadingButtons from \"@/components/HeadingButtons.vue\";\nimport KeyName from \"@/components/KeyName.vue\";\nimport { bytesToSize } from \"@/utils/conversion\";\nimport { LogsPerServer } from \"@/types/debug-mode\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { State } from \"vuex-class\";\n\n@Component({\n components: {\n HeadingButtons,\n KeyName,\n },\n})\nexport default class RecentRequestsView extends Vue {\n created() {\n if (this.logsPerServer === null) {\n this.$store.dispatch(\"debugMode/fetchLogs\").then(() => {\n this.currentServerID = Object.keys(this.logsPerServer)[0];\n this.scrollToBottom();\n });\n } else {\n this.currentServerID = Object.keys(this.logsPerServer)[0];\n this.scrollToBottom();\n }\n }\n\n @State(state => state.debugMode.logs) logsPerServer!: LogsPerServer;\n\n currentServerID = \"\";\n\n bytesToSize(bytes: number) {\n return bytesToSize(bytes);\n }\n\n scrollToBottom() {\n // make sure element has been inserted into the DOM\n this.$nextTick(() => {\n const logs = document.getElementById(\"logs-card\");\n if (logs !== null) {\n logs.scrollTop = logs.scrollHeight;\n }\n });\n }\n\n setServer(serverID: string): void {\n this.$ga.toggle(\"Recent Requests tab: server\");\n this.currentServerID = serverID;\n this.scrollToBottom();\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecentRequestsView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecentRequestsView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RecentRequestsView.vue?vue&type=template&id=ce778e4c&scoped=true&\"\nimport script from \"./RecentRequestsView.vue?vue&type=script&lang=ts&\"\nexport * from \"./RecentRequestsView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RecentRequestsView.vue?vue&type=style&index=0&id=ce778e4c&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ce778e4c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('LayoutFullWidth',[_c('h1',[_vm._v(\"Style Guide\")]),_c('h2',[_vm._v(\"Heading Alignment\")]),_c('div',{staticClass:\"grid-4-col\"},[_c('div',[_c('h1',[_vm._v(\"H1\")]),_c('BaseCard',[_vm._v(\"Just a plain h1.\")])],1),_c('div',[_c('h2',[_vm._v(\"H2\")]),_c('BaseCard',[_vm._v(\"Just a plain h2.\")])],1),_c('div',[_c('HeadingButtons',{scopedSlots:_vm._u([{key:\"heading\",fn:function(){return [_c('h1',[_vm._v(\"H1\")])]},proxy:true},{key:\"buttons\",fn:function(){return [_c('BaseButton',{staticClass:\"button-round\",attrs:{\"buttonClass\":\"button-primary\"}},[_c('BaseIcon',{attrs:{\"icon\":\"plus\"}}),_vm._v(\" Add \")],1)]},proxy:true}])}),_c('BaseCard',[_vm._v(\"HeadingButtons > h1 + BaseButton\")])],1),_c('div',[_c('HeadingButtons',{scopedSlots:_vm._u([{key:\"heading\",fn:function(){return [_c('h2',[_vm._v(\"H2\")])]},proxy:true},{key:\"buttons\",fn:function(){return [_c('BaseButton',{staticClass:\"button-round\",attrs:{\"buttonClass\":\"button-primary\"}},[_c('BaseIcon',{attrs:{\"icon\":\"plus\"}}),_vm._v(\" Add \")],1),_c('BaseButton',{staticClass:\"button-round\",attrs:{\"buttonClass\":\"button-primary\"}},[_c('BaseIcon',{attrs:{\"icon\":\"plus\"}}),_vm._v(\" Add \")],1)]},proxy:true}])}),_c('BaseCard',[_vm._v(\" HeadingButtons > h2 + BaseButton + BaseButton \")])],1)]),_c('div',{staticClass:\"grid-b\"},[_c('div',[_c('h1',[_vm._v(\"Heading 1\")]),_c('p',[_vm._v(\" MemCachier was founded in early 2012 in San Francisco. It has grown every month since then into a profitable, bootstrapped company that today supports over 40,000+ customers. From scrappy startups, to large, fortune 500 enterprise customers, MemCachier provides the leading caching solution. \")]),_c('h2',[_vm._v(\"Heading 2\")]),_c('p',[_vm._v(\" The list of servers you get when you sign up are your proxy servers, which forward operations to cache servers. This architecture is what enables us to add capacity without requiring you to take any action. \")]),_c('p',[_vm._v(\" Even better, when you upgrade you get access to multiple proxies. This means we're able to offer consistent hashing and better failure scenarios for you and other customers. \")])]),_c('div',[_c('p',[_vm._v(\" Even better, when you upgrade you get access to multiple proxies. This means we're able to offer consistent hashing and better failure scenarios for you and other customers. \")]),_c('h3',[_vm._v(\"Heading 3\")]),_c('ol',[_c('li',[_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(\"Login\")]),_vm._v(\" to Memcachier.\")]),_c('li',[_vm._v(\"Select \"),_c('strong',[_vm._v(\"Your Caches\")]),_vm._v(\" from the menu bar\")]),_c('li',[_vm._v(\"Press the \\\"Analytics Dashboard\\\" button next to the cache.\")])]),_c('p',[_vm._v(\" The list of servers you get when you sign up are your proxy servers, which forward operations to cache servers. This architecture is what enables us to add capacity without requiring you to take any action. \")]),_c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(\"Login\")]),_vm._v(\" to Memcachier.\")]),_c('li',[_vm._v(\"Select \"),_c('strong',[_vm._v(\"Your Caches\")]),_vm._v(\" from the menu bar\")]),_c('li',[_vm._v(\"Press the \\\"Analytics Dashboard\\\" button next to the cache.\")])])])]),_c('h2',[_vm._v(\"Buttons\")]),_c('div',{staticClass:\"grid-b items-spacing\"},[_c('div',[_c('h3',[_vm._v(\"Default State\")]),_c('ul',[_vm._l((_vm.buttonClasses),function(buttonClass,index){return _c('li',{key:index},[_c('BaseButton',{attrs:{\"buttonClass\":buttonClass}},[_vm._v(\" \"+_vm._s(buttonClass)+\" \")])],1)}),_c('li',[_c('p',[_vm._v(\"Icon only button:\")]),_c('BaseButton',{attrs:{\"buttonClass\":\"button-icon-only\"}},[_c('BaseIcon',{attrs:{\"icon\":\"twitter\"}})],1)],1),_c('li',[_c('a',{staticClass:\"button\",attrs:{\"href\":\"#\"}},[_vm._v(\"Button style link\")])]),_c('li',[_c('p',[_vm._v(\"Button with tooltip:\")]),_c('BaseButton',{attrs:{\"tooltipTitle\":\"Move your cache to a different cluster\"}},[_c('BaseIcon',{attrs:{\"icon\":\"random\"}}),_vm._v(\" Change Clusters \")],1)],1)],2)]),_c('div',[_c('h3',[_vm._v(\"Active State\")]),_c('ul',[_vm._l((_vm.buttonClasses),function(buttonClass,index){return _c('li',{key:index},[_c('BaseButton',{attrs:{\"buttonClass\":buttonClass,\"isActive\":\"active\"}},[_vm._v(\" \"+_vm._s(buttonClass)+\" \")])],1)}),_c('li',[_c('p',[_vm._v(\"Icon only button:\")]),_c('BaseButton',{attrs:{\"buttonClass\":\"button-icon-only\",\"isActive\":\"active\"}},[_c('BaseIcon',{attrs:{\"icon\":\"twitter\"}})],1)],1)],2)])]),_c('div',{staticClass:\"grid-b items-spacing\"},[_c('div',[_c('h2',[_vm._v(\"Notices\")]),_c('p',[_vm._v(\"Appear within content\")]),_c('ul',_vm._l((_vm.notificationTypes),function(type,name,index){return _c('li',{key:index},[_c('BaseNotice',{attrs:{\"type\":type}},[_vm._v(\" \"+_vm._s(type)+\" \")])],1)}),0)]),_c('div',[_c('h2',[_vm._v(\"Notifications\")]),_c('p',[_vm._v(\"Float over content\")]),_c('ul',_vm._l((_vm.notificationTypes),function(type,name,index){return _c('li',{key:index},[_c('AppNotificationBar',{attrs:{\"notification\":{ type: type, message: type }}})],1)}),0)])]),_c('h2',[_vm._v(\"Table .table\")]),_c('BaseTable',{attrs:{\"cols\":\"1\"}},[_c('tbody',[_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\" Limit \")]),_c('td',{attrs:{\"data-th\":\"Limit\"}},[_vm._v(\"25MB\")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\" Cache Name \")]),_c('td',{attrs:{\"data-th\":\"Cache Name\"}},[_vm._v(\"650758\")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\" Cluster \")]),_c('td',{attrs:{\"data-th\":\"Cluster\"}},[_vm._v(\"EC2-Staging-C1\")])])])]),_c('div',{staticClass:\"grid-b dashboard-component-background\"},[_c('div',[_c('h2',[_vm._v(\"Memory\")]),_c('BaseCard',[_c('BaseStats',{attrs:{\"stats\":[\n {\n value: '5MB/25MB',\n label: 'memory used / total memory',\n small: true,\n } ]}}),_c('DonutChart',{staticClass:\"chart-donut-sample\",attrs:{\"values\":_vm.sampleChartValues}}),_c('OverviewFlushCache')],1)],1),_c('div',[_c('div',[_c('h2',[_vm._v(\"Connections\")]),_c('BaseCard',[_c('BaseStats',{attrs:{\"stats\":[\n {\n value: '3',\n label: 'active connections',\n },\n {\n value: '3,435',\n label: 'all time connections',\n } ]}})],1)],1),_c('div',[_c('h2',[_vm._v(\"Hit Rate\")]),_c('BaseCard',[_c('BaseStats',{attrs:{\"stats\":[\n {\n value: '54,654.00',\n label: 'huge stat',\n },\n {\n value: '3,435,000',\n label: 'big stat',\n } ]}})],1)],1),_c('div',[_c('h2',[_vm._v(\"Issues\")]),_c('BaseCard',[_vm._v(\" You can use any memcache client library that supports SASL authentication to connect to MemCachier. \")])],1)])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport LayoutFullWidth from \"@/components/layouts/LayoutFullWidth.vue\";\nimport AppNotificationBar from \"@/components/AppNotificationBar.vue\";\nimport DonutChart from \"@/components/DonutChart.vue\";\nimport OverviewFlushCache from \"@/components/OverviewFlushCache.vue\";\nimport HeadingButtons from \"@/components/HeadingButtons.vue\";\nimport { NotificationType } from \"@/types/notification\";\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component({\n components: {\n LayoutFullWidth,\n AppNotificationBar,\n DonutChart,\n OverviewFlushCache,\n HeadingButtons,\n },\n})\nexport default class StyleGuideView extends Vue {\n buttonClasses = [\"default\", \"button-primary\", \"button-secondary\", \"button-warning\", \"button-alert\"];\n\n get notificationTypes() {\n return NotificationType;\n }\n\n get sampleChartValues() {\n return [\n { label: \"memory used\", value: 33 },\n { label: \"memory available\", value: 67 },\n ];\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StyleGuideView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StyleGuideView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./StyleGuideView.vue?vue&type=template&id=09963eb2&scoped=true&\"\nimport script from \"./StyleGuideView.vue?vue&type=script&lang=ts&\"\nexport * from \"./StyleGuideView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./StyleGuideView.vue?vue&type=style&index=0&id=09963eb2&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"09963eb2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"title-horz-buttons\"},[_c('h1',[_vm._v(\"Compound Stats\")]),_c('TimeRangeControls')],1),_c('div',{staticClass:\"grid-half-charts\"},[_c('div',[_c('h2',[_vm._v(\"Touched Items\")]),_c('BaseChart',{attrs:{\"chartID\":\"compoundNumKeys\",\"series\":_vm.series('compoundNumKeys')}})],1),_c('div',[_c('h2',[_vm._v(\"Touched Memory\")]),_c('BaseChart',{attrs:{\"chartID\":\"compoundSizeAbsolute\",\"series\":_vm.series('compoundSizeAbsolute')}})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport TimeRangeControls from \"@/components/TimeRangeControls.vue\";\nimport { COMPOUND_STATS_LIFETIME } from \"@/config/series\";\nimport { Series } from \"@/types/common\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component({ components: { TimeRangeControls } })\nexport default class CompoundStatsView extends Vue {\n created() {\n this.$store.dispatch(\"debugMode/fetchCompoundStatsByTimeRange\");\n\n // Refetch data periodically\n this.intervalID = setInterval(() => {\n this.$store.dispatch(\"debugMode/fetchCompoundStatsByTimeRange\");\n }, COMPOUND_STATS_LIFETIME);\n }\n\n beforeDestroy() {\n // Refetch data clean up\n clearInterval(this.intervalID);\n }\n\n @Getter(\"debugMode/compoundStatsSeries\") series!: (chartID: string) => false | Series;\n\n intervalID = 0;\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CompoundStatsView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CompoundStatsView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CompoundStatsView.vue?vue&type=template&id=11a4980f&scoped=true&\"\nimport script from \"./CompoundStatsView.vue?vue&type=script&lang=ts&\"\nexport * from \"./CompoundStatsView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"11a4980f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"title-horz-buttons\"},[_c('h1',[_vm._v(\"Slab Stats\")]),_c('TimeRangeControls')],1),_c('h2',[_vm._v(\"Memory\")]),_c('BaseChart',{attrs:{\"chartID\":\"slabSize\",\"series\":_vm.series('slabSize')}}),_c('h2',[_vm._v(\"Items\")]),_c('BaseChart',{attrs:{\"chartID\":\"slabItems\",\"series\":_vm.series('slabItems')}}),_c('h2',[_vm._v(\"Eviction Rate\")]),_c('BaseChart',{attrs:{\"chartID\":\"slabEvictionRate\",\"series\":_vm.series('slabEvictionRate')}}),_c('h2',[_vm._v(\"Eviction Unexpired Rate\")]),_c('BaseChart',{attrs:{\"chartID\":\"slabEvictionUnexpire\",\"series\":_vm.series('slabEvictionUnexpire')}}),_c('h2',[_vm._v(\"Outofmemory\")]),_c('BaseChart',{attrs:{\"chartID\":\"slabOutofmemory\",\"series\":_vm.series('slabOutofmemory')}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport TimeRangeControls from \"@/components/TimeRangeControls.vue\";\nimport { Series } from \"@/types/common\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { State, Getter } from \"vuex-class\";\n\n@Component({ components: { TimeRangeControls } })\nexport default class SlabStatsView extends Vue {\n created() {\n if (!this.processedStatsFetched) {\n this.$store.dispatch(\"debugMode/fetchProcessedSlabStatsByTimeRange\");\n }\n }\n\n @State(state => state.debugMode.processedSlabStatsFetched)\n processedStatsFetched!: boolean;\n\n @Getter(\"debugMode/slabStatsSeries\") series!: (chartID: string) => false | Series;\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SlabStatsView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SlabStatsView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SlabStatsView.vue?vue&type=template&id=42fc3ae6&scoped=true&\"\nimport script from \"./SlabStatsView.vue?vue&type=script&lang=ts&\"\nexport * from \"./SlabStatsView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42fc3ae6\",\n null\n \n)\n\nexport default component.exports","import { decodeJWT } from \"@/utils/jwt\";\nimport { SET_CACHE_AUTH, SET_ACTIVE_CACHE_ID } from \"@/store/mutation-types\";\n\nimport Vue from \"vue\";\nimport Router from \"vue-router\";\nimport store from \"@/store\";\n\n// Login\nimport LoginView from \"@/views/analytics/LoginView.vue\";\n\n// Cache\nimport CacheView from \"@/views/cache/index.vue\";\nimport OverviewView from \"@/views/cache/OverviewView.vue\";\nimport MetricsView from \"@/views/cache/MetricsView.vue\";\nimport MetricView from \"@/views/cache/MetricView.vue\";\nimport AlertsView from \"@/views/cache/AlertsView.vue\";\nimport SettingsView from \"@/views/analytics/cache/SettingsView.vue\";\nimport ConsultingView from \"@/views/cache/ConsultingView.vue\";\n\n// Cache > Introspection\nimport IntrospectionView from \"@/views/cache/introspection/index.vue\";\nimport PopularKeysView from \"@/views/cache/introspection/PopularKeysView.vue\";\n\n// Cache > Introspection > Keys\nimport KeysView from \"@/views/cache/introspection/keys/index.vue\";\n\nimport PrefixesView from \"@/views/cache/introspection/PrefixesView.vue\";\n\n// Cache > Introspection > Prefixes > Prefix\nimport PrefixView from \"@/views/cache/introspection/prefix/index.vue\";\nimport PrefixOverviewView from \"@/views/cache/introspection/prefix/OverviewView.vue\";\n\n// Cache > Introspection > Recent Requests\nimport RecentRequestsView from \"@/views/cache/introspection/RecentRequestsView.vue\";\n\n// Style guide\nimport StyleGuideView from \"@/views/StyleGuideView.vue\";\n\n// Playground (admin only routes)\nimport CompoundStatsView from \"@/views/cache/playground/CompoundStatsView.vue\";\nimport SlabStatsView from \"@/views/cache/playground/SlabStatsView.vue\";\n\nVue.use(Router);\n\n// All routes require auth by default\nconst router = new Router({\n base: process.env.BASE_URL,\n routes: [\n {\n // Redirect\n path: \"/\",\n name: \"home\",\n beforeEnter: (to, from, next) => {\n const decodedJWT = decodeJWT(localStorage.getItem(\"token\"));\n\n if (decodedJWT && decodedJWT.cache_id) {\n next({\n name: \"overview\",\n params: { cacheId: decodedJWT.cache_id.toString() },\n });\n return;\n }\n\n next({ name: \"login\" });\n return;\n },\n },\n {\n path: \"/login\",\n name: \"login\",\n component: LoginView,\n meta: { requiresAuth: false },\n },\n {\n path: \"/sso/:token\",\n name: \"sso\",\n meta: { requiresAuth: false },\n beforeEnter: (to, from, next) => {\n const token = to.params.token;\n\n const decodedJWT = decodeJWT(token);\n\n if (decodedJWT && decodedJWT.cache_id) {\n store.commit(SET_CACHE_AUTH, token);\n store.commit(SET_ACTIVE_CACHE_ID, decodedJWT.cache_id.toString());\n\n next({\n name: \"overview\",\n params: { cacheId: decodedJWT.cache_id.toString() },\n });\n return;\n }\n // falsy or malformed token\n next({ name: \"login\" });\n return;\n },\n },\n {\n path: \"/caches/:cacheId\",\n component: CacheView,\n children: [\n {\n path: \"\",\n name: \"overview\",\n component: OverviewView,\n },\n {\n path: \"metrics\",\n name: \"metrics\",\n component: MetricsView,\n },\n {\n path: \"metrics/:metricId\",\n name: \"metric\",\n component: MetricView,\n },\n {\n path: \"settings\",\n name: \"settings\",\n component: SettingsView,\n },\n {\n path: \"consulting\",\n name: \"consulting\",\n component: ConsultingView,\n },\n {\n path: \"introspection\",\n name: \"introspection\",\n component: IntrospectionView,\n },\n {\n path: \"introspection/keys\",\n component: KeysView,\n children: [\n {\n // hit, missed, mutated\n path: \"popular-keys/:keyCat\",\n alias: \"\",\n name: \"popularKeys\",\n component: PopularKeysView,\n },\n ],\n },\n {\n path: \"introspection/prefixes\",\n name: \"prefixes\",\n component: PrefixesView,\n },\n {\n path: \"introspection/prefixes/:prefixId\",\n component: PrefixView,\n children: [\n {\n path: \"\",\n name: \"prefixOverview\",\n component: PrefixOverviewView,\n },\n {\n // hit, missed, mutated\n path: \"popular-keys/:keyCat\",\n alias: \"\",\n name: \"prefixPopularKeys\",\n component: PopularKeysView,\n },\n ],\n },\n {\n path: \"introspection/recent-requests\",\n name: \"recentRequests\",\n component: RecentRequestsView,\n },\n {\n path: \"alerts\",\n name: \"alerts\",\n component: AlertsView,\n },\n {\n path: \"compound-stats\",\n name: \"compoundStats\",\n component: CompoundStatsView,\n },\n {\n path: \"slab-stats\",\n name: \"slabStats\",\n component: SlabStatsView,\n },\n ],\n },\n {\n path: \"/style-guide\",\n name: \"styleGuide\",\n component: StyleGuideView,\n },\n ],\n});\n\nrouter.beforeEach((to, from, next) => {\n // If route requires auth\n if (to.matched.some(record => record.meta.requiresAuth !== false)) {\n if (!decodeJWT(localStorage.getItem(\"token\"))) {\n // Redirect to the login view if no token found and route requires auth\n next({ name: \"login\" });\n return;\n }\n }\n\n next();\n});\n\n// Google Analytics page views\nrouter.afterEach(to => {\n let path = to.path;\n\n // Google Analytics docs on removing inconsistent things, like cache ID:\n // https://developers.google.com/analytics/devguides/collection/analyticsjs/pages#modifying_page_urls\n if (to.params && to.params.cacheId) {\n const cachePath = `caches/${to.params.cacheId}`;\n if (path.indexOf(cachePath) > -1) {\n // e.g. /#/caches/170/alerts => /#/caches/alerts\n path = path.replace(cachePath, \"caches\");\n }\n }\n if (to.params && to.params.prefixId) {\n const prefixPath = `prefixes/${to.params.prefixId}`;\n if (path.indexOf(prefixPath) > -1) {\n // e.g. /#/caches/introspection/prefixes/3/popular-keys/hit => /#/caches/introspection/prefixes/id/popular-keys/hit\n // replace with `id` to differentiate between /prefixes/ and /prefixes/\n path = path.replace(prefixPath, \"prefixes/id\");\n }\n }\n\n // `page` must be set, because Google Analytics ignores the `#/...`\n window.ga(\"set\", \"page\", path);\n window.ga(\"send\", \"pageview\");\n});\n\nexport default router;\n","declare global {\n interface Window {\n ga: any;\n }\n}\n\nconst pageview = () => {\n window.ga(\"send\", \"pageview\");\n};\n\nconst page = (path: string) => {\n window.ga(\"set\", \"page\", \"/\" + path);\n pageview();\n};\n\nconst bucket = (bucket: string) => {\n window.ga(\"set\", \"dimension1\", bucket);\n};\n\nconst button = (title: string) => {\n window.ga(\"send\", \"event\", \"Button\", title);\n};\n\nconst toggle = (title: string) => {\n window.ga(\"send\", \"event\", \"Toggle\", title);\n};\n\nconst checkbox = (label: string, checked: boolean) => {\n window.ga(\"send\", \"event\", \"Checkbox\", label, checked.toString());\n};\n\n/**\n * Make sure to update the type definition for each new method added\n * in `@/plugins/google-analytics/index.ts`\n */\n\nexport default {\n pageview,\n page,\n bucket,\n button,\n toggle,\n checkbox,\n};\n","import lib from \"./lib\";\nimport { VueConstructor } from \"vue\";\n\ndeclare module \"vue/types/vue\" {\n interface Vue {\n $ga: {\n pageview: () => void;\n page: (path: string) => void;\n bucket: (bucket: string) => void;\n button: (title: string) => void;\n toggle: (title: string) => void;\n checkbox: (label: string, checked: boolean) => void;\n };\n }\n}\n\nexport default function install(Vue: VueConstructor) {\n Vue.prototype.$ga = lib;\n}\n","export default (value: number) => {\n return value.toLocaleString();\n};\n","import \"font-awesome/scss/font-awesome.scss\";\n\nimport upperFirst from \"lodash/upperFirst\";\nimport camelCase from \"lodash/camelCase\";\nimport App from \"@/analytics/App.vue\";\nimport router from \"@/router/router-ANALYTICS\";\nimport store from \"@/store\";\n\nimport Vue from \"vue\";\n\nimport GoogleAnalytics from \"@/plugins/google-analytics/index\";\n\nimport NumberFilter from \"@/filters/number\";\n\nimport { SET_CACHE_AUTH } from \"@/store/mutation-types\";\n\nimport { adminConsoleNotice } from \"@/utils/admin\";\n\nadminConsoleNotice();\n\nVue.config.productionTip = false;\n\n// Automatic Global Registration of `Base*` components\nconst requireComponent = require.context(\"@/components\", false, /Base[A-Z]\\w+\\.(vue|ts)$/);\nrequireComponent.keys().forEach(fileName => {\n const componentConfig = requireComponent(fileName);\n const componentName = upperFirst(camelCase(fileName.replace(/^\\.\\/(.*)\\.\\w+$/, \"$1\")));\n Vue.component(componentName, componentConfig.default || componentConfig);\n});\n\nVue.use(GoogleAnalytics);\n\nVue.filter(\"number\", NumberFilter);\nnew Vue({\n router,\n store,\n created() {\n // auto-login user\n const token = localStorage.getItem(\"token\");\n if (token) {\n this.$store.commit(SET_CACHE_AUTH, token);\n }\n },\n render: h => h(App),\n}).$mount(\"#app\");\n","export type NotificationState = {\n notifications: NotificationSingle[];\n};\n\n// Naming `NotificationSingle` instead of `Notification`\n// because of conflict with Notification API interface\nexport type NotificationSingle = {\n type: NotificationType;\n message: string;\n id?: number;\n};\n\nexport enum NotificationType {\n SUCCESS = \"success\",\n ERROR = \"error\",\n WARNING = \"warning\",\n INFO = \"info\",\n DEFAULT = \"\",\n}\n\n// Issue\nexport type Issue = {\n type: NotificationType;\n message: string;\n icon: string; // e.g. exclamation-circle\n};\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavWrap.vue?vue&type=style&index=0&id=6e7d55b0&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavWrap.vue?vue&type=style&index=0&id=6e7d55b0&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopularKey.vue?vue&type=style&index=0&id=d25ed936&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopularKey.vue?vue&type=style&index=0&id=d25ed936&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/banner-small.f9d67941.png\";","module.exports = \"data:image/png;base64,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\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseChart.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseChart.vue?vue&type=style&index=0&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseStats.vue?vue&type=style&index=0&id=3b92bda1&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseStats.vue?vue&type=style&index=0&id=3b92bda1&scoped=true&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsView.vue?vue&type=style&index=0&id=1fe5878a&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsView.vue?vue&type=style&index=0&id=1fe5878a&scoped=true&lang=scss&\"","export enum TimeRange {\n LAST_HOUR = \"LAST_HOUR\",\n LAST_DAY = \"LAST_DAY\",\n LAST_WEEK = \"LAST_WEEK\",\n LAST_MONTH = \"LAST_MONTH\",\n}\n\n// For iterating over TimeRange\n// as Typescript complains when iterating over an enum\nexport const TIME_RANGES = [\"LAST_HOUR\", \"LAST_DAY\", \"LAST_WEEK\", \"LAST_MONTH\"];\n","module.exports = __webpack_public_path__ + \"img/logo-medium.f2711ed9.png\";","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BarChartRow.vue?vue&type=style&index=0&id=48278163&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BarChartRow.vue?vue&type=style&index=0&id=48278163&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseButton.vue?vue&type=style&index=0&id=7cd1aae1&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseButton.vue?vue&type=style&index=0&id=7cd1aae1&scoped=true&lang=scss&\"","import { Series } from \"@/types/common\";\n\nexport const STATS_CONFIG: { [propName: string]: string } = {\n bytes: \"memory used\",\n max_bytes: \"memory limit\",\n items: \"items\",\n eviction_rate: \"evictions\",\n get_expired_rate: \"get expired\",\n hit_rate: \"overall hit rate\",\n get_hit_rate: \"get\",\n delete_hit_rate: \"delete\",\n incr_hit_rate: \"incr\",\n decr_hit_rate: \"decr\",\n cas_hit_rate: \"cas\",\n touch_hit_rate: \"touch\",\n get_fraction: \"get\",\n set_fraction: \"set\",\n delete_fraction: \"delete\",\n incr_fraction: \"incr\",\n decr_fraction: \"decr\",\n cas_fraction: \"cas\",\n touch_fraction: \"touch\",\n flush_fraction: \"flush\",\n request_rate: \"overall requests\",\n get_rate: \"get\",\n set_rate: \"set\",\n delete_rate: \"delete\",\n incr_rate: \"incr\",\n decr_rate: \"decr\",\n cas_rate: \"cas\",\n touch_rate: \"touch\",\n flush_rate: \"flush\",\n connections: \"active connections\",\n connection_rate: \"new connection rate\",\n bytes_read_rate: \"bytes received by server\",\n bytes_write_rate: \"bytes sent to client\",\n // Debug Mode\n prefix_num_keys: \"prefix recently touched items\",\n prefix_total_size: \"prefix recently touched memory\",\n prefix_total_hits_rate: \"total hits\",\n prefix_total_misses_rate: \"total misses\",\n prefix_total_mutations_rate: \"total mutations\",\n prefix_hit_rate: \"prefix hit rate\",\n prefix_requests: \"prefix requests\",\n compound_num_keys: \"total recently touched items\",\n compound_total_size: \"total recently touched memory\",\n compound_total_hits_rate: \"total hits\",\n compound_total_misses_rate: \"total misses\",\n compound_total_mutations_rate: \"total mutations\",\n compound_hit_rate: \"total hit rate\",\n compound_requests: \"total requests\",\n prefix_over_compound_total_hits_rate: \"total hits fraction\",\n prefix_over_compound_total_misses_rate: \"total misses fraction\",\n prefix_over_compound_total_mutations_rate: \"total mutations fraction\",\n prefix_over_compound_requests: \"request fraction\", // corresponding CSS width $label-requests-width\n prefix_over_compound_total_size: \"memory fraction\", // corresponding CSS width $label-memory-width\n prefix_over_compound_num_keys: \"items fraction\", // corresponding CSS width $label-items-width\n key_size: \"key size\",\n key_hit_count: \"key hit count per 10 mins\",\n key_miss_count: \"key miss count per 10 mins\",\n key_mutation_count: \"key mutation count per 10 mins\",\n key_hit_count_per_sec: \"key hit count\",\n key_miss_count_per_sec: \"key miss count\",\n key_mutation_count_per_sec: \"key mutation count\",\n // Debug Mode: Slab Stabs\n // TODO need to revisit slab stat aggregate type\n items_64: \"64B\",\n bytes_64: \"64B\",\n eviction_rate_64: \"64B\",\n eviction_unexpired_rate_64: \"64B\",\n outofmemory_64: \"64B\",\n items_128: \"128B\",\n bytes_128: \"128B\",\n eviction_rate_128: \"128B\",\n eviction_unexpired_rate_128: \"128B\",\n outofmemory_128: \"128B\",\n items_256: \"256B\",\n bytes_256: \"256B\",\n eviction_rate_256: \"256B\",\n eviction_unexpired_rate_256: \"256B\",\n outofmemory_256: \"256B\",\n items_512: \"512B\",\n bytes_512: \"512B\",\n eviction_rate_512: \"512B\",\n eviction_unexpired_rate_512: \"512B\",\n outofmemory_512: \"512B\",\n items_1024: \"1,024B\",\n bytes_1024: \"1,024B\",\n eviction_rate_1024: \"1,024B\",\n eviction_unexpired_rate_1024: \"1,024B\",\n outofmemory_1024: \"1,024B\",\n items_2048: \"2,048B\",\n bytes_2048: \"2,048B\",\n eviction_rate_2048: \"2,048B\",\n eviction_unexpired_rate_2048: \"2,048B\",\n outofmemory_2048: \"2,048B\",\n items_4096: \"4,096B\",\n bytes_4096: \"4,096B\",\n eviction_rate_4096: \"4,096B\",\n eviction_unexpired_rate_4096: \"4,096B\",\n outofmemory_4096: \"4,096B\",\n items_8129: \"8,129B\",\n bytes_8129: \"8,129B\",\n eviction_rate_8129: \"8,129B\",\n eviction_unexpired_rate_8129: \"8,129B\",\n outofmemory_8129: \"8,129B\",\n items_16384: \"16,384B\",\n bytes_16384: \"16,384B\",\n eviction_rate_16384: \"16,384B\",\n eviction_unexpired_rate_16384: \"16,384B\",\n outofmemory_16384: \"16,384B\",\n items_32768: \"32,768B\",\n bytes_32768: \"32,768B\",\n eviction_rate_32768: \"32,768B\",\n eviction_unexpired_rate_32768: \"32,768B\",\n outofmemory_32768: \"32,768B\",\n items_65536: \"65,536B\",\n bytes_65536: \"65,536B\",\n eviction_rate_65536: \"65,536B\",\n eviction_unexpired_rate_65536: \"65,536B\",\n outofmemory_65536: \"65,536B\",\n items_131072: \"131,072B\",\n bytes_131072: \"131,072B\",\n eviction_rate_131072: \"131,072B\",\n eviction_unexpired_rate_131072: \"131,072B\",\n outofmemory_131072: \"131,072B\",\n items_262144: \"262,144B\",\n bytes_262144: \"262,144B\",\n eviction_rate_262144: \"262,144B\",\n eviction_unexpired_rate_262144: \"262,144B\",\n outofmemory_262144: \"262,144B\",\n items_524288: \"524,288B\",\n bytes_524288: \"524,288B\",\n eviction_rate_524288: \"524,288B\",\n eviction_unexpired_rate_524288: \"524,288B\",\n outofmemory_524288: \"524,288B\",\n items_1048576: \"1,048,576B\",\n bytes_1048576: \"1,048,576B\",\n eviction_rate_1048576: \"1,048,576B\",\n eviction_unexpired_rate_1048576: \"1,048,576B\",\n outofmemory_1048576: \"1,048,576B\",\n // Watcher stats\n skipped: \"skipped\",\n drift: \"drift\",\n restarts: \"restarts\",\n dropped: \"dropped\",\n processed: \"processed\",\n skipped_fraction: \"skipped fraction\",\n dropped_fraction: \"dropped fraction\",\n processed_fraction: \"processed fraction\",\n // Raw InfluxDB query stats\n idle: \"idle\",\n user: \"user\",\n system: \"system\",\n total: \"total\",\n free: \"free\",\n softirq: \"softirq\",\n steal: \"steal\",\n nice: \"nice\",\n irq: \"irq\",\n iowait: \"iowait\",\n guest: \"guest\",\n guest_nice: \"guest_nice\",\n};\n\n// Processed stats to be included in the compound metrics series\n// added in modules/debug-mode\nexport const COMPOUND_METRICS_PROCESSED_STATS = [\"items\", \"bytes\", \"hit_rate\"];\n\n// Custom stats created by calculating a prefix stats value as a %\n// of a corresponding compound stats.\n// calculated in utils/debug-mode\nexport const PREFIX_COMPOUND_METRIC_PREFIX = \"prefix_over_compound_\";\nexport const PREFIX_COMPOUND_METRICS = [\n PREFIX_COMPOUND_METRIC_PREFIX + \"num_keys\",\n PREFIX_COMPOUND_METRIC_PREFIX + \"total_size\",\n PREFIX_COMPOUND_METRIC_PREFIX + \"total_hits_rate\",\n PREFIX_COMPOUND_METRIC_PREFIX + \"total_misses_rate\",\n PREFIX_COMPOUND_METRIC_PREFIX + \"total_mutations_rate\",\n PREFIX_COMPOUND_METRIC_PREFIX + \"requests\",\n] as const;\n\nexport const KEY_METRICS = [\n \"time\",\n \"key_name\",\n \"key_size\",\n \"key_hit_count\",\n \"key_miss_count\",\n \"key_mutation_count\",\n // calculated in modules/debug-mode\n \"key_hit_rate\",\n \"key_hit_count_per_sec\",\n \"key_miss_count_per_sec\",\n \"key_mutation_count_per_sec\",\n];\n\n// Used instead of the `prefix_hit_rate` stat label `prefix hit rate`\n// because the `prefix_` is not desired\nexport const PREFIX_HIT_RATE_LABEL = \"hit rate\"; // corresponding CSS width $label-hitrate-width\n\nexport const HELP_PREFIX_FRACTION_REQUESTS = \"% of recent requests\";\nexport const HELP_PREFIX_FRACTION_ITEMS = \"% of recently active items\";\nexport const HELP_PREFIX_FRACTION_MEMORY = \"% of recently active memory\";\n\n// Subtract 1s, 1000ms, to allow margin to refetch more consistently.\n// Otherwise time comparison will fluctuate by a tiny amount, occasionally preventing\n// refetching when data was only valid for another few ms.\nexport const LIFETIME_MARGIN = 1000; // 1s in ms\n\n// Duration for which data is valid (up to date)\nexport const COMPOUND_STATS_LIFETIME = 1000 * 60 * 10; // 10 mins in ms\nexport const PREFIX_STATS_LIFETIME = 1000 * 60 * 10; // 10 mins in ms\nexport const POPULAR_ITEMS_LIFETIME = 1000 * 60 * 10; // 10 mins in ms\nexport const PREFIX_POPULAR_ITEMS_LIFETIME = 1000 * 60 * 10; // 10 mins in ms\nexport const PROCESSED_STATS_LIFETIME = 1000 * 60 * 10; // 10 mins in ms\nexport const STATS_LIFETIME = 1000 * 60 * 10; // 10 mins in ms\n\n// For creating a fresh empty series array, without reference\nexport function emptySeriesArray(): Series[] {\n return [\n {\n columns: [],\n name: \"\",\n values: [],\n },\n ];\n}\n\n// The max number of prefixes that can be created on the highest MemCachier plan.\n// For Analytics only. Eventually will probably make sense to be sent from the backend.\nexport const PREFIX_MAX = 100;\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNavHeroku.vue?vue&type=style&index=0&id=696c6457&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNavHeroku.vue?vue&type=style&index=0&id=696c6457&scoped=true&lang=scss&\"","var map = {\n\t\"./BaseActions.vue\": \"10fb\",\n\t\"./BaseBadge.vue\": \"f869\",\n\t\"./BaseButton.vue\": \"82ea\",\n\t\"./BaseButtonRefresh.vue\": \"8d2f\",\n\t\"./BaseCard.vue\": \"ff7d\",\n\t\"./BaseChart.vue\": \"0737\",\n\t\"./BaseIcon.vue\": \"7461\",\n\t\"./BaseLoading.vue\": \"5d10\",\n\t\"./BaseNoDataDefault.vue\": \"028c\",\n\t\"./BaseNotice.vue\": \"646e\",\n\t\"./BaseStats.vue\": \"387e\",\n\t\"./BaseTable.vue\": \"3de1\",\n\t\"./BaseTooltip.vue\": \"7282\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"e654\";","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsDeliveryConfigItem.vue?vue&type=style&index=0&id=51941fca&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsDeliveryConfigItem.vue?vue&type=style&index=0&id=51941fca&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/banner-large.1dd5d01d.png\";","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopularKeysView.vue?vue&type=style&index=0&id=2f59b6ec&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopularKeysView.vue?vue&type=style&index=0&id=2f59b6ec&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadingButtons.vue?vue&type=style&index=0&id=7cee73f5&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadingButtons.vue?vue&type=style&index=0&id=7cee73f5&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"badge\",class:(\"badge-\" + _vm.type),attrs:{\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.type))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class BaseBadge extends Vue {\n @Prop({ required: true })\n type!: \"beta\" | \"new\" | \"offer\";\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseBadge.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseBadge.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseBadge.vue?vue&type=template&id=5ae5b57a&scoped=true&\"\nimport script from \"./BaseBadge.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseBadge.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BaseBadge.vue?vue&type=style&index=0&id=5ae5b57a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ae5b57a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:_vm.helpClass,staticClass:\"card\",class:[_vm.growClass, _vm.darkClass, _vm.helpClass, _vm.helpOpenClass, _vm.disabledClass, _vm.buttonClass, _vm.issueType]},[(_vm.help)?_c('div',[_c('div',[_vm._t(\"default\")],2),_c('button',{staticClass:\"read-more\",class:_vm.readMoreButtonClass,attrs:{\"aria-hidden\":\"true\"},on:{\"click\":_vm.toggleReadMore}},[_vm._v(\" \"+_vm._s(_vm.readMoreTitle)+\" \")])]):_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { NotificationType } from \"@/types/notification\";\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class BaseCard extends Vue {\n mounted() {\n if (this.help) {\n const help: any = this.$refs.help;\n\n if (help.scrollHeight > help.clientHeight) {\n this.showReadMoreButton = true;\n }\n }\n }\n\n @Prop({ required: false, default: false })\n grow!: boolean;\n\n @Prop({ required: false, default: false })\n dark!: boolean;\n\n @Prop({ required: false, default: false })\n help!: boolean;\n\n @Prop({ required: false, default: false })\n isDisabled!: boolean;\n\n @Prop({ required: false, default: false })\n isButton!: boolean;\n\n @Prop({ required: false, default: NotificationType.DEFAULT })\n issueType!: NotificationType;\n\n showReadMore = false;\n\n showReadMoreButton = false;\n\n get growClass() {\n return this.grow ? \"grow\" : \"\";\n }\n\n get darkClass() {\n return this.dark ? \"dark\" : \"\";\n }\n\n get helpClass() {\n return this.help ? \"help\" : \"\";\n }\n\n get helpOpenClass() {\n return this.showReadMore ? \"open\" : \"\";\n }\n\n get readMoreButtonClass() {\n return this.showReadMoreButton ? \"show\" : \"\";\n }\n\n get readMoreTitle() {\n return this.showReadMore ? \"Read Less\" : \"Read More\";\n }\n\n get disabledClass() {\n return this.isDisabled ? \"disabled\" : \"\";\n }\n\n get buttonClass() {\n return this.isButton ? \"is-button\" : \"\";\n }\n\n toggleReadMore() {\n this.showReadMore = !this.showReadMore;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseCard.vue?vue&type=template&id=438ed889&\"\nimport script from \"./BaseCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BaseCard.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsCredentialsItem.vue?vue&type=style&index=0&id=54637135&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsCredentialsItem.vue?vue&type=style&index=0&id=54637135&scoped=true&lang=scss&\""],"sourceRoot":""}