{"version":3,"file":"chunks/32e47efd1c08b1.js","mappings":"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","sources":["webpack:///./node_modules/@atlassian/ufo-round-number/dist/es2019/index.js","webpack:///./node_modules/@atlassian/ufo-custom-timings/dist/es2019/index.js","webpack:///./node_modules/@atlassian/ufo-initial-page-load-extra-timing/dist/es2019/index.js","webpack:///./node_modules/@atlassian/ufo-resource-timing/dist/es2019/common/utils/resource-timing-buffer.js","webpack:///./node_modules/@atlassian/ufo-resource-timing/dist/es2019/main.js","webpack:///./node_modules/@atlassian/ufo-ssr/dist/es2019/index.js","webpack:///./node_modules/@atlassian/ufo-create-payload/dist/es2019/common/utils/index.js","webpack:///./node_modules/@atlassian/ufo-create-payload/dist/es2019/index.js","webpack:///./node_modules/@atlassian/ufo-bundle-eval-timing/dist/es2019/index.js"],"sourcesContent":["export const roundEpsilon = (num, places = 3) => {\n  const factor = Math.pow(10, places);\n  return Math.round((num + Number.EPSILON) * factor) / factor;\n};","import { useContext, useMemo } from 'react';\nimport UFOInteractionContext from '@atlassian/ufo-interaction-context';\nimport { getInteractionId } from '@atlassian/ufo-interaction-id-context';\nimport { addCustomTiming, getCurrentInteractionType } from '@atlassian/ufo-interaction-metrics';\nexport function getBm3Timings(marks, timingConfigs) {\n  const bm3Timings = {};\n  if (!marks || !timingConfigs) {\n    return bm3Timings;\n  }\n  timingConfigs.forEach(item => {\n    if (!item.startMark || !item.endMark) {\n      return;\n    }\n    const startTime = marks[item.startMark];\n    if (!startTime) {\n      return;\n    }\n    const endTime = marks[item.endMark];\n    if (!endTime) {\n      return;\n    }\n    bm3Timings[item.key] = {\n      startTime,\n      endTime\n    };\n  });\n  return bm3Timings;\n}\nexport function UFOBM3TimingsToUFO({\n  marks,\n  timings\n}) {\n  const interactionContext = useContext(UFOInteractionContext);\n  const interactionId = getInteractionId().current;\n  useMemo(() => {\n    if (interactionContext != null && interactionId != null && marks != null && timings != null) {\n      const interactionType = getCurrentInteractionType(interactionId);\n      if (interactionType === 'press') {\n        return;\n      }\n      const bm3Timings = getBm3Timings(marks, timings);\n      interactionContext.addCustomTimings(bm3Timings);\n    }\n  }, [interactionContext, interactionId, marks, timings]);\n  return null;\n}\nexport function addBM3TimingsToUFO(marks, timingsConfig) {\n  const interactionId = getInteractionId().current;\n  if (interactionId) {\n    const interactionType = getCurrentInteractionType(interactionId);\n    if (interactionType === 'press') {\n      return;\n    }\n    const bm3Timings = getBm3Timings(marks, timingsConfig);\n    addCustomTiming(interactionId, [], bm3Timings);\n  }\n}","const timings = [];\nexport function addTimingFromPerformanceMark(name, startMark, stopMark, cleanStart = false, cleanStop = false) {\n  timings.push({\n    name,\n    startMark,\n    stopMark,\n    cleanStart,\n    cleanStop\n  });\n}\nexport function getTimings() {\n  const reportedTimingsObj = {};\n  timings.forEach(({\n    name,\n    startMark,\n    stopMark,\n    cleanStart,\n    cleanStop\n  }) => {\n    const startEntryList = performance.getEntriesByName(startMark);\n    const stopEntryList = performance.getEntriesByName(stopMark);\n    if ((startEntryList === null || startEntryList === void 0 ? void 0 : startEntryList.length) > 0 && (stopEntryList === null || stopEntryList === void 0 ? void 0 : stopEntryList.length) > 0) {\n      const startEntry = startEntryList[startEntryList.length - 1];\n      const stopEntry = stopEntryList[stopEntryList.length - 1];\n      const {\n        startTime\n      } = startEntry;\n      const duration = stopEntry.startTime - startTime;\n      const timing = {\n        startTime: Math.round(startTime),\n        duration: Math.round(duration)\n      };\n      reportedTimingsObj[name] = timing;\n    }\n    if (cleanStart) {\n      performance.clearMarks(startMark);\n    }\n    if (cleanStop) {\n      performance.clearMarks(stopMark);\n    }\n  });\n  return reportedTimingsObj;\n}","import { roundEpsilon } from '@atlassian/ufo-round-number';\nconst getPerformanceObject = () => {\n  var _window;\n  return ((_window = window) !== null && _window !== void 0 ? _window : {}).performance;\n};\nconst getPerformanceObserverObject = () => {\n  var _window2;\n  return ((_window2 = window) !== null && _window2 !== void 0 ? _window2 : {}).PerformanceObserver;\n};\nexport const resourceTimingBuffer = {\n  timings: [],\n  maxSize: 1000,\n  observer: null,\n  transformResource: entry => {\n    var _entry$serverTiming;\n    const duration = roundEpsilon(entry.duration);\n    const totalBackendTimeEntry = (_entry$serverTiming = entry.serverTiming) === null || _entry$serverTiming === void 0 ? void 0 : _entry$serverTiming.find(\n    // timing name should come from per-product config in the future\n    timing => timing.name === 'total' || timing.name === 'filter-request-papi');\n    const serverTime = totalBackendTimeEntry ? roundEpsilon(totalBackendTimeEntry.duration) : undefined;\n    const networkTime = serverTime ? duration - serverTime : undefined;\n    return {\n      name: entry.name,\n      initiatorType: entry.initiatorType,\n      transferSize: entry.transferSize,\n      startTime: roundEpsilon(entry.startTime),\n      duration: roundEpsilon(entry.duration),\n      fetchStart: roundEpsilon(entry.fetchStart || 0),\n      workerStart: roundEpsilon(entry.workerStart || 0),\n      responseStart: roundEpsilon(entry.responseStart || 0),\n      serverTime,\n      networkTime\n    };\n  },\n  start: () => {\n    var _performance$getEntri;\n    const performance = getPerformanceObject();\n    const PerformanceObserver = getPerformanceObserverObject();\n    if (!PerformanceObserver || !performance || typeof PerformanceObserver === 'undefined') {\n      return;\n    }\n    if (resourceTimingBuffer.observer) {\n      return;\n    }\n    const resources = (_performance$getEntri = performance.getEntriesByType) === null || _performance$getEntri === void 0 ? void 0 : _performance$getEntri.call(performance, 'resource');\n    if (resources) {\n      resourceTimingBuffer.timings = resources.map(resource => resourceTimingBuffer.transformResource(resource));\n    }\n    resourceTimingBuffer.observer = new PerformanceObserver(resourceTimingBuffer.addTimings);\n    resourceTimingBuffer.observer.observe({\n      entryTypes: ['resource']\n    });\n  },\n  stop: () => {\n    if (resourceTimingBuffer.observer) {\n      resourceTimingBuffer.observer.disconnect();\n      resourceTimingBuffer.observer = null;\n    }\n    resourceTimingBuffer.timings = [];\n  },\n  addTimings: list => {\n    const entries = list.getEntries().map(entry => resourceTimingBuffer.transformResource(entry));\n    const overflow = resourceTimingBuffer.timings.length + entries.length;\n    if (overflow > resourceTimingBuffer.maxSize) {\n      const fieldsToRemove = overflow - resourceTimingBuffer.maxSize;\n      resourceTimingBuffer.timings.splice(0, fieldsToRemove);\n    }\n    resourceTimingBuffer.timings.push(...entries);\n  }\n};\nconst isValidTiming = (timing, startTime, endTime) => timing.startTime >= startTime && timing.startTime + timing.duration <= endTime;\nexport const filterResourceTimings = (startTime, endTime) => {\n  const performance = getPerformanceObject();\n  const PerformanceObserver = getPerformanceObserverObject();\n  if (!PerformanceObserver || !resourceTimingBuffer.observer) {\n    const resources = performance === null || performance === void 0 ? void 0 : performance.getEntriesByType('resource');\n    if (resources) {\n      return resources.filter(timing => isValidTiming(timing, startTime, endTime));\n    }\n    return null;\n  }\n  return resourceTimingBuffer.timings.filter(timing => isValidTiming(timing, startTime, endTime));\n};","import { getConfig as getConfigUFO } from '@atlassian/ufo-config';\nimport { roundEpsilon } from '@atlassian/ufo-round-number';\nimport { getConfig } from './common/utils/config';\nimport { filterResourceTimings } from './common/utils/resource-timing-buffer';\nconst cacheableTypes = ['script', 'link'];\nconst resourceTypes = ['fetch', 'xmlhttprequest'];\nconst CACHE_NETWORK = 'network';\nconst CACHE_MEMORY = 'memory';\nconst CACHE_DISK = 'disk';\n\n// eslint-disable-next-line @typescript-eslint/no-invalid-void-type\nconst calculateTransferType = (type, duration, size) => {\n  if (!cacheableTypes.includes(type)) {\n    return CACHE_NETWORK;\n  }\n  if ((size === undefined || size === 0) && duration === 0) {\n    return CACHE_MEMORY;\n  }\n  if (size === 0 && duration > 0) {\n    return CACHE_DISK;\n  }\n  if (size === undefined) {\n    return null;\n  }\n  return CACHE_NETWORK;\n};\nconst getWindowObject = () => typeof window !== 'undefined' && !!window ? window : undefined;\nconst hasAccessToResourceSize = (url, type, entry, hasTimingHeaders) => !cacheableTypes.includes(type) || url.includes('localhost') || !!getWindowObject() && url.includes(window.location.hostname) || hasTimingHeaders(url, entry);\nconst getReportedInitiatorTypes = xhrEnabled => {\n  const ufoConfig = getConfigUFO();\n  if (!(ufoConfig !== null && ufoConfig !== void 0 && ufoConfig.allowedResources)) {\n    if (xhrEnabled) {\n      return ['script', 'link', 'fetch', 'xmlhttprequest'];\n    }\n    return ['script', 'link', 'fetch'];\n  }\n  return ufoConfig.allowedResources;\n};\nconst evaluateAccessToResourceTimings = (url, entry) => !(entry.responseStart === 0 && entry.startTime > entry.responseStart);\n\n// eslint-disable-next-line @typescript-eslint/no-invalid-void-type\nconst getSizeObject = size => size !== undefined ? {\n  size\n} : null;\nconst getNetworkData = (item, eventStart, hasTimingHeaders = evaluateAccessToResourceTimings) => {\n  const {\n    name,\n    duration,\n    transferSize,\n    initiatorType,\n    responseStart,\n    serverTime,\n    networkTime\n  } = item;\n  const ttfb = roundEpsilon(responseStart - eventStart);\n  if (!hasAccessToResourceSize(name, initiatorType, item, hasTimingHeaders)) {\n    return {};\n  }\n  if (cacheableTypes.includes(initiatorType)) {\n    const transferType = calculateTransferType(initiatorType, duration, transferSize);\n    if (!transferType) {\n      return {\n        ttfb,\n        ...getSizeObject(transferSize)\n      };\n    }\n    if (transferType !== CACHE_NETWORK) {\n      return {\n        transferType\n      };\n    }\n    return {\n      ttfb,\n      transferType,\n      serverTime,\n      networkTime,\n      ...getSizeObject(transferSize)\n    };\n  }\n  return {\n    ttfb,\n    serverTime,\n    networkTime,\n    ...getSizeObject(transferSize)\n  };\n};\nexport const getResourceTimings = (interactionStart, interactionEnd) => {\n  const resourceTiming = {};\n  if (interactionStart === null) {\n    return resourceTiming;\n  }\n  const resources = filterResourceTimings(interactionStart, interactionEnd);\n  if (!(resources !== null && resources !== void 0 && resources.length)) {\n    return resourceTiming;\n  }\n  const {\n    xhrFilter,\n    sanitiseEndpoints,\n    mapResources,\n    hasTimingHeaders\n  } = getConfig();\n  const reportedInitiatorTypes = getReportedInitiatorTypes(!!xhrFilter);\n  resources.forEach(item => {\n    if (!reportedInitiatorTypes.includes(item.initiatorType)) {\n      return;\n    }\n    const {\n      name,\n      startTime,\n      duration,\n      workerStart,\n      fetchStart,\n      initiatorType\n    } = item;\n    if (!name) {\n      return;\n    }\n    if (initiatorType === 'xmlhttprequest' && (xhrFilter === undefined || xhrFilter(name) === false)) {\n      return;\n    }\n    const url = resourceTypes.includes(initiatorType) ? sanitiseEndpoints(name) : mapResources(name);\n    if (!url || resourceTiming[url]) {\n      return;\n    }\n    resourceTiming[url] = {\n      startTime: roundEpsilon(startTime - interactionStart),\n      duration: roundEpsilon(duration),\n      workerStart: Math.max(roundEpsilon(workerStart - interactionStart), 0),\n      fetchStart: Math.max(roundEpsilon(fetchStart - interactionStart), 0),\n      type: initiatorType,\n      ...getNetworkData(item, interactionStart, hasTimingHeaders)\n    };\n  });\n  return resourceTiming;\n};","const NESTED_METRIC_SEPARATOR = '/';\nconst filterEntry = entry => !(!entry || typeof entry !== 'object' || entry.startTime < 0 || entry.duration < 0);\nconst mapEntry = entry => ({\n  startTime: Math.round(entry.startTime),\n  duration: Math.round(entry.duration)\n});\nconst SSR_PREFIX = 'ssr';\nconst mapKey = key => {\n  if (key === 'total') {\n    return SSR_PREFIX;\n  }\n  return `${SSR_PREFIX}${NESTED_METRIC_SEPARATOR}${key}`;\n};\nlet config;\nexport function configure(ssrConfig) {\n  config = ssrConfig;\n}\nexport function getSSRTimings() {\n  var _config;\n  if (!((_config = config) !== null && _config !== void 0 && _config.getTimings)) {\n    return {};\n  }\n  const timings = config.getTimings();\n  if (!timings) {\n    return {};\n  }\n  const ssrTimings = Object.entries(timings).reduce((acc, entry) => {\n    if (filterEntry(entry[1])) {\n      acc[mapKey(entry[0])] = mapEntry(entry[1]);\n    }\n    return acc;\n  }, {});\n  return ssrTimings;\n}\nexport function getSSRSuccess() {\n  var _config2;\n  return !!((_config2 = config) !== null && _config2 !== void 0 && _config2.getDoneMark());\n}\nexport function getSSRDoneTime() {\n  var _config$getDoneMark, _config3;\n  return (_config$getDoneMark = (_config3 = config) === null || _config3 === void 0 ? void 0 : _config3.getDoneMark()) !== null && _config$getDoneMark !== void 0 ? _config$getDoneMark : undefined;\n}\nexport function getSSRFeatureFlags() {\n  var _config4;\n  if (!((_config4 = config) !== null && _config4 !== void 0 && _config4.getFeatureFlags)) {\n    return undefined;\n  }\n  try {\n    var _config$getFeatureFla;\n    return (_config$getFeatureFla = config.getFeatureFlags()) !== null && _config$getFeatureFla !== void 0 ? _config$getFeatureFla : undefined;\n    // eslint-disable-next-line no-empty\n  } catch (e) {}\n  return undefined;\n}","export const sanitizeUfoName = name => {\n  const nameNoUnderscore = name.replace(/_/g, '-');\n  return nameNoUnderscore;\n};","import Bowser from 'bowser-ultralight';\nimport { getLighthouseMetrics } from '@atlassian/ufo-additional-payload';\nimport * as bundleEvalTiming from '@atlassian/ufo-bundle-eval-timing';\nimport { getConfig, getUfoNameOverrides } from '@atlassian/ufo-config';\nimport { getBm3Timings } from '@atlassian/ufo-custom-timings';\nimport { getLastVisibleChangeTimestamp } from '@atlassian/ufo-dropbox-ttvc';\nimport { getPageVisibilityState } from '@atlassian/ufo-hidden-timing';\nimport * as initialPageLoadExtraTiming from '@atlassian/ufo-initial-page-load-extra-timing';\nimport * as resourceTiming from '@atlassian/ufo-resource-timing';\nimport { roundEpsilon } from '@atlassian/ufo-round-number';\nimport * as ssr from '@atlassian/ufo-ssr';\nimport { getVCObserver } from '@atlassian/ufo-vc';\nimport { sanitizeUfoName } from './common/utils';\nconst REACT_UFO_VERSION = '1.0.1';\nfunction getUfoNameOverride(interaction) {\n  const {\n    ufoName,\n    apdex\n  } = interaction;\n  try {\n    const ufoNameOverrides = getUfoNameOverrides();\n    if (ufoNameOverrides != null) {\n      const metricKey = apdex.length > 0 ? apdex[0].key : '';\n      if (ufoNameOverrides[ufoName][metricKey]) {\n        return ufoNameOverrides[ufoName][metricKey];\n      }\n    }\n    return ufoName;\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  } catch (e) {\n    return ufoName;\n  }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isSegmentLabel(obj) {\n  return obj && typeof obj.name === 'string' && typeof obj.segmentId === 'string';\n}\nfunction stringifyLabelStackFully(labelStack) {\n  return labelStack.map(l => {\n    if (isSegmentLabel(l)) {\n      return `${l.name}:${l.segmentId}`;\n    }\n    return l.name;\n  }).join('/');\n}\nfunction labelStackStartWith(labelStack, startWith) {\n  return stringifyLabelStackFully(labelStack).startsWith(stringifyLabelStackFully(startWith));\n}\nfunction getEarliestLegacyStopTime(interaction, labelStack) {\n  let earliestLegacyStopTime = null;\n  interaction.apdex.forEach(a => {\n    var _a$labelStack, _earliestLegacyStopTi;\n    if (!(a !== null && a !== void 0 && a.stopTime)) {\n      return;\n    }\n    if (!labelStackStartWith((_a$labelStack = a.labelStack) !== null && _a$labelStack !== void 0 ? _a$labelStack : [], labelStack)) {\n      return;\n    }\n    if (a.stopTime > interaction.start && ((_earliestLegacyStopTi = earliestLegacyStopTime) !== null && _earliestLegacyStopTi !== void 0 ? _earliestLegacyStopTi : a.stopTime) >= a.stopTime) {\n      earliestLegacyStopTime = a.stopTime;\n    }\n  });\n  return earliestLegacyStopTime;\n}\nfunction getBm3EndTimeOrFallbackValue(interaction, labelStack = [], fallbackValue = interaction.end) {\n  var _getEarliestLegacySto;\n  if (interaction.type === 'press') {\n    return fallbackValue;\n  }\n  return (_getEarliestLegacySto = getEarliestLegacyStopTime(interaction, labelStack)) !== null && _getEarliestLegacySto !== void 0 ? _getEarliestLegacySto : fallbackValue;\n}\nconst getPageVisibilityUpToTTI = interaction => {\n  const {\n    start\n  } = interaction;\n  const bm3EndTimeOrInteractionEndTime = getBm3EndTimeOrFallbackValue(interaction);\n  return getPageVisibilityState(start, bm3EndTimeOrInteractionEndTime);\n};\nconst getPageVisibilityUpToTTAI = interaction => {\n  const {\n    start,\n    end\n  } = interaction;\n  return getPageVisibilityState(start, end);\n};\nconst getVisibilityStateFromPerformance = stop => {\n  try {\n    const results = performance.getEntriesByType('visibility-state');\n    if (!results || results.length === 0) {\n      return null;\n    }\n    return results.reduce((acc = null, {\n      name,\n      startTime\n    }) => {\n      if (startTime > stop) {\n        return acc;\n      }\n      if (acc === null && name === null) {\n        return null;\n      }\n      if (acc === null) {\n        return name;\n      }\n      if (acc !== name) {\n        return 'mixed';\n      }\n      return acc;\n    }, null);\n  } catch (e) {\n    return null;\n  }\n};\nconst getMoreAccuratePageVisibilityUpToTTI = interaction => {\n  const old = getPageVisibilityUpToTTI(interaction);\n  const tti = getEarliestLegacyStopTime(interaction, []);\n  if (!tti) {\n    return old;\n  }\n  const buffered = getVisibilityStateFromPerformance(tti);\n  if (!buffered) {\n    return old;\n  }\n  if (buffered !== old) {\n    return 'mixed';\n  }\n  return old;\n};\nconst getMoreAccuratePageVisibilityUpToTTAI = interaction => {\n  const old = getPageVisibilityUpToTTAI(interaction);\n  const buffered = getVisibilityStateFromPerformance(interaction.end);\n  if (!buffered) {\n    return old;\n  }\n  if (buffered !== old) {\n    return 'mixed';\n  }\n  return old;\n};\nconst getInteractionStatus = interaction => {\n  const originalInteractionStatus = interaction.abortReason ? 'ABORTED' : 'SUCCEEDED';\n  const hasBm3TTI = interaction.apdex.length > 0;\n  const overrideStatus = hasBm3TTI ? 'SUCCEEDED' : originalInteractionStatus;\n  return {\n    originalInteractionStatus,\n    overrideStatus\n  };\n};\nconst getResourceTimings = (start, end) => {\n  var _resourceTiming$getRe;\n  return (_resourceTiming$getRe = resourceTiming.getResourceTimings(start, end)) !== null && _resourceTiming$getRe !== void 0 ? _resourceTiming$getRe : undefined;\n};\nconst getBundleEvalTimings = start => bundleEvalTiming.getBundleEvalTimings(start);\nconst getSSRSuccess = type => type === 'page_load' ? ssr.getSSRSuccess() : undefined;\nconst getSSRFeatureFlags = type => type === 'page_load' ? ssr.getSSRFeatureFlags() : undefined;\nconst getPaintMetrics = type => {\n  if (type !== 'page_load') {\n    return {};\n  }\n  const metrics = {};\n  performance.getEntriesByType('paint').forEach(entry => {\n    if (entry.name === 'first-paint') {\n      metrics['metric:fp'] = Math.round(entry.startTime);\n    }\n    if (entry.name === 'first-contentful-paint') {\n      metrics['metric:fcp'] = Math.round(entry.startTime);\n    }\n  });\n  return metrics;\n};\nconst getTTVC = interaction => {\n  const config = getConfig();\n  if (!(config !== null && config !== void 0 && config.enableTTVC)) {\n    return {};\n  }\n  if (interaction.type !== 'page_load' && interaction.type !== 'transition') {\n    return {};\n  }\n  const ttvc = getLastVisibleChangeTimestamp() - interaction.measureStart;\n  if (ttvc < 0) {\n    return {};\n  }\n  return {\n    'custom:metric:ttvc': Math.round(ttvc)\n  };\n};\nconst getVCMetrics = interaction => {\n  var _config$vc, _interaction$apdex, _interaction$apdex$;\n  const config = getConfig();\n  if (!(config !== null && config !== void 0 && (_config$vc = config.vc) !== null && _config$vc !== void 0 && _config$vc.enabled)) {\n    return {};\n  }\n  if (interaction.type !== 'page_load' && interaction.type !== 'transition') {\n    return {};\n  }\n  const tti = (_interaction$apdex = interaction.apdex) === null || _interaction$apdex === void 0 ? void 0 : (_interaction$apdex$ = _interaction$apdex[0]) === null || _interaction$apdex$ === void 0 ? void 0 : _interaction$apdex$.stopTime;\n  const prefix = 'ufo';\n  const result = getVCObserver().getVCResult({\n    start: interaction.start,\n    stop: interaction.end,\n    tti,\n    prefix\n  });\n  const VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];\n  if (!VC || !(result !== null && result !== void 0 && result[`${prefix}:vc:clean`])) {\n    return result;\n  }\n  const interactionStatus = getInteractionStatus(interaction);\n  const pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);\n  if (interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible') {\n    return result;\n  }\n  return {\n    ...result,\n    'metric:vc90': VC['90']\n  };\n};\nconst getNavigationMetrics = type => {\n  if (type !== 'page_load') {\n    return {};\n  }\n  const entries = performance.getEntriesByType('navigation');\n  if (entries.length === 0) {\n    return {};\n  }\n  const navigation = entries[0];\n  const metrics = {\n    // From https://www.w3.org/TR/resource-timing/\n    redirectStart: Math.round(navigation.redirectStart),\n    redirectEnd: Math.round(navigation.redirectEnd),\n    fetchStart: Math.round(navigation.fetchStart),\n    domainLookupStart: Math.round(navigation.domainLookupStart),\n    domainLookupEnd: Math.round(navigation.domainLookupEnd),\n    connectStart: Math.round(navigation.connectStart),\n    connectEnd: Math.round(navigation.connectEnd),\n    secureConnectionStart: Math.round(navigation.secureConnectionStart),\n    requestStart: Math.round(navigation.requestStart),\n    responseStart: Math.round(navigation.responseStart),\n    responseEnd: Math.round(navigation.responseEnd),\n    encodedBodySize: Math.round(navigation.encodedBodySize),\n    decodedBodySize: Math.round(navigation.decodedBodySize),\n    transferSize: Math.round(navigation.transferSize),\n    // From https://www.w3.org/TR/navigation-timing-2/\n    redirectCount: navigation.redirectCount,\n    type: navigation.type,\n    unloadEventEnd: Math.round(navigation.unloadEventEnd),\n    unloadEventStart: Math.round(navigation.unloadEventStart),\n    workerStart: Math.round(navigation.workerStart),\n    nextHopProtocol: navigation.nextHopProtocol\n\n    // The following properties are ignored because they provided limited value on a modern stack (e.g. the content\n    // is usually rendered and interactive before the dom is fully parsed, dont't play well with streamed content...)\n    //   * domComplete\n    //   * domContentLoadedEventEnd\n    //   * domContentLoadedEventStart\n    //   * domInteractive\n    //   * loadEventEnd\n    //   * loadEventStart\n  };\n  return {\n    'metrics:navigation': metrics\n  };\n};\nconst getPPSMetrics = interaction => {\n  var _interaction$apdex2, _interaction$apdex2$;\n  const {\n    start,\n    end\n  } = interaction;\n  const interactionStatus = getInteractionStatus(interaction);\n  const pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);\n  const ttai = interactionStatus.originalInteractionStatus === 'SUCCEEDED' && pageVisibilityUpToTTAI === 'visible' ? Math.round(end - start) : undefined;\n  const payload = {};\n  const PPSMetricsAtTTAI = ttai !== undefined ? {\n    'metrics:@ttai': getLighthouseMetrics({\n      start,\n      stop: interaction.end\n    })\n  } : null;\n  PPSMetricsAtTTAI !== null && Object.assign(payload, PPSMetricsAtTTAI);\n  const tti = (_interaction$apdex2 = interaction.apdex) === null || _interaction$apdex2 === void 0 ? void 0 : (_interaction$apdex2$ = _interaction$apdex2[0]) === null || _interaction$apdex2$ === void 0 ? void 0 : _interaction$apdex2$.stopTime;\n  const PPSMetricsAtTTI = tti !== undefined ? getLighthouseMetrics({\n    start,\n    stop: tti\n  }) : null;\n  PPSMetricsAtTTI !== null && Object.assign(payload, PPSMetricsAtTTI);\n  return payload;\n};\nfunction getSSRProperties(type) {\n  return {\n    'ssr:success': getSSRSuccess(type),\n    'ssr:featureFlags': getSSRFeatureFlags(type)\n  };\n}\nconst getBrowserMetadata = () => {\n  const data = {};\n  if (navigator.userAgent != null) {\n    const browser = Bowser.getParser(navigator.userAgent);\n    data['event:browser:name'] = browser.getBrowserName();\n    data['event:browser:version'] = browser.getBrowserVersion();\n  }\n  if (navigator.hardwareConcurrency != null) {\n    data['event:cpus'] = navigator.hardwareConcurrency;\n  }\n  if (navigator.deviceMemory != null) {\n    data['event:memory'] = navigator.deviceMemory;\n  }\n\n  // eslint-disable-next-line compat/compat\n  if (navigator.connection != null) {\n    data['event:network:effectiveType'] = navigator.connection.effectiveType;\n    data['event:network:rtt'] = navigator.connection.rtt;\n    data['event:network:downlink'] = navigator.connection.downlink;\n  }\n  return data;\n};\nconst getTracingContextData = interaction => {\n  const {\n    trace,\n    start\n  } = interaction;\n  let tracingContextData = {};\n  if (trace) {\n    tracingContextData = {\n      'ufo:tracingContext': {\n        'X-B3-TraceId': trace.traceId,\n        'X-B3-SpanId': trace.spanId,\n        // eslint-disable-next-line compat/compat\n        browserTimeOrigin: +(performance.timeOrigin + start).toFixed(2)\n      }\n    };\n  }\n  return tracingContextData;\n};\n\n// interaction metric\n\nfunction optimizeLabelStack(labelStack) {\n  return labelStack.map(ls => ({\n    n: ls.name,\n    ...(ls.segmentId ? {\n      s: ls.segmentId\n    } : {})\n  }));\n}\nfunction optimizeCustomData(interaction) {\n  const {\n    customData,\n    legacyMetrics\n  } = interaction;\n  const customDataMap = customData.reduce((result, {\n    labelStack,\n    data\n  }) => {\n    var _result$get$data, _result$get;\n    const label = stringifyLabelStackFully(labelStack);\n    const value = (_result$get$data = (_result$get = result.get(label)) === null || _result$get === void 0 ? void 0 : _result$get.data) !== null && _result$get$data !== void 0 ? _result$get$data : {};\n    result.set(label, {\n      labelStack: optimizeLabelStack(labelStack),\n      data: Object.assign(value, data)\n    });\n    return result;\n  }, new Map());\n  if (legacyMetrics) {\n    const legacyMetricsFiltered = legacyMetrics.filter(item => item.type === 'PAGE_LOAD').reduce((result, currentValue) => {\n      for (const [key, value] of Object.entries(currentValue.custom || {})) {\n        var _result$get$data2, _result$get2;\n        const label = stringifyLabelStackFully([]);\n        const labelValue = (_result$get$data2 = (_result$get2 = result.get(label)) === null || _result$get2 === void 0 ? void 0 : _result$get2.data) !== null && _result$get$data2 !== void 0 ? _result$get$data2 : {};\n        result.set(label, {\n          labelStack: optimizeLabelStack([]),\n          data: Object.assign(labelValue, {\n            [key]: value\n          })\n        });\n      }\n      return result;\n    }, new Map());\n    return [...customDataMap.values(), ...legacyMetricsFiltered.values()];\n  }\n  return [...customDataMap.values()];\n}\nfunction optimizeReactProfilerTimings(reactProfilerTimings, interactionStart) {\n  const reactProfilerTimingsMap = reactProfilerTimings.reduce((result, {\n    labelStack,\n    startTime,\n    commitTime,\n    actualDuration,\n    type\n  }) => {\n    if (labelStack && startTime >= interactionStart) {\n      const label = stringifyLabelStackFully(labelStack);\n      const start = Math.round(startTime);\n      const end = Math.round(commitTime);\n      const timing = result.get(label) || {\n        labelStack: optimizeLabelStack(labelStack),\n        startTime: start,\n        endTime: end,\n        mountCount: 0,\n        rerenderCount: 0,\n        renderDuration: 0\n      };\n      if (start < timing.startTime) {\n        timing.startTime = start;\n      }\n      if (end > timing.endTime) {\n        timing.endTime = end;\n      }\n      if (type === 'mount') {\n        timing.mountCount += 1;\n      }\n      if (type === 'update') {\n        timing.rerenderCount += 1;\n      }\n      timing.renderDuration += Math.round(actualDuration);\n      result.set(label, timing);\n    }\n    return result;\n  }, new Map());\n  return [...reactProfilerTimingsMap.values()];\n}\nfunction optimizeRedirects(redirects, interactionStart) {\n  let lastRedirectTime = interactionStart;\n  const updatedRedirects = redirects.sort((a, b) => a.time - b.time).reduce((result, redirect) => {\n    const {\n      fromInteractionName,\n      time\n    } = redirect;\n    if (lastRedirectTime >= interactionStart) {\n      result.push({\n        labelStack: [{\n          n: fromInteractionName\n        }],\n        startTime: Math.round(lastRedirectTime),\n        endTime: Math.round(time)\n      });\n    }\n    lastRedirectTime = time;\n    return result;\n  }, []);\n  return updatedRedirects;\n}\nfunction optimizeHoldInfo(holdInfo, interactionStart) {\n  const holdInfoMap = holdInfo.reduce((result, hold) => {\n    const {\n      labelStack,\n      name,\n      start,\n      end,\n      ignoreOnSubmit\n    } = hold;\n    if (labelStack && !ignoreOnSubmit && start >= interactionStart) {\n      const label = stringifyLabelStackFully([...labelStack, {\n        name\n      }]);\n      const startTime = Math.round(start);\n      const endTime = Math.round(end);\n      const timing = result.get(label) || {\n        labelStack: optimizeLabelStack([...labelStack, {\n          name\n        }]),\n        startTime,\n        endTime\n      };\n      if (startTime < timing.startTime) {\n        timing.startTime = startTime;\n      }\n      if (endTime > timing.endTime) {\n        timing.endTime = endTime;\n      }\n      result.set(label, timing);\n    }\n    return result;\n  }, new Map());\n  return [...holdInfoMap.values()];\n}\nfunction optimizeSpans(spans, interactionStart) {\n  const updatedSpans = spans.reduce((result, span) => {\n    const {\n      labelStack,\n      type,\n      name,\n      start,\n      end\n    } = span;\n    if (labelStack && start >= interactionStart) {\n      result.push({\n        labelStack: optimizeLabelStack([...labelStack, {\n          name\n        }]),\n        startTime: Math.round(start),\n        endTime: Math.round(end),\n        type\n      });\n    }\n    return result;\n  }, []);\n  return updatedSpans;\n}\nfunction optimizeRequestInfo(requestInfo, interactionStart) {\n  const updatedRequestInfo = requestInfo.reduce((result, reqInfo) => {\n    const {\n      labelStack,\n      name,\n      start,\n      end,\n      networkStart,\n      networkComplete\n    } = reqInfo;\n    const startTime = networkStart !== null && networkStart !== void 0 ? networkStart : start;\n    const endTime = networkComplete !== null && networkComplete !== void 0 ? networkComplete : end;\n    if (labelStack && start >= interactionStart && endTime) {\n      result.push({\n        labelStack: optimizeLabelStack([...labelStack, {\n          name\n        }]),\n        startTime: Math.round(startTime),\n        endTime: Math.round(endTime)\n      });\n    }\n    return result;\n  }, []);\n  return updatedRequestInfo;\n}\nfunction optimizeCustomTimings(customTimings, interactionStart) {\n  const updatedCustomTimings = customTimings.reduce((result, item) => {\n    Object.keys(item.data).forEach(key => {\n      if (item.data[key].startTime >= interactionStart) {\n        result.push({\n          labelStack: [{\n            n: key\n          }],\n          startTime: Math.round(item.data[key].startTime),\n          endTime: Math.round(item.data[key].endTime)\n        });\n      }\n    });\n    return result;\n  }, []);\n  return updatedCustomTimings;\n}\nfunction optimizeMarks(marks) {\n  return marks.map(({\n    labelStack,\n    time,\n    ...others\n  }) => ({\n    ...others,\n    labelStack: labelStack && optimizeLabelStack(labelStack),\n    time: Math.round(time)\n  }));\n}\nfunction optimizeApdex(apdex) {\n  return apdex.map(({\n    stopTime,\n    labelStack,\n    ...others\n  }) => ({\n    ...others,\n    stopTime: Math.round(stopTime),\n    ...(labelStack ? {\n      labelStack: optimizeLabelStack(labelStack)\n    } : {})\n  }));\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction objectToArray(obj = {}) {\n  return Object.keys(obj).reduce((result, key) => {\n    result.push({\n      label: key,\n      data: obj[key]\n    });\n    return result;\n  },\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  []);\n}\nfunction getBM3SubmetricsTimings(submetrics) {\n  if (!submetrics) {\n    return null;\n  }\n  const submetricsTimings = submetrics.filter(item => {\n    return typeof item.stop === 'number' && !!item.key && typeof item.start === 'number';\n  }).map(item => {\n    let childSubmetrics;\n    const newKey = `include/${item.key}`;\n    if (item.submetrics) {\n      childSubmetrics = getBM3SubmetricsTimings(item.submetrics);\n    }\n    return {\n      [newKey]: {\n        endTime: item.stop - item.start,\n        startTime: item.start\n      },\n      ...(childSubmetrics ? childSubmetrics : {})\n    };\n  });\n  return submetricsTimings;\n}\nfunction getBm3TrackerTimings(interaction) {\n  const interactionLegacyMetrics = interaction.legacyMetrics;\n  if (!interactionLegacyMetrics) {\n    return {};\n  }\n  const legacyMetrics = interactionLegacyMetrics.map(item => {\n    var _item$config, _item$marks;\n    return {\n      key: item.key,\n      startTime: item.start,\n      stopTime: item.stop,\n      type: (_item$config = item.config) === null || _item$config === void 0 ? void 0 : _item$config.type,\n      fmp: ((_item$marks = item.marks) === null || _item$marks === void 0 ? void 0 : _item$marks['fmp']) || item.stop,\n      source: 'bm3',\n      timings: getBm3Timings(item.marks, item.config.timings),\n      submetrics: getBM3SubmetricsTimings(item.submetrics),\n      pageVisibleState: item.pageVisibleState\n    };\n  }).filter(item => !!item.type);\n  return {\n    legacyMetrics\n  };\n}\nfunction createInteractionMetricsPayload(interaction, interactionId) {\n  var _window$location, _config$additionalPay;\n  const interactionPayloadStart = performance.now();\n  const config = getConfig();\n  if (!config) {\n    throw Error('UFO Configuration not provided');\n  }\n  const {\n    end,\n    start,\n    ufoName,\n    knownSegments,\n    rate,\n    type,\n    abortReason,\n    routeName,\n    featureFlags,\n    previousInteractionName,\n    isPreviousInteractionAborted,\n    abortedByInteractionName\n  } = interaction;\n  const pageVisibilityAtTTI = getPageVisibilityUpToTTI(interaction);\n  const pageVisibilityAtTTAI = getPageVisibilityUpToTTAI(interaction);\n  const segments = config.killswitchNestedSegments ? [] : knownSegments;\n  const isDetailedPayload = pageVisibilityAtTTAI === 'visible';\n  const isPageLoad = type === 'page_load';\n  const calculatePageVisibilityFromTheStartOfPageLoad = config.enableBetterPageVisibilityApi && isPageLoad;\n  const moreAccuratePageVisibilityAtTTI = calculatePageVisibilityFromTheStartOfPageLoad ? getMoreAccuratePageVisibilityUpToTTI(interaction) : null;\n  const moreAccuratePageVisibilityAtTTAI = calculatePageVisibilityFromTheStartOfPageLoad ? getMoreAccuratePageVisibilityUpToTTAI(interaction) : null;\n  const labelStack = interaction.labelStack ? {\n    labelStack: optimizeLabelStack(interaction.labelStack)\n  } : {};\n  // Page Load\n  const getPageLoadInteractionMetrics = () => {\n    var _config$ssr, _config$ssr2, _config$ssr3;\n    if (!isPageLoad) {\n      return {};\n    }\n    const config = getConfig();\n    const SSRDoneTimeValue = config !== null && config !== void 0 && (_config$ssr = config.ssr) !== null && _config$ssr !== void 0 && _config$ssr.getSSRDoneTime ? config === null || config === void 0 ? void 0 : (_config$ssr2 = config.ssr) === null || _config$ssr2 === void 0 ? void 0 : _config$ssr2.getSSRDoneTime() : ssr.getSSRDoneTime();\n    const SSRDoneTime = SSRDoneTimeValue !== undefined ? {\n      SSRDoneTime: Math.round(SSRDoneTimeValue)\n    } : {};\n    return {\n      ...SSRDoneTime,\n      isBM3ConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp,\n      isUFOConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp || !!(config !== null && config !== void 0 && (_config$ssr3 = config.ssr) !== null && _config$ssr3 !== void 0 && _config$ssr3.getSSRDoneTime)\n    };\n  };\n  // Detailed payload. Page visibility = visible\n  const getDetailedInteractionMetrics = () => {\n    if (!isDetailedPayload) {\n      return {};\n    }\n    return {\n      errors: interaction.errors.map(({\n        labelStack,\n        ...others\n      }) => ({\n        ...others,\n        labelStack: labelStack && optimizeLabelStack(labelStack)\n      })),\n      holdActive: [...interaction.holdActive.values()],\n      redirects: optimizeRedirects(interaction.redirects, start),\n      holdInfo: optimizeHoldInfo(interaction.holdInfo, start),\n      spans: optimizeSpans(interaction.spans, start),\n      requestInfo: optimizeRequestInfo(interaction.requestInfo, start),\n      customTimings: optimizeCustomTimings(interaction.customTimings, start),\n      bundleEvalTimings: objectToArray(getBundleEvalTimings(start)),\n      resourceTimings: objectToArray(getResourceTimings(start, end))\n    };\n  };\n  // Page load & detailed payload\n  const getPageLoadDetailedInteractionMetrics = () => {\n    var _config$ssr4;\n    if (!isPageLoad || !isDetailedPayload) {\n      return {};\n    }\n    const config = getConfig();\n    return {\n      initialPageLoadExtraTimings: objectToArray(initialPageLoadExtraTiming.getTimings()),\n      SSRTimings: config !== null && config !== void 0 && (_config$ssr4 = config.ssr) !== null && _config$ssr4 !== void 0 && _config$ssr4.getSSRTimings ? config.ssr.getSSRTimings() : objectToArray(ssr.getSSRTimings())\n    };\n  };\n  const newUFOName = sanitizeUfoName(ufoName);\n  return {\n    actionSubject: 'experience',\n    action: 'measured',\n    eventType: 'operational',\n    source: 'measured',\n    tags: ['observability'],\n    attributes: {\n      properties: {\n        // basic\n        'event:hostname': ((_window$location = window.location) === null || _window$location === void 0 ? void 0 : _window$location.hostname) || 'unknown',\n        'event:product': config.product,\n        'event:schema': '1.0.0',\n        'event:source': {\n          name: 'react-ufo/web',\n          version: REACT_UFO_VERSION,\n          payloadSource: 'platform'\n        },\n        'event:region': config.region || 'unknown',\n        'experience:key': 'custom.interaction-metrics',\n        'experience:name': newUFOName,\n        // root\n        ...getBrowserMetadata(),\n        ...getSSRProperties(type),\n        ...getPPSMetrics(interaction),\n        ...getPaintMetrics(type),\n        ...getTTVC(interaction),\n        ...getNavigationMetrics(type),\n        ...getVCMetrics(interaction),\n        ...((_config$additionalPay = config.additionalPayloadData) === null || _config$additionalPay === void 0 ? void 0 : _config$additionalPay.call(config, interaction)),\n        ...getTracingContextData(interaction),\n        interactionMetrics: {\n          namePrefix: config.namePrefix || '',\n          segmentPrefix: config.segmentPrefix || '',\n          interactionId,\n          pageVisibilityAtTTI,\n          pageVisibilityAtTTAI,\n          experimental__pageVisibilityAtTTI: moreAccuratePageVisibilityAtTTI,\n          experimental__pageVisibilityAtTTAI: moreAccuratePageVisibilityAtTTAI,\n          // raw interaction metrics\n          rate,\n          routeName,\n          type,\n          abortReason,\n          featureFlags,\n          previousInteractionName,\n          isPreviousInteractionAborted,\n          abortedByInteractionName,\n          // performance\n          apdex: optimizeApdex(interaction.apdex),\n          end: Math.round(end),\n          start: Math.round(start),\n          segments: segments.map(({\n            labelStack,\n            ...others\n          }) => ({\n            ...others,\n            labelStack: optimizeLabelStack(labelStack)\n          })),\n          marks: optimizeMarks(interaction.marks),\n          customData: optimizeCustomData(interaction),\n          reactProfilerTimings: optimizeReactProfilerTimings(interaction.reactProfilerTimings, start),\n          ...labelStack,\n          ...getPageLoadInteractionMetrics(),\n          ...getDetailedInteractionMetrics(),\n          ...getPageLoadDetailedInteractionMetrics(),\n          ...getBm3TrackerTimings(interaction)\n        },\n        'ufo:payloadTime': roundEpsilon(performance.now() - interactionPayloadStart)\n      }\n    }\n  };\n}\nexport function createPayloads(interactionId, interaction) {\n  const ufoNameOverride = getUfoNameOverride(interaction);\n  const modifiedInteraction = {\n    ...interaction,\n    ufoName: ufoNameOverride\n  };\n  const interactionMetricsPayload = createInteractionMetricsPayload(modifiedInteraction, interactionId);\n  return [interactionMetricsPayload];\n}","import { roundEpsilon } from '@atlassian/ufo-round-number';\nlet config = null;\nexport function configure(bundleEvalTimingConfiguration) {\n  config = bundleEvalTimingConfiguration;\n}\nconst getPerformanceObject = () => {\n  var _window;\n  return ((_window = window) !== null && _window !== void 0 ? _window : {}).performance;\n};\nexport function getBundleEvalTimings(interactionStartTime) {\n  if (config == null) {\n    return {};\n  }\n  const started = {};\n  const timings = {};\n  const cachedConfig = config;\n  const performance = getPerformanceObject();\n  performance === null || performance === void 0 ? void 0 : performance.getEntriesByType('mark').forEach(mark => {\n    const result = cachedConfig.mapPerformanceMark(mark.name);\n    if (!result) {\n      return;\n    }\n    const {\n      type,\n      name\n    } = result;\n    if (type === 'start' && mark.startTime >= interactionStartTime) {\n      started[name] = mark;\n      return;\n    }\n    if (type === 'end' && started[name]) {\n      timings[name] = {\n        startTime: roundEpsilon(started[name].startTime - interactionStartTime),\n        duration: roundEpsilon(mark.startTime - started[name].startTime)\n      };\n      delete started[name];\n    }\n  });\n  if (Object.keys(timings).length === 0) {\n    return {};\n  }\n  return timings;\n}"],"names":["roundEpsilon","num","places","factor","Math","pow","round","Number","EPSILON","getBm3Timings","marks","timingConfigs","bm3Timings","forEach","item","startMark","endMark","startTime","endTime","key","timings","getTimings","reportedTimingsObj","name","stopMark","cleanStart","cleanStop","startEntryList","performance","getEntriesByName","stopEntryList","length","startEntry","stopEntry","duration","timing","clearMarks","_window","window","getPerformanceObserverObject","_window2","PerformanceObserver","resourceTimingBuffer","maxSize","observer","transformResource","entry","_entry$serverTiming","totalBackendTimeEntry","serverTiming","find","serverTime","undefined","networkTime","initiatorType","transferSize","fetchStart","workerStart","responseStart","start","_performance$getEntri","resources","getEntriesByType","call","map","resource","addTimings","observe","entryTypes","stop","disconnect","list","entries","getEntries","overflow","fieldsToRemove","splice","push","isValidTiming","cacheableTypes","resourceTypes","CACHE_NETWORK","evaluateAccessToResourceTimings","url","getSizeObject","size","getNetworkData","eventStart","hasTimingHeaders","ttfb","type","includes","location","hostname","hasAccessToResourceSize","transferType","calculateTransferType","filterEntry","mapEntry","mapKey","getSSRTimings","_config","Object","reduce","acc","sanitizeUfoName","replace","REACT_UFO_VERSION","stringifyLabelStackFully","labelStack","l","obj","segmentId","join","getEarliestLegacyStopTime","interaction","earliestLegacyStopTime","apdex","a","_a$labelStack","_earliestLegacyStopTi","stopTime","startWith","startsWith","labelStackStartWith","getPageVisibilityUpToTTI","bm3EndTimeOrInteractionEndTime","fallbackValue","end","_getEarliestLegacySto","getBm3EndTimeOrFallbackValue","getPageVisibilityUpToTTAI","getVisibilityStateFromPerformance","results","e","getMoreAccuratePageVisibilityUpToTTI","old","tti","buffered","getMoreAccuratePageVisibilityUpToTTAI","getInteractionStatus","originalInteractionStatus","abortReason","overrideStatus","_resourceTiming$getRe","interactionStart","interactionEnd","resourceTiming","filter","filterResourceTimings","xhrFilter","sanitiseEndpoints","mapResources","reportedInitiatorTypes","xhrEnabled","ufoConfig","allowedResources","getReportedInitiatorTypes","max","_config2","getDoneMark","_config4","getFeatureFlags","_config$getFeatureFla","getPaintMetrics","metrics","getTTVC","config","enableTTVC","ttvc","measureStart","getVCMetrics","_config$vc","_interaction$apdex","_interaction$apdex$","vc","enabled","result","getVCResult","prefix","VC","interactionStatus","pageVisibilityUpToTTAI","getNavigationMetrics","navigation","redirectStart","redirectEnd","domainLookupStart","domainLookupEnd","connectStart","connectEnd","secureConnectionStart","requestStart","responseEnd","encodedBodySize","decodedBodySize","redirectCount","unloadEventEnd","unloadEventStart","nextHopProtocol","getPPSMetrics","_interaction$apdex2","_interaction$apdex2$","payload","PPSMetricsAtTTAI","assign","PPSMetricsAtTTI","getSSRProperties","getBrowserMetadata","data","navigator","userAgent","browser","getBrowserName","getBrowserVersion","hardwareConcurrency","deviceMemory","connection","effectiveType","rtt","downlink","getTracingContextData","trace","tracingContextData","traceId","spanId","browserTimeOrigin","timeOrigin","toFixed","optimizeLabelStack","ls","n","s","optimizeCustomData","customData","legacyMetrics","customDataMap","_result$get$data","_result$get","label","value","get","set","Map","legacyMetricsFiltered","currentValue","custom","_result$get$data2","_result$get2","labelValue","values","optimizeRedirects","redirects","lastRedirectTime","sort","b","time","redirect","fromInteractionName","optimizeSpans","spans","span","optimizeRequestInfo","requestInfo","reqInfo","networkStart","networkComplete","optimizeCustomTimings","customTimings","keys","objectToArray","getBM3SubmetricsTimings","submetrics","childSubmetrics","newKey","getBm3TrackerTimings","interactionLegacyMetrics","_item$config","_item$marks","fmp","source","pageVisibleState","createInteractionMetricsPayload","interactionId","_window$location","_config$additionalPay","interactionPayloadStart","now","Error","ufoName","knownSegments","rate","routeName","featureFlags","previousInteractionName","isPreviousInteractionAborted","abortedByInteractionName","pageVisibilityAtTTI","pageVisibilityAtTTAI","segments","killswitchNestedSegments","isDetailedPayload","isPageLoad","calculatePageVisibilityFromTheStartOfPageLoad","enableBetterPageVisibilityApi","moreAccuratePageVisibilityAtTTI","moreAccuratePageVisibilityAtTTAI","newUFOName","actionSubject","action","eventType","tags","attributes","properties","product","version","payloadSource","region","additionalPayloadData","interactionMetrics","namePrefix","segmentPrefix","experimental__pageVisibilityAtTTI","experimental__pageVisibilityAtTTAI","others","reactProfilerTimings","commitTime","actualDuration","mountCount","rerenderCount","renderDuration","_config$ssr","_config$ssr2","_config$ssr3","SSRDoneTimeValue","ssr","getSSRDoneTime","_config$getDoneMark","_config3","SSRDoneTime","isBM3ConfigSSRDoneAsFmp","metaData","__legacy__bm3ConfigSSRDoneAsFmp","isUFOConfigSSRDoneAsFmp","getPageLoadInteractionMetrics","errors","holdActive","holdInfo","hold","ignoreOnSubmit","bundleEvalTimings","resourceTimings","getDetailedInteractionMetrics","_config$ssr4","initialPageLoadExtraTimings","SSRTimings","getPageLoadDetailedInteractionMetrics","createPayloads","ufoNameOverride","ufoNameOverrides","metricKey","getUfoNameOverride"],"sourceRoot":""}