@newrelic/video-videojs 4.1.2 → 4.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +62 -1
- package/README.md +170 -40
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.LICENSE.txt +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.LICENSE.txt +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/umd/newrelic-video-videojs.min.js +1 -1
- package/dist/umd/newrelic-video-videojs.min.js.LICENSE.txt +1 -1
- package/dist/umd/newrelic-video-videojs.min.js.map +1 -1
- package/package.json +1 -1
- package/src/ads/media-tailor.js +126 -91
- package/src/ads/utils/mt-constants.js +2 -1
- package/src/ads/utils/mt.js +44 -22
- package/src/register-plugin.js +2 -2
- package/src/tracker.js +150 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"newrelic-video-videojs.min.js","mappings":"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","sources":["webpack://VideojsTracker/webpack/universalModuleDefinition","webpack://VideojsTracker/./src/ads/freewheel.js","webpack://VideojsTracker/./src/ads/brightcove-ima.js","webpack://VideojsTracker/./src/techs/hls-js.js","webpack://VideojsTracker/./src/ads/ima.js","webpack://VideojsTracker/./src/tracker.js","webpack://VideojsTracker/./src/ads/utils/mt-constants.js","webpack://VideojsTracker/./src/techs/shaka.js","webpack://VideojsTracker/./src/techs/contrib-hls.js","webpack://VideojsTracker/./src/ads/videojs-ads.js","webpack://VideojsTracker/./node_modules/@newrelic/video-core/dist/esm/index.js","webpack://VideojsTracker/./src/ads/utils/mt.js","webpack://VideojsTracker/./src/ads/media-tailor.js","webpack://VideojsTracker/./src/ads/dai.js","webpack://VideojsTracker/webpack/bootstrap","webpack://VideojsTracker/webpack/runtime/define property getters","webpack://VideojsTracker/webpack/runtime/hasOwnProperty shorthand","webpack://VideojsTracker/webpack/runtime/make namespace object","webpack://VideojsTracker/./src/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VideojsTracker\"] = factory();\n\telse\n\t\troot[\"VideojsTracker\"] = factory();\n})(self, () => {\nreturn ","import VideojsAdsTracker from './videojs-ads'\n\nexport default class FreewheelAdsTracker extends VideojsAdsTracker {\n static isUsing (player) {\n return !!player.FreeWheelPlugin && typeof tv !== 'undefined' && tv.freewheel\n }\n\n getTrackerName () {\n return 'freewheel-ads'\n }\n\n getPlayerName () {\n return 'freewheel-ads'\n }\n\n getPlayerVersion () {\n return this.player.FreeWheelPlugin.VERSION\n }\n\n getPlayhead () {\n if (this.player.ads.ad.currentTime) {\n return this.player.ads.ad.currentTime() * 1000\n }\n }\n\n getDuration () {\n if (this.player.ads.ad.duration) {\n return this.player.ads.ad.duration * 1000\n }\n }\n\n getVideoId () {\n return this.player.ads.ad.id\n }\n\n getAdPartner () {\n return 'freewheel'\n }\n\n getAdCreativeId () {\n try {\n return this.player.ads.provider.event.adInstance.getActiveCreativeRendition().getId()\n } catch (err) { /* do nothing */ }\n }\n\n getSrc () {\n try {\n let acr = this.player.ads.provider.event.adInstance.getActiveCreativeRendition()\n return acr.getPrimaryCreativeRenditionAsset().getUrl()\n } catch (err) { /* do nothing */ }\n }\n\n getTitle () {\n try {\n let acr = this.player.ads.provider.event.adInstance.getActiveCreativeRendition()\n return acr.getPrimaryCreativeRenditionAsset().getName()\n } catch (err) { /* do nothing */ }\n }\n\n getAdPosition () {\n switch (this.player.ads.ad.type) {\n case 'PREROLL':\n return nrvideo.Constants.AdPositions.PRE\n case 'MIDROLL':\n return nrvideo.Constants.AdPositions.MID\n case 'POSTROLL':\n return nrvideo.Constants.AdPositions.POST\n }\n }\n}\n","import nrvideo from '@newrelic/video-core'\nimport VideojsAdsTracker from './videojs-ads'\n\nexport default class BrightcoveImaAdsTracker extends VideojsAdsTracker {\n static isUsing (player) {\n return !!player.ima3\n }\n\n getTrackerName () {\n return 'brightcove-ima-ads'\n }\n\n getPlayerName () {\n return 'brightcove-ima-ads'\n }\n\n getPlayhead () {\n return this.player?.ima3?.adPlayer?.currentTime()\n }\n\n registerListeners () {\n nrvideo.Log.debugCommonVideoEvents(this.player, [\n null,\n 'ima3-ready',\n 'ima3error',\n 'ima3-ad-error',\n 'ima3-started',\n 'ima3-complete',\n 'ima3-paused',\n 'ima3-resumed',\n 'ads-request',\n 'ads-load',\n 'ads-ad-started',\n 'ads-ad-ended',\n 'ads-pause',\n 'ads-play',\n 'ads-click',\n 'ads-pod-started',\n 'ads-pod-ended',\n 'ads-allpods-completed'\n ])\n\n this.player.on('ima3-started', this.onStarted.bind(this))\n this.player.on('ima3-paused', this.onPaused.bind(this))\n this.player.on('ima3-resumed', this.onResume.bind(this))\n this.player.on('ima3-complete', this.onComplete.bind(this))\n this.player.on('ima3-skipped', this.onSkipped.bind(this))\n this.player.on('adserror', this.onError.bind(this))\n this.player.on('ads-click', this.onClick.bind(this))\n }\n\n unregisterListeners () {\n this.player.off('ima3-started', this.onStarted)\n this.player.off('ima3-paused', this.onPaused)\n this.player.off('ima3-resumed', this.onResume)\n this.player.off('ima3-complete', this.onComplete)\n this.player.off('ima3-skipped', this.onSkipped)\n this.player.off('adserror', this.onError)\n this.player.off('ads-click', this.onClick)\n }\n\n onStarted (e) {\n this.sendRequest()\n this.sendStart()\n }\n\n onPaused (e) {\n this.sendPause()\n }\n\n onResume (e) {\n this.sendResume()\n }\n\n onComplete (e) {\n this.sendEnd()\n }\n\n onSkipped (e) {\n this.sendEnd({ skipped: true })\n }\n\n onError (e) {\n this.sendError()\n }\n\n onClick (e) {\n this.sendClick()\n }\n}\n","export default class HlsJs {\n constructor(tech) {\n this.tech = tech.vhs_;\n this.player = tech.el().player; // Store player reference for currentTime\n }\n\n getResource(tech) {\n return this.tech.url;\n }\n\n getRenditionName(tech) {\n try {\n var level = this.tech.levels[this.tech.currentLevel];\n if (level && level.name) return level.name;\n } catch (err) {}\n return null;\n }\n\n getRenditionBitrate(tech) {\n try {\n var level = this.tech.levels[this.tech.currentLevel];\n if (level && level.bitrate) return Math.round(level.bitrate);\n } catch (err) {}\n return null;\n }\n\n getRenditionWidth(tech) {\n try {\n var level = this.tech.levels[this.tech.currentLevel];\n if (level && level.width) return level.width;\n } catch (err) {}\n return null;\n }\n\n getRenditionHeight(tech) {\n try {\n var level = this.tech.levels[this.tech.currentLevel];\n if (level && level.height) return level.height;\n } catch (err) {}\n return null;\n }\n\n getBitrate() {\n // Default uses playback bitrate (Method 4)\n return this.getContentBitratePlayback();\n }\n\n getContentBitratePlayback() {\n try {\n // Get the current active level's bitrate from manifest\n const level = this.tech.levels[this.tech.currentLevel];\n if (level && level.bitrate) {\n return Math.round(level.bitrate);\n }\n } catch (err) {}\n return null;\n }\n\n getManifestBitrate() {\n try {\n // Return highest available bitrate from all renditions\n if (this.tech.levels && this.tech.levels.length > 0) {\n return Math.round(Math.max(...this.tech.levels.map(l => l.bitrate)));\n }\n } catch (err) {}\n return null;\n }\n\n getSegmentDownloadBitrate() {\n try {\n // VHS stats.bandwidth\n if (this.tech.stats && this.tech.stats.bandwidth > 0)\n return Math.round(this.tech.stats.bandwidth);\n } catch (err) {}\n return null;\n }\n\n getNetworkDownloadBitrate() {\n if (this.tech.throughput && this.tech.throughput > 0) {\n return Math.round(this.tech.throughput);\n }\n return null;\n }\n}\n\nHlsJs.isUsing = function (tech) {\n return !!tech.vhs_;\n};\n","/* global google */\nimport nrvideo from '@newrelic/video-core';\nimport VideojsAdsTracker from './videojs-ads';\n\nexport default class ImaAdsTracker extends VideojsAdsTracker {\n static isUsing(player) {\n return player.ima && typeof google !== 'undefined';\n }\n\n getTrackerName() {\n return 'ima-ads';\n }\n\n getPlayerName() {\n return 'ima';\n }\n\n getPlayerVersion() {\n return (\n 'ima: ' + google.ima.VERSION + '; contrib-ads: ' + this.player.ads.VERSION\n );\n }\n\n getCuePoints() {\n return this.player.ima.getAdsManager().getCuePoints();\n }\n\n getAdPosition() {\n if (\n this.lastAdData &&\n this.lastAdData.podInfo &&\n this.lastAdData.podInfo.podIndex !== undefined\n ) {\n const podIndex = this.lastAdData.podInfo.podIndex;\n\n if (podIndex === 0) {\n return 'pre';\n } else if (podIndex === -1) {\n return 'post';\n } else {\n return 'mid';\n }\n }\n return null;\n }\n\n getDuration() {\n if (this.lastAdData && this.lastAdData.duration !== undefined) {\n return this.lastAdData.duration * 1000;\n }\n return null;\n }\n\n getVideoId() {\n if (this.lastAdData && this.lastAdData.adId) {\n return this.lastAdData.adId;\n }\n return null;\n }\n\n getAdCreativeId() {\n if (this.lastAdData && this.lastAdData.creativeId) {\n return this.lastAdData.creativeId;\n }\n return null;\n }\n\n getSrc() {\n if (this.lastAdData && this.lastAdData.mediaUrl) {\n return this.lastAdData.mediaUrl;\n }\n return null;\n }\n\n getTitle() {\n if (this.lastAdData && this.lastAdData.title) {\n return this.lastAdData.title;\n }\n return null;\n }\n\n getPlayhead() {\n let manager = this.player.ima.getAdsManager();\n if (manager) {\n return (this.getDuration() - manager.getRemainingTime()) * 1000;\n }\n }\n\n getPlayrate() {\n return this.player.playbackRate();\n }\n\n getAdPartner() {\n return 'ima';\n }\n\n getWebkitBitrate() {\n const adVideoElement = this.getAdVideoElement();\n if (adVideoElement && adVideoElement.webkitVideoDecodedByteCount) {\n let bitrate;\n if (this._lastAdWebkitBitrate > 0) {\n const current = adVideoElement.webkitVideoDecodedByteCount;\n const delta = current - this._lastAdWebkitBitrate;\n const seconds = this.getHeartbeat() / 1000;\n bitrate = Math.round((delta / seconds) * 8);\n }\n \n this._lastAdWebkitBitrate = adVideoElement.webkitVideoDecodedByteCount;\n return bitrate ?? null;\n }\n return null;\n }\n\n getRenditionBitrate() {\n if (this.lastAdData && this.lastAdData.renditionBitrate) {\n return Math.round(this.lastAdData.renditionBitrate);\n }\n return null;\n }\n\n registerListeners() {\n // Shortcut events\n let e = google.ima.AdEvent.Type;\n let AD_ERROR = google.ima.AdErrorEvent.Type.AD_ERROR;\n\n //store ad data\n this.lastAdData = null;\n // debug\n nrvideo.Log.debugCommonVideoEvents(this.player.ima.addEventListener, [\n null,\n e.ALL_ADS_COMPLETED,\n e.LINEAR_CHANGED,\n e.COMPLETE,\n e.USER_CLOSE,\n e.IMPRESSION,\n e.CONTENT_PAUSE_REQUESTED,\n e.CONTENT_RESUME_REQUESTED,\n e.SKIPPED,\n e.SKIPPABLE_STATE_CHANGED,\n e.LOADED,\n e.PAUSED,\n e.RESUMED,\n e.STARTED,\n e.AD_CAN_PLAY,\n e.AD_METADATA,\n e.EXPANDED_CHANGED,\n e.AD_BREAK_READY,\n e.LOG,\n e.CLICK,\n e.FIRST_QUARTILE,\n e.MIDPOINT,\n e.THIRD_QUARTILE,\n AD_ERROR,\n ]);\n\n // Register listeners\n this.player.ima.addEventListener(e.LOADED, this.onLoaded.bind(this));\n this.player.ima.addEventListener(e.STARTED, this.onStart.bind(this));\n this.player.ima.addEventListener(e.PAUSED, this.onPaused.bind(this));\n this.player.ima.addEventListener(e.RESUMED, this.onResumed.bind(this));\n this.player.ima.addEventListener(e.COMPLETE, this.onComplete.bind(this));\n this.player.ima.addEventListener(e.SKIPPED, this.onSkipped.bind(this));\n this.player.ima.addEventListener(e.CLICK, this.onClick.bind(this));\n this.player.ima.addEventListener(\n e.FIRST_QUARTILE,\n this.onFirstQuartile.bind(this)\n );\n this.player.ima.addEventListener(e.MIDPOINT, this.onMidpoint.bind(this));\n this.player.ima.addEventListener(\n e.THIRD_QUARTILE,\n this.onThirdQuartile.bind(this)\n );\n this.player.ima.addEventListener(AD_ERROR, this.onError.bind(this));\n }\n\n unregisterListeners() {\n // Shortcut events\n let e = google.ima.AdEvent.Type;\n let AD_ERROR = google.ima.AdErrorEvent.Type.AD_ERROR;\n\n // unregister listeners\n this.player.ima.removeEventListener(e.LOADED, this.onLoaded);\n this.player.ima.removeEventListener(e.STARTED, this.onLoaded.bind(this));\n this.player.ima.removeEventListener(e.IMPRESSION, this.onImpression);\n this.player.ima.removeEventListener(e.PAUSED, this.onPaused);\n this.player.ima.removeEventListener(e.RESUMED, this.onResumed);\n this.player.ima.removeEventListener(e.COMPLETE, this.onComplete);\n this.player.ima.removeEventListener(e.SKIPPED, this.onSkipped);\n this.player.ima.removeEventListener(e.CLICK, this.onClick);\n this.player.ima.removeEventListener(e.FIRST_QUARTILE, this.onFirstQuartile);\n this.player.ima.removeEventListener(e.MIDPOINT, this.onMidpoint);\n this.player.ima.removeEventListener(e.THIRD_QUARTILE, this.onThirdQuartile);\n this.player.ima.removeEventListener(AD_ERROR, this.onError);\n //clear ad data\n this.lastAdData = null;\n }\n\n onLoaded(e) {\n this.lastAdData = this.getAdData();\n this.sendRequest();\n }\n\n onStart(e) {\n this.lastAdData = this.getAdData();\n this._lastAdWebkitBitrate = 0;\n this.sendStart();\n }\n\n onComplete(e) {\n this.sendEnd();\n this.lastAdData = null; // Clear the data\n }\n\n onSkipped(e) {\n this.sendEnd({ skipped: true });\n this.lastAdData = null; // Clear the data\n }\n\n onError(e) {\n const adError = e.getError();\n\n const errorCode = adError.getErrorCode();\n const errorMessage = adError.getMessage();\n this.sendError({ adError, errorCode, errorMessage });\n }\n\n onClick(e) {\n this.sendAdClick();\n }\n\n onFirstQuartile() {\n this.sendAdQuartile({ adQuartile: 1 });\n }\n\n onMidpoint() {\n this.sendAdQuartile({ adQuartile: 2 });\n }\n\n onThirdQuartile() {\n this.sendAdQuartile({ adQuartile: 3 });\n }\n\n onPaused() {\n this.sendPause();\n }\n\n onResumed() {\n this.sendResume();\n }\n\n getAdData() {\n try {\n const adsManager = this.player.ima.getAdsManager();\n if (adsManager) {\n const currentAd = adsManager.getCurrentAd();\n if (currentAd) {\n return {\n adId: currentAd.getAdId(),\n creativeId: currentAd.getCreativeId(),\n duration: currentAd.getDuration(),\n mediaUrl: currentAd.getMediaUrl(),\n title: currentAd.getTitle(),\n podInfo: currentAd.getAdPodInfo()?.data,\n renditionBitrate: currentAd.getVastMediaBitrate(),\n // Add other properties as needed\n };\n }\n }\n return null;\n } catch (err) {\n return null;\n }\n }\n\n getAdVideoElement() {\n if (this.player.ima && this.player.ima.controller && this.player.ima.controller.adUi) {\n const adContainerDiv = this.player.ima.controller.adUi.adContainerDiv;\n if (adContainerDiv) {\n const adVideoElement = adContainerDiv.querySelector('video');\n if (adVideoElement) {\n return adVideoElement;\n }\n }\n }\n }\n}\n","import nrvideo from '@newrelic/video-core';\nimport pkg from '../package.json';\nimport ContribHlsTech from './techs/contrib-hls';\nimport HlsJsTech from './techs/hls-js';\nimport ShakaTech from './techs/shaka';\nimport VideojsAdsTracker from './ads/videojs-ads';\nimport ImaAdsTracker from './ads/ima';\nimport BrightcoveImaAdsTracker from './ads/brightcove-ima';\nimport FreewheelAdsTracker from './ads/freewheel';\nimport DaiAdsTracker from './ads/dai';\nimport MediaTailorAdsTracker from './ads/media-tailor';\n\nexport default class VideojsTracker extends nrvideo.VideoTracker {\n constructor(player, options) {\n super(player, options);\n this.options = options;\n this.isContentEnd = false;\n this.imaAdCuePoints = '';\n this.daiInitialized = false;\n nrvideo.Core.addTracker(this, options);\n }\n\n getTech() {\n let tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n\n if (tech) {\n if (ContribHlsTech.isUsing(tech)) {\n return new ContribHlsTech(tech);\n } else if (HlsJsTech.isUsing(tech)) {\n return new HlsJsTech(tech);\n } else if (ShakaTech.isUsing(tech)) {\n return new ShakaTech(tech);\n }\n }\n }\n\n getTrackerName() {\n return 'videojs';\n }\n\n getInstrumentationProvider() {\n return 'New Relic';\n }\n\n getInstrumentationName() {\n return this.getPlayerName();\n }\n\n getInstrumentationVersion() {\n return this.getPlayerVersion();\n }\n\n getTrackerVersion() {\n return pkg.version;\n }\n\n getPlayhead() {\n if (\n this.player.ads &&\n this.player.ads.state === 'ads-playback' &&\n this.player.ads.snapshot &&\n this.player.ads.snapshot.currentTime\n ) {\n return this.player.ads.snapshot.currentTime * 1000;\n } else if (this.player.absoluteTime) {\n return this.player.absoluteTime() * 1000;\n } else {\n return this.player.currentTime() * 1000;\n }\n }\n\n getDuration() {\n if (\n this.player.mediainfo &&\n typeof this.player.mediainfo.duration !== 'undefined'\n ) {\n return this.player.mediainfo.duration * 1000; // Brightcove\n } else {\n return this.player.duration() * 1000;\n }\n }\n\n getTitle() {\n return this.player?.mediainfo?.name; // Brightcove\n }\n\n getId() {\n return this.player?.mediainfo?.id; // Brightcove\n }\n\n getLanguage() {\n return this.player?.language();\n }\n\n getSrc() {\n let tech = this.getTech();\n if (tech && tech.getSrc) {\n return tech.getSrc();\n } else {\n return this.player.currentSrc();\n }\n }\n\n getPlayerName() {\n return this.player?.name() || 'videojs';\n }\n\n getPlayerVersion() {\n return this.player?.version || videojs.VERSION;\n }\n\n isMuted() {\n return this.player.muted();\n }\n\n getBitrate() {\n return this.getContentBitratePlayback();\n }\n\n // Measures: Actual content consumption rate during playback\n getContentBitratePlayback() {\n try {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n\n // 1. Get the current active rendition (The most accurate \"Playback Bitrate\")\n if (tech?.vhs?.playlists?.media()) {\n const activePlaylist = tech.vhs.playlists.media();\n // Use AVERAGE-BANDWIDTH if available, fallback to BANDWIDTH\n const bitrate = activePlaylist.attributes['AVERAGE-BANDWIDTH'] ||\n activePlaylist.attributes.BANDWIDTH ||\n null;\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n\n // 2. Fallback to tech wrappers (Shaka/Hls.js) if they have a getBitrate method\n const techWrapper = this.getTech();\n if (techWrapper?.getBitrate) {\n const bitrate = techWrapper.getBitrate();\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n } catch (err) {\n /* ignore */\n }\n return null;\n }\n\n getRenditionName() {\n let tech = this.getTech();\n if (tech && tech.getRenditionName) {\n return tech.getRenditionName();\n }\n }\n\n getManifestBitrate() {\n try {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n // tech.vhs.playlists.master.playlists contains the array of all renditions\n const allRenditions = tech?.vhs?.playlists?.master?.playlists;\n\n if (allRenditions && allRenditions.length > 0) {\n // Find the highest BANDWIDTH value in the list\n const maxBitrate = Math.max(\n ...allRenditions.map((p) => p.attributes.BANDWIDTH || 0),\n );\n return maxBitrate > 0 ? Math.round(maxBitrate) : null;\n }\n\n // Fallback to tech wrappers (Shaka/Hls.js)\n const techWrapper = this.getTech();\n if (techWrapper?.getManifestBitrate) {\n const bitrate = techWrapper.getManifestBitrate();\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n } catch (e) {\n /* ignore */\n }\n return null;\n }\n\n getSegmentDownloadBitrate() {\n try {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n\n // VHS stats.bandwidth\n if (tech?.vhs?.stats?.bandwidth && tech.vhs.stats.bandwidth > 0) {\n return Math.round(tech.vhs.stats.bandwidth);\n }\n\n // Fallback to tech wrappers (Shaka/Hls.js)\n const techWrapper = this.getTech();\n if (techWrapper?.getSegmentDownloadBitrate) {\n const bitrate = techWrapper.getSegmentDownloadBitrate();\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n } catch (err) {\n /* ignore */\n }\n return null;\n }\n\n getNetworkDownloadBitrate() {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n\n if (tech?.vhs?.throughput && tech.vhs.throughput > 0) {\n return Math.round(tech.vhs.throughput);\n }\n\n // Fallback to tech wrapper implementation\n const techWrapper = this.getTech();\n if (techWrapper?.getNetworkDownloadBitrate) {\n const bitrate = techWrapper.getNetworkDownloadBitrate();\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n\n return null;\n }\n\n getRenditionHeight() {\n let tech = this.getTech();\n\n if (tech && tech.getRenditionHeight) {\n return tech.getRenditionHeight();\n }\n return this.player.videoHeight();\n }\n\n getRenditionWidth() {\n let tech = this.getTech();\n if (tech && tech.getRenditionWidth) {\n return tech.getRenditionWidth();\n }\n return this.player.videoWidth();\n }\n\n getPlayrate() {\n return this.player.playbackRate();\n }\n\n isAutoplayed() {\n return this.player.autoplay();\n }\n\n isFullscreen() {\n return this.player.isFullscreen();\n }\n\n getPreload() {\n return this.player.preload();\n }\n\n registerListeners() {\n nrvideo.Log.debugCommonVideoEvents(this.player, [\n 'adstart',\n 'adend',\n 'adskip',\n 'adsready',\n 'adserror',\n 'dispose',\n ]);\n\n // BIND LISTENER METHODS\n this.onDownload = this.onDownload.bind(this);\n this.onAdsready = this.onAdsready.bind(this);\n this.onAdStart = this.onAdStart.bind(this);\n this.onAdEnd = this.onAdEnd.bind(this);\n this.onPlay = this.onPlay.bind(this);\n this.onPause = this.onPause.bind(this);\n this.onPlaying = this.onPlaying.bind(this);\n this.onAbort = this.onAbort.bind(this);\n this.onEnded = this.onEnded.bind(this);\n this.onDispose = this.onDispose.bind(this);\n this.onSeeking = this.onSeeking.bind(this);\n this.onSeeked = this.onSeeked.bind(this);\n this.onError = this.onError.bind(this);\n this.onWaiting = this.onWaiting.bind(this);\n this.onTimeupdate = this.onTimeupdate.bind(this);\n this.OnAdsAllpodsCompleted = this.OnAdsAllpodsCompleted.bind(this);\n this.onStreamManager = this.onStreamManager.bind(this);\n\n this.player.on('loadstart', this.onDownload);\n this.player.on('loadeddata', this.onDownload);\n this.player.on('loadedmetadata', this.onDownload);\n this.player.on('adsready', this.onAdsready);\n this.player.on('adstart', this.onAdStart);\n this.player.on('adend', this.onAdEnd);\n this.player.on('play', this.onPlay);\n this.player.on('pause', this.onPause);\n this.player.on('playing', this.onPlaying);\n this.player.on('abort', this.onAbort);\n this.player.on('ended', this.onEnded);\n this.player.on('dispose', this.onDispose);\n this.player.on('seeking', this.onSeeking);\n this.player.on('seeked', this.onSeeked);\n this.player.on('error', this.onError);\n this.player.on('waiting', this.onWaiting);\n this.player.on('timeupdate', this.onTimeupdate);\n this.player.on('ads-allpods-completed', this.OnAdsAllpodsCompleted);\n this.player.on('stream-manager', this.onStreamManager);\n }\n\n unregisterListeners() {\n this.player.off('loadstart', this.onDownload);\n this.player.off('loadeddata', this.onDownload);\n this.player.off('loadedmetadata', this.onDownload);\n this.player.off('adsready', this.onAdsready);\n this.player.off('adstart', this.onAdStart);\n this.player.off('adend', this.onAdEnd);\n this.player.off('play', this.onPlay);\n this.player.off('pause', this.onPause);\n this.player.off('playing', this.onPlaying);\n this.player.off('abort', this.onAbort);\n this.player.off('ended', this.onEnded);\n this.player.off('dispose', this.onDispose);\n this.player.off('seeking', this.onSeeking);\n this.player.off('seeked', this.onSeeked);\n this.player.off('error', this.onError);\n this.player.off('waiting', this.onWaiting);\n this.player.off('timeupdate', this.onTimeupdate);\n this.player.off('ads-allpods-completed', this.OnAdsAllpodsCompleted);\n this.player.off('stream-manager', this.onStreamManager);\n }\n\n onDownload(e) {\n this.sendDownload({ state: e.type });\n\n // Check if MediaTailor should be used after the source is loaded\n // Only check on 'loadstart' to avoid multiple checks\n if (\n !this.adsTracker &&\n e.type === 'loadstart' &&\n MediaTailorAdsTracker.isUsing(this.player)\n ) {\n console.log(\n 'VideojsTracker: Creating MediaTailorAdsTracker after source load'\n );\n this.setAdsTracker(new MediaTailorAdsTracker(this.player, this.options));\n // MediaTailor SSAI starts with content, not ads (unlike client-side ad frameworks)\n this.adsTracker.setIsAd(false);\n }\n }\n\n // DAI methods\n onStreamManager(event) {\n if (!this.adsTracker && event.StreamManager) {\n const daiTracker = new DaiAdsTracker(this.player);\n daiTracker.setStreamManager(event.StreamManager);\n this.setAdsTracker(daiTracker);\n }\n }\n // DAI methods end\n\n onAdsready() {\n if (!this.adsTracker) {\n if (BrightcoveImaAdsTracker.isUsing(this.player)) {\n // BC IMA\n this.setAdsTracker(new BrightcoveImaAdsTracker(this.player));\n } else if (ImaAdsTracker.isUsing(this.player)) {\n // IMA\n this.setAdsTracker(new ImaAdsTracker(this.player));\n } else if (FreewheelAdsTracker.isUsing(this.player)) {\n // FW\n\n this.setAdsTracker(new FreewheelAdsTracker(this.player));\n // } else if (OnceAdsTracker.isUsing(this)) { // Once\n } else {\n // Generic\n this.setAdsTracker(new VideojsAdsTracker(this.player));\n }\n }\n }\n\n onAdStart() {\n this.currentAdPlaying = true;\n\n /* get the array with all the cue points which will be played */\n if (!this.imaAdCuePoints) {\n this.imaAdCuePoints = this.player?.ima?.getAdsManager().getCuePoints();\n }\n }\n onAdEnd() {\n if (this.isContentEnd) {\n this.sendEnd();\n }\n }\n\n OnAdsAllpodsCompleted() {\n this.onEnded.bind(this);\n this.FreewheelAdsCompleted = true;\n }\n\n /**\n * Check if ads tracker is currently in ad mode\n * @returns {boolean} True if ads are playing\n */\n isAdsTrackerActive() {\n return this.adsTracker && this.adsTracker.isAd && this.adsTracker.isAd();\n }\n\n onPlay() {\n this.sendRequest();\n }\n\n onPause() {\n // Don't send CONTENT_PAUSE if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n // Don't send CONTENT_PAUSE if video has ended (CONTENT_END will be sent instead)\n if (this.player.ended()) {\n return;\n }\n this.sendPause();\n }\n\n onPlaying() {\n // Don't send CONTENT_RESUME if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n this.sendResume();\n this.sendBufferEnd();\n }\n\n onAbort() {\n this.sendEnd();\n }\n\n onEnded() {\n if (this.adsTracker) {\n this.isContentEnd = true;\n if (this.imaAdCuePoints && !this.imaAdCuePoints.includes(-1)) {\n this.sendEnd();\n }\n } else {\n this.sendEnd();\n }\n }\n\n onDispose() {\n this.sendEnd();\n }\n\n onSeeking() {\n // Don't send CONTENT_SEEK_START if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n this.sendSeekStart();\n }\n\n onSeeked() {\n // Don't send CONTENT_SEEK_END if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n this.sendSeekEnd();\n }\n\n onError() {\n const error = this.player.error();\n\n const errorCode = error.code;\n const errorMessage = error.message;\n if (this.player.error && this.player.error()) {\n this.sendError({ errorCode, errorMessage });\n }\n }\n\n onWaiting(e) {\n // Don't send CONTENT_BUFFER_START if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n this.sendBufferStart();\n }\n\n onTimeupdate(e) {\n if (this.getPlayhead() > 0.1) {\n this.sendStart();\n }\n }\n}\n\n// Static members\nexport {\n HlsJsTech,\n ContribHlsTech,\n ShakaTech,\n VideojsAdsTracker,\n ImaAdsTracker,\n BrightcoveImaAdsTracker,\n FreewheelAdsTracker,\n MediaTailorAdsTracker,\n};\n","/**\n * MediaTailor Constants\n * Contains all regex patterns, config defaults, and constant values for AWS MediaTailor ad tracking\n */\n\n// HLS manifest regex patterns used while scanning raw MediaTailor playlists.\n// Example inputs:\n// - #EXT-X-CUE-OUT:DURATION=29.988\n// - #EXT-X-DISCONTINUITY\n// - #EXT-X-MAP:URI=\"https://segments.mediatailor.../init.mp4\"\nexport const REGEX_CUE_OUT = /#EXT-X-CUE-OUT:DURATION=([\\d.]+)/; // Captures the numeric ad break duration from a MediaTailor CUE-OUT tag so the tracker can seed an ad break before CUE-IN arrives\nexport const REGEX_DISCONTINUITY = /#EXT-X-DISCONTINUITY/; // Detects HLS discontinuity boundaries, which MediaTailor playlists can use around ad/content transitions and pod boundaries\nexport const REGEX_MAP = /#EXT-X-MAP:URI=\"([^\"]+)\"/; // Captures the MAP URI from fMP4 playlists so MAP changes can be used to split one avail into multiple ad pods\n\n// MediaTailor URL and manifest regex patterns.\n// These are used to derive the tracking endpoint and to read manifest refresh metadata\n// directly from HLS and DASH payloads.\nexport const REGEX_SESSION_ID = /sessionId=([^&]+)/; // Captures the session id from a sessionized playback URL query string such as ?aws.sessionId=abc123 so we can construct the MediaTailor tracking endpoint\nexport const REGEX_TRACKING_PATH_SEGMENT = /\\/v1\\/(master|session|dash)\\//; // Matches the playback path prefix in URLs like /v1/master/... or /v1/dash/... so it can be rewritten to /v1/tracking/...\nexport const REGEX_MANIFEST_FILE_SUFFIX = /\\/[^/]*\\.(m3u8|mpd).*$/; // Matches the trailing manifest filename and any query string, such as /master.m3u8?... or /index.mpd?..., so it can be replaced with /{sessionId}\nexport const REGEX_HLS_TARGET_DURATION = /#EXT-X-TARGETDURATION:(\\d+)/; // Captures the HLS target duration value from a line like #EXT-X-TARGETDURATION:6, which we use as the live polling cadence when available\nexport const REGEX_DASH_MINIMUM_UPDATE_PERIOD = /minimumUpdatePeriod=\"([^\"]+)\"/; // Captures the DASH MPD minimumUpdatePeriod attribute, for example minimumUpdatePeriod=\"PT5S\", so live polling follows the manifest's declared refresh rate\nexport const REGEX_ISO_8601_DURATION = /PT(?:(\\d+)H)?(?:(\\d+)M)?(?:([\\d.]+)S)?/; // Parses ISO 8601 duration values like PT5S, PT1M14S, or PT1H2M3.5S into hour, minute, and second groups for DASH timing calculations\n\n// MediaTailor string markers used across tracker selection and manifest parsing\nexport const HLS_MANIFEST_EXTENSION = '.m3u8'; // Identifies HLS manifest URLs and child playlist references\nexport const DASH_MANIFEST_EXTENSION = '.mpd'; // Identifies DASH manifest URLs\nexport const MEDIATAILOR_HOST_MARKER = '.mediatailor.'; // Identifies MediaTailor playback URLs when selecting this ads tracker\nexport const MT_HLS_CUE_OUT_TAG = '#EXT-X-CUE-OUT'; // Marks the start of an HLS ad break in MediaTailor manifests\nexport const MT_HLS_CUE_IN_TAG = '#EXT-X-CUE-IN'; // Marks the end of an HLS ad break in MediaTailor manifests\nexport const HLS_SEGMENT_DURATION_TAG = '#EXTINF:'; // Carries HLS segment duration values used to advance manifest time\nexport const HLS_TAG_PREFIX = '#'; // Distinguishes HLS tags from playlist URI lines in manifest scans\nexport const SCTE35_SCHEME_MARKER = 'scte35'; // Identifies SCTE-35 DASH signaling in schemeIdUri values\nexport const DASH_SCTE35_EVENT_STREAM_SELECTOR =\n 'EventStream[schemeIdUri*=\"scte35\"], EventStream[schemeIdUri*=\"SCTE35\"]'; // Selects DASH EventStream nodes that carry SCTE-35 ad markers\nexport const HLS_MIME_TYPE = 'application/vnd.apple.mpegurl'; // MIME type used to detect Safari/native HLS playback support\n\n// MediaTailor URL Patterns\nexport const MT_SEGMENT_PATTERN = 'segments.mediatailor'; // Identifies MediaTailor ad segments\n\nexport const TRACKING_API_TIMEOUT_MS = 5000; // Keep tracking metadata requests within the guide's 5s end-to-end budget\nexport const DEFAULT_LIVE_POLL_INTERVAL_MS = 5000; // Temporary fallback until manifest metadata provides cadence\n// Timing Thresholds\nexport const MIN_AD_DURATION = 0.5; // Minimum ad duration in seconds (filter false positives)\nexport const AD_TIMING_TOLERANCE = 0.5; // Tolerance for matching ad times in seconds\nexport const POST_AD_PAUSE_THRESHOLD = 500; // Ignore pause events within 500ms after ad break (avoids false CONTENT_PAUSE)\n\n// Stream Types\nexport const STREAM_TYPE = {\n VOD: 'vod', // Video on Demand\n LIVE: 'live', // Live streaming\n};\n\n// Manifest Types\nexport const MANIFEST_TYPE = {\n HLS: 'hls', // HTTP Live Streaming (.m3u8)\n DASH: 'dash', // Dynamic Adaptive Streaming over HTTP (.mpd)\n};\n\n// Ad Position Types (for VOD only)\nexport const AD_POSITION = {\n PRE_ROLL: 'pre', // First ad break\n MID_ROLL: 'mid', // Middle ad break\n POST_ROLL: 'post', // Last ad break\n};\n\n// Ad Detection Sources\nexport const AD_SOURCE = {\n MANIFEST_CUE: 'manifest-cue', // Detected from CUE-OUT/CUE-IN tags (HLS) or EventStream (DASH)\n VHS_DISCONTINUITY: 'vhs-discontinuity', // Detected from VHS discontinuityStarts\n TRACKING_API: 'tracking-api', // Added from tracking API response\n MANIFEST_AND_TRACKING: 'manifest+tracking', // Enriched by both sources\n DASH_EMSG: 'dash-emsg', // Detected from DASH emsg events (Shaka Player)\n DASH_EVENT_STREAM: 'dash-event-stream', // Detected from DASH EventStream (dash.js)\n};\n\n// Quartile Percentages\nexport const QUARTILES = {\n Q1: 0.25, // 25% progress\n Q2: 0.5, // 50% progress\n Q3: 0.75, // 75% progress\n};\n","export default class ShakaTech {\n constructor(tech) {\n this.tech = tech.shakaPlayer;\n this.player = tech.el().player; // Store player reference for playback bitrate calculation\n }\n\n getSrc(tech) {\n try {\n return this.tech.getManifestUri();\n } catch (err) {}\n return null;\n }\n\n getRenditionBitrate(tech) {\n try {\n const bitrate = this.tech.getStats().streamBandwidth;\n return bitrate ? Math.round(bitrate) : null;\n } catch (err) {}\n return null;\n }\n\n getManifestBitrate() {\n try {\n // Return highest available bitrate from all variants\n const tracks = this.tech.getVariantTracks();\n if (tracks && tracks.length > 0) {\n return Math.round(Math.max(\n ...tracks.map((t) => t.videoBandwidth + (t.audioBandwidth || 0)),\n ));\n }\n } catch (err) {}\n return null;\n }\n\n getRenditionWidth(tech) {\n try {\n var tracks = this.tech.getVariantTracks();\n for (var i in tracks) {\n var track = tracks[i];\n if (track.active && track.type === 'video') {\n return track.width;\n }\n }\n } catch (err) {}\n return null;\n }\n\n getRenditionHeight(tech) {\n try {\n var tracks = this.tech.getVariantTracks();\n for (var i in tracks) {\n var track = tracks[i];\n if (track.active && track.type === 'video') {\n return track.height;\n }\n }\n } catch (err) {}\n return null;\n }\n\n getBitrate() {\n // Calculate playback bitrate (actual content consumption rate)\n return this.getContentBitratePlayback();\n }\n\n getContentBitratePlayback() {\n try {\n // Get the current variant's bitrate from manifest (streamBandwidth)\n var stats = this.tech.getStats();\n if (stats && stats.streamBandwidth && stats.streamBandwidth > 0) {\n return Math.round(stats.streamBandwidth);\n }\n } catch (err) {}\n return null;\n }\n\n getSegmentDownloadBitrate() {\n try {\n // Use estimatedBandwidth for measured bitrate\n var stats = this.tech.getStats();\n if (stats && stats.estimatedBandwidth > 0) {\n return Math.round(stats.estimatedBandwidth);\n }\n } catch (err) {}\n return null;\n }\n\n getNetworkDownloadBitrate() {\n try {\n // Shaka: use estimatedBandwidth for download bitrate (no separate property)\n var stats = this.tech.getStats();\n if (stats && stats.estimatedBandwidth > 0) {\n return Math.round(stats.estimatedBandwidth);\n }\n } catch (err) {}\n return null;\n }\n}\n\nShakaTech.isUsing = function (tech) {\n return !!tech.shakaPlayer;\n};\n","export default class ContribHlsTech {\n constructor(tech) {\n this.tech = tech.vhs;\n this.player = tech.el().player; // Store player reference for playback bitrate calculation\n }\n\n getRenditionName() {\n try {\n var media = this.tech.playlists.media();\n if (media && media.attributes) return media.attributes.NAME;\n } catch (err) {}\n return null;\n }\n\n getRenditionBitrate() {\n try {\n var media = this.tech.playlists.media();\n if (media && media.attributes) return Math.round(media.attributes.BANDWIDTH);\n } catch (err) {}\n return null;\n }\n\n getRenditionWidth() {\n try {\n var media = this.tech.playlists.media();\n if (media && media.attributes && media.attributes.RESOLUTION) {\n return media.attributes.RESOLUTION.width;\n }\n } catch (err) {}\n return null;\n }\n\n getRenditionHeight() {\n try {\n var media = this.tech.playlists.media();\n if (media && media.attributes && media.attributes.RESOLUTION) {\n return media.attributes.RESOLUTION.height;\n }\n } catch (err) {}\n return null;\n }\n\n getBitrate() {\n // Calculate playback bitrate (actual content consumption rate)\n return this.getContentBitratePlayback();\n }\n\n getManifestBitrate() {\n try {\n // Return highest available bitrate from all renditions\n const playlists = this.tech.playlists.master.playlists;\n if (playlists && playlists.length > 0) {\n return Math.round(Math.max(...playlists.map((p) => p.attributes.BANDWIDTH)));\n }\n } catch (err) {}\n return null;\n }\n\n getSegmentDownloadBitrate() {\n if (\n this.tech.stats?.bandwidth !== undefined &&\n this.tech.stats.bandwidth > 0\n ) {\n return Math.round(this.tech.stats.bandwidth);\n }\n return null;\n }\n\n getNetworkDownloadBitrate() {\n if (this.tech.throughput !== undefined && this.tech.throughput > 0) {\n return Math.round(this.tech.throughput);\n }\n return null;\n }\n\n getContentBitratePlayback() {\n try {\n // Get the current active rendition's bitrate from manifest\n const media = this.tech.playlists.media();\n if (media && media.attributes) {\n // Use AVERAGE-BANDWIDTH if available, fallback to BANDWIDTH\n const bitrate = media.attributes['AVERAGE-BANDWIDTH'] ||\n media.attributes.BANDWIDTH ||\n null;\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n } catch (err) {}\n return null;\n }\n}\n\nContribHlsTech.isUsing = function (tech) {\n return !!tech.vhs;\n};\n","import nrvideo from '@newrelic/video-core'\nimport pkg from '../../package.json'\nimport ContribHlsTech from '../techs/contrib-hls';\nimport HlsJsTech from '../techs/hls-js';\nimport ShakaTech from '../techs/shaka';\n\nexport default class VideojsAdsTracker extends nrvideo.VideoTracker {\n\n getTech() {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n \n if (tech) {\n if (ContribHlsTech.isUsing(tech)) {\n return new ContribHlsTech(tech);\n } else if (HlsJsTech.isUsing(tech)) {\n return new HlsJsTech(tech);\n } else if (ShakaTech.isUsing(tech)) {\n return new ShakaTech(tech);\n }\n }\n }\n \n getTrackerName () {\n return 'videojs-ads'\n }\n\n getTrackerVersion () {\n return pkg.version\n }\n\n isMuted () {\n return this.player.muted()\n }\n\n getRenditionHeight () {\n return null\n }\n\n getRenditionWidth () {\n return null\n }\n\n getPlayerName () {\n return 'videojs-ads'\n }\n\n getPlayerVersion () {\n return this.player.ads.VERSION\n }\n\n registerListeners () {\n nrvideo.Log.debugCommonVideoEvents(this.player, [\n null,\n 'ads-request',\n 'ads-load',\n 'adstart',\n 'adend',\n 'adskip',\n 'adserror',\n 'ads-click',\n 'ads-pod-started',\n 'ads-pod-ended',\n 'ads-first-quartile',\n 'ads-midpoint',\n 'ads-third-quartile',\n 'ads-pause',\n 'ads-play',\n 'adtimeout'\n ])\n\n // Register listeners\n this.player.on('ads-request', this.onAdrequest.bind(this))\n this.player.on('ads-load', this.onAdload.bind(this))\n this.player.on('adstart', this.onAdstart.bind(this))\n this.player.on('adend', this.onAdend.bind(this))\n this.player.on('adskip', this.onAdskip.bind(this))\n this.player.on('adserror', this.onAdserror.bind(this))\n this.player.on('ads-click', this.onAdsClick.bind(this))\n this.player.on('ads-pod-started', this.onPodStart.bind(this))\n this.player.on('ads-pod-ended', this.onPodEnd.bind(this))\n this.player.on('ads-first-quartile', this.onFirstQuartile.bind(this))\n this.player.on('ads-midpoint', this.onMidpoint.bind(this))\n this.player.on('ads-third-quartile', this.onThirdQuartile.bind(this))\n this.player.on('ads-pause', this.onAdspause.bind(this))\n this.player.on('ads-play', this.onAdsplay.bind(this))\n }\n\n unregisterListeners () {\n // unregister listeners\n this.player.off('ads-request', this.onAdrequest)\n this.player.off('ads-load', this.onAdload)\n this.player.off('adstart', this.onAdstart)\n this.player.off('adend', this.onAdend)\n this.player.off('adskip', this.onAdskip)\n this.player.off('adserror', this.onAdserror)\n this.player.off('ads-click', this.onAdsClick)\n this.player.off('ads-pod-started', this.onPodStart)\n this.player.off('ads-pod-ended', this.onPodEnd)\n this.player.off('ads-first-quartile', this.onFirstQuartile)\n this.player.off('ads-midpoint', this.onMidpoint)\n this.player.off('ads-third-quartile', this.onThirdQuartile)\n this.player.off('ads-pause', this.onAdspause)\n this.player.off('ads-play', this.onAdsplay)\n }\n\n onAdrequest (e) {\n this.sendRequest()\n this.sendDownload({ state: 'ads-request' })\n }\n\n onAdload (e) {\n this.sendDownload({ state: 'ads-load' })\n }\n\n onAdstart (e) {\n this.sendRequest()\n this.sendStart()\n }\n\n onAdend (e) {\n this.sendEnd()\n }\n\n onAdskip (e) {\n this.sendEnd({ skipped: true })\n }\n\n onAdserror (e) {\n this.sendError()\n }\n\n onAdsClick (e) {\n this.sendAdClick({ url: 'unknown' })\n }\n\n onPodStart (e) {\n this.sendAdBreakStart()\n }\n\n onPodEnd (e) {\n this.sendAdBreakEnd()\n }\n\n onFirstQuartile () {\n this.sendAdQuartile({ quartile: 1 })\n }\n\n onMidpoint () {\n this.sendAdQuartile({ quartile: 2 })\n }\n\n onThirdQuartile () {\n this.sendAdQuartile({ quartile: 3 })\n }\n\n onAdspause () {\n this.sendPause()\n }\n\n onAdsplay () {\n this.sendResume()\n }\n}\n","/*! For license information please see index.js.LICENSE.txt */\nvar t={487(t,e,i){i.r(e),i.d(e,{videoAnalyticsHarvester:()=>h});var s=i(374),r=i(431),a=i(51),n=i(144),o=i(302);const h=new class{constructor(){this.isInitialized=!1,this.harvestScheduler=null,this.eventBuffer=null}initialize(){if(this.isInitialized)n.A.warn(\"Video analytics agent already initialized\");else try{this.eventBuffer=new r.t,this.harvestScheduler=new s.n(this.eventBuffer),this.harvestScheduler.startScheduler(),this.isInitialized=!0,n.A.notice(\"Video analytics agent initialized successfully\")}catch(t){n.A.error(\"Failed to initialize video analytics agent:\",t.message)}}addEvent(t){this.isInitialized||(n.A.warn(\"Video analytics agent not initialized, initializing now\"),this.initialize());try{return t.actionName&&t.actionName===o.A.Events.QOE_AGGREGATE?t.viewId?this.eventBuffer.addOrReplaceByActionNameAndViewId(o.A.Events.QOE_AGGREGATE,t.viewId,t):this.eventBuffer.addOrReplaceByActionName(o.A.Events.QOE_AGGREGATE,t):this.eventBuffer.add(t)}catch(t){return n.A.error(\"Failed to add event to harvesting system:\",t.message),!1}}setHarvestInterval(t){this.isInitialized||this.initialize(),this.harvestScheduler.updateHarvestInterval(t)}forceNextQoeCycle(){this.harvestScheduler&&(this.harvestScheduler.forceNextQoeCycle=!0)}setBeforeDrainCallback(t){this.harvestScheduler&&(this.harvestScheduler.beforeDrainCallback=t)}refreshQoeKpis(t,e){if(!this.eventBuffer||!t)return;const i=e?this.eventBuffer.findByActionNameAndViewId(o.A.Events.QOE_AGGREGATE,e):this.eventBuffer.findByActionName(o.A.Events.QOE_AGGREGATE);if(i){const s={...i};for(const e of a.A.QOE_KPI_KEYS)e in t&&(s[e]=t[e]);e?this.eventBuffer.addOrReplaceByActionNameAndViewId(o.A.Events.QOE_AGGREGATE,e,s):this.eventBuffer.addOrReplaceByActionName(o.A.Events.QOE_AGGREGATE,s)}}}},455(t,e,i){i.d(e,{A:()=>r});class s{constructor(){this.reset()}reset(){this.startTime=0,this.stopTime=0,this.accumulator=0,this.offset=0}getDeltaTime(){return this.startTime?this.offset+((new Date).getTime()-this.startTime):null}start(){this.startTime=(new Date).getTime(),this.stopTime=0}stop(){return this.stopTime=(new Date).getTime(),this.startTime<this.stopTime&&(this.accumulator+=this.stopTime-this.startTime),this.getDeltaTime()}getDuration(){return this.stopTime?this.accumulator+this.offset:this.accumulator+(this.getDeltaTime()??0)}clone(){var t=new s;return t.startTime=this.startTime,t.stopTime=this.stopTime,t.offset=this.offset,t.accumulator=this.accumulator,t}}const r=s},51(t,e,i){i.d(e,{A:()=>r});class s{}s.AdPositions={PRE:\"pre\",MID:\"mid\",POST:\"post\"},s.COLLECTOR={US:[\"bam.nr-data.net\",\"bam-cell.nr-data.net\"],EU:\"bam.eu01.nr-data.net\",Staging:\"staging-bam-cell.nr-data.net\",GOV:\"gov-bam.nr-data.net\"},s.VALID_EVENT_TYPES=[\"VideoAction\",\"VideoAdAction\",\"VideoErrorAction\",\"VideoCustomAction\"],s.MAX_PAYLOAD_SIZE=1048576,s.MAX_BEACON_SIZE=61440,s.MAX_EVENTS_PER_BATCH=1e3,s.INTERVAL=1e4,s.QOE_KPI_KEYS=[\"startupTime\",\"peakBitrate\",\"averageBitrate\",\"totalPlaytime\",\"totalRebufferingTime\",\"rebufferingRatio\",\"hadStartupError\",\"hadPlaybackError\",\"numberOfErrors\"],s.QOE_AGGREGATE_KEYS=[\"coreVersion\",\"instrumentation.name\",\"instrumentation.provider\",\"instrumentation.version\",\"isBackgroundEvent\",\"playerName\",\"playerVersion\",\"src\",\"viewId\",\"viewSession\",\"contentIsAutoplayed\",\"contentIsMuted\",\"contentRenditionHeight\",\"contentRenditionWidth\",\"contentSrc\",\"numberOfVideos\",\"pageUrl\",\"trackerName\",\"trackerVersion\",\"contentDuration\",\"contentPlayrate\",\"contentPlayhead\",\"contentPreload\",\"elapsedTime\",\"contentTitle\",\"contentId\",\"contentIsLive\",\"deviceType\",\"deviceGroup\",\"deviceManufacturer\",\"deviceModel\",\"deviceName\",\"deviceSize\",\"deviceUuid\",\"contentRenditionName\",\"contentIsFullscreen\",\"contentCdn\",\"contentFps\",\"asnOrganization\",\"asnLongitude\",\"asnLatitude\",\"asn\",\"timeSinceRequested\",\"timeSinceStarted\"];const r=s},568(t,e,i){i.d(e,{A:()=>s});const s=class{on(t,e){if(this._listeners=this._listeners||{},\"function\"==typeof e)return this._listeners[t]=this._listeners[t]||[],this._listeners[t].push(e),this}off(t,e){if(this._listeners=this._listeners||{},this._listeners[t]){var i=this._listeners[t].indexOf(e);-1!==i&&this._listeners[t].splice(i,1)}return this}emit(t,e,i){return this._listeners=this._listeners||{},i=i||{},Array.isArray(this._listeners[e])&&this._listeners[e].forEach(s=>{s.call(this,{eventType:t,type:e,data:i,target:this})}),Array.isArray(this._listeners[\"*\"])&&this._listeners[\"*\"].forEach(s=>{s.call(this,{eventType:t,type:e,data:i,target:this})}),this}}},431(t,e,i){i.d(e,{t:()=>h});var s=i(144),r=i(51),a=i(347);const{MAX_PAYLOAD_SIZE:n,MAX_EVENTS_PER_BATCH:o}=r.A;class h{constructor(){this.buffer=[],this.maxPayloadSize=n,this.maxEventsPerBatch=o,this.currentPayloadSize=0,this.totalEvents=0,this.smartHarvestPayloadThreshold=Math.floor(.6*this.maxPayloadSize),this.overflowPayloadThreshold=Math.floor(.9*this.maxPayloadSize),this.smartHarvestEventThreshold=Math.floor(.6*this.maxEventsPerBatch),this.overflowEventThreshold=Math.floor(.9*this.maxEventsPerBatch),this.onSmartHarvestTrigger=null}addOrReplaceByActionName(t,e){const i=this.buffer.findIndex(e=>e.actionName===t);try{return-1===i?this.add(e):this.add(e,i),!0}catch(t){return s.A.error(\"Failed to set or replace the event to buffer:\",t.message),!1}}addOrReplaceByActionNameAndViewId(t,e,i){const r=this.buffer.findIndex(i=>i.actionName===t&&i.viewId===e);try{return-1===r?this.add(i):this.add(i,r),!0}catch(t){return s.A.error(\"Failed to set or replace the event to buffer:\",t.message),!1}}findByActionNameAndViewId(t,e){return this.buffer.find(i=>i.actionName===t&&i.viewId===e)||null}findByActionName(t){return this.buffer.find(e=>e.actionName===t)||null}add(t,e){try{const i=(0,a.Q3)(t),s=this.currentPayloadSize+i>=this.maxPayloadSize,r=this.totalEvents+1>=this.maxEventsPerBatch;if((s||r)&&this.makeRoom(i),null!=e&&e>-1){const s=(0,a.Q3)(this.buffer[e]);this.buffer[e]=t,this.currentPayloadSize+=i-s}else this.buffer.push(t),this.totalEvents++,this.currentPayloadSize+=i;return this.checkSmartHarvestTrigger(),!0}catch(t){return s.A.error(\"Failed to add event to buffer:\",t.message),!1}}checkSmartHarvestTrigger(){const t=this.currentPayloadSize/this.maxPayloadSize,e=this.totalEvents/this.maxEventsPerBatch,i=this.currentPayloadSize>=this.overflowPayloadThreshold,r=this.totalEvents>=this.overflowEventThreshold;if(i||r){const r=i?`payload ${this.currentPayloadSize}/${this.maxPayloadSize} bytes (${Math.round(100*t)}%)`:`events ${this.totalEvents}/${this.maxEventsPerBatch} (${Math.round(100*e)}%)`;s.A.warn(`OVERFLOW PREVENTION: ${r} - Emergency harvest triggered`),this.onSmartHarvestTrigger&&\"function\"==typeof this.onSmartHarvestTrigger&&this.onSmartHarvestTrigger(\"overflow\",90)}else{const t=this.currentPayloadSize>=this.smartHarvestPayloadThreshold,e=this.totalEvents>=this.smartHarvestEventThreshold;(t||e)&&this.onSmartHarvestTrigger&&\"function\"==typeof this.onSmartHarvestTrigger&&this.onSmartHarvestTrigger(\"smart\",60)}}setSmartHarvestCallback(t){this.onSmartHarvestTrigger=t}drain(){try{const t=this.buffer.splice(0);return this.totalEvents=0,this.currentPayloadSize=0,t}catch(t){return s.A.error(\"Failed to drain events from buffer:\",t.message),[]}}isEmpty(){return 0===this.totalEvents}size(){return this.totalEvents}clear(){this.buffer=[],this.totalEvents=0}makeRoom(t){if(t>this.maxPayloadSize)s.A.error(\"Event dropped: Event size exceeds maximum payload size.\");else for(;(this.totalEvents>=this.maxEventsPerBatch||this.currentPayloadSize+t>=this.maxPayloadSize)&&this.buffer.length>0;){const t=this.buffer.shift(),e=(0,a.Q3)(t);this.totalEvents--,this.currentPayloadSize-=e,s.A.warn(\"Event buffer full, oldest event removed.\")}}}},374(t,e,i){i.d(e,{n:()=>l});var s=i(431),r=i(413),a=i(481),n=i(347),o=i(51),h=i(302),d=i(144);class l{constructor(t){this.eventBuffer=t,this.retryQueueHandler=new r.u,this.httpClient=new a.X,this.fallBackUrl=\"\",this.retryCount=0,this.eventBuffer instanceof s.t&&this.eventBuffer.setSmartHarvestCallback((t,e)=>this.triggerSmartHarvest(t,e)),this.isStarted=!1,this.currentTimerId=null,this.harvestCycle=o.A.INTERVAL,this.isHarvesting=!1,this.qoeCycleCount=1,this.forceNextQoeCycle=!1,this.beforeDrainCallback=null,this._lastSentQoeKpis={},this.setupPageLifecycleHandlers()}startScheduler(){this.isStarted?d.A.warn(\"Harvest scheduler is already started\"):(this.isStarted=!0,d.A.notice(\"Starting harvest scheduler\",{harvestCycle:this.harvestCycle,eventBufferSize:this.eventBuffer?this.eventBuffer.size():0}),this.scheduleNextHarvest())}stopScheduler(){this.isStarted&&(this.isStarted=!1,this.currentTimerId&&(clearTimeout(this.currentTimerId),this.currentTimerId=null),d.A.notice(\"Harvest scheduler stopped\"))}async triggerSmartHarvest(t,e){if(d.A.notice(`${t} harvest triggered at ${e}% threshold`,{type:t,threshold:e}),this.eventBuffer&&!this.eventBuffer.isEmpty()){this.currentTimerId&&(clearTimeout(this.currentTimerId),this.currentTimerId=null);try{await this.triggerHarvest({})}catch(e){d.A.error(`${t} harvest failed:`,e.message)}finally{this.isStarted&&this.scheduleNextHarvest()}}}scheduleNextHarvest(){if(!this.isStarted)return;const t=this.harvestCycle;this.currentTimerId=setTimeout(()=>this.onHarvestInterval(),t)}async onHarvestInterval(){try{const t=this.eventBuffer&&!this.eventBuffer.isEmpty(),e=this.retryQueueHandler&&this.retryQueueHandler.getQueueSize()>0;if(!t&&!e)return;await this.triggerHarvest({})}catch(t){d.A.error(\"Error during scheduled harvest:\",t.message)}finally{this.scheduleNextHarvest()}}async triggerHarvest(t={}){if(this.isHarvesting)return{success:!1,reason:\"harvest_in_progress\"};this.isHarvesting=!0;try{let e=this.drainEvents(t);if(t.isFinalHarvest){const t=o.A.MAX_BEACON_SIZE;(0,n.Q3)(e)>t&&(e=this.trimEventsToFit(e,t))}const i=await this.sendChunk(e,t,!0);return{success:i.success,totalChunks:1,results:[i]}}catch(t){return d.A.error(\"Harvest cycle failed:\",t.message),this.handleHarvestFailure(t),{success:!1,error:t.message,consecutiveFailures:this.consecutiveFailures}}finally{this.isHarvesting=!1}}trimEventsToFit(t,e){if(0===t.length)return t;const i=[];let s=0;for(let r=t.length-1;r>=0;r--){const a=t[r],o=(0,n.Q3)({ins:[a,...i]});o>e||(i.unshift(a),s=o)}const r=t.length-i.length;if(r>0){const a=t.slice(0,r);d.A.warn(`Discarded ${r} events to fit beacon size limit`,{originalCount:t.length,trimmedCount:i.length,finalSize:s,maxSize:e}),this.retryQueueHandler&&this.retryQueueHandler.addFailedEvents(a)}return i}drainEvents(t={}){const e=window.NRVIDEO?.config?.qoeIntervalFactor??1,i=!!t.isFinalHarvest||this.forceNextQoeCycle,s=(this.qoeCycleCount-1)%e==0||i;if(this.forceNextQoeCycle&&(this.forceNextQoeCycle=!1),this.beforeDrainCallback&&\"function\"==typeof this.beforeDrainCallback)try{this.beforeDrainCallback()}catch(t){d.A.error(\"Before drain callback failed:\",t.message)}const r=this.eventBuffer.drain();let a;if(s)a=r;else{a=[];for(const t of r)t.actionName===h.A.Events.QOE_AGGREGATE?this.eventBuffer.add(t):a.push(t)}this.qoeCycleCount++;for(let t=a.length-1;t>=0;t--){const e=a[t];e.actionName===h.A.Events.QOE_AGGREGATE&&(!i&&this._qoeKpisUnchanged(e)?a.splice(t,1):this._saveQoeKpis(e))}let l=[...a],c=(0,n.Q3)(a);if(this.retryQueueHandler&&this.retryQueueHandler.getQueueSize()>0){const t=o.A.MAX_PAYLOAD_SIZE-c,e=o.A.MAX_EVENTS_PER_BATCH-l.length;if(t>0&&e>0){const i=this.retryQueueHandler.getRetryEventsToFit(t,e);i.length>0&&(l=[...i,...l])}}return l}async sendChunk(t,e,i){const s={url:(0,n.c$)(this.fallBackUrl),payload:{body:{ins:t}},options:{...e,isLastChunk:i}};return new Promise(e=>{this.httpClient.send(s,i=>{i.retry?this.handleRequestFailure(t):(this.retryCount=0,this.fallBackUrl=\"\"),e({success:!i.retry,status:i.status,error:i.error,chunk:t,eventCount:t.length})})})}handleRequestFailure(t){this.retryQueueHandler.addFailedEvents(t),\"US\"===window.NRVIDEO?.info?.region&&(this.retryCount++,this.retryCount>5?(this.retryCount=0,this.fallBackUrl=\"\"):this.retryCount>=2&&(this.fallBackUrl=o.A.COLLECTOR.US[1]))}handleHarvestFailure(t){this.consecutiveFailures++,d.A.warn(\"Harvest failure handled\",{error:t.message,consecutiveFailures:this.consecutiveFailures})}updateHarvestInterval(t){\"number\"!=typeof t&&isNaN(t)?d.A.warn(\"Invalid newInterval provided to updateHarvestInterval\"):t<1e3||t>3e5?d.A.warn(\"newInterval out of bounds (1000-300000), ignoring\"):this.harvestCycle!==t&&(this.harvestCycle=t,d.A.notice(\"Updated harvestCycle:\",this.harvestCycle),this.currentTimerId&&(clearTimeout(this.currentTimerId),this.currentTimerId=null),this.isStarted&&this.scheduleNextHarvest())}setupPageLifecycleHandlers(){let t=!1;const e=()=>{t||(t=!0,this.triggerHarvest({isFinalHarvest:!0,force:!0}))};document.addEventListener(\"visibilitychange\",()=>{document.hidden&&e()}),window.addEventListener(\"pagehide\",()=>{e()}),window.addEventListener(\"beforeunload\",()=>{e()})}_qoeKpisUnchanged(t){const e=this._lastSentQoeKpis[t.viewId];if(!e)return!1;for(const i of o.A.QOE_KPI_KEYS)if(t[i]!==e[i])return!1;return!0}_saveQoeKpis(t){const e={};for(const i of o.A.QOE_KPI_KEYS)e[i]=t[i];this._lastSentQoeKpis[t.viewId]=e}}},144(t,e,i){i.d(e,{A:()=>o});class s{static error(...t){r(t,s.Levels.ERROR,\"darkred\")}static warn(...t){r(t,s.Levels.WARNING,\"darkorange\")}static notice(...t){r([].slice.call(arguments),s.Levels.NOTICE,\"darkcyan\")}static debug(...t){r(t,s.Levels.DEBUG,\"indigo\")}static debugCommonVideoEvents(t,e,i){try{if(s.level<=s.Levels.DEBUG){i=i||function(t){s.debug(\"Event: \"+t.type)};var r=[\"canplay\",\"buffering\",\"waiting\",\"ended\",\"play\",\"playing\",\"pause\",\"resume\",\"error\",\"abort\",\"seek\",\"seeking\",\"seeked\",\"stalled\",\"dispose\",\"loadeddata\",\"loadstart\",\"loadedmetadata\"];e&&(null===e[0]?(e.shift(),r=e):r=r.concat(e));for(var a=0;a<r.length;a++)\"function\"==typeof t?t.call(window,r[a],i):t.on?t.on(r[a],i):t.addEventListener?t.addEventListener(r[a],i):t.addEventHandler?t.addEventHandler(r[a],i):s.warn(\"debugCommonVideoEvents: No common listener function found for \",t)}}catch(t){s.warn(t)}}}function r(t,e,i){e=e||s.Levels.NOTICE,i=i||\"darkcyan\";var r,o,h=s.prefix;s.includeTime&&(h+=\"[\"+(\"0\"+(r=new Date).getDate()).slice(-2)+\":\"+(\"0\"+r.getMinutes()).slice(-2)+\":\"+(\"0\"+r.getSeconds()).slice(-2)+\".\"+(\"00\"+r.getMilliseconds()).slice(-3)+\"] \"),h+=function(t){return n[t]}(e)+\":\",s.level<=e&&e!==s.Levels.SILENT&&(!s.colorful||\"undefined\"!=typeof document&&document.documentMode?a(t,h):(o=e===s.Levels.ERROR&&console.error?console.error:e===s.Levels.WARNING&&console.warn?console.warn:e===s.Levels.DEBUG&&console.debug&&null==window.cast?console.debug:console.log,h=\"%c\"+h,t.splice(0,0,h,\"color: \"+i),o.apply(console,t)))}function a(t,e){if(t instanceof Array)for(var i in t)a(t[i],e);else\"string\"==typeof t?console.log(e+\" \"+t):(console.log(e+\"↵\"),console.log(t))}s.Levels={SILENT:5,ERROR:4,WARNING:3,NOTICE:2,DEBUG:1,ALL:0},s.level=s.Levels.ERROR,s.colorful=!0,s.includeTime=!0,s.prefix=\"[nrvideo]\";const n={4:\"e\",3:\"w\",2:\"n\",1:\"d\"};!function(){if(\"undefined\"!=typeof window&&window.location&&window.location.search){var t=/\\?.*&*nrvideo-debug=(.+)/i.exec(window.location.search);null!==t&&(\"true\"===t[1]?s.level=s.Levels.ALL:s.level=t[1]),null!==/\\?.*&*nrvideo-colors=false/i.exec(window.location.search)&&(s.colorful=!1)}}();const o=s},481(t,e,i){i.d(e,{X:()=>a});var s=i(347),r=i(144);class a{async send(t,e){const{url:i,payload:s,options:a={}}=t;try{if(!i||!s)throw new Error(\"URL and payload are required\");const t={url:i,payload:s,options:a,callback:e};await this.executeRequest(t)}catch(t){r.A.error(\"Failed to send request:\",t.message),e({retry:!1,status:0,error:t.message})}}async executeRequest(t){const{url:e,payload:i,options:s,callback:a}=t,n=Date.now();try{const a=(o=JSON.stringify(i.body),h=window.NRVIDEO?.config?.obfuscate,h&&0!==h.length?h.reduce((t,e)=>{let i;try{if(e.regex instanceof RegExp){const t=e.regex.flags.includes(\"g\")?e.regex.flags:e.regex.flags+\"g\";i=new RegExp(e.regex.source,t)}else i=new RegExp(e.regex,\"g\")}catch(i){return r.A.warn(\"applyObfuscationRules: invalid regex, skipping rule:\",e.regex,i.message),t}return t.replace(i,e.replacement)},o):o);if(s.isFinalHarvest&&navigator.sendBeacon){const i=await this.sendWithBeacon(e,a),s={success:i,status:i?204:0};return void this.handleRequestComplete(t,s,n)}const d=await this.fetchWithTimeout(e,{method:\"POST\",body:a,headers:{\"Content-Type\":\"application/json\"},keepalive:s.isFinalHarvest},1e4),l={success:d.ok,status:d.status,statusText:d.statusText};this.handleRequestComplete(t,l,n)}catch(e){const i={success:!1,status:0,error:e.message};this.handleRequestComplete(t,i,n)}var o,h}handleRequestComplete(t,e){const{callback:i}=t;i({retry:!e.success&&(0===e.status||(0,s.Sc)(e.status)),status:e.status,error:e.error})}async sendWithBeacon(t,e){try{return navigator.sendBeacon(t,e)}catch(t){return r.A.warn(\"sendBeacon failed, falling back to fetch:\",t.message),!1}}async fetchWithTimeout(t,e,i){const s=new AbortController,r=setTimeout(()=>s.abort(),i);try{const i=await fetch(t,{...e,signal:s.signal});return clearTimeout(r),i}catch(t){if(clearTimeout(r),\"AbortError\"===t.name)throw new Error(`Request timeout after ${i}ms`);throw t}}}},413(t,e,i){i.d(e,{u:()=>h});var s=i(144),r=i(347),a=i(51);const{MAX_PAYLOAD_SIZE:n,MAX_EVENTS_PER_BATCH:o}=a.A;class h{constructor(){this.retryQueue=[],this.maxQueueSize=o,this.maxQueueSizeBytes=n}addFailedEvents(t){try{const e=Array.isArray(t)?t:[t];s.A.notice(`Adding ${e.length} failed events to retry queue`,{queueSizeBefore:this.retryQueue.length});for(const t of e){this.retryQueue.length>=this.maxQueueSize&&this.evictOldestEvent();const e=(0,r.Q3)(t);for(;(0,r.Q3)(this.retryQueue)+e>this.maxQueueSizeBytes;)this.evictOldestEvent();this.retryQueue.push({...t})}}catch(t){s.A.error(\"Failed to add events to retry queue:\",t.message)}}discardEvent(t,e){s.A.warn(\"Discarded event\",{reason:e,eventType:t.eventType})}evictOldestEvent(){if(this.retryQueue.length>0){const t=this.retryQueue.shift();this.discardEvent(t,\"Queue full - evicted oldest\")}}getRetryEventsToFit(t,e){const i=[];let s=0,a=0;for(let n=this.retryQueue.length-1;n>=0;n--){const o=this.retryQueue[n];if(a>=e)break;const h=(0,r.Q3)(o);if(s+h>t)break;i.unshift(o),s+=h,a++,this.retryQueue.splice(n,1)}return i}getQueueSize(){return this.retryQueue.length}clear(){this.retryQueue=[]}}},302(t,e,i){i.d(e,{A:()=>l});var s=i(330),r=i(568),a=i(455),n=i(51),o=i(487),h=i(144);class d extends r.A{constructor(t){super(),this.customData={},this.heartbeat=null,this.parentTracker=null,this._trackerReadyChrono=new a.A,this._trackerReadyChrono.start(),this._actionTable=n.A.ACTION_TABLE,this._actionAdTable=n.A.ACTION_AD_TABLE,t=t||{},this.setOptions(t)}setOptions(t){t&&(t.parentTracker&&(this.parentTracker=t.parentTracker),t.customData&&(this.customData=t.customData),t.heartbeat&&(this.heartbeat=t.heartbeat))}dispose(){this.unregisterListeners()}registerListeners(){}unregisterListeners(){}getHeartbeat(){return this.state._isAd?2e3:this.heartbeat?this.heartbeat:this.parentTracker&&this.parentTracker.heartbeat?this.parentTracker.heartbeat:3e4}startHeartbeat(){this._heartbeatInterval=setInterval(this.sendHeartbeat.bind(this),Math.max(this.getHeartbeat(),2e3))}stopHeartbeat(){this._heartbeatInterval&&clearInterval(this._heartbeatInterval)}sendHeartbeat(t){this.sendVideoAction(d.Events.HEARTBEAT,t)}getAttributes(t,e){(t=t||{}).trackerName=this.getTrackerName(),t.trackerVersion=this.getTrackerVersion(),t.coreVersion=s.rE,t.timeSinceTrackerReady=this._trackerReadyChrono.getDeltaTime();for(let e in this.customData)t[e]=this.customData[e];return null!=document.hidden&&(t.isBackgroundEvent=document.hidden),t}getTrackerVersion(){return s.rE}getTrackerName(){return\"base-tracker\"}sendVideoAction(t,e){this.emit(\"VideoAction\",t,this.getAttributes(e))}sendVideoAdAction(t,e){this.emit(\"VideoAdAction\",t,this.getAttributes(e))}sendVideoErrorAction(t,e){let i=this.isAd()?\"adError\":\"videoError\";this.emit(\"VideoErrorAction\",t,this.getAttributes(e,i))}sendVideoCustomAction(t,e){this.emit(\"VideoCustomAction\",t,this.getAttributes(e,\"customAction\"))}setHarvestInterval(t){if(o.videoAnalyticsHarvester)try{o.videoAnalyticsHarvester.setHarvestInterval(t)}catch(t){return void h.A.error(\"Failed to set harvest interval:\",t.message)}else h.A.error(\"VideoAnalyticsHarvester is not available\")}}d.Events={HEARTBEAT:\"HEARTBEAT\",QOE_AGGREGATE:\"QOE_AGGREGATE\"};const l=d},347(t,e,i){i.d(e,{Q3:()=>n,Sc:()=>o,c$:()=>a,z8:()=>h});var s=i(330),r=i(144);function a(t){try{if(!window.NRVIDEO||!window.NRVIDEO.info)throw new Error(\"NRVIDEO info is not available.\");let{beacon:e,licenseKey:i,applicationID:r}=window.NRVIDEO.info;if(!e||!i)throw new Error(\"Options object provided by New Relic is not correctly initialized\");return r?`https://${t||e}/ins/1/${i}?a=${r}&v=${s.rE}&ref=${window.location.href}&ca=VA`:`https://${t||e}/ins/1/${i}?&v=${s.rE}&ref=${window.location.href}&ca=VA`}catch(t){return console.error(t.message),null}}function n(t){if(\"string\"==typeof t&&t.length)return t.length;if(\"object\"==typeof t){if(\"undefined\"!=typeof ArrayBuffer&&t instanceof ArrayBuffer&&t.byteLength)return t.byteLength;if(\"undefined\"!=typeof Blob&&t instanceof Blob&&t.size)return t.size;if(!(\"undefined\"!=typeof FormData&&t instanceof FormData))try{return function(t){try{return JSON.stringify(t,(()=>{const t=new WeakSet;return(e,i)=>{if(\"object\"==typeof i&&null!==i){if(t.has(i))return;t.add(i)}return i}})())??\"\"}catch(t){return r.A.error(\"Error stringifying value:\",t.message),\"\"}}(t).length}catch(t){return}}}function o(t){switch(t){case 408:case 429:case 500:return!0;case 401:case 403:case 404:return!1}return t>=502&&t<=504||t>=512&&t<=530}function h(t,e){return t&&Array.isArray(t)&&0!==t.length?e&&\"object\"==typeof e?t.reduce((t,i)=>(i in e&&(t[i]=e[i]),t),{}):{}:e}},330(t){t.exports={rE:\"4.1.5\"}}},e={};function i(s){var r=e[s];if(void 0!==r)return r.exports;var a=e[s]={exports:{}};return t[s](a,a.exports,i),a.exports}i.d=(t,e)=>{for(var s in e)i.o(e,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})};var s=i(144),r=i(487),a=i(51),n=i(302),o=i(347);function h(t,e={}){try{if(!a.A.VALID_EVENT_TYPES.includes(t))return s.A.warn(\"Invalid event type provided to recordEvent\",{eventType:t}),!1;if(!window?.NRVIDEO?.info)return;const{appName:i,applicationID:h}=window.NRVIDEO.info,{qoe:d,...l}=e,c=d?{...d}:{},u={...h?{}:{appName:i},timestamp:Date.now(),timeSinceLoad:window.performance?window.performance.now()/1e3:null},A={...l,eventType:t,...u},g=(0,o.z8)(a.A.QOE_AGGREGATE_KEYS,e);let m=null;\"VideoAction\"===t&&(m={eventType:\"VideoAction\",actionName:n.A.Events.QOE_AGGREGATE,qoeAggregateVersion:\"1.0.0\",...c,...g,...u});const f=r.videoAnalyticsHarvester.addEvent(A);if(m&&window?.NRVIDEO?.config?.qoeAggregate){const t=r.videoAnalyticsHarvester.addEvent(m);return f&&t}return f}catch(t){return s.A.error(\"Failed to record event:\",t.message),!1}}const{COLLECTOR:d}=a.A;const l=new class{setConfiguration(t,e){return!!this.validateRequiredFields(t)&&!!this.validateConfigFields(e)&&(this.initializeGlobalConfig(t,e),s.A.notice(\"Video analytics configuration initialized successfully\"),!0)}validateRequiredFields(t){if(!t||\"object\"!=typeof t)return s.A.error(\"Configuration must be an object\"),!1;const{licenseKey:e,appName:i,region:r,applicationID:a,beacon:n}=t;if(!e)return s.A.error(\"licenseKey is required\"),!1;if(a){if(!n)return s.A.error(\"beacon is required when applicationID is provided\"),!1;if(!Object.values(d).flatMap(t=>t).includes(n))return s.A.error(`Invalid beacon: ${n}`),!1}else{if(!i||!r)return s.A.error(\"appName and region are required when applicationID is not provided\"),!1;if(!d[r])return s.A.error(`Invalid region: ${r}. Valid regions are: ${Object.keys(d).join(\", \")}`),!1}return!0}validateConfigFields(t){if(null==t)return!0;if(\"object\"!=typeof t||Array.isArray(t))return s.A.error(\"config must be an object\"),!1;const{qoeAggregate:e,obfuscate:i}=t;return void 0!==e&&\"boolean\"!=typeof e?(s.A.error(\"qoeAggregate must be a boolean\"),!1):!(void 0!==i&&!Array.isArray(i)&&(s.A.error(\"obfuscate must be an array\"),1))}filterObfuscateRules(t){return t?t.filter(t=>{const e=void 0!==t.regex&&(\"string\"==typeof t.regex||t.regex instanceof RegExp),i=void 0!==t.replacement&&\"string\"==typeof t.replacement;return!(!e||!i)||(s.A.warn(\"obfuscate rule missing required 'regex' (string|RegExp) and/or 'replacement' (string), skipping:\",t),!1)}):[]}sanitizeQoeIntervalFactor(t){return null==t?1:\"number\"==typeof t&&Number.isInteger(t)&&t>=1?t:(console.warn(`[nrvideo] Invalid qoeIntervalFactor \"${t}\" — must be a positive integer. Defaulting to 1.`),1)}initializeGlobalConfig(t,e){let{licenseKey:i,appName:s,region:r,beacon:n,applicationID:o}=t;n=\"US\"===r?a.A.COLLECTOR.US[0]:n||d[r],window.NRVIDEO={info:{...r?{region:r}:{},beacon:n,licenseKey:i,applicationID:o,...o?{}:{appName:s}},config:{qoeAggregate:e?.qoeAggregate??!1,qoeIntervalFactor:this.sanitizeQoeIntervalFactor(e?.qoeIntervalFactor),obfuscate:this.filterObfuscateRules(e?.obfuscate)}}}};class c{static addTracker(t,e){var i,r;e?.info&&(i=e.info,r=e?.config,l.setConfiguration(i,r)),t.on&&t.emit?(u.push(t),t.on(\"*\",A),\"function\"==typeof t.trackerInit&&t.trackerInit()):s.A.error(\"Tried to load a non-tracker.\",t)}static removeTracker(t){t.off(\"*\",A),t.dispose();let e=u.indexOf(t);-1!==e&&u.splice(e,1)}static getTrackers(){return u}static send(t,e,i){return h(t,{actionName:e,...i})}static sendError(t){return h(\"VideoErrorAction\",{actionName:\"ERROR\",...t})}static async forceHarvest(){try{const{videoAnalyticsHarvester:t}=i(487);return await t.forceHarvest()}catch(t){return s.A.error(\"Failed to force harvest:\",t.message),{success:!1,error:t.message}}}}let u=[];function A(t){try{let e=function(t){let e={};for(let i in t)null!==t[i]&&void 0!==t[i]&&(e[i]=t[i]);return e}(t.data);s.A.level<=s.A.Levels.DEBUG?s.A.notice(\"Sent\",t.type,e):s.A.notice(\"Sent\",t.type),c.send(t.eventType,t.type,e)}catch(t){s.A.error(\"Error in event handler:\",t.message)}}const g=c;var m=i(455),f=i(568);const E=class{constructor(){this.reset(),this._createdAt=Date.now(),this._hb=!0,this._acc=0,this._bufferAcc=0}reset(){this._viewSession=null,this._viewCount=0,this._isAd=!1,this.numberOfErrors=0,this.numberOfAds=0,this.numberOfVideos=0,this.totalPlaytime=0,this.weightedAverageBitrate=0,this.totalAdPlaytime=0,this.isAdBreak=!1,this.initialBufferingHappened=!1,this.startupTime=null,this.peakBitrate=0,this._lastBitrate=null,this._lastBitrateChangeTimestamp=null,this.partialAverageBitrate=0,this._totalBitrateDuration=0,this.hadStartupError=!1,this.hadPlaybackError=!1,this.totalRebufferingTime=0,this.resetFlags(),this.resetChronos()}resetFlags(){this.isPlayerReady=!1,this.isRequested=!1,this.isStarted=!1,this.isPaused=!1,this.isSeeking=!1,this.isBuffering=!1,this.isPlaying=!1}resetChronos(){this.timeSinceRequested=new m.A,this.timeSinceStarted=new m.A,this.timeSincePaused=new m.A,this.timeSinceSeekBegin=new m.A,this.timeSinceBufferBegin=new m.A,this.timeSinceAdBreakStart=new m.A,this.timeSinceLastDownload=new m.A,this.timeSinceLastHeartbeat=new m.A,this.timeSinceLastRenditionChange=new m.A,this.timeSinceLastAdQuartile=new m.A,this.timeSinceLastAd=new m.A,this.timeSinceLastError=new m.A,this.timeSinceLastAdError=new m.A,this.timeSinceResumed=new m.A,this.timeSinceSeekEnd=new m.A,this.playtimeSinceLastEvent=new m.A,this.customTimeSinceAttributes={},this.elapsedTime=new m.A,this.bufferElapsedTime=new m.A,this._totalAdPlaytime=new m.A}isAd(){return this._isAd}setIsAd(t){this._isAd=t}setTimeSinceAttribute(t){this.customTimeSinceAttributes[t]=new m.A,this.customTimeSinceAttributes[t].start()}removeTimeSinceAttribute(t){delete this.customTimeSinceAttributes[t]}getViewSession(){if(!this._viewSession){let t=(new Date).getTime(),e=Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2);this._viewSession=t+\"-\"+e}return this._viewSession}getViewId(){return this.getViewSession()+\"-\"+this._viewCount}getStateAttributes(t){t=t||{},this.isAd()?(this.isRequested&&(t.timeSinceAdRequested=this.timeSinceRequested.getDeltaTime(),t.timeSinceLastAdHeartbeat=this.timeSinceLastHeartbeat.getDeltaTime()),this.isStarted&&(t.timeSinceAdStarted=this.timeSinceStarted.getDeltaTime()),this.isPaused&&(t.timeSinceAdPaused=this.timeSincePaused.getDeltaTime()),this.isBuffering&&(t.timeSinceAdBufferBegin=this.timeSinceBufferBegin.getDeltaTime()),this.isSeeking&&(t.timeSinceAdSeekBegin=this.timeSinceSeekBegin.getDeltaTime()),this.isAdBreak&&(t.timeSinceAdBreakBegin=this.timeSinceAdBreakStart.getDeltaTime()),this.numberOfErrors>0&&this.timeSinceLastAdError.startTime>0&&(t.timeSinceLastAdError=this.timeSinceLastAdError.getDeltaTime()),t.numberOfAds=this.numberOfAds):(this.isRequested&&(t.timeSinceRequested=this.timeSinceRequested.getDeltaTime(),t.timeSinceLastHeartbeat=this.timeSinceLastHeartbeat.getDeltaTime()),this.isStarted&&(t.timeSinceStarted=this.timeSinceStarted.getDeltaTime()),this.isPaused&&(t.timeSincePaused=this.timeSincePaused.getDeltaTime()),this.isBuffering&&(t.timeSinceBufferBegin=this.timeSinceBufferBegin.getDeltaTime()),this.isSeeking&&(t.timeSinceSeekBegin=this.timeSinceSeekBegin.getDeltaTime()),t.timeSinceLastAd=this.timeSinceLastAd.getDeltaTime(),this.numberOfErrors>0&&this.timeSinceLastError.startTime>0&&(t.timeSinceLastError=this.timeSinceLastError.getDeltaTime()),t.numberOfVideos=this.numberOfVideos),t.numberOfErrors=this.numberOfErrors,this.isAd()||(this.playtimeSinceLastEvent.startTime>0?t.playtimeSinceLastEvent=this.playtimeSinceLastEvent.getDeltaTime():t.playtimeSinceLastEvent=0,this.isPlaying?this.playtimeSinceLastEvent.start():this.playtimeSinceLastEvent.reset(),this.totalPlaytime+=t.playtimeSinceLastEvent,t.totalPlaytime=this.totalPlaytime);for(const[e,i]of Object.entries(this.customTimeSinceAttributes))t[e]=i.getDeltaTime();return t}getQoeAttributes(t){t=t||{};const e={};try{null!==this.startupTime&&(e.startupTime=this.startupTime),this.peakBitrate>0&&(e.peakBitrate=this.peakBitrate),e.hadStartupError=this.hadStartupError,e.hadPlaybackError=this.hadPlaybackError,e.totalRebufferingTime=this.totalRebufferingTime,e.rebufferingRatio=this.totalPlaytime>0?this.totalRebufferingTime/this.totalPlaytime*100:0,e.totalPlaytime=this.totalPlaytime,e.averageBitrate=this.weightedBitrate,e.numberOfErrors=this.numberOfErrors}catch(t){s.A.error(\"Failed to add attributes for QOE KPIs\",t.message)}return t.qoe=e,t}calculateBufferType(t){let e=\"\";return e=t?\"initial\":this.isSeeking?\"seek\":this.isPaused?\"pause\":\"connection\",s.A.debug(\"Buffer Type = \"+e),e}goViewCountUp(){this._viewCount++}goPlayerReady(){return!this.isPlayerReady&&(this.isPlayerReady=!0,!0)}goRequest(){return!this.isRequested&&(this.isRequested=!0,this.timeSinceLastAd.reset(),this.timeSinceRequested.start(),!0)}goStart(){return!(!this.isRequested||this.isStarted||(this.isAd()?this.numberOfAds++:this.numberOfVideos++,this.isStarted=!0,this.isPlaying=!0,this.timeSinceStarted.start(),this.playtimeSinceLastEvent.start(),0))}goEnd(){return!!this.isRequested&&(this.numberOfErrors=0,this.resetFlags(),this.timeSinceRequested.stop(),this.timeSinceStarted.stop(),this.playtimeSinceLastEvent.stop(),this.isPlaying=!1,!0)}goPause(){return!(!this.isStarted||this.isPaused||(this.isPaused=!0,this.isPlaying=!1,this.timeSincePaused.start(),this.playtimeSinceLastEvent.stop(),this.timeSinceResumed.reset(),this.isBuffering&&(this._bufferAcc+=this.bufferElapsedTime.getDeltaTime()),this.elapsedTime.start(),0))}goResume(){return!(!this.isStarted||!this.isPaused||(this.isPaused=!1,this.isPlaying=!0,this.timeSincePaused.stop(),this.timeSinceResumed.start(),this._hb?(this._acc=this.elapsedTime.getDeltaTime(),this._hb=!1):(this.isBuffering&&this.bufferElapsedTime.start(),this._acc+=this.elapsedTime.getDeltaTime()),0))}goBufferStart(){return!(!this.isRequested||this.isBuffering||(this.isBuffering=!0,this.isPlaying=!1,this.timeSinceBufferBegin.start(),this.bufferElapsedTime.start(),0))}goBufferEnd(){return!(!this.isRequested||!this.isBuffering||(this.isBuffering=!1,this.isPlaying=!0,this.timeSinceBufferBegin.stop(),this._hb?(this._bufferAcc=this.bufferElapsedTime.getDeltaTime(),this._hb=!1):this._bufferAcc+=this.bufferElapsedTime.getDeltaTime(),!this.isAd()&&this.initialBufferingHappened&&(this.totalRebufferingTime+=this.timeSinceBufferBegin.stopTime-this.timeSinceBufferBegin.startTime),0))}goSeekStart(){return!(!this.isStarted||this.isSeeking||(this.isSeeking=!0,this.isPlaying=!1,this.timeSinceSeekBegin.start(),this.timeSinceSeekEnd.reset(),0))}goSeekEnd(){return!(!this.isStarted||!this.isSeeking||(this.isSeeking=!1,this.isPlaying=!0,this.timeSinceSeekBegin.stop(),this.timeSinceSeekEnd.start(),0))}goAdBreakStart(){return!this.isAdBreak&&(this.isAdBreak=!0,this.timeSinceAdBreakStart.start(),!0)}goAdBreakEnd(){return!!this.isAdBreak&&(this.isRequested=!1,this.isAdBreak=!1,this.totalAdPlaytime=this.timeSinceAdBreakStart.getDeltaTime(),this.timeSinceAdBreakStart.stop(),!0)}goDownload(){this.timeSinceLastDownload.start()}goHeartbeat(){this.timeSinceLastHeartbeat.start()}goRenditionChange(){this.timeSinceLastRenditionChange.start()}goAdQuartile(){this.timeSinceLastAdQuartile.start()}goError(){this.isError=!0,this.numberOfErrors++,this.isAd()?this.timeSinceLastAdError.start():(this.timeSinceLastError.start(),this.isStarted?this.hadPlaybackError=!0:this.hadStartupError=!0)}goLastAd(){this.timeSinceLastAd.start()}trackContentBitrateState(t){if(t&&\"number\"==typeof t){this.peakBitrate=Math.max(this.peakBitrate,t);const e=Date.now();if(!this.isPlaying){if(null!==this._lastBitrate&&null!==this._lastBitrateChangeTimestamp){const t=e-this._lastBitrateChangeTimestamp;t>0&&(this.partialAverageBitrate+=this._lastBitrate*t,this._totalBitrateDuration+=t),this._lastBitrateChangeTimestamp=null}return void(this._lastBitrate=t)}if(null===this._lastBitrateChangeTimestamp&&null!==this._lastBitrate&&(this._lastBitrateChangeTimestamp=e),null!==this._lastBitrate&&this._lastBitrate!==t&&null!==this._lastBitrateChangeTimestamp){const t=e-this._lastBitrateChangeTimestamp;t>0&&(this.partialAverageBitrate+=this._lastBitrate*t,this._totalBitrateDuration+=t),this._lastBitrateChangeTimestamp=e}null===this._lastBitrateChangeTimestamp&&(this._lastBitrateChangeTimestamp=e),this._lastBitrate=t;let i=this.partialAverageBitrate,s=this._totalBitrateDuration;const r=e-this._lastBitrateChangeTimestamp;r>0&&(i+=t*r,s+=r),this.weightedBitrate=s>0?Math.round(i/s):t}}resetViewIdTrackedState(){this.peakBitrate=0,this.partialAverageBitrate=0,this._totalBitrateDuration=0,this.startupTime=null,this._lastBitrate=null,this._lastBitrateChangeTimestamp=null}clearTotalAdsTime(){s.A.debug(\"clear total ads time\",this.totalAdTime),this._totalAdPlaytime.reset()}totalAdTime(){return this._totalAdPlaytime.getDuration()}startAdsTime(){return s.A.debug(\"startAdsTime\"),this._totalAdPlaytime.start()}stopAdsTime(){return s.A.debug(\"stopAdsTime\"),this._totalAdPlaytime.stop()}setStartupTime(t){null===this.startupTime&&(this.startupTime=Math.max(this.timeSinceRequested.getDeltaTime()-t,0))}};var T=i(330);class v extends n.A{constructor(t,e){super(),this.state=new E,this.adsTracker=null,this._lastBufferType=null,this._userId=null,e=e||{},this.setOptions(e),t&&this.setPlayer(t,e.tag),s.A.notice(\"Tracker \"+this.getTrackerName()+\" v\"+this.getTrackerVersion()+\" is ready.\")}setUserId(t){this._userId=t}setOptions(t){t&&(t.adsTracker&&this.setAdsTracker(t.adsTracker),\"boolean\"==typeof t.isAd&&this.setIsAd(t.isAd),n.A.prototype.setOptions.apply(this,arguments))}setPlayer(t,e){(this.player||this.tag)&&this.dispose(),\"undefined\"!=typeof document&&document.getElementById&&(\"string\"==typeof t&&(t=document.getElementById(t)),\"string\"==typeof e&&(e=document.getElementById(e))),e=e||t,this.player=t,this.tag=e,this.registerListeners()}isAd(){return this.state.isAd()}setIsAd(t){this.state.setIsAd(t)}setAdsTracker(t){this.disposeAdsTracker(),t&&(this.adsTracker=t,this.adsTracker.setIsAd(!0),this.adsTracker.parentTracker=this,this.adsTracker.on(\"*\",S.bind(this)))}disposeAdsTracker(){this.adsTracker&&(this.adsTracker.off(\"*\",S),this.adsTracker.dispose())}dispose(){this.stopHeartbeat(),this.disposeAdsTracker(),this.unregisterListeners(),this.player=null,this.tag=null}registerListeners(){}unregisterListeners(){}getViewId(){return this.parentTracker?this.parentTracker.getViewId():this.state.getViewId()}getViewSession(){return this.parentTracker?this.parentTracker.getViewSession():this.state.getViewSession()}getVideoId(){return null}getTitle(){return null}isLive(){return null}getBitrate(){return null}getManifestBitrate(){return null}getSegmentDownloadBitrate(){return null}getNetworkDownloadBitrate(){return null}getWebkitBitrate(){if(this.tag&&this.tag.webkitVideoDecodedByteCount){let t;if(this._lastWebkitBitrate){t=this.tag.webkitVideoDecodedByteCount;let e=t-this._lastWebkitBitrate,i=this.getHeartbeat()/1e3;t=Math.round(e/i*8)}return this._lastWebkitBitrate=this.tag.webkitVideoDecodedByteCount,t||null}}getRenditionName(){return null}getRenditionBitrate(){return null}getRenditionShift(t){let e,i=this.getRenditionBitrate();return this.isAd()?(e=this._lastAdRendition,t&&(this._lastAdRendition=i)):(e=this._lastRendition,t&&(this._lastRendition=i)),i&&e?i>e?\"up\":i<e?\"down\":null:null}getRenditionHeight(){return this.tag?this.tag.videoHeight:null}getRenditionWidth(){return this.tag?this.tag.videoWidth:null}getDuration(){return this.tag?this.tag.duration:null}getPlayhead(){return this.tag?this.tag.currentTime:null}getLanguage(){return null}getSrc(){return this.tag?this.tag.currentSrc:null}getPlayrate(){return this.tag?this.tag.playbackRate:null}isMuted(){return this.tag?this.tag.muted:null}isFullscreen(){return null}getCdn(){return null}getPlayerName(){return this.getTrackerName()}getPlayerVersion(){return T.rE}getFps(){return null}isAutoplayed(){return this.tag?this.tag.autoplay:null}getPreload(){return this.tag?this.tag.preload:null}getAdQuartile(){return null}getAdPosition(){return this.parentTracker?this.parentTracker.state.isStarted?\"mid\":\"pre\":null}getAdPartner(){return null}getAdCreativeId(){return null}getInstrumentationProvider(){return null}getInstrumentationName(){return null}getInstrumentationVersion(){return null}getAttributes(t,e){if(void 0===(t=n.A.prototype.getAttributes.apply(this,arguments)).isAd&&(t.isAd=this.isAd()),t.viewSession=this.getViewSession(),t.viewId=this.getViewId(),t.playerName=this.getPlayerName(),t.playerVersion=this.getPlayerVersion(),t[\"instrumentation.provider\"]=this.getInstrumentationProvider(),t[\"instrumentation.name\"]=this.getInstrumentationName(),t[\"instrumentation.version\"]=this.getInstrumentationVersion(),t[\"enduser.id\"]=this._userId,t.src=\"Browser\",\"customAction\"===e)return t;try{t.pageUrl=window.location.href}catch(t){}this.isAd()?(t.adId=this.getVideoId(),t.adTitle=this.getTitle(),t.adSrc=this.getSrc(),t.adCdn=this.getCdn(),this.state.isStarted&&(t.adBitrate=this.getBitrate()||0),t.adRenditionName=this.getRenditionName(),t.adRenditionHeight=this.getRenditionHeight(),t.adRenditionWidth=this.getRenditionWidth(),t.adDuration=this.getDuration(),t.adPlayhead=this.getPlayhead(),t.adLanguage=this.getLanguage(),t.adIsMuted=this.isMuted(),t.adFps=this.getFps(),t.adPosition=this.getAdPosition(),t.adCreativeId=this.getAdCreativeId(),t.adPartner=this.getAdPartner()):(t.contentId=this.getVideoId(),t.contentTitle=this.getTitle(),t.contentSrc=this.getSrc(),t.contentCdn=this.getCdn(),t.contentPlayhead=this.getPlayhead(),t.contentIsLive=this.isLive(),this.state.isStarted&&(t.contentBitrate=this.getBitrate()||0,t.contentManifestBitrate=this.getManifestBitrate()||0,t.contentSegmentDownloadBitrate=this.getSegmentDownloadBitrate()||0,t.contentNetworkDownloadBitrate=this.getNetworkDownloadBitrate()||0),t.contentRenditionName=this.getRenditionName(),t.contentRenditionHeight=this.getRenditionHeight(),t.contentRenditionWidth=this.getRenditionWidth(),t.contentDuration=this.getDuration(),t.contentLanguage=this.getLanguage(),t.contentPlayrate=this.getPlayrate(),t.contentIsFullscreen=this.isFullscreen(),t.contentIsMuted=this.isMuted(),t.contentIsAutoplayed=this.isAutoplayed(),t.contentPreload=this.getPreload(),t.contentFps=this.getFps(),null!=this.adsTracker&&this.adsTracker.state.totalAdPlaytime>0&&(t.totalAdPlaytime=this.adsTracker.state.totalAdPlaytime)),this.state.getStateAttributes(t),this.state.isStarted&&!this.isAd()&&this.state.trackContentBitrateState(t.contentBitrate);for(let e in this.customData)t[e]=this.customData[e];return this.addQoeAttributes(t),t}addQoeAttributes(t){const e=(t=this.state.getQoeAttributes(t)).qoe;for(let t in this.customData)e[t]=this.customData[t]}sendCustom(t,e,i){i=i||{},this.sendVideoCustomAction(t,i),this.state.setTimeSinceAttribute(e)}sendPlayerReady(t){this.state.goPlayerReady()&&(t=t||{},this.sendVideoAction(v.Events.PLAYER_READY,t))}sendRequest(t){if(this.state.goRequest()){let e;this.isAd()?(e=v.Events.AD_REQUEST,this.sendVideoAdAction(e,t)):(e=v.Events.CONTENT_REQUEST,this.sendVideoAction(e,t))}}sendStart(t){if(this.state.goStart()){let e;if(this.isAd())e=v.Events.AD_START,this.parentTracker&&(this.parentTracker.state.isPlaying=!1),this.sendVideoAdAction(e,t),this.state.startAdsTime();else{e=v.Events.CONTENT_START;let i=0;this.adsTracker&&((this.adsTracker.state.isPlaying||this.adsTracker.state.isBuffering)&&(this.adsTracker.state.stopAdsTime(),this.adsTracker.state.isPlaying=!1,this.adsTracker.state.isBuffering=!1),i=this.adsTracker.state.totalAdTime()??0),this.state.setStartupTime(i),this.sendVideoAction(e,t),r.videoAnalyticsHarvester.setBeforeDrainCallback(()=>{if(this.state){const t=this.state.getQoeAttributes({}).qoe;r.videoAnalyticsHarvester.refreshQoeKpis(t,this.getViewId())}})}this.startHeartbeat(),this.state.goHeartbeat()}}sendEnd(t){if(this.state.goEnd()){let e;t=t||{},this.isAd()?(e=v.Events.AD_END,t.timeSinceAdRequested=this.state.timeSinceRequested.getDeltaTime(),t.timeSinceAdStarted=this.state.timeSinceStarted.getDeltaTime(),this.parentTracker&&(this.parentTracker.state.isPlaying=!0),this.state.stopAdsTime()):(e=v.Events.CONTENT_END,t.timeSinceRequested=this.state.timeSinceRequested.getDeltaTime(),t.timeSinceStarted=this.state.timeSinceStarted.getDeltaTime()),this.stopHeartbeat(),this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t),this.parentTracker&&this.isAd()&&this.parentTracker.state.goLastAd(),this.state.goViewCountUp(),this.state.totalPlaytime=0,this.isAd()||(r.videoAnalyticsHarvester.forceNextQoeCycle(),r.videoAnalyticsHarvester.setBeforeDrainCallback(null),this.adsTracker&&this.adsTracker.state.clearTotalAdsTime(),this.state.resetViewIdTrackedState())}}sendPause(t){if(this.state.goPause()){let e=this.isAd()?v.Events.AD_PAUSE:v.Events.CONTENT_PAUSE;this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendResume(t){if(this.state.goResume()){let e;t=t||{},this.isAd()?(e=v.Events.AD_RESUME,t.timeSinceAdPaused=this.state.timeSincePaused.getDeltaTime()):(e=v.Events.CONTENT_RESUME,t.timeSincePaused=this.state.timeSincePaused.getDeltaTime()),this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendBufferStart(t){if(this.state.goBufferStart()){let e;t=t||{},e=this.isAd()?v.Events.AD_BUFFER_START:v.Events.CONTENT_BUFFER_START,t=this.buildBufferAttributes(t),this._lastBufferType=t.bufferType,this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendBufferEnd(t){if(this.state.goBufferEnd()){let e;t=t||{},this.isAd()?(e=v.Events.AD_BUFFER_END,t.timeSinceAdBufferBegin=this.state.timeSinceBufferBegin.getDeltaTime()):(e=v.Events.CONTENT_BUFFER_END,t.timeSinceBufferBegin=this.state.timeSinceBufferBegin.getDeltaTime()),t=this.buildBufferAttributes(t),null!=this._lastBufferType&&(t.bufferType=this._lastBufferType),this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t),this.state.initialBufferingHappened=!0}}buildBufferAttributes(t){return null==t.timeSinceStarted||t.timeSinceStarted<100?t.isInitialBuffering=!this.state.initialBufferingHappened:t.isInitialBuffering=!1,t.bufferType=this.state.calculateBufferType(t.isInitialBuffering),t.timeSinceResumed=this.state.timeSinceResumed.getDeltaTime(),t.timeSinceSeekEnd=this.state.timeSinceSeekEnd.getDeltaTime(),t}sendSeekStart(t){if(this.state.goSeekStart()){let e;e=this.isAd()?v.Events.AD_SEEK_START:v.Events.CONTENT_SEEK_START,this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendSeekEnd(t){if(this.state.goSeekEnd()){let e;t=t||{},this.isAd()?(e=v.Events.AD_SEEK_END,t.timeSinceAdSeekBegin=this.state.timeSinceSeekBegin.getDeltaTime()):(e=v.Events.CONTENT_SEEK_END,t.timeSinceSeekBegin=this.state.timeSinceSeekBegin.getDeltaTime()),this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendDownload(t){(t=t||{}).state||s.A.warn(\"Called sendDownload without { state: xxxxx }.\"),this.sendVideoAction(v.Events.DOWNLOAD,t),this.state.goDownload()}sendError(t){(t=t||{}).isAd=this.isAd(),this.state.goError();let e=this.isAd()?v.Events.AD_ERROR:v.Events.CONTENT_ERROR;this.sendVideoErrorAction(e,t)}sendRenditionChanged(t){let e;(t=t||{}).timeSinceLastRenditionChange=this.state.timeSinceLastRenditionChange.getDeltaTime(),t.shift=this.getRenditionShift(!0),e=this.isAd()?v.Events.AD_RENDITION_CHANGE:v.Events.CONTENT_RENDITION_CHANGE,this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t),this.state.goRenditionChange()}sendHeartbeat(t){if(this.state.isRequested){let e,i=this.getHeartbeat();this.state._hb=!0,i=this.adjustElapsedTimeForPause(i),this.isAd()?(e=v.Events.AD_HEARTBEAT,\"bitmovin-ads\"===this.getPlayerName()?this.sendVideoAdAction(e,t):this.sendVideoAdAction(e,{elapsedTime:i,...t})):(e=v.Events.CONTENT_HEARTBEAT,this.sendVideoAction(e,{elapsedTime:i,...t})),this.state.goHeartbeat()}}adjustElapsedTimeForPause(t){return this.state._acc&&(t-=this.state._acc,this.state._acc=0),this.state.isPaused&&((t-=this.state.elapsedTime.getDeltaTime())<10&&(t=0),this.state.elapsedTime.start()),this.state._bufferAcc?(t-=this.state._bufferAcc,this.state._bufferAcc=0):this.state.isBuffering&&((t-=this.state.bufferElapsedTime.getDeltaTime())<5&&(t=0),this.state.bufferElapsedTime.start()),Math.max(0,t)}sendAdBreakStart(t){this.isAd()&&this.state.goAdBreakStart()&&(this.state.totalAdPlaytime=0,this.parentTracker&&(this.parentTracker.state.isPlaying=!1),this.sendVideoAdAction(v.Events.AD_BREAK_START,t))}sendAdBreakEnd(t){this.isAd()&&this.state.goAdBreakEnd()&&((t=t||{}).timeSinceAdBreakBegin=this.state.timeSinceAdBreakStart.getDeltaTime(),this.sendVideoAdAction(v.Events.AD_BREAK_END,t),this.parentTracker&&(this.parentTracker.state.isPlaying=!0),this.stopHeartbeat(),this.parentTracker&&this.isAd()&&this.parentTracker.state.goLastAd())}sendAdQuartile(t){this.isAd()&&((t=t||{}).quartile||s.A.warn(\"Called sendAdQuartile without { quartile: xxxxx }.\"),t.timeSinceLastAdQuartile=this.state.timeSinceLastAdQuartile.getDeltaTime(),this.sendVideoAdAction(v.Events.AD_QUARTILE,t),this.state.goAdQuartile())}sendAdClick(t){this.isAd()&&((t=t||{}).url||s.A.warn(\"Called sendAdClick without { url: xxxxx }.\"),this.sendVideoAdAction(v.Events.AD_CLICK,t))}}function S(t){t.type!==v.Events.AD_ERROR?this.sendVideoAdAction(t.type,t.data):this.sendVideoErrorAction(t.type,t.data)}v.Events={PLAYER_READY:\"PLAYER_READY\",DOWNLOAD:\"DOWNLOAD\",ERROR:\"ERROR\",CONTENT_REQUEST:\"CONTENT_REQUEST\",CONTENT_START:\"CONTENT_START\",CONTENT_END:\"CONTENT_END\",CONTENT_PAUSE:\"CONTENT_PAUSE\",CONTENT_RESUME:\"CONTENT_RESUME\",CONTENT_SEEK_START:\"CONTENT_SEEK_START\",CONTENT_SEEK_END:\"CONTENT_SEEK_END\",CONTENT_BUFFER_START:\"CONTENT_BUFFER_START\",CONTENT_BUFFER_END:\"CONTENT_BUFFER_END\",CONTENT_HEARTBEAT:\"CONTENT_HEARTBEAT\",CONTENT_RENDITION_CHANGE:\"CONTENT_RENDITION_CHANGE\",CONTENT_ERROR:\"CONTENT_ERROR\",AD_REQUEST:\"AD_REQUEST\",AD_START:\"AD_START\",AD_END:\"AD_END\",AD_PAUSE:\"AD_PAUSE\",AD_RESUME:\"AD_RESUME\",AD_SEEK_START:\"AD_SEEK_START\",AD_SEEK_END:\"AD_SEEK_END\",AD_BUFFER_START:\"AD_BUFFER_START\",AD_BUFFER_END:\"AD_BUFFER_END\",AD_HEARTBEAT:\"AD_HEARTBEAT\",AD_RENDITION_CHANGE:\"AD_RENDITION_CHANGE\",AD_ERROR:\"AD_ERROR\",AD_BREAK_START:\"AD_BREAK_START\",AD_BREAK_END:\"AD_BREAK_END\",AD_QUARTILE:\"AD_QUARTILE\",AD_CLICK:\"AD_CLICK\"};const p=v;var y=i(431),_=i(413),R=i(481),B=i(374);const b={Constants:a.A,Chrono:m.A,Log:s.A,Emitter:f.A,Tracker:n.A,VideoTracker:p,VideoTrackerState:E,Core:g,version:T.rE,NrVideoEventAggregator:y.t,RetryQueueHandler:_.u,OptimizedHttpClient:R.X,HarvestScheduler:B.n,recordEvent:h};export{b as default};\n//# sourceMappingURL=index.js.map","/**\n * MediaTailor Utility Functions\n * Helper functions for AWS MediaTailor ad tracking\n */\n\nimport {\n DASH_MANIFEST_EXTENSION,\n DASH_SCTE35_EVENT_STREAM_SELECTOR,\n HLS_MANIFEST_EXTENSION,\n HLS_SEGMENT_DURATION_TAG,\n HLS_TAG_PREFIX,\n REGEX_CUE_OUT,\n REGEX_DASH_MINIMUM_UPDATE_PERIOD,\n REGEX_DISCONTINUITY,\n REGEX_HLS_TARGET_DURATION,\n REGEX_ISO_8601_DURATION,\n REGEX_MAP,\n REGEX_MANIFEST_FILE_SUFFIX,\n REGEX_SESSION_ID,\n REGEX_TRACKING_PATH_SEGMENT,\n MT_HLS_CUE_IN_TAG,\n MT_HLS_CUE_OUT_TAG,\n MT_SEGMENT_PATTERN,\n MIN_AD_DURATION,\n AD_TIMING_TOLERANCE,\n SCTE35_SCHEME_MARKER,\n STREAM_TYPE,\n MANIFEST_TYPE,\n AD_POSITION,\n AD_SOURCE,\n QUARTILES,\n} from './mt-constants.js';\n\n/**\n * Generates timestamp string for logging (HH:MM:SS.mmm format)\n */\nexport function getTimestamp() {\n const now = new Date();\n return now.toISOString().substring(11, 23);\n}\n\n/**\n * Detects manifest format from URL (.m3u8 = HLS, .mpd = DASH)\n */\nexport function detectManifestFormatFromUrl(url) {\n if (url.includes(HLS_MANIFEST_EXTENSION)) {\n return MANIFEST_TYPE.HLS;\n } else if (url.includes(DASH_MANIFEST_EXTENSION)) {\n return MANIFEST_TYPE.DASH;\n }\n return MANIFEST_TYPE.HLS; // Default fallback\n}\n\n/**\n * Detects stream type from player duration (Infinity = Live, else = VOD)\n */\nexport function detectPlaybackStreamType(duration) {\n return duration === Infinity ? STREAM_TYPE.LIVE : STREAM_TYPE.VOD;\n}\n\n/**\n * Builds a tracking endpoint URL from a sessionized manifest URL\n * Format: /v1/tracking/{customerId}/{configName}/{sessionId}\n */\nexport function buildTrackingEndpointUrl(manifestUrl) {\n const match = manifestUrl.match(REGEX_SESSION_ID);\n\n if (!match) {\n return null;\n }\n\n const sessionId = match[1];\n\n // Convert manifest URL to tracking URL:\n // /v1/master/{id}/{name}/master.m3u8?aws.sessionId=xxx → /v1/tracking/{id}/{name}/{sessionId}\n // /v1/dash/{id}/{name}/index.mpd?aws.sessionId=xxx → /v1/tracking/{id}/{name}/{sessionId}\n const trackingEndpointUrl = manifestUrl\n .replace(REGEX_TRACKING_PATH_SEGMENT, '/v1/tracking/')\n .replace(REGEX_MANIFEST_FILE_SUFFIX, `/${sessionId}`);\n\n return trackingEndpointUrl;\n}\n\n/**\n * Checks if segment is a MediaTailor ad segment\n */\nexport function isMediaTailorSegment(segment) {\n // Check MAP URL for MediaTailor pattern\n if (segment.map && segment.map.uri && segment.map.uri.includes(MT_SEGMENT_PATTERN)) {\n return true;\n }\n // Check segment URL for MediaTailor pattern\n if (segment.uri && segment.uri.includes(MT_SEGMENT_PATTERN)) {\n return true;\n }\n return false;\n}\n\n/**\n * Determines ad position based on schedule index (VOD only, Live returns null)\n */\nexport function determineAdPosition(adBreakIndex, totalAdBreaks, streamType) {\n if (streamType === STREAM_TYPE.LIVE) {\n return null; // Live streams have no position concept\n }\n\n // VOD: Determine position by schedule index\n if (adBreakIndex === 0) {\n return AD_POSITION.PRE_ROLL; // First ad\n } else if (adBreakIndex === totalAdBreaks - 1) {\n return AD_POSITION.POST_ROLL; // Last ad\n } else {\n return AD_POSITION.MID_ROLL; // Middle ad\n }\n}\n\n/**\n * Finds ad break index in schedule by start time\n */\nexport function findAdBreakIndex(adSchedule, startTime) {\n return adSchedule.findIndex(\n (ad) => Math.abs(ad.startTime - startTime) < AD_TIMING_TOLERANCE\n );\n}\n\n/**\n * Calculates quartile thresholds for an ad duration\n */\nexport function calculateQuartiles(duration) {\n return {\n q1: duration * QUARTILES.Q1,\n q2: duration * QUARTILES.Q2,\n q3: duration * QUARTILES.Q3,\n };\n}\n\n/**\n * Checks which quartile events should fire based on progress\n */\nexport function getQuartilesToFire(progress, duration, firedQuartiles) {\n const quartiles = calculateQuartiles(duration);\n const toFire = [];\n\n if (progress >= quartiles.q1 && !firedQuartiles.q1) {\n toFire.push({ quartile: 1, key: 'q1' });\n }\n if (progress >= quartiles.q2 && !firedQuartiles.q2) {\n toFire.push({ quartile: 2, key: 'q2' });\n }\n if (progress >= quartiles.q3 && !firedQuartiles.q3) {\n toFire.push({ quartile: 3, key: 'q3' });\n }\n\n return toFire;\n}\n\n/**\n * Finds active ad break at current playhead time\n */\nexport function findActiveAdBreak(adSchedule, currentTime) {\n return adSchedule.find(\n (ad) => currentTime >= ad.startTime && currentTime < ad.endTime\n );\n}\n\n/**\n * Finds active pod within ad break at current playhead time\n */\nexport function findActivePod(adBreak, currentTime) {\n if (!adBreak || !adBreak.pods || adBreak.pods.length === 0) {\n return null;\n }\n\n return adBreak.pods.find(\n (pod) => currentTime >= pod.startTime && currentTime < pod.endTime\n );\n}\n\n/**\n * Validates if ad break duration meets minimum threshold\n */\nexport function isValidAdBreak(adBreak) {\n return adBreak.duration > MIN_AD_DURATION;\n}\n\n/**\n * Merges new ads into existing schedule (deduplicates by start time)\n */\nexport function mergeAdSchedules(existingSchedule, newAds) {\n const scheduleMap = new Map();\n\n // Add existing ads to map (keyed by rounded start time)\n existingSchedule.forEach((ad) => {\n const key = Math.round(ad.startTime);\n scheduleMap.set(key, ad);\n });\n\n // Merge new ads\n const merged = [];\n newAds.forEach((newAd) => {\n const key = Math.round(newAd.startTime);\n const existingAd = scheduleMap.get(key);\n\n if (!existingAd) {\n merged.push(newAd);\n scheduleMap.set(key, newAd);\n } else if (!existingAd.confirmedByTracking && newAd.confirmedByTracking) {\n Object.assign(existingAd, newAd);\n }\n });\n\n // Combine and sort by start time\n const finalSchedule = [...existingSchedule, ...merged];\n finalSchedule.sort((a, b) => a.startTime - b.startTime);\n\n return finalSchedule;\n}\n\n/**\n * Parses HLS manifest text for CUE-OUT/CUE-IN markers\n */\nexport function parseHlsManifestForAdBreaks(manifestText) {\n const lines = manifestText.split('\\n');\n const adBreaks = [];\n\n let currentTime = 0;\n let currentAdBreak = null;\n let currentPodStartTime = null;\n let lastMapUrl = null;\n let adPods = [];\n let isInAdBreak = false;\n\n for (const line of lines) {\n // Detect DISCONTINUITY marker\n if (REGEX_DISCONTINUITY.test(line)) {\n if (isInAdBreak && lastMapUrl) {\n const mapMatch = line.match(REGEX_MAP);\n const mapUrl = mapMatch ? mapMatch[1] : null;\n\n if (mapUrl && mapUrl !== lastMapUrl) {\n // New MAP = new pod boundary\n if (currentPodStartTime !== null) {\n const podDuration = currentTime - currentPodStartTime;\n adPods.push({\n startTime: currentPodStartTime,\n duration: podDuration,\n endTime: currentTime,\n mapUrl: lastMapUrl,\n });\n }\n currentPodStartTime = currentTime;\n lastMapUrl = mapUrl;\n }\n }\n }\n\n // Detect MAP URL changes\n const mapMatch = line.match(REGEX_MAP);\n if (mapMatch && isInAdBreak) {\n const mapUrl = mapMatch[1];\n if (mapUrl && mapUrl !== lastMapUrl) {\n // New MAP = new pod\n if (currentPodStartTime !== null) {\n const podDuration = currentTime - currentPodStartTime;\n adPods.push({\n startTime: currentPodStartTime,\n duration: podDuration,\n endTime: currentTime,\n mapUrl: lastMapUrl,\n });\n }\n currentPodStartTime = currentTime;\n lastMapUrl = mapUrl;\n }\n }\n\n // Detect CUE-OUT (ad break start)\n if (line.startsWith(MT_HLS_CUE_OUT_TAG)) {\n const durationMatch = line.match(REGEX_CUE_OUT);\n const duration = durationMatch ? parseFloat(durationMatch[1]) : null;\n\n isInAdBreak = true;\n adPods = [];\n currentAdBreak = {\n id: `avail-${currentTime}`,\n startTime: currentTime,\n duration: duration,\n endTime: null,\n pods: [],\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n confirmedByTracking: false,\n };\n }\n\n // Detect CUE-IN (ad break end)\n if (line.startsWith(MT_HLS_CUE_IN_TAG)) {\n if (currentAdBreak) {\n // Close final pod\n if (currentPodStartTime !== null) {\n const podDuration = currentTime - currentPodStartTime;\n adPods.push({\n startTime: currentPodStartTime,\n duration: podDuration,\n endTime: currentTime,\n mapUrl: lastMapUrl,\n });\n }\n\n // Calculate actual duration\n const actualDuration = currentTime - currentAdBreak.startTime;\n\n // Filter zero-duration false positives\n if (actualDuration >= MIN_AD_DURATION) {\n currentAdBreak.duration = actualDuration;\n currentAdBreak.endTime = currentTime;\n currentAdBreak.pods = adPods;\n adBreaks.push(currentAdBreak);\n }\n\n // Reset state\n currentAdBreak = null;\n isInAdBreak = false;\n currentPodStartTime = null;\n lastMapUrl = null;\n adPods = [];\n }\n }\n\n // Track time via EXTINF\n if (line.startsWith(HLS_SEGMENT_DURATION_TAG)) {\n const duration = parseFloat(line.split(':')[1]);\n if (!isNaN(duration)) {\n currentTime += duration;\n }\n }\n }\n\n // Handle unclosed ad break\n if (currentAdBreak && currentAdBreak.duration) {\n currentAdBreak.endTime = currentAdBreak.startTime + currentAdBreak.duration;\n currentAdBreak.pods = adPods;\n adBreaks.push(currentAdBreak);\n }\n\n return adBreaks;\n}\n\n/**\n * Detects ads from VHS playlist using discontinuityStarts and MediaTailor segments\n */\nexport function detectAdBreaksFromVhsPlaylist(playlist) {\n const segments = playlist.segments;\n const discontinuityStarts = playlist.discontinuityStarts || [];\n const adBreaks = [];\n\n let currentAdBreak = null;\n let currentPod = null;\n let currentTime = 0;\n\n segments.forEach((segment, index) => {\n const isMTSegment = isMediaTailorSegment(segment);\n const hasDiscontinuity = discontinuityStarts.includes(index);\n\n if (isMTSegment) {\n // Discontinuity marks new pod boundary\n if (hasDiscontinuity && currentPod) {\n currentPod.endTime = currentTime;\n if (currentPod.duration > MIN_AD_DURATION) {\n currentAdBreak.pods.push(currentPod);\n }\n currentPod = null;\n }\n\n // Start new ad break if not in one\n if (!currentAdBreak) {\n currentAdBreak = {\n id: `avail-${currentTime}`,\n startTime: currentTime,\n duration: 0,\n endTime: null,\n source: 'vhs-discontinuity',\n confirmedByTracking: false,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n pods: [],\n };\n }\n\n // Start new pod if not in one\n if (!currentPod) {\n currentPod = {\n startTime: currentTime,\n duration: 0,\n endTime: null,\n hasFiredStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n };\n }\n\n // Accumulate durations\n const segmentDuration = segment.duration || 0;\n currentAdBreak.duration += segmentDuration;\n currentPod.duration += segmentDuration;\n } else {\n // Not MediaTailor segment - end ad break\n if (currentAdBreak) {\n // Close current pod\n if (currentPod) {\n currentPod.endTime = currentTime;\n if (currentPod.duration > MIN_AD_DURATION) {\n currentAdBreak.pods.push(currentPod);\n }\n currentPod = null;\n }\n\n // Close ad break\n currentAdBreak.endTime = currentTime;\n if (currentAdBreak.duration > MIN_AD_DURATION) {\n adBreaks.push(currentAdBreak);\n }\n currentAdBreak = null;\n }\n }\n\n currentTime += segment.duration || 0;\n });\n\n // Handle unclosed pod/ad break at end\n if (currentAdBreak) {\n if (currentPod) {\n currentPod.endTime = currentTime;\n if (currentPod.duration > MIN_AD_DURATION) {\n currentAdBreak.pods.push(currentPod);\n }\n }\n currentAdBreak.endTime = currentTime;\n if (currentAdBreak.duration > MIN_AD_DURATION) {\n adBreaks.push(currentAdBreak);\n }\n }\n\n return adBreaks;\n}\n\n/**\n * Enriches ad schedule with tracking API metadata\n */\nexport function enrichAdScheduleWithTrackingMetadata(adSchedule, trackingAvails) {\n const scheduleMap = new Map();\n\n // Build map of existing ads\n adSchedule.forEach((ad) => {\n const key = Math.round(ad.startTime);\n scheduleMap.set(key, ad);\n });\n\n // Process each avail from tracking API\n const newAds = [];\n trackingAvails.forEach((avail) => {\n const firstAd = avail.ads && avail.ads.length > 0 ? avail.ads[0] : null;\n if (!firstAd) return;\n\n const key = Math.round(firstAd.startTimeInSeconds);\n const existingAd = scheduleMap.get(key);\n\n if (existingAd) {\n // Enrich existing ad with tracking metadata\n existingAd.id = avail.availId;\n existingAd.creativeId = firstAd.adId;\n existingAd.title = firstAd.adTitle;\n existingAd.confirmedByTracking = true;\n\n // Enrich pods with tracking ad metadata\n if (avail.ads && avail.ads.length > 0 && existingAd.pods) {\n avail.ads.forEach((trackingAd, adIndex) => {\n if (existingAd.pods[adIndex]) {\n // Update existing pod\n existingAd.pods[adIndex].title = trackingAd.adTitle;\n existingAd.pods[adIndex].creativeId = trackingAd.adId;\n existingAd.pods[adIndex].trackingStartTime = trackingAd.startTimeInSeconds;\n existingAd.pods[adIndex].trackingDuration = trackingAd.durationInSeconds;\n } else {\n // Add new pod from tracking\n existingAd.pods.push({\n startTime: trackingAd.startTimeInSeconds,\n duration: trackingAd.durationInSeconds,\n endTime: trackingAd.startTimeInSeconds + trackingAd.durationInSeconds,\n title: trackingAd.adTitle,\n creativeId: trackingAd.adId,\n hasFiredStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n });\n }\n });\n }\n } else {\n // Add new ad from tracking\n newAds.push({\n id: avail.availId,\n startTime: firstAd.startTimeInSeconds,\n duration: avail.durationInSeconds,\n endTime: firstAd.startTimeInSeconds + avail.durationInSeconds,\n title: firstAd.adTitle,\n creativeId: firstAd.adId,\n source: 'tracking-api',\n confirmedByTracking: true,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n pods: avail.ads.map((ad) => ({\n startTime: ad.startTimeInSeconds,\n duration: ad.durationInSeconds,\n endTime: ad.startTimeInSeconds + ad.durationInSeconds,\n title: ad.adTitle,\n creativeId: ad.adId,\n hasFiredStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n })),\n });\n }\n });\n\n return newAds;\n}\n\n/**\n * Extracts the HLS live target duration from manifest text.\n * In HLS, EXT-X-TARGETDURATION is the closest manifest-level hint for refresh cadence.\n */\nexport function extractHlsTargetDurationSeconds(manifestText) {\n const match = manifestText.match(REGEX_HLS_TARGET_DURATION);\n return match ? parseInt(match[1], 10) : null;\n}\n\n/**\n * Extracts the DASH live minimumUpdatePeriod from MPD manifest text.\n * In DASH, minimumUpdatePeriod is the MPD's refresh hint for clients polling a live manifest.\n */\nexport function extractDashMinimumUpdatePeriodSeconds(manifestText) {\n const match = manifestText.match(REGEX_DASH_MINIMUM_UPDATE_PERIOD);\n return match ? parseIsoDuration(match[1]) : null;\n}\n\nasync function fetchTextOrThrow(url) {\n const response = await fetch(url, { credentials: 'include' });\n\n if (response.ok === false) {\n throw new Error(\n `Manifest request failed: ${response.status || 'unknown'} ${\n response.statusText || 'Request failed'\n }`\n );\n }\n\n return await response.text();\n}\n\n/**\n * Fetches HLS master manifest and returns master text + first media playlist URL\n */\nexport async function fetchHlsMasterManifest(manifestUrl) {\n const masterText = await fetchTextOrThrow(manifestUrl);\n\n // Find first media playlist URL\n const lines = masterText.split('\\n');\n let mediaPlaylistUrl = null;\n\n for (const line of lines) {\n if (!line.startsWith(HLS_TAG_PREFIX) && line.includes(HLS_MANIFEST_EXTENSION)) {\n mediaPlaylistUrl = new URL(line.trim(), manifestUrl).href;\n break;\n }\n }\n\n return { masterText, mediaPlaylistUrl };\n}\n\n/**\n * Fetches HLS media playlist and returns text\n */\nexport async function fetchHlsMediaPlaylist(playlistUrl) {\n return await fetchTextOrThrow(playlistUrl);\n}\n\n/**\n * Fetches DASH MPD manifest and returns XML text\n */\nexport async function fetchDashManifest(manifestUrl) {\n return await fetchTextOrThrow(manifestUrl);\n}\n\n/**\n * Parses ISO 8601 duration string to seconds\n * e.g. \"PT1M14S\" → 74, \"PT10S\" → 10, \"PT12M54S\" → 774\n */\nexport function parseIsoDuration(durationStr) {\n if (!durationStr) return 0;\n const match = durationStr.match(REGEX_ISO_8601_DURATION);\n if (!match) return 0;\n const hours = parseFloat(match[1] || 0);\n const minutes = parseFloat(match[2] || 0);\n const seconds = parseFloat(match[3] || 0);\n return hours * 3600 + minutes * 60 + seconds;\n}\n\n/**\n * Parses DASH MPD for ad breaks — supports both MULTI_PERIOD and SINGLE_PERIOD formats.\n *\n * MULTI_PERIOD (MediaTailor default): ad breaks are separate <Period> elements\n * whose <BaseURL> points to segments.mediatailor.amazonaws.com.\n *\n * SINGLE_PERIOD: the entire stream is one period; ads are signalled via\n * SCTE-35 <EventStream> elements inside that period.\n */\nexport function parseDashManifestForAdBreaks(xmlText) {\n const parser = new DOMParser();\n const xml = parser.parseFromString(xmlText, 'text/xml');\n const ads = [];\n\n const parserError = xml.querySelector('parsererror');\n if (parserError) {\n console.error('[MT] DASH XML parse error:', parserError.textContent);\n return ads;\n }\n\n const periods = xml.querySelectorAll('Period');\n console.log(`[MT] Found ${periods.length} Period(s) in DASH manifest`);\n\n if (periods.length > 1) {\n // ── MULTI_PERIOD ──────────────────────────────────────────────────────────\n // Ad periods are identified by a BaseURL pointing to the MediaTailor CDN.\n periods.forEach((period) => {\n const baseUrlEl = period.querySelector('BaseURL');\n const baseUrl = baseUrlEl ? baseUrlEl.textContent.trim() : '';\n\n if (!baseUrl.includes(MT_SEGMENT_PATTERN)) {\n return; // content period\n }\n\n const periodId = period.getAttribute('id') || '';\n const startTime = parseIsoDuration(period.getAttribute('start') || 'PT0S');\n const duration = parseIsoDuration(period.getAttribute('duration') || '');\n\n if (duration < MIN_AD_DURATION) {\n console.log(`[MT] Skipping period ${periodId} - duration too short (${duration}s)`);\n return;\n }\n\n console.log(`[MT] Ad period detected: ${periodId}`, { startTime, duration });\n\n ads.push({\n id: periodId,\n startTime,\n duration,\n endTime: startTime + duration,\n source: AD_SOURCE.MANIFEST_CUE,\n confirmedByTracking: false,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n pods: [],\n });\n });\n } else {\n // ── SINGLE_PERIOD ─────────────────────────────────────────────────────────\n // Ads are signalled via SCTE-35 EventStream elements within the single period.\n const eventStreams = xml.querySelectorAll(\n DASH_SCTE35_EVENT_STREAM_SELECTOR,\n );\n\n console.log(`[MT] Found ${eventStreams.length} SCTE-35 EventStream(s) in single-period manifest`);\n\n eventStreams.forEach((stream) => {\n const timescale = parseFloat(stream.getAttribute('timescale') || '1');\n\n stream.querySelectorAll('Event').forEach((event) => {\n const presentationTime = parseFloat(event.getAttribute('presentationTime') || 0);\n const duration = parseFloat(event.getAttribute('duration') || 0);\n const eventId =\n event.getAttribute('id') ||\n `${SCTE35_SCHEME_MARKER}-${presentationTime}`;\n\n const startTime = timescale !== 1 ? presentationTime / timescale : presentationTime;\n const durationSeconds = timescale !== 1 ? duration / timescale : duration;\n\n if (durationSeconds < MIN_AD_DURATION) {\n console.log(`[MT] Skipping event ${eventId} - duration too short (${durationSeconds}s)`);\n return;\n }\n\n console.log(`[MT] SCTE-35 event detected: ${eventId}`, { startTime, durationSeconds });\n\n ads.push({\n id: eventId,\n startTime,\n duration: durationSeconds,\n endTime: startTime + durationSeconds,\n source: AD_SOURCE.MANIFEST_CUE,\n confirmedByTracking: false,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n pods: [],\n });\n });\n });\n }\n\n console.log(`[MT] Parsed ${ads.length} valid ad break(s) from DASH manifest`);\n return ads;\n}\n\n/**\n * Fetches tracking metadata from AWS MediaTailor Tracking API\n * @param {string} trackingEndpointUrl - The tracking API URL\n * @param {number} timeout - Timeout in milliseconds\n * @param {AbortSignal} externalSignal - Optional external abort signal for cancellation\n */\nexport async function getTrackingMetadata(trackingEndpointUrl, timeout = 8000, externalSignal = null) {\n // Create AbortController for timeout support\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n // If external signal provided, listen for its abort event\n const abortHandler = () => controller.abort();\n if (externalSignal) {\n externalSignal.addEventListener('abort', abortHandler);\n }\n\n try {\n const response = await fetch(`${trackingEndpointUrl}?t=${Date.now()}`, {\n signal: controller.signal,\n credentials: 'include',\n });\n\n clearTimeout(timeoutId);\n if (externalSignal) {\n externalSignal.removeEventListener('abort', abortHandler);\n }\n\n if (!response.ok) {\n throw new Error(`Tracking API error: ${response.status}`);\n }\n\n return await response.json();\n } catch (error) {\n clearTimeout(timeoutId);\n if (externalSignal) {\n externalSignal.removeEventListener('abort', abortHandler);\n }\n throw error;\n }\n}\n\n/**\n * Extracts first media playlist URL from HLS master manifest text\n */\nexport function extractMediaPlaylistUrl(masterText, baseUrl) {\n const lines = masterText.split('\\n');\n\n for (const line of lines) {\n if (\n !line.startsWith(HLS_TAG_PREFIX) &&\n line.includes(HLS_MANIFEST_EXTENSION)\n ) {\n return new URL(line.trim(), baseUrl).href;\n }\n }\n\n return null;\n}\n","/* eslint-disable no-undef */\nimport nrvideo from '@newrelic/video-core';\nimport VideojsAdsTracker from './videojs-ads';\nimport {\n DEFAULT_LIVE_POLL_INTERVAL_MS,\n HLS_MIME_TYPE,\n MEDIATAILOR_HOST_MARKER,\n SCTE35_SCHEME_MARKER,\n TRACKING_API_TIMEOUT_MS,\n STREAM_TYPE,\n MANIFEST_TYPE,\n} from './utils/mt-constants.js';\nimport {\n getTimestamp,\n detectManifestFormatFromUrl,\n detectPlaybackStreamType,\n buildTrackingEndpointUrl,\n determineAdPosition,\n getQuartilesToFire,\n findActiveAdBreak,\n findActivePod,\n mergeAdSchedules,\n parseHlsManifestForAdBreaks,\n parseDashManifestForAdBreaks,\n detectAdBreaksFromVhsPlaylist,\n enrichAdScheduleWithTrackingMetadata,\n extractHlsTargetDurationSeconds,\n extractDashMinimumUpdatePeriodSeconds,\n fetchHlsMasterManifest,\n fetchHlsMediaPlaylist,\n fetchDashManifest,\n getTrackingMetadata,\n} from './utils/mt.js';\n\n// Handle both direct and default export from video-core\nconst nrvideoCore = nrvideo.default || nrvideo;\nconst Log = nrvideoCore.Log;\n\n/**\n * AWS MediaTailor Ad Tracker\n * Tracks ads from AWS MediaTailor SSAI streams (HLS/DASH)\n *\n * Features:\n * - Client-side ad detection from manifest markers (CUE-OUT/CUE-IN)\n * - Pod-level tracking (multiple ads within one break)\n * - VOD and Live stream support\n * - Zero race conditions via VHS player hooks\n * - Tracking API metadata enrichment\n */\nexport default class MediaTailorAdsTracker extends VideojsAdsTracker {\n /**\n * Checks if tracker should be used for this player source\n */\n static isUsing(player) {\n return (\n player &&\n typeof player.currentSrc === 'function' &&\n player.currentSrc().includes(MEDIATAILOR_HOST_MARKER)\n );\n }\n\n /**\n * Returns tracker name for New Relic instrumentation\n */\n getTrackerName() {\n return 'aws-media-tailor';\n }\n\n /**\n * Returns player version (MediaTailor doesn't have version)\n */\n getPlayerVersion() {\n return 'MediaTailor';\n }\n\n /**\n * Override to return the correct ad position from our ad schedule\n * This overrides video-core's default logic which only checks if content started\n */\n getAdPosition() {\n if (this.currentAdBreak && this.currentAdBreak.adPosition) {\n return this.currentAdBreak.adPosition;\n }\n return super.getAdPosition();\n }\n\n constructor(player, options = {}) {\n super(player);\n\n // Initialize state\n this.streamType = null; // 'vod' or 'live'\n this.manifestFormat = null; // 'hls' or 'dash'\n this.playbackManifestUrl = player.currentSrc();\n\n // Ad tracking state\n this.adSchedule = [];\n this.currentAdBreak = null;\n this.currentAdPod = null;\n this.hasEndedContent = false;\n\n // Disposal and abort state\n this.isDisposed = false;\n this.trackingAbortController = null;\n this.manifestAbortController = null;\n this.isFetchingTracking = false;\n this.isFetchingManifest = false;\n\n // Tracking API state\n this.trackingEndpointUrl = null;\n this.hasAttemptedTrackingFetch = false;\n this.trackingFetchRetries = 0;\n this.maxTrackingRetries = 1;\n\n // Live polling timers\n this.manifestPollTimer = null;\n this.trackingPollTimer = null;\n this.liveRefreshIntervalSeconds = null;\n\n // Manifest parsing cache\n this.mediaPlaylistUrl = null;\n this.lastMediaPlaylistText = null;\n\n console.log(`[MT - ${getTimestamp()}] MediaTailorAdsTracker initialized`, {\n endpoint: this.playbackManifestUrl,\n trackingAPITimeout: TRACKING_API_TIMEOUT_MS,\n });\n\n this.manifestFormat = detectManifestFormatFromUrl(this.playbackManifestUrl);\n console.log(\n `[MT - ${getTimestamp()}] Manifest type: ${this.manifestFormat.toUpperCase()}`,\n );\n\n this.player.one('loadedmetadata', () => {\n this.streamType = detectPlaybackStreamType(this.player.duration());\n console.log(\n `[MT - ${getTimestamp()}] Stream type: ${this.streamType.toUpperCase()}`,\n );\n this.initializeTracking();\n });\n }\n\n /**\n * Initializes tracking based on detected stream type\n */\n initializeTracking() {\n console.log(\n `[MT - ${getTimestamp()}] Initializing ${this.manifestFormat.toUpperCase()} ${this.streamType.toUpperCase()} tracking`,\n );\n\n // Extract tracking URL from sessionized URL\n this.trackingEndpointUrl = buildTrackingEndpointUrl(this.playbackManifestUrl);\n if (this.trackingEndpointUrl) {\n console.log(\n `[MT - ${getTimestamp()}] Tracking URL extracted:`,\n this.trackingEndpointUrl,\n );\n } else {\n console.warn(\n `[MT - ${getTimestamp()}] No sessionId found - user must initialize session externally`,\n );\n }\n\n // Set up format-specific tracking\n if (this.streamType === STREAM_TYPE.VOD) {\n this.setupVODTracking();\n } else {\n this.setupLiveTracking();\n }\n }\n\n /**\n * Register listeners (overrides parent class method)\n */\n registerListeners() {\n super.registerListeners();\n\n // Bind before registering — super(player) calls registerListeners() before\n // the constructor body runs, so bindings must happen here, not in the constructor.\n this.onPause = this.onPause.bind(this);\n this.onPlaying = this.onPlaying.bind(this);\n this.onSeeking = this.onSeeking.bind(this);\n this.onSeeked = this.onSeeked.bind(this);\n this.onWaiting = this.onWaiting.bind(this);\n this.onEnded = this.onEnded.bind(this);\n this.onTimeUpdate = this.onTimeUpdate.bind(this);\n\n this.player.on('pause', this.onPause);\n this.player.on('playing', this.onPlaying);\n this.player.on('seeking', this.onSeeking);\n this.player.on('seeked', this.onSeeked);\n this.player.on('waiting', this.onWaiting);\n this.player.on('ended', this.onEnded);\n this.player.on('timeupdate', this.onTimeUpdate);\n console.log(`[MT - ${getTimestamp()}] Event listeners registered`);\n }\n\n /**\n * Unregister listeners (overrides parent class method)\n */\n unregisterListeners() {\n super.unregisterListeners();\n this.player.off('pause', this.onPause);\n this.player.off('playing', this.onPlaying);\n this.player.off('seeking', this.onSeeking);\n this.player.off('seeked', this.onSeeked);\n this.player.off('waiting', this.onWaiting);\n this.player.off('ended', this.onEnded);\n this.player.off('timeupdate', this.onTimeUpdate);\n this.stopLivePolling();\n }\n\n /**\n * Stops live polling timers\n */\n stopLivePolling() {\n if (this.manifestPollTimer) {\n clearTimeout(this.manifestPollTimer);\n this.manifestPollTimer = null;\n }\n\n if (this.trackingPollTimer) {\n clearInterval(this.trackingPollTimer);\n this.trackingPollTimer = null;\n }\n }\n\n /**\n * Sets up VOD tracking (single parse, no polling)\n */\n setupVODTracking() {\n console.log(`[MT - ${getTimestamp()}] VOD mode: Single manifest parse`);\n this.hookPlayerManifest();\n }\n\n /**\n * Sets up Live tracking (continuous polling)\n */\n setupLiveTracking() {\n console.log(`[MT - ${getTimestamp()}] Live mode: Continuous polling`);\n this.hookPlayerManifest();\n\n const pollingInterval = this.getLiveRefreshIntervalMs();\n\n // Start polling timers\n this.manifestPollTimer = setInterval(() => {\n this.pollManifestForNewAds();\n }, pollingInterval);\n\n this.trackingPollTimer = setInterval(() => {\n this.getAndProcessTrackingMetadata();\n }, pollingInterval);\n\n console.log(`[MT - ${getTimestamp()}] Live polling started`, {\n pollingInterval,\n });\n }\n\n /**\n * Returns the live polling interval in milliseconds\n */\n getLiveRefreshIntervalMs() {\n return this.liveRefreshIntervalSeconds\n ? this.liveRefreshIntervalSeconds * 1000\n : DEFAULT_LIVE_POLL_INTERVAL_MS;\n }\n\n /**\n * Updates live polling intervals after manifest metadata is detected\n */\n restartLivePollingTimers() {\n if (!this.liveRefreshIntervalSeconds) return;\n\n const newInterval = this.getLiveRefreshIntervalMs();\n console.log(\n `[MT - ${getTimestamp()}] Updating live polling interval: ${this.liveRefreshIntervalSeconds}s`,\n );\n\n // Restart timers with new interval\n if (this.manifestPollTimer) clearInterval(this.manifestPollTimer);\n if (this.trackingPollTimer) clearInterval(this.trackingPollTimer);\n\n this.manifestPollTimer = setInterval(() => {\n this.pollManifestForNewAds();\n }, newInterval);\n\n this.trackingPollTimer = setInterval(() => {\n this.getAndProcessTrackingMetadata();\n }, newInterval);\n }\n\n /**\n * Hooks into player's manifest loading (zero race condition)\n * Supports: VHS, Native HLS, contrib-hls, Shaka, dash.js\n */\n hookPlayerManifest() {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n if (!tech) {\n console.log(`[MT - ${getTimestamp()}] No tech - using fallback fetch`);\n this.getManifestDirectly();\n return;\n }\n\n // Try hooks in order of preference\n if (this.manifestFormat === MANIFEST_TYPE.HLS) {\n if (\n this.hookHLSViaVHS(tech) ||\n this.hookHLSViaNative(tech) ||\n this.hookHLSViaContribHls(tech)\n ) {\n return; // Successfully hooked\n }\n } else if (this.manifestFormat === MANIFEST_TYPE.DASH) {\n if (this.hookDASHViaShaka(tech) || this.hookDASHViaDashJs(tech)) {\n return; // Successfully hooked\n }\n }\n\n // Fallback: Direct manifest fetch\n console.log(\n `[MT - ${getTimestamp()}] Using fallback: direct manifest fetch`,\n );\n this.getManifestDirectly();\n }\n\n /**\n * Hook: VHS (videojs-http-streaming) - Video.js 7.0+\n */\n hookHLSViaVHS(tech) {\n if (!tech.vhs || !tech.vhs.playlists) return false;\n\n console.log(`[MT - ${getTimestamp()}] Hooked: VHS`);\n\n // Parse already-loaded playlist\n const currentPlaylist = tech.vhs.playlists.media();\n if (\n currentPlaylist &&\n currentPlaylist.segments &&\n currentPlaylist.segments.length > 0\n ) {\n console.log(`[MT - ${getTimestamp()}] Parsing existing playlist`);\n this.parseVhsPlaylistForAdBreaks(currentPlaylist);\n }\n\n // Hook future playlist loads\n tech.vhs.on('loadedplaylist', () => {\n const playlist = tech.vhs.playlists.media();\n if (playlist) {\n this.parseVhsPlaylistForAdBreaks(playlist);\n }\n });\n\n return true;\n }\n\n /**\n * Hook: Native HLS (Safari)\n */\n hookHLSViaNative(tech) {\n // Safari uses native HLS - can't hook directly\n if (\n tech.el_ &&\n tech.el_.canPlayType &&\n tech.el_.canPlayType(HLS_MIME_TYPE)\n ) {\n console.log(\n `[MT - ${getTimestamp()}] Native HLS detected - using fallback`,\n );\n this.getManifestDirectly();\n return true;\n }\n return false;\n }\n\n /**\n * Hook: videojs-contrib-hls (legacy Video.js 5.x/6.x)\n */\n hookHLSViaContribHls(tech) {\n if (!tech.hls || !tech.hls.playlists) return false;\n\n console.log(`[MT - ${getTimestamp()}] Hooked: contrib-hls (legacy)`);\n\n // Parse already-loaded playlist\n const currentPlaylist = tech.hls.playlists.media();\n if (\n currentPlaylist &&\n currentPlaylist.segments &&\n currentPlaylist.segments.length > 0\n ) {\n this.parseVhsPlaylistForAdBreaks(currentPlaylist);\n }\n\n // Hook future playlist loads\n tech.hls.on('loadedplaylist', () => {\n const playlist = tech.hls.playlists.media();\n if (playlist) {\n this.parseVhsPlaylistForAdBreaks(playlist);\n }\n });\n\n return true;\n }\n\n /**\n * Hook: Shaka Player (DASH)\n */\n hookDASHViaShaka(tech) {\n if (!tech.shakaPlayer) return false;\n\n console.log(`[MT - ${getTimestamp()}] Hooked: Shaka Player`);\n tech.shakaPlayer.addEventListener('emsg', (event) => {\n this.handleDASHEmsgEvent(event);\n });\n\n return true;\n }\n\n /**\n * Hook: dash.js (DASH)\n */\n hookDASHViaDashJs(tech) {\n if (!tech.dash || !tech.dash.on) return false;\n\n console.log(`[MT - ${getTimestamp()}] Hooked: dash.js`);\n tech.dash.on('EVENT_MODE_ON_RECEIVE', (event) => {\n this.handleDASHEventStream(event);\n });\n\n return true;\n }\n\n /**\n * Fetches manifest directly (fallback when hooks unavailable)\n */\n async getManifestDirectly() {\n console.log(\n `[MT - ${getTimestamp()}] Fallback: fetching manifest directly`,\n );\n\n try {\n const manifestUrl = this.playbackManifestUrl;\n\n if (this.manifestFormat === MANIFEST_TYPE.HLS) {\n await this.fetchAndParseHlsManifest(manifestUrl);\n } else if (this.manifestFormat === MANIFEST_TYPE.DASH) {\n await this.fetchAndParseDashManifest(manifestUrl);\n }\n } catch (error) {\n console.log(`[MT - ${getTimestamp()}] Fallback fetch error:`, error);\n }\n }\n\n /**\n * Fetches and parses HLS master + media manifest\n */\n async fetchAndParseHlsManifest(manifestUrl) {\n try {\n console.log(`[MT - ${getTimestamp()}] Fetching HLS master manifest`);\n\n // Fetch master manifest\n const { mediaPlaylistUrl } = await fetchHlsMasterManifest(manifestUrl);\n\n if (!mediaPlaylistUrl) {\n console.log(`[MT - ${getTimestamp()}] No media playlist found`);\n return;\n }\n\n console.log(`[MT - ${getTimestamp()}] Fetching media playlist`);\n\n // Fetch media playlist\n const mediaText = await fetchHlsMediaPlaylist(mediaPlaylistUrl);\n\n const hlsTargetDurationSeconds = extractHlsTargetDurationSeconds(mediaText);\n this.updateLiveRefreshIntervalFromManifest(\n hlsTargetDurationSeconds,\n 'hls target duration',\n );\n\n // Parse for ads\n const ads = parseHlsManifestForAdBreaks(mediaText);\n if (ads.length > 0) {\n console.log(\n `[MT - ${getTimestamp()}] Detected ${ads.length} ad break(s)`,\n );\n this.mergeNewAds(ads);\n }\n } catch (error) {\n console.log(`[MT - ${getTimestamp()}] HLS fetch error:`, error);\n }\n }\n\n /**\n * Fetches and parses DASH MPD manifest\n */\n async fetchAndParseDashManifest(manifestUrl) {\n try {\n console.log(`[MT - ${getTimestamp()}] Fetching DASH manifest`);\n\n // Fetch DASH manifest\n const xmlText = await fetchDashManifest(manifestUrl);\n\n const dashMinimumUpdatePeriodSeconds =\n extractDashMinimumUpdatePeriodSeconds(xmlText);\n this.updateLiveRefreshIntervalFromManifest(\n dashMinimumUpdatePeriodSeconds,\n 'dash minimumUpdatePeriod',\n );\n\n // Parse for ads\n const ads = parseDashManifestForAdBreaks(xmlText);\n\n console.log(\n `[MT - ${getTimestamp()}] DASH: ${ads.length} ad break(s) found`,\n );\n\n if (ads.length > 0) {\n this.mergeNewAds(ads); // also triggers tracking fetch\n } else if (\n this.streamType === STREAM_TYPE.VOD &&\n this.trackingEndpointUrl &&\n !this.hasAttemptedTrackingFetch\n ) {\n // No SCTE-35 markers in manifest - fall back to tracking API directly\n console.log(\n `[MT - ${getTimestamp()}] DASH: no manifest cues, fetching tracking API`,\n );\n this.hasAttemptedTrackingFetch = true;\n this.getAndProcessTrackingMetadata();\n }\n } catch (error) {\n console.log(`[MT - ${getTimestamp()}] DASH fetch error:`, error);\n }\n }\n\n /**\n * Handles DASH emsg events from Shaka Player\n */\n handleDASHEmsgEvent(event) {\n console.log(`[MT - ${getTimestamp()}] DASH emsg event:`, event);\n\n try {\n // Shaka Player emits emsg events with event.detail containing the emsg box data\n const emsgData = event.detail;\n\n if (!emsgData) {\n console.log(`[MT - ${getTimestamp()}] No emsg data in event`);\n return;\n }\n\n // Check if this is a SCTE-35 event\n // schemeIdUri for SCTE-35: urn:scte:scte35:2013:bin or urn:scte:scte35:2014:xml\n const schemeIdUri = emsgData.schemeIdUri || '';\n\n if (!schemeIdUri.includes(SCTE35_SCHEME_MARKER)) {\n console.log(\n `[MT - ${getTimestamp()}] Non-SCTE-35 emsg, skipping:`,\n schemeIdUri,\n );\n return;\n }\n\n console.log(`[MT - ${getTimestamp()}] SCTE-35 emsg detected:`, {\n schemeIdUri: emsgData.schemeIdUri,\n value: emsgData.value,\n timescale: emsgData.timescale,\n presentationTime: emsgData.presentationTime,\n presentationTimeDelta: emsgData.presentationTimeDelta,\n eventDuration: emsgData.eventDuration,\n });\n\n // Calculate start time in seconds\n const timescale = emsgData.timescale || 1;\n const presentationTime = emsgData.presentationTime || 0;\n const eventDuration = emsgData.eventDuration || 0;\n\n const startTime = presentationTime / timescale;\n const duration = eventDuration / timescale;\n\n // Parse SCTE-35 message data\n const messageData = emsgData.messageData;\n\n if (messageData && duration > 0) {\n const adBreak = {\n id: `dash-emsg-${startTime}`,\n startTime: startTime,\n duration: duration,\n endTime: startTime + duration,\n source: 'dash-emsg',\n confirmedByTracking: false,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n pods: [],\n };\n\n console.log(\n `[MT - ${getTimestamp()}] Adding ad break from DASH emsg:`,\n adBreak,\n );\n this.mergeNewAds([adBreak]);\n }\n } catch (error) {\n console.log(\n `[MT - ${getTimestamp()}] Error parsing DASH emsg event:`,\n error,\n );\n }\n }\n\n /**\n * Handles DASH event stream from dash.js\n */\n handleDASHEventStream(event) {\n console.log(`[MT - ${getTimestamp()}] DASH event stream:`, event);\n\n try {\n // dash.js emits events with different structure\n const eventData = event.event || event;\n\n if (!eventData) {\n console.log(`[MT - ${getTimestamp()}] No event data`);\n return;\n }\n\n // Check if this is a SCTE-35 event\n const schemeIdUri = eventData.schemeIdUri || '';\n\n if (!schemeIdUri.includes(SCTE35_SCHEME_MARKER)) {\n console.log(\n `[MT - ${getTimestamp()}] Non-SCTE-35 event, skipping:`,\n schemeIdUri,\n );\n return;\n }\n\n console.log(`[MT - ${getTimestamp()}] SCTE-35 event stream detected:`, {\n id: eventData.id,\n schemeIdUri: eventData.schemeIdUri,\n presentationTime: eventData.presentationTime,\n duration: eventData.duration,\n messageData: eventData.messageData,\n });\n\n // Calculate timing\n const startTime = parseFloat(eventData.presentationTime || 0);\n const duration = parseFloat(eventData.duration || 0);\n\n if (duration > 0) {\n const adBreak = {\n id: eventData.id || `dash-event-${startTime}`,\n startTime: startTime,\n duration: duration,\n endTime: startTime + duration,\n source: 'dash-event-stream',\n confirmedByTracking: false,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n pods: [],\n };\n\n console.log(\n `[MT - ${getTimestamp()}] Adding ad break from DASH event stream:`,\n adBreak,\n );\n this.mergeNewAds([adBreak]);\n }\n } catch (error) {\n console.log(\n `[MT - ${getTimestamp()}] Error parsing DASH event stream:`,\n error,\n );\n }\n }\n\n /**\n * Parses VHS playlist object for ads\n */\n parseVhsPlaylistForAdBreaks(playlist) {\n console.log(\n `[MT - ${getTimestamp()}] Parsing VHS playlist (${\n playlist.segments?.length || 0\n } segments)`,\n );\n\n if (!playlist.segments || playlist.segments.length === 0) {\n console.log(`[MT - ${getTimestamp()}] No segments in playlist`);\n return;\n }\n\n this.updateLiveRefreshIntervalFromManifest(\n playlist.targetDuration,\n 'vhs target duration',\n );\n\n // VHS strips CUE tags - detect via discontinuityStarts + MediaTailor segments\n const ads = detectAdBreaksFromVhsPlaylist(playlist);\n\n if (ads.length > 0) {\n console.log(\n `[MT - ${getTimestamp()}] VHS detected ${ads.length} ad break(s), ${ads.reduce(\n (sum, ab) => sum + ab.pods.length,\n 0,\n )} pod(s)`,\n );\n this.mergeNewAds(ads);\n } else {\n console.log(`[MT - ${getTimestamp()}] No ads detected in VHS playlist`);\n }\n }\n\n /**\n * Polls manifest for new ads (Live streams only)\n */\n async pollManifestForNewAds() {\n if (this.isDisposed) return;\n if (this.streamType !== STREAM_TYPE.LIVE) return;\n\n if (this.isFetchingManifest) {\n console.log(\n `[MT - ${getTimestamp()}] Manifest fetch already in progress, skipping`,\n );\n return;\n }\n\n this.isFetchingManifest = true;\n\n try {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n if (tech && tech.vhs) {\n const playlist = tech.vhs.playlists.media();\n if (playlist) {\n this.parseVhsPlaylistForAdBreaks(playlist);\n }\n } else if (this.manifestFormat === MANIFEST_TYPE.DASH) {\n await this.fetchAndParseDashManifest(this.playbackManifestUrl);\n }\n } catch (error) {\n console.log(`[MT - ${getTimestamp()}] Manifest poll error:`, error);\n } finally {\n this.isFetchingManifest = false;\n }\n }\n\n /**\n * Merges new ads into schedule (deduplicates)\n */\n mergeNewAds(newAds) {\n this.adSchedule = mergeAdSchedules(this.adSchedule, newAds);\n\n console.log(\n `[MT - ${getTimestamp()}] Ad schedule: ${this.adSchedule.length} ad break(s)`,\n );\n\n // VOD: Fetch tracking metadata after first manifest parse (AWS best practice)\n if (\n this.streamType === STREAM_TYPE.VOD &&\n this.trackingEndpointUrl &&\n !this.hasAttemptedTrackingFetch\n ) {\n this.hasAttemptedTrackingFetch = true;\n console.log(\n `[MT - ${getTimestamp()}] Fetching tracking metadata (first manifest parse)`,\n );\n this.getAndProcessTrackingMetadata();\n }\n }\n\n /**\n * Updates live polling cadence from manifest-derived metadata\n */\n updateLiveRefreshIntervalFromManifest(intervalSeconds, source) {\n if (\n this.streamType !== STREAM_TYPE.LIVE ||\n !intervalSeconds ||\n intervalSeconds <= 0\n ) {\n return;\n }\n\n if (this.liveRefreshIntervalSeconds === intervalSeconds) {\n return;\n }\n\n this.liveRefreshIntervalSeconds = intervalSeconds;\n console.log(\n `[MT - ${getTimestamp()}] Derived live polling interval from ${source}: ${intervalSeconds}s`,\n );\n\n if (this.manifestPollTimer || this.trackingPollTimer) {\n this.restartLivePollingTimers();\n }\n }\n\n /**\n * Fetches and processes tracking metadata from AWS MediaTailor Tracking API\n */\n async getAndProcessTrackingMetadata() {\n if (this.isDisposed || !this.trackingEndpointUrl) return;\n\n if (this.isFetchingTracking) {\n console.log(\n `[MT - ${getTimestamp()}] Tracking fetch already in progress, skipping`,\n );\n return;\n }\n\n this.isFetchingTracking = true;\n\n try {\n console.log(`[MT - ${getTimestamp()}] Fetching tracking metadata`);\n\n this.trackingAbortController = new AbortController();\n\n const data = await getTrackingMetadata(\n this.trackingEndpointUrl,\n TRACKING_API_TIMEOUT_MS,\n this.trackingAbortController.signal,\n );\n\n if (this.isDisposed) {\n console.log(\n `[MT - ${getTimestamp()}] Disposed during tracking fetch, ignoring result`,\n );\n return;\n }\n\n if (data.avails && data.avails.length > 0) {\n console.log(\n `[MT - ${getTimestamp()}] Enriching with ${data.avails.length} avail(s)`,\n );\n this.enrichWithTrackingMetadata(data.avails);\n this.trackingFetchRetries = 0;\n } else {\n console.log(`[MT - ${getTimestamp()}] Tracking API returned 0 avails`);\n }\n } catch (error) {\n if (error.name === 'AbortError' || this.isDisposed) {\n console.log(`[MT - ${getTimestamp()}] Tracking fetch aborted`);\n return;\n }\n\n console.log(\n `[MT - ${getTimestamp()}] Tracking API error: ${error.message}`,\n error,\n );\n\n if (this.trackingFetchRetries < this.maxTrackingRetries) {\n this.trackingFetchRetries++;\n console.log(\n `[MT - ${getTimestamp()}] Retrying tracking fetch (${this.trackingFetchRetries}/${this.maxTrackingRetries})`,\n );\n this.isFetchingTracking = false;\n await this.getAndProcessTrackingMetadata();\n return;\n }\n\n console.log(\n `[MT - ${getTimestamp()}] Max retries reached, continuing with manifest data only`,\n );\n } finally {\n this.isFetchingTracking = false;\n this.trackingAbortController = null;\n }\n }\n\n /**\n * Enriches ad schedule with tracking API metadata\n */\n enrichWithTrackingMetadata(avails) {\n const newAds = enrichAdScheduleWithTrackingMetadata(this.adSchedule, avails);\n\n // Add any new ads from tracking\n if (newAds.length > 0) {\n this.adSchedule.push(...newAds);\n this.adSchedule.sort((a, b) => a.startTime - b.startTime);\n }\n\n console.log(\n `[MT - ${getTimestamp()}] Enrichment complete: ${\n this.adSchedule.length\n } ad break(s)`,\n );\n\n // Log enriched schedule with full details\n console.log(\n `[MT - ${getTimestamp()}] Enriched schedule:`,\n this.adSchedule.map((ab) => ({\n id: ab.id,\n startTime: ab.startTime,\n endTime: ab.endTime,\n duration: ab.duration,\n title: ab.title,\n podCount: ab.pods.length,\n pods: ab.pods.map((p) => ({\n title: p.title,\n startTime: p.startTime,\n endTime: p.endTime,\n duration: p.duration,\n })),\n })),\n );\n\n // Log current player time for debugging\n console.log(\n `[MT - ${getTimestamp()}] Current player time: ${this.player.currentTime()}s`,\n );\n }\n\n /**\n * Tracks quartile events for active pod/ad\n */\n trackQuartiles(adObject, progress) {\n if (!adObject.duration || adObject.duration <= 0) return;\n\n const quartilesToFire = getQuartilesToFire(progress, adObject.duration, {\n q1: adObject.hasFiredQ1,\n q2: adObject.hasFiredQ2,\n q3: adObject.hasFiredQ3,\n });\n\n quartilesToFire.forEach(({ quartile, key }) => {\n console.log(`[MT - ${getTimestamp()}] → AD_QUARTILE ${quartile * 25}%`);\n this.sendAdQuartile({ quartile });\n adObject[`hasFired${key.toUpperCase()}`] = true;\n });\n }\n\n /**\n * Called on timeupdate - main event tracking logic\n */\n onTimeUpdate() {\n const currentTime = this.player.currentTime();\n const activeAdBreak = findActiveAdBreak(this.adSchedule, currentTime);\n\n // Debug logging (only log when schedule exists and every 5 seconds)\n if (\n this.adSchedule.length > 0 &&\n Math.floor(currentTime) % 5 === 0 &&\n Math.floor(currentTime * 10) % 10 === 0\n ) {\n console.log(\n `[MT - ${getTimestamp()}] TimeUpdate: ${currentTime.toFixed(2)}s, Active break: ${\n activeAdBreak ? activeAdBreak.id : 'none'\n }, Schedule count: ${this.adSchedule.length}`,\n );\n }\n\n if (activeAdBreak) {\n // === INSIDE AD BREAK ===\n\n // Fire AD_BREAK_START once\n if (!activeAdBreak.hasFiredStart) {\n this.currentAdBreak = activeAdBreak;\n this.setIsAd(true); // Switch to ad mode\n console.log(\n `[MT - ${getTimestamp()}] setIsAd(true) - Entering ad break`,\n );\n\n // Calculate ad position by finding index based on startTime\n const adBreakIndex = this.adSchedule.findIndex(\n (ad) => Math.abs(ad.startTime - activeAdBreak.startTime) < 0.5,\n );\n const adPosition = determineAdPosition(\n adBreakIndex,\n this.adSchedule.length,\n this.streamType,\n );\n\n // Store position on the ad break for reuse\n activeAdBreak.adPosition = adPosition;\n\n console.log(`[MT - ${getTimestamp()}] → AD_BREAK_START`, {\n startTime: activeAdBreak.startTime,\n duration: activeAdBreak.duration,\n podCount: activeAdBreak.pods?.length || 0,\n position: adPosition,\n breakIndex: adBreakIndex,\n totalBreaks: this.adSchedule.length,\n });\n this.sendAdBreakStart();\n activeAdBreak.hasFiredStart = true;\n }\n\n // Check for pod-level tracking\n if (activeAdBreak.pods && activeAdBreak.pods.length > 0) {\n const activePod = findActivePod(activeAdBreak, currentTime);\n\n if (activePod) {\n // Entering new pod\n if (!this.currentAdPod || this.currentAdPod !== activePod) {\n // End previous pod\n if (this.currentAdPod) {\n console.log(`[MT - ${getTimestamp()}] → AD_END (pod transition)`);\n this.sendEnd();\n }\n\n // Start new pod\n this.currentAdPod = activePod;\n\n console.log(`[MT - ${getTimestamp()}] → AD_START (new pod)`, {\n startTime: activePod.startTime,\n duration: activePod.duration,\n position: activeAdBreak.adPosition,\n });\n\n // NOTE: If the tracking API was slow to respond, the no-pods path\n // (below) will have already called sendStart() on this break.\n // Calling sendStart() again here is intentional — video-core's state\n // machine suppresses duplicate AD_START transitions (AD_START →\n // AD_START is a no-op), so nothing double-fires in New Relic. Once\n // pods are populated by the tracking API, this path takes over and\n // provides pod-level metadata (title, duration, creativeId) for all\n // subsequent events in the break.\n this.sendRequest({\n adPartner: 'aws-mediatailor',\n adPosition: activeAdBreak.adPosition,\n });\n\n this.sendStart({\n adPartner: 'aws-mediatailor',\n adPosition: activeAdBreak.adPosition,\n });\n activePod.hasFiredStart = true;\n }\n\n // Track quartiles for pod\n const podProgress = currentTime - activePod.startTime;\n this.trackQuartiles(activePod, podProgress);\n }\n } else {\n // No pods - treat entire break as single ad\n if (!activeAdBreak.hasFiredAdStart) {\n console.log(`[MT - ${getTimestamp()}] → AD_START (no pods)`, {\n startTime: activeAdBreak.startTime,\n duration: activeAdBreak.duration,\n position: activeAdBreak.adPosition,\n });\n\n // Send AD_REQUEST before AD_START (required sequence)\n this.sendRequest({\n adPartner: 'aws-mediatailor',\n adPosition: activeAdBreak.adPosition,\n });\n\n // Send AD_START\n this.sendStart({\n adPartner: 'aws-mediatailor',\n adPosition: activeAdBreak.adPosition,\n });\n activeAdBreak.hasFiredAdStart = true;\n }\n\n // Track quartiles for entire break\n const adProgress = currentTime - activeAdBreak.startTime;\n this.trackQuartiles(activeAdBreak, adProgress);\n }\n } else if (this.currentAdBreak) {\n // === EXITING AD BREAK ===\n\n // End last pod\n if (this.currentAdPod) {\n console.log(`[MT - ${getTimestamp()}] → AD_END (final pod)`);\n this.sendEnd();\n this.currentAdPod = null;\n }\n\n // End ad break\n if (!this.currentAdBreak.hasFiredEnd) {\n console.log(`[MT - ${getTimestamp()}] → AD_BREAK_END`);\n this.sendAdBreakEnd();\n this.currentAdBreak.hasFiredEnd = true;\n }\n\n this.currentAdBreak = null;\n this.setIsAd(false); // Switch back to content mode\n console.log(`[MT - ${getTimestamp()}] setIsAd(false) - Exiting ad break`);\n\n // Check if video has ended after exiting last ad break\n if (this.player.ended() && !this.hasEndedContent) {\n console.log(\n `[MT - ${getTimestamp()}] Video ended after last ad → CONTENT_END`,\n );\n this.sendContentEnd();\n this.hasEndedContent = true;\n }\n }\n }\n\n /**\n * Sends CONTENT_END event via parent content tracker\n */\n sendContentEnd() {\n if (this.parentTracker) {\n this.parentTracker.sendEnd();\n } else {\n super.sendEnd();\n }\n }\n\n /**\n * Generic handler for ad events - only fires if currently in an ad break\n * @param {string} eventName - The event name for logging (e.g., 'AD_PAUSE')\n * @param {Function} sendMethod - The method to call (e.g., this.sendPause)\n */\n handleAdEvent(eventName, sendMethod) {\n if (this.isAd()) {\n console.log(`[MT - ${getTimestamp()}] → ${eventName}`);\n sendMethod.call(this);\n }\n }\n\n /**\n * Handle pause events - sends AD_PAUSE only when ads are playing\n */\n onPause() {\n this.handleAdEvent('AD_PAUSE', this.sendPause);\n }\n\n /**\n * Handle playing events - sends AD_RESUME only when ads are playing\n */\n onPlaying() {\n if (this.isAd()) {\n console.log(`[MT - ${getTimestamp()}] → AD_RESUME`);\n this.sendResume();\n this.sendBufferEnd(); // Playing event also ends any buffering\n }\n }\n\n /**\n * Handle seeking events - sends AD_SEEK_START only when ads are playing\n */\n onSeeking() {\n this.handleAdEvent('AD_SEEK_START', this.sendSeekStart);\n }\n\n /**\n * Handle seeked events - sends AD_SEEK_END only when ads are playing\n */\n onSeeked() {\n this.handleAdEvent('AD_SEEK_END', this.sendSeekEnd);\n }\n\n /**\n * Handle waiting (buffering) events - sends AD_BUFFER_START only when ads are playing\n */\n onWaiting() {\n this.handleAdEvent('AD_BUFFER_START', this.sendBufferStart);\n }\n\n /**\n * Override: Fire CONTENT_END when video ends\n */\n onEnded() {\n if (!this.hasEndedContent) {\n console.log(`[MT - ${getTimestamp()}] Video ended → CONTENT_END`);\n this.sendContentEnd();\n this.hasEndedContent = true;\n }\n }\n\n /**\n * Returns ad title for New Relic\n */\n getTitle() {\n if (this.currentAdPod) {\n return this.currentAdPod.title || this.currentAdBreak?.id || null;\n }\n return this.currentAdBreak?.title || this.currentAdBreak?.id || null;\n }\n\n /**\n * Returns ad ID for New Relic (adId attribute)\n */\n getVideoId() {\n if (this.currentAdPod) {\n return (\n this.currentAdPod.creativeId ||\n this.currentAdPod.title ||\n this.currentAdBreak?.id ||\n null\n );\n }\n return this.currentAdBreak?.creativeId || this.currentAdBreak?.id || null;\n }\n\n /**\n * Returns ad source URL for New Relic (adSrc attribute)\n */\n getSrc() {\n // MediaTailor doesn't provide individual creative URLs\n return this.trackingEndpointUrl || this.playbackManifestUrl || null;\n }\n\n /**\n * Returns ad duration in milliseconds for New Relic\n */\n getDuration() {\n if (this.currentAdPod) {\n return this.currentAdPod.duration * 1000;\n }\n return this.currentAdBreak ? this.currentAdBreak.duration * 1000 : null;\n }\n\n /**\n * Stops polling timers\n */\n stopPolling() {\n if (this.manifestPollTimer) {\n clearInterval(this.manifestPollTimer);\n this.manifestPollTimer = null;\n }\n\n if (this.trackingPollTimer) {\n clearInterval(this.trackingPollTimer);\n this.trackingPollTimer = null;\n }\n\n console.log(`[MT - ${getTimestamp()}] Polling stopped`);\n }\n\n /**\n * Cleanup when tracker is destroyed\n */\n dispose() {\n console.log(`[MT - ${getTimestamp()}] Disposing MediaTailorAdsTracker`);\n\n this.isDisposed = true;\n\n if (this.trackingAbortController) {\n console.log(`[MT - ${getTimestamp()}] Aborting in-flight tracking fetch`);\n this.trackingAbortController.abort();\n this.trackingAbortController = null;\n }\n\n if (this.manifestAbortController) {\n console.log(`[MT - ${getTimestamp()}] Aborting in-flight manifest fetch`);\n this.manifestAbortController.abort();\n this.manifestAbortController = null;\n }\n\n this.stopLivePolling();\n this.unregisterListeners();\n super.dispose && super.dispose();\n }\n}\n","/* global google */\nimport nrvideo from '@newrelic/video-core';\nimport VideojsAdsTracker from './videojs-ads';\n\nconst daiEvents = {\n // Stream Events\n DAI_STREAM_INITIALIZED: 'dai-stream-initialized',\n DAI_STREAM_LOADED: 'dai-stream-loaded',\n DAI_STREAM_ERROR: 'dai-stream-error',\n\n // Ad Events\n DAI_AD_BREAK_STARTED: 'dai-ad-break-started',\n DAI_AD_BREAK_ENDED: 'dai-ad-break-ended',\n DAI_AD_PERIOD_STARTED: 'dai-ad-period-started',\n DAI_AD_PERIOD_ENDED: 'dai-ad-period-ended',\n DAI_AD_STARTED: 'dai-ad-started',\n DAI_AD_FIRST_QUARTILE: 'dai-ad-first-quartile',\n DAI_AD_MIDPOINT: 'dai-ad-midpoint',\n DAI_AD_THIRD_QUARTILE: 'dai-ad-third-quartile',\n DAI_AD_COMPLETE: 'dai-ad-complete',\n DAI_AD_SKIPPED: 'dai-ad-skipped',\n DAI_AD_PAUSED: 'dai-ad-paused',\n DAI_AD_RESUMED: 'dai-ad-resumed',\n DAI_AD_CLICKED: 'dai-ad-clicked',\n DAI_AD_ERROR: 'dai-ad-error',\n\n // Cue Point Events\n DAI_CUEPOINTS_CHANGED: 'dai-cuepoints-changed',\n\n // Timed Metadata Events\n DAI_TIMED_METADATA: 'dai-timed-metadata',\n};\n\nexport default class DaiAdsTracker extends VideojsAdsTracker {\n static isUsing(player) {\n // Check for DAI plugin or imaDai method\n return (\n (player.imaDai && typeof player.imaDai === 'function') ||\n (player.dai && typeof player.dai.VERSION !== 'undefined') ||\n (player.ima && player.ima.dai) ||\n player.streamManager\n );\n }\n\n constructor(player) {\n super(player);\n this.streamManager = null;\n this.currentAdData = null;\n this.adBreakData = null;\n this.streamData = null;\n this.cuePoints = [];\n this.initialized = false;\n this.eventHandlers = null;\n }\n\n setStreamManager(streamManager) {\n this.streamManager = streamManager;\n this.setupStreamManagerListeners();\n this.initialized = true;\n nrvideo.Log.debug(\n 'DaiAdsTracker: StreamManager set and listeners registered'\n );\n }\n\n setupStreamManagerListeners() {\n if (!this.streamManager || !google?.ima?.dai?.api?.StreamEvent) {\n nrvideo.Log.warn('DaiAdsTracker: StreamManager or DAI API not available');\n return;\n }\n\n const StreamEvent = google.ima.dai.api.StreamEvent.Type;\n\n // Create the event handler mapping\n this.eventHandlers = {\n // Stream Events\n [StreamEvent.LOADED]: this.onStreamLoaded.bind(this),\n [StreamEvent.STREAM_INITIALIZED]: this.onStreamInitialized.bind(this),\n [StreamEvent.ERROR]: this.onStreamError.bind(this),\n\n // Ad Break Events\n [StreamEvent.AD_BREAK_STARTED]: this.onAdBreakStarted.bind(this),\n [StreamEvent.AD_BREAK_ENDED]: this.onAdBreakEnded.bind(this),\n\n // Ad Period Events\n [StreamEvent.AD_PERIOD_STARTED]: this.onAdPeriodStarted.bind(this),\n [StreamEvent.AD_PERIOD_ENDED]: this.onAdPeriodEnded.bind(this),\n\n // Individual Ad Events\n [StreamEvent.STARTED]: this.onAdStarted.bind(this),\n [StreamEvent.FIRST_QUARTILE]: this.onAdFirstQuartile.bind(this),\n [StreamEvent.MIDPOINT]: this.onAdMidpoint.bind(this),\n [StreamEvent.THIRD_QUARTILE]: this.onAdThirdQuartile.bind(this),\n [StreamEvent.COMPLETE]: this.onAdComplete.bind(this),\n [StreamEvent.SKIPPED]: this.onAdSkipped.bind(this),\n [StreamEvent.PAUSED]: this.onAdPaused.bind(this),\n [StreamEvent.RESUMED]: this.onAdResumed.bind(this),\n [StreamEvent.CLICK]: this.onAdClicked.bind(this),\n [StreamEvent.VIDEO_CLICKED]: this.onAdClicked.bind(this),\n\n // Cue Points and Metadata Events\n [StreamEvent.CUEPOINTS_CHANGED]: this.onCuePointsChanged.bind(this),\n [StreamEvent.TIMED_METADATA]: this.onTimedMetadata.bind(this),\n };\n\n // Register all event listeners using the mapping\n Object.entries(this.eventHandlers).forEach(([eventType, handler]) => {\n this.streamManager.addEventListener(eventType, handler);\n });\n\n nrvideo.Log.debug('DaiAdsTracker: StreamManager listeners registered');\n }\n\n registerListeners() {\n // Call parent to register basic videojs-ads events\n super.registerListeners();\n\n nrvideo.Log.debugCommonVideoEvents(this.player, [\n null,\n Object.values(daiEvents),\n ]);\n }\n\n unregisterListeners() {\n // Call parent cleanup\n super.unregisterListeners();\n\n // Clean up StreamManager listeners using the same mapping\n if (this.streamManager && this.eventHandlers) {\n Object.entries(this.eventHandlers).forEach(([eventType, handler]) => {\n this.streamManager.removeEventListener(eventType, handler);\n });\n }\n\n // Reset state\n this.streamManager = null;\n this.currentAdData = null;\n this.adBreakData = null;\n this.streamData = null;\n this.cuePoints = [];\n this.initialized = false;\n this.eventHandlers = null;\n }\n\n // Stream Event Handlers\n onStreamLoaded(event) {\n this.streamData = this.extractStreamData(event);\n nrvideo.Log.debug('DaiAdsTracker: Stream loaded', this.streamData);\n this.sendRequest();\n }\n\n onStreamInitialized(event) {\n nrvideo.Log.debug('DaiAdsTracker: Stream initialized');\n this.sendDownload({ state: 'stream-initialized' });\n }\n\n onStreamError(event) {\n const errorData = this.extractErrorData(event);\n nrvideo.Log.error('DaiAdsTracker: Stream error', errorData);\n this.sendError(errorData);\n }\n\n // Ad Break Event Handlers\n onAdBreakStarted(event) {\n this.adBreakData = this.extractAdBreakData(event);\n nrvideo.Log.debug('DaiAdsTracker: Ad break started', this.adBreakData);\n this.sendAdBreakStart(this.adBreakData);\n }\n\n onAdBreakEnded(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad break ended');\n this.sendAdBreakEnd();\n this.adBreakData = null;\n }\n\n // Ad Period Event Handlers (for bumpers, etc.)\n onAdPeriodStarted(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad period started');\n // Track as ad break start if no current break\n if (!this.adBreakData) {\n this.onAdBreakStarted(event);\n }\n }\n\n onAdPeriodEnded(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad period ended');\n // Don't end the break here as there might be more ads\n }\n\n // Individual Ad Event Handlers\n onAdStarted(event) {\n this.currentAdData = this.extractAdData(event);\n nrvideo.Log.debug('DaiAdsTracker: Ad started', this.currentAdData);\n this.sendStart();\n }\n\n onAdFirstQuartile(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad first quartile');\n this.sendAdQuartile({ quartile: 1 });\n }\n\n onAdMidpoint(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad midpoint');\n this.sendAdQuartile({ quartile: 2 });\n }\n\n onAdThirdQuartile(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad third quartile');\n this.sendAdQuartile({ quartile: 3 });\n }\n\n onAdComplete(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad complete');\n this.sendEnd();\n this.currentAdData = null;\n }\n\n onAdSkipped(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad skipped');\n this.sendEnd({ skipped: true });\n this.currentAdData = null;\n }\n\n onAdPaused(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad paused');\n this.sendPause();\n }\n\n onAdResumed(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad resumed');\n this.sendResume();\n }\n\n onAdClicked(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad clicked');\n this.sendAdClick({ url: this.getClickThroughUrl() });\n }\n\n // Cue Points Handler\n onCuePointsChanged(event) {\n this.cuePoints = this.extractCuePoints(event);\n nrvideo.Log.debug('DaiAdsTracker: Cue points changed', this.cuePoints);\n }\n\n // Timed Metadata Handler\n onTimedMetadata(event) {\n const metadata = this.extractTimedMetadata(event);\n nrvideo.Log.debug('DaiAdsTracker: Timed metadata', metadata);\n }\n\n // Data Extraction Methods\n extractStreamData(event) {\n try {\n const streamData = event.getStreamData();\n return {\n streamId: streamData?.streamId,\n url: streamData?.url,\n adTagParameters: streamData?.adTagParameters,\n streamType: this.getStreamType(),\n };\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract stream data', error);\n return {};\n }\n }\n\n extractAdBreakData(event) {\n try {\n const adBreakData = event.getAdBreak();\n return {\n adBreakId: adBreakData?.id,\n adBreakTitle: adBreakData?.title,\n adCount: adBreakData?.ads?.length || 0,\n position: this.getAdPosition(),\n };\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract ad break data', error);\n return {};\n }\n }\n\n extractAdData(event) {\n try {\n const ad = event.getAd();\n return {\n adId: ad?.getAdId(),\n creativeId: ad?.getCreativeId(),\n duration: ad?.getDuration(),\n title: ad?.getTitle(),\n description: ad?.getDescription(),\n advertiserName: ad?.getAdvertiserName(),\n clickThroughUrl: ad?.getClickThroughUrl(),\n dealId: ad?.getDealId(),\n wrapperAdIds: ad?.getWrapperAdIds(),\n position: this.getAdPosition(),\n };\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract ad data', error);\n return {};\n }\n }\n\n extractErrorData(event) {\n try {\n const error = event.getError();\n return {\n errorCode: error?.getErrorCode(),\n errorMessage: error?.getMessage(),\n innerError: error?.getInnerError(),\n };\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract error data', error);\n return { errorMessage: 'Unknown DAI error' };\n }\n }\n\n extractCuePoints(event) {\n try {\n return event.getCuepoints() || [];\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract cue points', error);\n return [];\n }\n }\n\n extractTimedMetadata(event) {\n try {\n return {\n type: event.getType(),\n data: event.getData(),\n };\n } catch (error) {\n nrvideo.Log.warn(\n 'DaiAdsTracker: Failed to extract timed metadata',\n error\n );\n return {};\n }\n }\n\n // Override parent methods for DAI-specific implementations\n getTrackerName() {\n return 'dai-ads';\n }\n\n getPlayerName() {\n return 'videojs-dai';\n }\n\n getPlayerVersion() {\n if (this.player.dai?.VERSION) {\n return this.player.dai.VERSION;\n }\n if (this.player.ima?.VERSION) {\n return `ima-dai: ${this.player.ima.VERSION}`;\n }\n return 'unknown';\n }\n\n getAdCuePoints() {\n return this.cuePoints;\n }\n\n getAdPosition() {\n if (!this.currentAdData && !this.adBreakData) return null;\n\n // Try to determine position from current playback time\n const currentTime = this.player.currentTime();\n const duration = this.player.duration();\n\n if (currentTime < 5) {\n return 'pre';\n } else if (duration && currentTime > duration - 10) {\n return 'post';\n } else {\n return 'mid';\n }\n }\n\n getDuration() {\n if (this.currentAdData?.duration !== undefined) {\n return this.currentAdData.duration * 1000; // Convert to milliseconds\n }\n return null;\n }\n\n getVideoId() {\n return this.currentAdData?.adId || null;\n }\n\n getAdCreativeId() {\n return this.currentAdData?.creativeId || null;\n }\n\n getTitle() {\n return this.currentAdData?.title || null;\n }\n\n getSrc() {\n return this.streamData?.url || null;\n }\n\n getPlayhead() {\n if (this.streamManager) {\n try {\n const streamTime = this.streamManager.getStreamTime();\n return streamTime * 1000; // Convert to milliseconds\n } catch (error) {\n // Fallback to player current time\n return this.player.currentTime() * 1000;\n }\n }\n return this.player.currentTime() * 1000;\n }\n\n getAdPartner() {\n return 'google-dai';\n }\n\n getClickThroughUrl() {\n return this.currentAdData?.clickThroughUrl || null;\n }\n\n getStreamType() {\n // Determine if this is VOD or Live\n if (this.streamData?.streamType) {\n return this.streamData.streamType;\n }\n // Try to infer from player\n const duration = this.player.duration();\n return duration === Infinity ? 'live' : 'vod';\n }\n\n // Additional helper methods\n isLiveStream() {\n return this.getStreamType() === 'live';\n }\n\n getCurrentAdBreak() {\n return this.adBreakData;\n }\n\n getCurrentAd() {\n return this.currentAdData;\n }\n\n getStreamData() {\n return this.streamData;\n }\n\n getBitrate() {\n const tech = this.getTech()\n if (tech && tech.tech && tech.tech.stats && tech.tech.stats.bandwidth) {\n return Math.round(tech.tech.stats.bandwidth);\n }\n return null;\n }\n\n getRenditionBitrate() {\n const tech = this.getTech();\n if (tech && tech.getRenditionBitrate) {\n const bitrate = tech.getRenditionBitrate();\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n return null;\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import VideojsTracker from './tracker';\nexport default VideojsTracker;"],"names":["root","factory","exports","module","define","amd","self","e","_videojsAds","require","__esModule","_defineProperties","r","t","length","o","enumerable","configurable","writable","Object","defineProperty","_toPropertyKey","key","i","_typeof","Symbol","toPrimitive","call","TypeError","String","_toPrimitive","_isNativeReflectConstruct","Boolean","prototype","valueOf","Reflect","construct","_getPrototypeOf","setPrototypeOf","getPrototypeOf","bind","__proto__","_setPrototypeOf","_VideojsAdsTracker","FreewheelAdsTracker","a","n","_classCallCheck","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","constructor","apply","_callSuper","arguments","create","value","_inherits","_createClass","this","player","FreeWheelPlugin","VERSION","ads","ad","currentTime","duration","id","provider","event","adInstance","getActiveCreativeRendition","getId","err","getPrimaryCreativeRenditionAsset","getUrl","getName","type","nrvideo","Constants","AdPositions","PRE","MID","POST","tv","freewheel","VideojsAdsTracker","_videoCore","_interopRequireDefault","BrightcoveImaAdsTracker","ima3","_this$player","adPlayer","Log","debugCommonVideoEvents","on","onStarted","onPaused","onResume","onComplete","onSkipped","onError","onClick","off","sendRequest","sendStart","sendPause","sendResume","sendEnd","skipped","sendError","sendClick","HlsJs","tech","vhs_","el","url","level","levels","currentLevel","name","bitrate","Math","round","width","height","getContentBitratePlayback","max","_toConsumableArray","map","l","stats","bandwidth","throughput","isUsing","ImaAdsTracker","google","ima","getAdsManager","getCuePoints","lastAdData","podInfo","undefined","podIndex","adId","creativeId","mediaUrl","title","manager","getDuration","getRemainingTime","playbackRate","adVideoElement","getAdVideoElement","webkitVideoDecodedByteCount","_lastAdWebkitBitrate","delta","seconds","getHeartbeat","renditionBitrate","AdEvent","Type","AD_ERROR","AdErrorEvent","addEventListener","ALL_ADS_COMPLETED","LINEAR_CHANGED","COMPLETE","USER_CLOSE","IMPRESSION","CONTENT_PAUSE_REQUESTED","CONTENT_RESUME_REQUESTED","SKIPPED","SKIPPABLE_STATE_CHANGED","LOADED","PAUSED","RESUMED","STARTED","AD_CAN_PLAY","AD_METADATA","EXPANDED_CHANGED","AD_BREAK_READY","LOG","CLICK","FIRST_QUARTILE","MIDPOINT","THIRD_QUARTILE","onLoaded","onStart","onResumed","onFirstQuartile","onMidpoint","onThirdQuartile","removeEventListener","onImpression","getAdData","adError","getError","errorCode","getErrorCode","errorMessage","getMessage","sendAdClick","sendAdQuartile","adQuartile","adsManager","_currentAd$getAdPodIn","currentAd","getCurrentAd","getAdId","getCreativeId","getMediaUrl","getTitle","getAdPodInfo","data","getVastMediaBitrate","controller","adUi","adContainerDiv","querySelector","_package","_contribHls","_hlsJs","_shaka","_ima","_brightcoveIma","_freewheel","_dai","_mediaTailor","_arrayLikeToArray","Array","_nrvideo$VideoTracker","VideojsTracker","options","_this","isContentEnd","imaAdCuePoints","daiInitialized","Core","addTracker","IWillNotUseThisInPlugins","ContribHlsTech","HlsJsTech","ShakaTech","getPlayerName","getPlayerVersion","pkg","version","state","snapshot","absoluteTime","mediainfo","_this$player2","_this$player3","language","getTech","getSrc","currentSrc","_this$player4","_this$player5","videojs","muted","_tech$vhs","vhs","playlists","media","activePlaylist","attributes","BANDWIDTH","techWrapper","getBitrate","getRenditionName","_tech$vhs2","allRenditions","master","maxBitrate","isArray","_arrayWithoutHoles","iterator","from","_iterableToArray","toString","slice","test","_unsupportedIterableToArray","_nonIterableSpread","p","getManifestBitrate","_tech$vhs3","getSegmentDownloadBitrate","_tech$vhs4","getNetworkDownloadBitrate","getRenditionHeight","videoHeight","getRenditionWidth","videoWidth","autoplay","isFullscreen","preload","onDownload","onAdsready","onAdStart","onAdEnd","onPlay","onPause","onPlaying","onAbort","onEnded","onDispose","onSeeking","onSeeked","onWaiting","onTimeupdate","OnAdsAllpodsCompleted","onStreamManager","sendDownload","adsTracker","MediaTailorAdsTracker","console","log","setAdsTracker","setIsAd","StreamManager","daiTracker","DaiAdsTracker","setStreamManager","_this$player6","currentAdPlaying","FreewheelAdsCompleted","isAd","isAdsTrackerActive","ended","sendBufferEnd","includes","sendSeekStart","sendSeekEnd","error","code","message","sendBufferStart","getPlayhead","VideoTracker","VOD","LIVE","HLS","DASH","PRE_ROLL","MID_ROLL","POST_ROLL","MANIFEST_CUE","VHS_DISCONTINUITY","TRACKING_API","MANIFEST_AND_TRACKING","DASH_EMSG","DASH_EVENT_STREAM","Q1","Q2","Q3","shakaPlayer","getManifestUri","getStats","streamBandwidth","tracks","getVariantTracks","videoBandwidth","audioBandwidth","track","active","estimatedBandwidth","NAME","RESOLUTION","_this$tech$stats","onAdrequest","onAdload","onAdstart","onAdend","onAdskip","onAdserror","onAdsClick","onPodStart","onPodEnd","onAdspause","onAdsplay","sendAdBreakStart","sendAdBreakEnd","quartile","d","videoAnalyticsHarvester","h","s","isInitialized","harvestScheduler","eventBuffer","initialize","A","warn","startScheduler","notice","addEvent","actionName","Events","QOE_AGGREGATE","viewId","addOrReplaceByActionNameAndViewId","addOrReplaceByActionName","add","setHarvestInterval","updateHarvestInterval","forceNextQoeCycle","setBeforeDrainCallback","beforeDrainCallback","refreshQoeKpis","findByActionNameAndViewId","findByActionName","QOE_KPI_KEYS","reset","startTime","stopTime","accumulator","offset","getDeltaTime","Date","getTime","start","stop","clone","COLLECTOR","US","EU","Staging","GOV","VALID_EVENT_TYPES","MAX_PAYLOAD_SIZE","MAX_BEACON_SIZE","MAX_EVENTS_PER_BATCH","INTERVAL","QOE_AGGREGATE_KEYS","_listeners","push","indexOf","splice","emit","forEach","eventType","target","buffer","maxPayloadSize","maxEventsPerBatch","currentPayloadSize","totalEvents","smartHarvestPayloadThreshold","floor","overflowPayloadThreshold","smartHarvestEventThreshold","overflowEventThreshold","onSmartHarvestTrigger","findIndex","find","makeRoom","checkSmartHarvestTrigger","setSmartHarvestCallback","drain","isEmpty","size","clear","shift","retryQueueHandler","u","httpClient","X","fallBackUrl","retryCount","triggerSmartHarvest","isStarted","currentTimerId","harvestCycle","isHarvesting","qoeCycleCount","_lastSentQoeKpis","setupPageLifecycleHandlers","eventBufferSize","scheduleNextHarvest","stopScheduler","clearTimeout","threshold","triggerHarvest","setTimeout","onHarvestInterval","getQueueSize","success","reason","drainEvents","isFinalHarvest","trimEventsToFit","sendChunk","totalChunks","results","handleHarvestFailure","consecutiveFailures","ins","unshift","originalCount","trimmedCount","finalSize","maxSize","addFailedEvents","window","NRVIDEO","config","qoeIntervalFactor","_qoeKpisUnchanged","_saveQoeKpis","c","getRetryEventsToFit","c$","payload","body","isLastChunk","Promise","send","retry","handleRequestFailure","status","chunk","eventCount","info","region","isNaN","force","document","hidden","Levels","ERROR","WARNING","NOTICE","debug","DEBUG","concat","addEventHandler","prefix","includeTime","getDate","getMinutes","getSeconds","getMilliseconds","SILENT","colorful","documentMode","cast","ALL","location","search","exec","Error","callback","executeRequest","now","JSON","stringify","obfuscate","reduce","regex","RegExp","flags","source","replace","replacement","navigator","sendBeacon","sendWithBeacon","handleRequestComplete","fetchWithTimeout","method","headers","keepalive","ok","statusText","Sc","AbortController","abort","fetch","signal","retryQueue","maxQueueSize","maxQueueSizeBytes","queueSizeBefore","evictOldestEvent","discardEvent","super","customData","heartbeat","parentTracker","_trackerReadyChrono","_actionTable","ACTION_TABLE","_actionAdTable","ACTION_AD_TABLE","setOptions","dispose","unregisterListeners","registerListeners","_isAd","startHeartbeat","_heartbeatInterval","setInterval","sendHeartbeat","stopHeartbeat","clearInterval","sendVideoAction","HEARTBEAT","getAttributes","trackerName","getTrackerName","trackerVersion","getTrackerVersion","coreVersion","rE","timeSinceTrackerReady","isBackgroundEvent","sendVideoAdAction","sendVideoErrorAction","sendVideoCustomAction","z8","beacon","licenseKey","applicationID","href","ArrayBuffer","byteLength","Blob","FormData","WeakSet","has","get","hasOwnProperty","toStringTag","appName","qoe","timestamp","timeSinceLoad","performance","g","m","qoeAggregateVersion","f","qoeAggregate","setConfiguration","validateRequiredFields","validateConfigFields","initializeGlobalConfig","values","flatMap","keys","join","filterObfuscateRules","filter","sanitizeQoeIntervalFactor","Number","isInteger","trackerInit","removeTracker","getTrackers","forceHarvest","E","_createdAt","_hb","_acc","_bufferAcc","_viewSession","_viewCount","numberOfErrors","numberOfAds","numberOfVideos","totalPlaytime","weightedAverageBitrate","totalAdPlaytime","isAdBreak","initialBufferingHappened","startupTime","peakBitrate","_lastBitrate","_lastBitrateChangeTimestamp","partialAverageBitrate","_totalBitrateDuration","hadStartupError","hadPlaybackError","totalRebufferingTime","resetFlags","resetChronos","isPlayerReady","isRequested","isPaused","isSeeking","isBuffering","isPlaying","timeSinceRequested","timeSinceStarted","timeSincePaused","timeSinceSeekBegin","timeSinceBufferBegin","timeSinceAdBreakStart","timeSinceLastDownload","timeSinceLastHeartbeat","timeSinceLastRenditionChange","timeSinceLastAdQuartile","timeSinceLastAd","timeSinceLastError","timeSinceLastAdError","timeSinceResumed","timeSinceSeekEnd","playtimeSinceLastEvent","customTimeSinceAttributes","elapsedTime","bufferElapsedTime","_totalAdPlaytime","setTimeSinceAttribute","removeTimeSinceAttribute","getViewSession","random","substring","getViewId","getStateAttributes","timeSinceAdRequested","timeSinceLastAdHeartbeat","timeSinceAdStarted","timeSinceAdPaused","timeSinceAdBufferBegin","timeSinceAdSeekBegin","timeSinceAdBreakBegin","entries","getQoeAttributes","rebufferingRatio","averageBitrate","weightedBitrate","calculateBufferType","goViewCountUp","goPlayerReady","goRequest","goStart","goEnd","goPause","goResume","goBufferStart","goBufferEnd","goSeekStart","goSeekEnd","goAdBreakStart","goAdBreakEnd","goDownload","goHeartbeat","goRenditionChange","goAdQuartile","goError","isError","goLastAd","trackContentBitrateState","resetViewIdTrackedState","clearTotalAdsTime","totalAdTime","startAdsTime","stopAdsTime","setStartupTime","T","v","_lastBufferType","_userId","setPlayer","tag","setUserId","getElementById","disposeAdsTracker","S","getVideoId","isLive","getWebkitBitrate","_lastWebkitBitrate","getRenditionBitrate","getRenditionShift","_lastAdRendition","_lastRendition","getLanguage","getPlayrate","isMuted","getCdn","getFps","isAutoplayed","getPreload","getAdQuartile","getAdPosition","getAdPartner","getAdCreativeId","getInstrumentationProvider","getInstrumentationName","getInstrumentationVersion","viewSession","playerName","playerVersion","src","pageUrl","adTitle","adSrc","adCdn","adBitrate","adRenditionName","adRenditionHeight","adRenditionWidth","adDuration","adPlayhead","adLanguage","adIsMuted","adFps","adPosition","adCreativeId","adPartner","contentId","contentTitle","contentSrc","contentCdn","contentPlayhead","contentIsLive","contentBitrate","contentManifestBitrate","contentSegmentDownloadBitrate","contentNetworkDownloadBitrate","contentRenditionName","contentRenditionHeight","contentRenditionWidth","contentDuration","contentLanguage","contentPlayrate","contentIsFullscreen","contentIsMuted","contentIsAutoplayed","contentPreload","contentFps","addQoeAttributes","sendCustom","sendPlayerReady","PLAYER_READY","AD_REQUEST","CONTENT_REQUEST","AD_START","CONTENT_START","AD_END","CONTENT_END","AD_PAUSE","CONTENT_PAUSE","AD_RESUME","CONTENT_RESUME","AD_BUFFER_START","CONTENT_BUFFER_START","buildBufferAttributes","bufferType","AD_BUFFER_END","CONTENT_BUFFER_END","isInitialBuffering","AD_SEEK_START","CONTENT_SEEK_START","AD_SEEK_END","CONTENT_SEEK_END","DOWNLOAD","CONTENT_ERROR","sendRenditionChanged","AD_RENDITION_CHANGE","CONTENT_RENDITION_CHANGE","adjustElapsedTimeForPause","AD_HEARTBEAT","CONTENT_HEARTBEAT","AD_BREAK_START","AD_BREAK_END","AD_QUARTILE","AD_CLICK","y","_","R","B","b","Chrono","Emitter","Tracker","VideoTrackerState","NrVideoEventAggregator","RetryQueueHandler","OptimizedHttpClient","HarvestScheduler","recordEvent","manifestUrl","match","REGEX_SESSION_ID","sessionId","REGEX_TRACKING_PATH_SEGMENT","REGEX_MANIFEST_FILE_SUFFIX","playlist","segments","discontinuityStarts","adBreaks","currentAdBreak","currentPod","segment","index","isMTSegment","isMediaTailorSegment","hasDiscontinuity","endTime","MIN_AD_DURATION","pods","confirmedByTracking","hasFiredStart","hasFiredEnd","hasFiredAdStart","hasFiredQ1","hasFiredQ2","hasFiredQ3","segmentDuration","HLS_MANIFEST_EXTENSION","MANIFEST_TYPE","DASH_MANIFEST_EXTENSION","Infinity","STREAM_TYPE","adBreakIndex","totalAdBreaks","streamType","AD_POSITION","adSchedule","trackingAvails","scheduleMap","Map","set","newAds","avail","firstAd","startTimeInSeconds","existingAd","availId","trackingAd","adIndex","trackingStartTime","trackingDuration","durationInSeconds","manifestText","REGEX_DASH_MINIMUM_UPDATE_PERIOD","parseIsoDuration","REGEX_HLS_TARGET_DURATION","parseInt","masterText","baseUrl","_step2","_iterator2","_createForOfIteratorHelper","split","done","line","startsWith","HLS_TAG_PREFIX","URL","trim","_x4","_fetchDashManifest","_x2","_fetchHlsMasterManifest","_x3","_fetchHlsMediaPlaylist","adBreak","pod","abs","AD_TIMING_TOLERANCE","progress","firedQuartiles","quartiles","calculateQuartiles","toFire","q1","q2","q3","toISOString","_x5","_getTrackingMetadata","existingSchedule","merged","newAd","assign","finalSchedule","sort","xmlText","xml","DOMParser","parseFromString","parserError","textContent","periods","querySelectorAll","period","baseUrlEl","MT_SEGMENT_PATTERN","periodId","getAttribute","AD_SOURCE","eventStreams","DASH_SCTE35_EVENT_STREAM_SELECTOR","stream","timescale","parseFloat","presentationTime","eventId","SCTE35_SCHEME_MARKER","durationSeconds","_step","currentPodStartTime","lastMapUrl","adPods","isInAdBreak","_iterator","REGEX_DISCONTINUITY","mapMatch","REGEX_MAP","mapUrl","podDuration","MT_HLS_CUE_OUT_TAG","durationMatch","REGEX_CUE_OUT","MT_HLS_CUE_IN_TAG","actualDuration","HLS_SEGMENT_DURATION_TAG","_mtConstants","_regeneratorRuntime","asyncIterator","Generator","arg","delegate","sent","_sent","dispatchException","abrupt","Context","wrap","GeneratorFunction","GeneratorFunctionPrototype","x","_invoke","AsyncIterator","resolve","__await","then","next","w","tryEntries","displayName","isGeneratorFunction","mark","awrap","async","pop","prev","charAt","rval","complete","finish","delegateYield","asyncGeneratorStep","_asyncToGenerator","_next","_throw","_n","F","uri","QUARTILES","fetchTextOrThrow","_x","_fetchTextOrThrow","_callee","response","_context","credentials","text","_callee2","lines","mediaPlaylistUrl","_iterator3","_step3","_context2","t0","_callee3","playlistUrl","_context3","_callee4","_context4","durationStr","REGEX_ISO_8601_DURATION","_callee5","trackingEndpointUrl","timeout","externalSignal","timeoutId","abortHandler","_args5","_context5","json","_mt","_superPropGet","_get","_superPropBase","getOwnPropertyDescriptor","manifestFormat","playbackManifestUrl","currentAdPod","hasEndedContent","isDisposed","trackingAbortController","manifestAbortController","isFetchingTracking","isFetchingManifest","hasAttemptedTrackingFetch","trackingFetchRetries","maxTrackingRetries","manifestPollTimer","trackingPollTimer","liveRefreshIntervalSeconds","lastMediaPlaylistText","getTimestamp","endpoint","trackingAPITimeout","TRACKING_API_TIMEOUT_MS","detectManifestFormatFromUrl","toUpperCase","one","detectPlaybackStreamType","initializeTracking","buildTrackingEndpointUrl","setupVODTracking","setupLiveTracking","onTimeUpdate","stopLivePolling","hookPlayerManifest","_this2","pollingInterval","getLiveRefreshIntervalMs","pollManifestForNewAds","getAndProcessTrackingMetadata","DEFAULT_LIVE_POLL_INTERVAL_MS","_this3","newInterval","getManifestDirectly","hookHLSViaVHS","hookHLSViaNative","hookHLSViaContribHls","hookDASHViaShaka","hookDASHViaDashJs","_this4","currentPlaylist","parseVhsPlaylistForAdBreaks","el_","canPlayType","HLS_MIME_TYPE","_this5","hls","_this6","handleDASHEmsgEvent","_this7","dash","handleDASHEventStream","_getManifestDirectly","fetchAndParseHlsManifest","fetchAndParseDashManifest","_fetchAndParseHlsManifest","_yield$fetchHlsMaster","mediaText","hlsTargetDurationSeconds","fetchHlsMasterManifest","fetchHlsMediaPlaylist","extractHlsTargetDurationSeconds","updateLiveRefreshIntervalFromManifest","parseHlsManifestForAdBreaks","mergeNewAds","_fetchAndParseDashManifest","dashMinimumUpdatePeriodSeconds","fetchDashManifest","extractDashMinimumUpdatePeriodSeconds","parseDashManifestForAdBreaks","emsgData","detail","schemeIdUri","presentationTimeDelta","eventDuration","messageData","eventData","_playlist$segments","targetDuration","detectAdBreaksFromVhsPlaylist","sum","ab","_pollManifestForNewAds","mergeAdSchedules","intervalSeconds","restartLivePollingTimers","_getAndProcessTrackingMetadata","getTrackingMetadata","avails","enrichWithTrackingMetadata","_this$adSchedule","enrichAdScheduleWithTrackingMetadata","podCount","adObject","_this8","getQuartilesToFire","_ref","activeAdBreak","findActiveAdBreak","toFixed","_activeAdBreak$pods","determineAdPosition","position","breakIndex","totalBreaks","activePod","findActivePod","podProgress","trackQuartiles","adProgress","sendContentEnd","eventName","sendMethod","handleAdEvent","_this$currentAdBreak2","_this$currentAdBreak3","_this$currentAdBreak","_this$currentAdBreak5","_this$currentAdBreak6","_this$currentAdBreak4","MEDIATAILOR_HOST_MARKER","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_defineProperty","daiEvents","DAI_STREAM_INITIALIZED","DAI_STREAM_LOADED","DAI_STREAM_ERROR","DAI_AD_BREAK_STARTED","DAI_AD_BREAK_ENDED","DAI_AD_PERIOD_STARTED","DAI_AD_PERIOD_ENDED","DAI_AD_STARTED","DAI_AD_FIRST_QUARTILE","DAI_AD_MIDPOINT","DAI_AD_THIRD_QUARTILE","DAI_AD_COMPLETE","DAI_AD_SKIPPED","DAI_AD_PAUSED","DAI_AD_RESUMED","DAI_AD_CLICKED","DAI_AD_ERROR","DAI_CUEPOINTS_CHANGED","DAI_TIMED_METADATA","streamManager","currentAdData","adBreakData","streamData","cuePoints","initialized","eventHandlers","imaDai","dai","setupStreamManagerListeners","_google","_this$eventHandlers","api","StreamEvent","onStreamLoaded","STREAM_INITIALIZED","onStreamInitialized","onStreamError","AD_BREAK_STARTED","onAdBreakStarted","AD_BREAK_ENDED","onAdBreakEnded","AD_PERIOD_STARTED","onAdPeriodStarted","AD_PERIOD_ENDED","onAdPeriodEnded","onAdStarted","onAdFirstQuartile","onAdMidpoint","onAdThirdQuartile","onAdComplete","onAdSkipped","onAdPaused","onAdResumed","onAdClicked","VIDEO_CLICKED","CUEPOINTS_CHANGED","onCuePointsChanged","TIMED_METADATA","onTimedMetadata","_ref2","handler","_ref3","_ref4","extractStreamData","errorData","extractErrorData","extractAdBreakData","extractAdData","getClickThroughUrl","extractCuePoints","metadata","extractTimedMetadata","getStreamData","streamId","adTagParameters","getStreamType","_adBreakData$ads","getAdBreak","adBreakId","adBreakTitle","adCount","getAd","description","getDescription","advertiserName","getAdvertiserName","clickThroughUrl","dealId","getDealId","wrapperAdIds","getWrapperAdIds","innerError","getInnerError","getCuepoints","getType","getData","_this$player$dai","_this$player$ima","_this$currentAdData","_this$currentAdData2","_this$currentAdData3","_this$currentAdData4","_this$streamData","getStreamTime","_this$currentAdData5","_this$streamData2","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","obj","prop","_tracker"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"newrelic-video-videojs.min.js","mappings":"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","sources":["webpack://VideojsTracker/webpack/universalModuleDefinition","webpack://VideojsTracker/./node_modules/@newrelic/video-core/dist/esm/index.js","webpack://VideojsTracker/./src/ads/brightcove-ima.js","webpack://VideojsTracker/./src/ads/dai.js","webpack://VideojsTracker/./src/ads/freewheel.js","webpack://VideojsTracker/./src/ads/ima.js","webpack://VideojsTracker/./src/ads/media-tailor.js","webpack://VideojsTracker/./src/ads/utils/mt-constants.js","webpack://VideojsTracker/./src/ads/utils/mt.js","webpack://VideojsTracker/./src/ads/videojs-ads.js","webpack://VideojsTracker/./src/techs/contrib-hls.js","webpack://VideojsTracker/./src/techs/hls-js.js","webpack://VideojsTracker/./src/techs/shaka.js","webpack://VideojsTracker/./src/tracker.js","webpack://VideojsTracker/webpack/bootstrap","webpack://VideojsTracker/webpack/runtime/define property getters","webpack://VideojsTracker/webpack/runtime/hasOwnProperty shorthand","webpack://VideojsTracker/webpack/runtime/make namespace object","webpack://VideojsTracker/./src/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VideojsTracker\"] = factory();\n\telse\n\t\troot[\"VideojsTracker\"] = factory();\n})(self, () => {\nreturn ","/*! For license information please see index.js.LICENSE.txt */\nvar t={487(t,e,i){i.d(e,{videoAnalyticsHarvester:()=>h});var s=i(374),r=i(431),a=i(51),n=i(144),o=i(302);const h=new class{constructor(){this.isInitialized=!1,this.harvestScheduler=null,this.eventBuffer=null}initialize(){if(this.isInitialized)n.A.warn(\"Video analytics agent already initialized\");else try{this.eventBuffer=new r.t,this.harvestScheduler=new s.n(this.eventBuffer),this.harvestScheduler.startScheduler(),this.isInitialized=!0,n.A.notice(\"Video analytics agent initialized successfully\")}catch(t){n.A.error(\"Failed to initialize video analytics agent:\",t.message)}}addEvent(t){this.isInitialized||(n.A.warn(\"Video analytics agent not initialized, initializing now\"),this.initialize());try{return t.actionName&&t.actionName===o.A.Events.QOE_AGGREGATE?t.viewId?this.eventBuffer.addOrReplaceByActionNameAndViewId(o.A.Events.QOE_AGGREGATE,t.viewId,t):this.eventBuffer.addOrReplaceByActionName(o.A.Events.QOE_AGGREGATE,t):this.eventBuffer.add(t)}catch(t){return n.A.error(\"Failed to add event to harvesting system:\",t.message),!1}}setHarvestInterval(t){this.isInitialized||this.initialize(),this.harvestScheduler.updateHarvestInterval(t)}forceNextQoeCycle(){this.harvestScheduler&&(this.harvestScheduler.forceNextQoeCycle=!0)}setBeforeDrainCallback(t){this.harvestScheduler&&(this.harvestScheduler.beforeDrainCallback=t)}refreshQoeKpis(t,e){if(!this.eventBuffer||!t)return;const i=e?this.eventBuffer.findByActionNameAndViewId(o.A.Events.QOE_AGGREGATE,e):this.eventBuffer.findByActionName(o.A.Events.QOE_AGGREGATE);if(i){const s={...i};for(const e of a.A.QOE_KPI_KEYS)e in t&&(s[e]=t[e]);e?this.eventBuffer.addOrReplaceByActionNameAndViewId(o.A.Events.QOE_AGGREGATE,e,s):this.eventBuffer.addOrReplaceByActionName(o.A.Events.QOE_AGGREGATE,s)}}}},455(t,e,i){i.d(e,{A:()=>r});class s{constructor(){this.reset()}reset(){this.startTime=0,this.stopTime=0,this.accumulator=0,this.offset=0}getDeltaTime(){return this.startTime?this.offset+((new Date).getTime()-this.startTime):null}start(){this.startTime=(new Date).getTime(),this.stopTime=0}stop(){return this.stopTime=(new Date).getTime(),this.startTime<this.stopTime&&(this.accumulator+=this.stopTime-this.startTime),this.getDeltaTime()}getDuration(){return this.stopTime?this.accumulator+this.offset:this.accumulator+(this.getDeltaTime()??0)}clone(){var t=new s;return t.startTime=this.startTime,t.stopTime=this.stopTime,t.offset=this.offset,t.accumulator=this.accumulator,t}}const r=s},51(t,e,i){i.d(e,{A:()=>r});class s{}s.AdPositions={PRE:\"pre\",MID:\"mid\",POST:\"post\"},s.COLLECTOR={US:[\"bam.nr-data.net\",\"bam-cell.nr-data.net\"],EU:\"bam.eu01.nr-data.net\",Staging:\"staging-bam-cell.nr-data.net\",GOV:\"gov-bam.nr-data.net\"},s.VALID_EVENT_TYPES=[\"VideoAction\",\"VideoAdAction\",\"VideoErrorAction\",\"VideoCustomAction\"],s.MAX_PAYLOAD_SIZE=1048576,s.MAX_BEACON_SIZE=61440,s.MAX_EVENTS_PER_BATCH=1e3,s.INTERVAL=1e4,s.QOE_KPI_KEYS=[\"startupTime\",\"peakBitrate\",\"averageBitrate\",\"totalPlaytime\",\"totalRebufferingTime\",\"rebufferingRatio\",\"hadStartupError\",\"hadPlaybackError\",\"numberOfErrors\"],s.QOE_AGGREGATE_KEYS=[\"coreVersion\",\"instrumentation.name\",\"instrumentation.provider\",\"instrumentation.version\",\"isBackgroundEvent\",\"playerName\",\"playerVersion\",\"src\",\"viewId\",\"viewSession\",\"contentIsAutoplayed\",\"contentIsMuted\",\"contentRenditionHeight\",\"contentRenditionWidth\",\"contentSrc\",\"numberOfVideos\",\"pageUrl\",\"trackerName\",\"trackerVersion\",\"contentDuration\",\"contentPlayrate\",\"contentPlayhead\",\"contentPreload\",\"elapsedTime\",\"contentTitle\",\"contentId\",\"contentIsLive\",\"deviceType\",\"deviceGroup\",\"deviceManufacturer\",\"deviceModel\",\"deviceName\",\"deviceSize\",\"deviceUuid\",\"contentRenditionName\",\"contentIsFullscreen\",\"contentCdn\",\"contentFps\",\"asnOrganization\",\"asnLongitude\",\"asnLatitude\",\"asn\",\"timeSinceRequested\",\"timeSinceStarted\"];const r=s},568(t,e,i){i.d(e,{A:()=>s});const s=class{on(t,e){if(this._listeners=this._listeners||{},\"function\"==typeof e)return this._listeners[t]=this._listeners[t]||[],this._listeners[t].push(e),this}off(t,e){if(this._listeners=this._listeners||{},this._listeners[t]){var i=this._listeners[t].indexOf(e);-1!==i&&this._listeners[t].splice(i,1)}return this}emit(t,e,i){return this._listeners=this._listeners||{},i=i||{},Array.isArray(this._listeners[e])&&this._listeners[e].forEach(s=>{s.call(this,{eventType:t,type:e,data:i,target:this})}),Array.isArray(this._listeners[\"*\"])&&this._listeners[\"*\"].forEach(s=>{s.call(this,{eventType:t,type:e,data:i,target:this})}),this}}},431(t,e,i){i.d(e,{t:()=>h});var s=i(144),r=i(51),a=i(347);const{MAX_PAYLOAD_SIZE:n,MAX_EVENTS_PER_BATCH:o}=r.A;class h{constructor(){this.buffer=[],this.maxPayloadSize=n,this.maxEventsPerBatch=o,this.currentPayloadSize=0,this.totalEvents=0,this.smartHarvestPayloadThreshold=Math.floor(.6*this.maxPayloadSize),this.overflowPayloadThreshold=Math.floor(.9*this.maxPayloadSize),this.smartHarvestEventThreshold=Math.floor(.6*this.maxEventsPerBatch),this.overflowEventThreshold=Math.floor(.9*this.maxEventsPerBatch),this.onSmartHarvestTrigger=null}addOrReplaceByActionName(t,e){const i=this.buffer.findIndex(e=>e.actionName===t);try{return-1===i?this.add(e):this.add(e,i),!0}catch(t){return s.A.error(\"Failed to set or replace the event to buffer:\",t.message),!1}}addOrReplaceByActionNameAndViewId(t,e,i){const r=this.buffer.findIndex(i=>i.actionName===t&&i.viewId===e);try{return-1===r?this.add(i):this.add(i,r),!0}catch(t){return s.A.error(\"Failed to set or replace the event to buffer:\",t.message),!1}}findByActionNameAndViewId(t,e){return this.buffer.find(i=>i.actionName===t&&i.viewId===e)||null}findByActionName(t){return this.buffer.find(e=>e.actionName===t)||null}add(t,e){try{const i=(0,a.Q3)(t),s=this.currentPayloadSize+i>=this.maxPayloadSize,r=this.totalEvents+1>=this.maxEventsPerBatch;if((s||r)&&this.makeRoom(i),null!=e&&e>-1){const s=(0,a.Q3)(this.buffer[e]);this.buffer[e]=t,this.currentPayloadSize+=i-s}else this.buffer.push(t),this.totalEvents++,this.currentPayloadSize+=i;return this.checkSmartHarvestTrigger(),!0}catch(t){return s.A.error(\"Failed to add event to buffer:\",t.message),!1}}checkSmartHarvestTrigger(){const t=this.currentPayloadSize/this.maxPayloadSize,e=this.totalEvents/this.maxEventsPerBatch,i=this.currentPayloadSize>=this.overflowPayloadThreshold,r=this.totalEvents>=this.overflowEventThreshold;if(i||r){const r=i?`payload ${this.currentPayloadSize}/${this.maxPayloadSize} bytes (${Math.round(100*t)}%)`:`events ${this.totalEvents}/${this.maxEventsPerBatch} (${Math.round(100*e)}%)`;s.A.warn(`OVERFLOW PREVENTION: ${r} - Emergency harvest triggered`),this.onSmartHarvestTrigger&&\"function\"==typeof this.onSmartHarvestTrigger&&this.onSmartHarvestTrigger(\"overflow\",90)}else{const t=this.currentPayloadSize>=this.smartHarvestPayloadThreshold,e=this.totalEvents>=this.smartHarvestEventThreshold;(t||e)&&this.onSmartHarvestTrigger&&\"function\"==typeof this.onSmartHarvestTrigger&&this.onSmartHarvestTrigger(\"smart\",60)}}setSmartHarvestCallback(t){this.onSmartHarvestTrigger=t}drain(){try{const t=this.buffer.splice(0);return this.totalEvents=0,this.currentPayloadSize=0,t}catch(t){return s.A.error(\"Failed to drain events from buffer:\",t.message),[]}}isEmpty(){return 0===this.totalEvents}size(){return this.totalEvents}clear(){this.buffer=[],this.totalEvents=0}makeRoom(t){if(t>this.maxPayloadSize)s.A.error(\"Event dropped: Event size exceeds maximum payload size.\");else for(;(this.totalEvents>=this.maxEventsPerBatch||this.currentPayloadSize+t>=this.maxPayloadSize)&&this.buffer.length>0;){const t=this.buffer.shift(),e=(0,a.Q3)(t);this.totalEvents--,this.currentPayloadSize-=e,s.A.warn(\"Event buffer full, oldest event removed.\")}}}},374(t,e,i){i.d(e,{n:()=>l});var s=i(431),r=i(413),a=i(481),n=i(347),o=i(51),h=i(302),d=i(144);class l{constructor(t){this.eventBuffer=t,this.retryQueueHandler=new r.u,this.httpClient=new a.X,this.fallBackUrl=\"\",this.retryCount=0,this.eventBuffer instanceof s.t&&this.eventBuffer.setSmartHarvestCallback((t,e)=>this.triggerSmartHarvest(t,e)),this.isStarted=!1,this.currentTimerId=null,this.harvestCycle=o.A.INTERVAL,this.isHarvesting=!1,this.qoeCycleCount=1,this.forceNextQoeCycle=!1,this.beforeDrainCallback=null,this._lastSentQoeKpis={},this.setupPageLifecycleHandlers()}startScheduler(){this.isStarted?d.A.warn(\"Harvest scheduler is already started\"):(this.isStarted=!0,d.A.notice(\"Starting harvest scheduler\",{harvestCycle:this.harvestCycle,eventBufferSize:this.eventBuffer?this.eventBuffer.size():0}),this.scheduleNextHarvest())}stopScheduler(){this.isStarted&&(this.isStarted=!1,this.currentTimerId&&(clearTimeout(this.currentTimerId),this.currentTimerId=null),d.A.notice(\"Harvest scheduler stopped\"))}async triggerSmartHarvest(t,e){if(d.A.notice(`${t} harvest triggered at ${e}% threshold`,{type:t,threshold:e}),this.eventBuffer&&!this.eventBuffer.isEmpty()){this.currentTimerId&&(clearTimeout(this.currentTimerId),this.currentTimerId=null);try{await this.triggerHarvest({})}catch(e){d.A.error(`${t} harvest failed:`,e.message)}finally{this.isStarted&&this.scheduleNextHarvest()}}}scheduleNextHarvest(){if(!this.isStarted)return;const t=this.harvestCycle;this.currentTimerId=setTimeout(()=>this.onHarvestInterval(),t)}async onHarvestInterval(){try{const t=this.eventBuffer&&!this.eventBuffer.isEmpty(),e=this.retryQueueHandler&&this.retryQueueHandler.getQueueSize()>0;if(!t&&!e)return;await this.triggerHarvest({})}catch(t){d.A.error(\"Error during scheduled harvest:\",t.message)}finally{this.scheduleNextHarvest()}}async triggerHarvest(t={}){if(this.isHarvesting)return{success:!1,reason:\"harvest_in_progress\"};this.isHarvesting=!0;try{let e=this.drainEvents(t);if(t.isFinalHarvest){const t=o.A.MAX_BEACON_SIZE;(0,n.Q3)(e)>t&&(e=this.trimEventsToFit(e,t))}const i=await this.sendChunk(e,t,!0);return{success:i.success,totalChunks:1,results:[i]}}catch(t){return d.A.error(\"Harvest cycle failed:\",t.message),this.handleHarvestFailure(t),{success:!1,error:t.message,consecutiveFailures:this.consecutiveFailures}}finally{this.isHarvesting=!1}}trimEventsToFit(t,e){if(0===t.length)return t;const i=[];let s=0;for(let r=t.length-1;r>=0;r--){const a=t[r],o=(0,n.Q3)({ins:[a,...i]});o>e||(i.unshift(a),s=o)}const r=t.length-i.length;if(r>0){const a=t.slice(0,r);d.A.warn(`Discarded ${r} events to fit beacon size limit`,{originalCount:t.length,trimmedCount:i.length,finalSize:s,maxSize:e}),this.retryQueueHandler&&this.retryQueueHandler.addFailedEvents(a)}return i}drainEvents(t={}){const e=window.NRVIDEO?.config?.qoeIntervalFactor??1,i=!!t.isFinalHarvest||this.forceNextQoeCycle,s=(this.qoeCycleCount-1)%e==0||i;if(this.forceNextQoeCycle&&(this.forceNextQoeCycle=!1),this.beforeDrainCallback&&\"function\"==typeof this.beforeDrainCallback)try{this.beforeDrainCallback()}catch(t){d.A.error(\"Before drain callback failed:\",t.message)}const r=this.eventBuffer.drain();let a;if(s)a=r;else{a=[];for(const t of r)t.actionName===h.A.Events.QOE_AGGREGATE?this.eventBuffer.add(t):a.push(t)}this.qoeCycleCount++;for(let t=a.length-1;t>=0;t--){const e=a[t];e.actionName===h.A.Events.QOE_AGGREGATE&&(!i&&this._qoeKpisUnchanged(e)?a.splice(t,1):this._saveQoeKpis(e))}let l=[...a],c=(0,n.Q3)(a);if(this.retryQueueHandler&&this.retryQueueHandler.getQueueSize()>0){const t=o.A.MAX_PAYLOAD_SIZE-c,e=o.A.MAX_EVENTS_PER_BATCH-l.length;if(t>0&&e>0){const i=this.retryQueueHandler.getRetryEventsToFit(t,e);i.length>0&&(l=[...i,...l])}}return l}async sendChunk(t,e,i){const s={url:(0,n.c$)(this.fallBackUrl),payload:{body:{ins:t}},options:{...e,isLastChunk:i}};return new Promise(e=>{this.httpClient.send(s,i=>{i.retry?this.handleRequestFailure(t):(this.retryCount=0,this.fallBackUrl=\"\"),e({success:!i.retry,status:i.status,error:i.error,chunk:t,eventCount:t.length})})})}handleRequestFailure(t){this.retryQueueHandler.addFailedEvents(t),\"US\"===window.NRVIDEO?.info?.region&&(this.retryCount++,this.retryCount>5?(this.retryCount=0,this.fallBackUrl=\"\"):this.retryCount>=2&&(this.fallBackUrl=o.A.COLLECTOR.US[1]))}handleHarvestFailure(t){this.consecutiveFailures++,d.A.warn(\"Harvest failure handled\",{error:t.message,consecutiveFailures:this.consecutiveFailures})}updateHarvestInterval(t){\"number\"!=typeof t&&isNaN(t)?d.A.warn(\"Invalid newInterval provided to updateHarvestInterval\"):t<1e3||t>3e5?d.A.warn(\"newInterval out of bounds (1000-300000), ignoring\"):this.harvestCycle!==t&&(this.harvestCycle=t,d.A.notice(\"Updated harvestCycle:\",this.harvestCycle),this.currentTimerId&&(clearTimeout(this.currentTimerId),this.currentTimerId=null),this.isStarted&&this.scheduleNextHarvest())}setupPageLifecycleHandlers(){let t=!1;const e=()=>{t||(t=!0,this.triggerHarvest({isFinalHarvest:!0,force:!0}))};document.addEventListener(\"visibilitychange\",()=>{document.hidden&&e()}),window.addEventListener(\"pagehide\",()=>{e()}),window.addEventListener(\"beforeunload\",()=>{e()})}_qoeKpisUnchanged(t){const e=this._lastSentQoeKpis[t.viewId];if(!e)return!1;for(const i of o.A.QOE_KPI_KEYS)if(t[i]!==e[i])return!1;return!0}_saveQoeKpis(t){const e={};for(const i of o.A.QOE_KPI_KEYS)e[i]=t[i];this._lastSentQoeKpis[t.viewId]=e}}},144(t,e,i){i.d(e,{A:()=>o});class s{static error(...t){r(t,s.Levels.ERROR,\"darkred\")}static warn(...t){r(t,s.Levels.WARNING,\"darkorange\")}static notice(...t){r([].slice.call(arguments),s.Levels.NOTICE,\"darkcyan\")}static debug(...t){r(t,s.Levels.DEBUG,\"indigo\")}static debugCommonVideoEvents(t,e,i){try{if(s.level<=s.Levels.DEBUG){i=i||function(t){s.debug(\"Event: \"+t.type)};var r=[\"canplay\",\"buffering\",\"waiting\",\"ended\",\"play\",\"playing\",\"pause\",\"resume\",\"error\",\"abort\",\"seek\",\"seeking\",\"seeked\",\"stalled\",\"dispose\",\"loadeddata\",\"loadstart\",\"loadedmetadata\"];e&&(null===e[0]?(e.shift(),r=e):r=r.concat(e));for(var a=0;a<r.length;a++)\"function\"==typeof t?t.call(window,r[a],i):t.on?t.on(r[a],i):t.addEventListener?t.addEventListener(r[a],i):t.addEventHandler?t.addEventHandler(r[a],i):s.warn(\"debugCommonVideoEvents: No common listener function found for \",t)}}catch(t){s.warn(t)}}}function r(t,e,i){e=e||s.Levels.NOTICE,i=i||\"darkcyan\";var r,o,h=s.prefix;s.includeTime&&(h+=\"[\"+(\"0\"+(r=new Date).getDate()).slice(-2)+\":\"+(\"0\"+r.getMinutes()).slice(-2)+\":\"+(\"0\"+r.getSeconds()).slice(-2)+\".\"+(\"00\"+r.getMilliseconds()).slice(-3)+\"] \"),h+=function(t){return n[t]}(e)+\":\",s.level<=e&&e!==s.Levels.SILENT&&(!s.colorful||\"undefined\"!=typeof document&&document.documentMode?a(t,h):(o=e===s.Levels.ERROR&&console.error?console.error:e===s.Levels.WARNING&&console.warn?console.warn:e===s.Levels.DEBUG&&console.debug&&null==window.cast?console.debug:console.log,h=\"%c\"+h,t.splice(0,0,h,\"color: \"+i),o.apply(console,t)))}function a(t,e){if(t instanceof Array)for(var i in t)a(t[i],e);else\"string\"==typeof t?console.log(e+\" \"+t):(console.log(e+\"↵\"),console.log(t))}s.Levels={SILENT:5,ERROR:4,WARNING:3,NOTICE:2,DEBUG:1,ALL:0},s.level=s.Levels.ERROR,s.colorful=!0,s.includeTime=!0,s.prefix=\"[nrvideo]\";const n={4:\"e\",3:\"w\",2:\"n\",1:\"d\"};!function(){if(\"undefined\"!=typeof window&&window.location&&window.location.search){var t=/\\?.*&*nrvideo-debug=(.+)/i.exec(window.location.search);null!==t&&(\"true\"===t[1]?s.level=s.Levels.ALL:s.level=t[1]),null!==/\\?.*&*nrvideo-colors=false/i.exec(window.location.search)&&(s.colorful=!1)}}();const o=s},481(t,e,i){i.d(e,{X:()=>a});var s=i(347),r=i(144);class a{async send(t,e){const{url:i,payload:s,options:a={}}=t;try{if(!i||!s)throw new Error(\"URL and payload are required\");const t={url:i,payload:s,options:a,callback:e};await this.executeRequest(t)}catch(t){r.A.error(\"Failed to send request:\",t.message),e({retry:!1,status:0,error:t.message})}}async executeRequest(t){const{url:e,payload:i,options:s,callback:a}=t,n=Date.now();try{const a=(o=JSON.stringify(i.body),h=window.NRVIDEO?.config?.obfuscate,h&&0!==h.length?h.reduce((t,e)=>{let i;try{if(e.regex instanceof RegExp){const t=e.regex.flags.includes(\"g\")?e.regex.flags:e.regex.flags+\"g\";i=new RegExp(e.regex.source,t)}else i=new RegExp(e.regex,\"g\")}catch(i){return r.A.warn(\"applyObfuscationRules: invalid regex, skipping rule:\",e.regex,i.message),t}return t.replace(i,e.replacement)},o):o);if(s.isFinalHarvest&&navigator.sendBeacon){const i=await this.sendWithBeacon(e,a),s={success:i,status:i?204:0};return void this.handleRequestComplete(t,s,n)}const d=await this.fetchWithTimeout(e,{method:\"POST\",body:a,headers:{\"Content-Type\":\"application/json\"},keepalive:s.isFinalHarvest},1e4),l={success:d.ok,status:d.status,statusText:d.statusText};this.handleRequestComplete(t,l,n)}catch(e){const i={success:!1,status:0,error:e.message};this.handleRequestComplete(t,i,n)}var o,h}handleRequestComplete(t,e){const{callback:i}=t;i({retry:!e.success&&(0===e.status||(0,s.Sc)(e.status)),status:e.status,error:e.error})}async sendWithBeacon(t,e){try{return navigator.sendBeacon(t,e)}catch(t){return r.A.warn(\"sendBeacon failed, falling back to fetch:\",t.message),!1}}async fetchWithTimeout(t,e,i){const s=new AbortController,r=setTimeout(()=>s.abort(),i);try{const i=await fetch(t,{...e,signal:s.signal});return clearTimeout(r),i}catch(t){if(clearTimeout(r),\"AbortError\"===t.name)throw new Error(`Request timeout after ${i}ms`);throw t}}}},413(t,e,i){i.d(e,{u:()=>h});var s=i(144),r=i(347),a=i(51);const{MAX_PAYLOAD_SIZE:n,MAX_EVENTS_PER_BATCH:o}=a.A;class h{constructor(){this.retryQueue=[],this.maxQueueSize=o,this.maxQueueSizeBytes=n}addFailedEvents(t){try{const e=Array.isArray(t)?t:[t];s.A.notice(`Adding ${e.length} failed events to retry queue`,{queueSizeBefore:this.retryQueue.length});for(const t of e){this.retryQueue.length>=this.maxQueueSize&&this.evictOldestEvent();const e=(0,r.Q3)(t);for(;(0,r.Q3)(this.retryQueue)+e>this.maxQueueSizeBytes;)this.evictOldestEvent();this.retryQueue.push({...t})}}catch(t){s.A.error(\"Failed to add events to retry queue:\",t.message)}}discardEvent(t,e){s.A.warn(\"Discarded event\",{reason:e,eventType:t.eventType})}evictOldestEvent(){if(this.retryQueue.length>0){const t=this.retryQueue.shift();this.discardEvent(t,\"Queue full - evicted oldest\")}}getRetryEventsToFit(t,e){const i=[];let s=0,a=0;for(let n=this.retryQueue.length-1;n>=0;n--){const o=this.retryQueue[n];if(a>=e)break;const h=(0,r.Q3)(o);if(s+h>t)break;i.unshift(o),s+=h,a++,this.retryQueue.splice(n,1)}return i}getQueueSize(){return this.retryQueue.length}clear(){this.retryQueue=[]}}},302(t,e,i){i.d(e,{A:()=>l});var s=i(330),r=i(568),a=i(455),n=i(51),o=i(487),h=i(144);class d extends r.A{constructor(t){super(),this.customData={},this.heartbeat=null,this.parentTracker=null,this._trackerReadyChrono=new a.A,this._trackerReadyChrono.start(),this._actionTable=n.A.ACTION_TABLE,this._actionAdTable=n.A.ACTION_AD_TABLE,t=t||{},this.setOptions(t)}setOptions(t){t&&(t.parentTracker&&(this.parentTracker=t.parentTracker),t.customData&&(this.customData=t.customData),t.heartbeat&&(this.heartbeat=t.heartbeat))}dispose(){this.unregisterListeners()}registerListeners(){}unregisterListeners(){}getHeartbeat(){return this.state._isAd?2e3:this.heartbeat?this.heartbeat:this.parentTracker&&this.parentTracker.heartbeat?this.parentTracker.heartbeat:3e4}startHeartbeat(){this._heartbeatInterval=setInterval(this.sendHeartbeat.bind(this),Math.max(this.getHeartbeat(),2e3))}stopHeartbeat(){this._heartbeatInterval&&clearInterval(this._heartbeatInterval)}sendHeartbeat(t){this.sendVideoAction(d.Events.HEARTBEAT,t)}getAttributes(t,e){(t=t||{}).trackerName=this.getTrackerName(),t.trackerVersion=this.getTrackerVersion(),t.coreVersion=s.rE,t.timeSinceTrackerReady=this._trackerReadyChrono.getDeltaTime();for(let e in this.customData)t[e]=this.customData[e];return null!=document.hidden&&(t.isBackgroundEvent=document.hidden),t}getTrackerVersion(){return s.rE}getTrackerName(){return\"base-tracker\"}sendVideoAction(t,e){this.emit(\"VideoAction\",t,this.getAttributes(e))}sendVideoAdAction(t,e){this.emit(\"VideoAdAction\",t,this.getAttributes(e))}sendVideoErrorAction(t,e){let i=this.isAd()?\"adError\":\"videoError\";this.emit(\"VideoErrorAction\",t,this.getAttributes(e,i))}sendVideoCustomAction(t,e){this.emit(\"VideoCustomAction\",t,this.getAttributes(e,\"customAction\"))}setHarvestInterval(t){if(o.videoAnalyticsHarvester)try{o.videoAnalyticsHarvester.setHarvestInterval(t)}catch(t){return void h.A.error(\"Failed to set harvest interval:\",t.message)}else h.A.error(\"VideoAnalyticsHarvester is not available\")}}d.Events={HEARTBEAT:\"HEARTBEAT\",QOE_AGGREGATE:\"QOE_AGGREGATE\"};const l=d},347(t,e,i){i.d(e,{Q3:()=>n,Sc:()=>o,c$:()=>a,z8:()=>h});var s=i(330),r=i(144);function a(t){try{if(!window.NRVIDEO||!window.NRVIDEO.info)throw new Error(\"NRVIDEO info is not available.\");let{beacon:e,licenseKey:i,applicationID:r}=window.NRVIDEO.info;if(!e||!i)throw new Error(\"Options object provided by New Relic is not correctly initialized\");return r?`https://${t||e}/ins/1/${i}?a=${r}&v=${s.rE}&ref=${window.location.href}&ca=VA`:`https://${t||e}/ins/1/${i}?&v=${s.rE}&ref=${window.location.href}&ca=VA`}catch(t){return console.error(t.message),null}}function n(t){if(\"string\"==typeof t&&t.length)return t.length;if(\"object\"==typeof t){if(\"undefined\"!=typeof ArrayBuffer&&t instanceof ArrayBuffer&&t.byteLength)return t.byteLength;if(\"undefined\"!=typeof Blob&&t instanceof Blob&&t.size)return t.size;if(!(\"undefined\"!=typeof FormData&&t instanceof FormData))try{return function(t){try{return JSON.stringify(t,(()=>{const t=new WeakSet;return(e,i)=>{if(\"object\"==typeof i&&null!==i){if(t.has(i))return;t.add(i)}return i}})())??\"\"}catch(t){return r.A.error(\"Error stringifying value:\",t.message),\"\"}}(t).length}catch(t){return}}}function o(t){switch(t){case 408:case 429:case 500:return!0;case 401:case 403:case 404:return!1}return t>=502&&t<=504||t>=512&&t<=530}function h(t,e){return t&&Array.isArray(t)&&0!==t.length?e&&\"object\"==typeof e?t.reduce((t,i)=>(i in e&&(t[i]=e[i]),t),{}):{}:e}},330(t){t.exports={rE:\"4.1.7\"}}},e={};function i(s){var r=e[s];if(void 0!==r)return r.exports;var a=e[s]={exports:{}};return t[s](a,a.exports,i),a.exports}i.d=(t,e)=>{for(var s in e)i.o(e,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var s=i(144),r=i(487),a=i(51),n=i(302),o=i(347);function h(t,e={}){try{if(!a.A.VALID_EVENT_TYPES.includes(t))return s.A.warn(\"Invalid event type provided to recordEvent\",{eventType:t}),!1;if(!window?.NRVIDEO?.info)return;const{appName:i,applicationID:h}=window.NRVIDEO.info,{qoe:d,...l}=e,c=d?{...d}:{},u={...h?{}:{appName:i},timestamp:Date.now(),timeSinceLoad:window.performance?window.performance.now()/1e3:null},A={...l,eventType:t,...u},g=(0,o.z8)(a.A.QOE_AGGREGATE_KEYS,e);let m=null;\"VideoAction\"===t&&(m={eventType:\"VideoAction\",actionName:n.A.Events.QOE_AGGREGATE,qoeAggregateVersion:\"1.0.0\",...c,...g,...u});const f=r.videoAnalyticsHarvester.addEvent(A);if(m&&window?.NRVIDEO?.config?.qoeAggregate){const t=r.videoAnalyticsHarvester.addEvent(m);return f&&t}return f}catch(t){return s.A.error(\"Failed to record event:\",t.message),!1}}const{COLLECTOR:d}=a.A;const l=new class{setConfiguration(t,e){return!!this.validateRequiredFields(t)&&!!this.validateConfigFields(e)&&(this.initializeGlobalConfig(t,e),s.A.notice(\"Video analytics configuration initialized successfully\"),!0)}validateRequiredFields(t){if(!t||\"object\"!=typeof t)return s.A.error(\"Configuration must be an object\"),!1;const{licenseKey:e,appName:i,region:r,applicationID:a,beacon:n}=t;if(!e)return s.A.error(\"licenseKey is required\"),!1;if(a){if(!n)return s.A.error(\"beacon is required when applicationID is provided\"),!1;if(!Object.values(d).flatMap(t=>t).includes(n))return s.A.error(`Invalid beacon: ${n}`),!1}else{if(!i||!r)return s.A.error(\"appName and region are required when applicationID is not provided\"),!1;if(!d[r])return s.A.error(`Invalid region: ${r}. Valid regions are: ${Object.keys(d).join(\", \")}`),!1}return!0}validateConfigFields(t){if(null==t)return!0;if(\"object\"!=typeof t||Array.isArray(t))return s.A.error(\"config must be an object\"),!1;const{qoeAggregate:e,obfuscate:i}=t;return void 0!==e&&\"boolean\"!=typeof e?(s.A.error(\"qoeAggregate must be a boolean\"),!1):!(void 0!==i&&!Array.isArray(i)&&(s.A.error(\"obfuscate must be an array\"),1))}filterObfuscateRules(t){return t?t.filter(t=>{const e=void 0!==t.regex&&(\"string\"==typeof t.regex||t.regex instanceof RegExp),i=void 0!==t.replacement&&\"string\"==typeof t.replacement;return!(!e||!i)||(s.A.warn(\"obfuscate rule missing required 'regex' (string|RegExp) and/or 'replacement' (string), skipping:\",t),!1)}):[]}sanitizeQoeIntervalFactor(t){return null==t?2:\"number\"==typeof t&&Number.isInteger(t)&&t>=1?t:(s.A.warn(`Invalid qoeIntervalFactor \"${t}\" — must be a positive integer. Defaulting to 2.`),2)}initializeGlobalConfig(t,e){let{licenseKey:i,appName:s,region:r,beacon:n,applicationID:o}=t;n=\"US\"===r?a.A.COLLECTOR.US[0]:n||d[r],window.NRVIDEO={info:{...r?{region:r}:{},beacon:n,licenseKey:i,applicationID:o,...o?{}:{appName:s}},config:{qoeAggregate:e?.qoeAggregate??!0,qoeIntervalFactor:this.sanitizeQoeIntervalFactor(e?.qoeIntervalFactor),obfuscate:this.filterObfuscateRules(e?.obfuscate)}}}};class c{static addTracker(t,e){var i,r;e?.info&&(i=e.info,r=e?.config,l.setConfiguration(i,r)),t.on&&t.emit?(u.push(t),t.on(\"*\",A),\"function\"==typeof t.trackerInit&&t.trackerInit()):s.A.error(\"Tried to load a non-tracker.\",t)}static removeTracker(t){t.off(\"*\",A),t.dispose();let e=u.indexOf(t);-1!==e&&u.splice(e,1)}static getTrackers(){return u}static send(t,e,i){return h(t,{actionName:e,...i})}static sendError(t){return h(\"VideoErrorAction\",{actionName:\"ERROR\",...t})}static async forceHarvest(){try{const{videoAnalyticsHarvester:t}=i(487);return await t.forceHarvest()}catch(t){return s.A.error(\"Failed to force harvest:\",t.message),{success:!1,error:t.message}}}}let u=[];function A(t){try{let e=function(t){let e={};for(let i in t)null!==t[i]&&void 0!==t[i]&&(e[i]=t[i]);return e}(t.data);s.A.level<=s.A.Levels.DEBUG?s.A.notice(\"Sent\",t.type,e):s.A.notice(\"Sent\",t.type),c.send(t.eventType,t.type,e)}catch(t){s.A.error(\"Error in event handler:\",t.message)}}const g=c;var m=i(455),f=i(568);const E=class{constructor(){this.reset(),this._createdAt=Date.now(),this._hb=!0,this._acc=0,this._bufferAcc=0}reset(){this._viewSession=null,this._viewCount=0,this._isAd=!1,this.numberOfErrors=0,this.numberOfAds=0,this.numberOfVideos=0,this.totalPlaytime=0,this.weightedAverageBitrate=0,this.totalAdPlaytime=0,this.isAdBreak=!1,this.initialBufferingHappened=!1,this.startupTime=null,this.peakBitrate=0,this._lastBitrate=null,this._lastBitrateChangeTimestamp=null,this.partialAverageBitrate=0,this._totalBitrateDuration=0,this.hadStartupError=!1,this.hadPlaybackError=!1,this.totalRebufferingTime=0,this.resetFlags(),this.resetChronos()}resetFlags(){this.isPlayerReady=!1,this.isRequested=!1,this.isStarted=!1,this.isPaused=!1,this.isSeeking=!1,this.isBuffering=!1,this.isPlaying=!1}resetChronos(){this.timeSinceRequested=new m.A,this.timeSinceStarted=new m.A,this.timeSincePaused=new m.A,this.timeSinceSeekBegin=new m.A,this.timeSinceBufferBegin=new m.A,this.timeSinceAdBreakStart=new m.A,this.timeSinceLastDownload=new m.A,this.timeSinceLastHeartbeat=new m.A,this.timeSinceLastRenditionChange=new m.A,this.timeSinceLastAdQuartile=new m.A,this.timeSinceLastAd=new m.A,this.timeSinceLastError=new m.A,this.timeSinceLastAdError=new m.A,this.timeSinceResumed=new m.A,this.timeSinceSeekEnd=new m.A,this.playtimeSinceLastEvent=new m.A,this.customTimeSinceAttributes={},this.elapsedTime=new m.A,this.bufferElapsedTime=new m.A,this._totalAdPlaytime=new m.A}isAd(){return this._isAd}setIsAd(t){this._isAd=t}setTimeSinceAttribute(t){this.customTimeSinceAttributes[t]=new m.A,this.customTimeSinceAttributes[t].start()}removeTimeSinceAttribute(t){delete this.customTimeSinceAttributes[t]}getViewSession(){if(!this._viewSession){let t=(new Date).getTime(),e=Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2);this._viewSession=t+\"-\"+e}return this._viewSession}getViewId(){return this.getViewSession()+\"-\"+this._viewCount}getStateAttributes(t){t=t||{},this.isAd()?(this.isRequested&&(t.timeSinceAdRequested=this.timeSinceRequested.getDeltaTime(),t.timeSinceLastAdHeartbeat=this.timeSinceLastHeartbeat.getDeltaTime()),this.isStarted&&(t.timeSinceAdStarted=this.timeSinceStarted.getDeltaTime()),this.isPaused&&(t.timeSinceAdPaused=this.timeSincePaused.getDeltaTime()),this.isBuffering&&(t.timeSinceAdBufferBegin=this.timeSinceBufferBegin.getDeltaTime()),this.isSeeking&&(t.timeSinceAdSeekBegin=this.timeSinceSeekBegin.getDeltaTime()),this.isAdBreak&&(t.timeSinceAdBreakBegin=this.timeSinceAdBreakStart.getDeltaTime()),this.numberOfErrors>0&&this.timeSinceLastAdError.startTime>0&&(t.timeSinceLastAdError=this.timeSinceLastAdError.getDeltaTime()),t.numberOfAds=this.numberOfAds):(this.isRequested&&(t.timeSinceRequested=this.timeSinceRequested.getDeltaTime(),t.timeSinceLastHeartbeat=this.timeSinceLastHeartbeat.getDeltaTime()),this.isStarted&&(t.timeSinceStarted=this.timeSinceStarted.getDeltaTime()),this.isPaused&&(t.timeSincePaused=this.timeSincePaused.getDeltaTime()),this.isBuffering&&(t.timeSinceBufferBegin=this.timeSinceBufferBegin.getDeltaTime()),this.isSeeking&&(t.timeSinceSeekBegin=this.timeSinceSeekBegin.getDeltaTime()),t.timeSinceLastAd=this.timeSinceLastAd.getDeltaTime(),this.numberOfErrors>0&&this.timeSinceLastError.startTime>0&&(t.timeSinceLastError=this.timeSinceLastError.getDeltaTime()),t.numberOfVideos=this.numberOfVideos),t.numberOfErrors=this.numberOfErrors,this.isAd()||(this.playtimeSinceLastEvent.startTime>0?t.playtimeSinceLastEvent=this.playtimeSinceLastEvent.getDeltaTime():t.playtimeSinceLastEvent=0,this.isPlaying?this.playtimeSinceLastEvent.start():this.playtimeSinceLastEvent.reset(),this.totalPlaytime+=t.playtimeSinceLastEvent,t.totalPlaytime=this.totalPlaytime);for(const[e,i]of Object.entries(this.customTimeSinceAttributes))t[e]=i.getDeltaTime();return t}getQoeAttributes(t){t=t||{};const e={};try{null!==this.startupTime&&(e.startupTime=this.startupTime),this.peakBitrate>0&&(e.peakBitrate=this.peakBitrate),e.hadStartupError=this.hadStartupError,e.hadPlaybackError=this.hadPlaybackError,e.totalRebufferingTime=this.totalRebufferingTime,e.rebufferingRatio=this.totalPlaytime>0?this.totalRebufferingTime/this.totalPlaytime*100:0,e.totalPlaytime=this.totalPlaytime,e.averageBitrate=this.weightedBitrate,e.numberOfErrors=this.numberOfErrors}catch(t){s.A.error(\"Failed to add attributes for QOE KPIs\",t.message)}return t.qoe=e,t}calculateBufferType(t){let e=\"\";return e=t?\"initial\":this.isSeeking?\"seek\":this.isPaused?\"pause\":\"connection\",s.A.debug(\"Buffer Type = \"+e),e}goViewCountUp(){this._viewCount++}goPlayerReady(){return!this.isPlayerReady&&(this.isPlayerReady=!0,!0)}goRequest(){return!this.isRequested&&(this.isRequested=!0,this.timeSinceLastAd.reset(),this.timeSinceRequested.start(),!0)}goStart(){return!(!this.isRequested||this.isStarted||(this.isAd()?this.numberOfAds++:this.numberOfVideos++,this.isStarted=!0,this.isPlaying=!0,this.timeSinceStarted.start(),this.playtimeSinceLastEvent.start(),0))}goEnd(){return!!this.isRequested&&(this.numberOfErrors=0,this.resetFlags(),this.timeSinceRequested.stop(),this.timeSinceStarted.stop(),this.playtimeSinceLastEvent.stop(),this.isPlaying=!1,!0)}goPause(){return!(!this.isStarted||this.isPaused||(this.isPaused=!0,this.isPlaying=!1,this.timeSincePaused.start(),this.playtimeSinceLastEvent.stop(),this.timeSinceResumed.reset(),this.isBuffering&&(this._bufferAcc+=this.bufferElapsedTime.getDeltaTime()),this.elapsedTime.start(),0))}goResume(){return!(!this.isStarted||!this.isPaused||(this.isPaused=!1,this.isPlaying=!0,this.timeSincePaused.stop(),this.timeSinceResumed.start(),this._hb?(this._acc=this.elapsedTime.getDeltaTime(),this._hb=!1):(this.isBuffering&&this.bufferElapsedTime.start(),this._acc+=this.elapsedTime.getDeltaTime()),0))}goBufferStart(){return!(!this.isRequested||this.isBuffering||(this.isBuffering=!0,this.isPlaying=!1,this.timeSinceBufferBegin.start(),this.bufferElapsedTime.start(),0))}goBufferEnd(){return!(!this.isRequested||!this.isBuffering||(this.isBuffering=!1,this.isPlaying=!0,this.timeSinceBufferBegin.stop(),this._hb?(this._bufferAcc=this.bufferElapsedTime.getDeltaTime(),this._hb=!1):this._bufferAcc+=this.bufferElapsedTime.getDeltaTime(),!this.isAd()&&this.initialBufferingHappened&&(this.totalRebufferingTime+=this.timeSinceBufferBegin.stopTime-this.timeSinceBufferBegin.startTime),0))}goSeekStart(){return!(!this.isStarted||this.isSeeking||(this.isSeeking=!0,this.isPlaying=!1,this.timeSinceSeekBegin.start(),this.timeSinceSeekEnd.reset(),0))}goSeekEnd(){return!(!this.isStarted||!this.isSeeking||(this.isSeeking=!1,this.isPlaying=!0,this.timeSinceSeekBegin.stop(),this.timeSinceSeekEnd.start(),0))}goAdBreakStart(){return!this.isAdBreak&&(this.isAdBreak=!0,this.timeSinceAdBreakStart.start(),!0)}goAdBreakEnd(){return!!this.isAdBreak&&(this.isRequested=!1,this.isAdBreak=!1,this.totalAdPlaytime=this.timeSinceAdBreakStart.getDeltaTime(),this.timeSinceAdBreakStart.stop(),!0)}goDownload(){this.timeSinceLastDownload.start()}goHeartbeat(){this.timeSinceLastHeartbeat.start()}goRenditionChange(){this.timeSinceLastRenditionChange.start()}goAdQuartile(){this.timeSinceLastAdQuartile.start()}goError(){this.isError=!0,this.numberOfErrors++,this.isAd()?this.timeSinceLastAdError.start():(this.timeSinceLastError.start(),this.isStarted?this.hadPlaybackError=!0:this.hadStartupError=!0)}goLastAd(){this.timeSinceLastAd.start()}trackContentBitrateState(t){if(t&&\"number\"==typeof t){this.peakBitrate=Math.max(this.peakBitrate,t);const e=Date.now();if(!this.isPlaying){if(null!==this._lastBitrate&&null!==this._lastBitrateChangeTimestamp){const t=e-this._lastBitrateChangeTimestamp;t>0&&(this.partialAverageBitrate+=this._lastBitrate*t,this._totalBitrateDuration+=t),this._lastBitrateChangeTimestamp=null}return void(this._lastBitrate=t)}if(null===this._lastBitrateChangeTimestamp&&null!==this._lastBitrate&&(this._lastBitrateChangeTimestamp=e),null!==this._lastBitrate&&this._lastBitrate!==t&&null!==this._lastBitrateChangeTimestamp){const t=e-this._lastBitrateChangeTimestamp;t>0&&(this.partialAverageBitrate+=this._lastBitrate*t,this._totalBitrateDuration+=t),this._lastBitrateChangeTimestamp=e}null===this._lastBitrateChangeTimestamp&&(this._lastBitrateChangeTimestamp=e),this._lastBitrate=t;let i=this.partialAverageBitrate,s=this._totalBitrateDuration;const r=e-this._lastBitrateChangeTimestamp;r>0&&(i+=t*r,s+=r),this.weightedBitrate=s>0?Math.round(i/s):t}}resetViewIdTrackedState(){this.peakBitrate=0,this.partialAverageBitrate=0,this._totalBitrateDuration=0,this.startupTime=null,this._lastBitrate=null,this._lastBitrateChangeTimestamp=null}clearTotalAdsTime(){s.A.debug(\"clear total ads time\",this.totalAdTime),this._totalAdPlaytime.reset()}totalAdTime(){return this._totalAdPlaytime.getDuration()}startAdsTime(){return s.A.debug(\"startAdsTime\"),this._totalAdPlaytime.start()}stopAdsTime(){return s.A.debug(\"stopAdsTime\"),this._totalAdPlaytime.stop()}setStartupTime(t){null===this.startupTime&&(this.startupTime=Math.max(this.timeSinceRequested.getDeltaTime()-t,0))}};var T=i(330);class v extends n.A{constructor(t,e){super(),this.state=new E,this.adsTracker=null,this._lastBufferType=null,this._userId=null,e=e||{},this.setOptions(e),t&&this.setPlayer(t,e.tag),s.A.notice(\"Tracker \"+this.getTrackerName()+\" v\"+this.getTrackerVersion()+\" is ready.\")}setUserId(t){this._userId=t}setOptions(t){t&&(t.adsTracker&&this.setAdsTracker(t.adsTracker),\"boolean\"==typeof t.isAd&&this.setIsAd(t.isAd),n.A.prototype.setOptions.apply(this,arguments))}setPlayer(t,e){(this.player||this.tag)&&this.dispose(),\"undefined\"!=typeof document&&document.getElementById&&(\"string\"==typeof t&&(t=document.getElementById(t)),\"string\"==typeof e&&(e=document.getElementById(e))),e=e||t,this.player=t,this.tag=e,this.registerListeners()}isAd(){return this.state.isAd()}setIsAd(t){this.state.setIsAd(t)}setAdsTracker(t){this.disposeAdsTracker(),t&&(this.adsTracker=t,this.adsTracker.setIsAd(!0),this.adsTracker.parentTracker=this,this.adsTracker.on(\"*\",S.bind(this)))}disposeAdsTracker(){this.adsTracker&&(this.adsTracker.off(\"*\",S),this.adsTracker.dispose())}dispose(){this.stopHeartbeat(),this.disposeAdsTracker(),this.unregisterListeners(),this.player=null,this.tag=null}registerListeners(){}unregisterListeners(){}getViewId(){return this.parentTracker?this.parentTracker.getViewId():this.state.getViewId()}getViewSession(){return this.parentTracker?this.parentTracker.getViewSession():this.state.getViewSession()}getVideoId(){return null}getTitle(){return null}isLive(){return null}getBitrate(){return null}getManifestBitrate(){return null}getSegmentDownloadBitrate(){return null}getNetworkDownloadBitrate(){return null}getWebkitBitrate(){if(this.tag&&this.tag.webkitVideoDecodedByteCount){let t;if(this._lastWebkitBitrate){t=this.tag.webkitVideoDecodedByteCount;let e=t-this._lastWebkitBitrate,i=this.getHeartbeat()/1e3;t=Math.round(e/i*8)}return this._lastWebkitBitrate=this.tag.webkitVideoDecodedByteCount,t||null}}getRenditionName(){return null}getRenditionBitrate(){return null}getRenditionShift(t){let e,i=this.getRenditionBitrate();return this.isAd()?(e=this._lastAdRendition,t&&(this._lastAdRendition=i)):(e=this._lastRendition,t&&(this._lastRendition=i)),i&&e?i>e?\"up\":i<e?\"down\":null:null}getRenditionHeight(){return this.tag?this.tag.videoHeight:null}getRenditionWidth(){return this.tag?this.tag.videoWidth:null}getDuration(){return this.tag?this.tag.duration:null}getPlayhead(){return this.tag?this.tag.currentTime:null}getLanguage(){return null}getSrc(){return this.tag?this.tag.currentSrc:null}getPlayrate(){return this.tag?this.tag.playbackRate:null}isMuted(){return this.tag?this.tag.muted:null}isFullscreen(){return null}getCdn(){return null}getPlayerName(){return this.getTrackerName()}getPlayerVersion(){return T.rE}getFps(){return null}isAutoplayed(){return this.tag?this.tag.autoplay:null}getPreload(){return this.tag?this.tag.preload:null}getAdQuartile(){return null}getAdPosition(){return this.parentTracker?this.parentTracker.state.isStarted?\"mid\":\"pre\":null}getAdPartner(){return null}getAdCreativeId(){return null}getInstrumentationProvider(){return null}getInstrumentationName(){return null}getInstrumentationVersion(){return null}getAttributes(t,e){if(void 0===(t=n.A.prototype.getAttributes.apply(this,arguments)).isAd&&(t.isAd=this.isAd()),t.viewSession=this.getViewSession(),t.viewId=this.getViewId(),t.playerName=this.getPlayerName(),t.playerVersion=this.getPlayerVersion(),t[\"instrumentation.provider\"]=this.getInstrumentationProvider(),t[\"instrumentation.name\"]=this.getInstrumentationName(),t[\"instrumentation.version\"]=this.getInstrumentationVersion(),t[\"enduser.id\"]=this._userId,t.src=\"Browser\",\"customAction\"===e)return t;try{t.pageUrl=window.location.href}catch(t){}this.isAd()?(t.adId=this.getVideoId(),t.adTitle=this.getTitle(),t.adSrc=this.getSrc(),t.adCdn=this.getCdn(),this.state.isStarted&&(t.adBitrate=this.getBitrate()||0),t.adRenditionName=this.getRenditionName(),t.adRenditionHeight=this.getRenditionHeight(),t.adRenditionWidth=this.getRenditionWidth(),t.adDuration=this.getDuration(),t.adPlayhead=this.getPlayhead(),t.adLanguage=this.getLanguage(),t.adIsMuted=this.isMuted(),t.adFps=this.getFps(),t.adPosition=this.getAdPosition(),t.adCreativeId=this.getAdCreativeId(),t.adPartner=this.getAdPartner()):(t.contentId=this.getVideoId(),t.contentTitle=this.getTitle(),t.contentSrc=this.getSrc(),t.contentCdn=this.getCdn(),t.contentPlayhead=this.getPlayhead(),t.contentIsLive=this.isLive(),this.state.isStarted&&(t.contentBitrate=this.getBitrate()||0,t.contentManifestBitrate=this.getManifestBitrate()||0,t.contentSegmentDownloadBitrate=this.getSegmentDownloadBitrate()||0,t.contentNetworkDownloadBitrate=this.getNetworkDownloadBitrate()||0),t.contentRenditionName=this.getRenditionName(),t.contentRenditionHeight=this.getRenditionHeight(),t.contentRenditionWidth=this.getRenditionWidth(),t.contentDuration=this.getDuration(),t.contentLanguage=this.getLanguage(),t.contentPlayrate=this.getPlayrate(),t.contentIsFullscreen=this.isFullscreen(),t.contentIsMuted=this.isMuted(),t.contentIsAutoplayed=this.isAutoplayed(),t.contentPreload=this.getPreload(),t.contentFps=this.getFps(),null!=this.adsTracker&&this.adsTracker.state.totalAdPlaytime>0&&(t.totalAdPlaytime=this.adsTracker.state.totalAdPlaytime)),this.state.getStateAttributes(t),this.state.isStarted&&!this.isAd()&&this.state.trackContentBitrateState(t.contentBitrate);for(let e in this.customData)t[e]=this.customData[e];return this.addQoeAttributes(t),t}addQoeAttributes(t){const e=(t=this.state.getQoeAttributes(t)).qoe;for(let t in this.customData)e[t]=this.customData[t]}sendCustom(t,e,i){i=i||{},this.sendVideoCustomAction(t,i),this.state.setTimeSinceAttribute(e)}sendPlayerReady(t){this.state.goPlayerReady()&&(t=t||{},this.sendVideoAction(v.Events.PLAYER_READY,t))}sendRequest(t){if(this.state.goRequest()){let e;this.isAd()?(e=v.Events.AD_REQUEST,this.sendVideoAdAction(e,t)):(e=v.Events.CONTENT_REQUEST,this.sendVideoAction(e,t))}}sendStart(t){if(this.state.goStart()){let e;if(this.isAd())e=v.Events.AD_START,this.parentTracker&&(this.parentTracker.state.isPlaying=!1),this.sendVideoAdAction(e,t),this.state.startAdsTime();else{e=v.Events.CONTENT_START;let i=0;this.adsTracker&&((this.adsTracker.state.isPlaying||this.adsTracker.state.isBuffering)&&(this.adsTracker.state.stopAdsTime(),this.adsTracker.state.isPlaying=!1,this.adsTracker.state.isBuffering=!1),i=this.adsTracker.state.totalAdTime()??0),this.state.setStartupTime(i),this.sendVideoAction(e,t),r.videoAnalyticsHarvester.setBeforeDrainCallback(()=>{if(this.state){const t=this.state.getQoeAttributes({}).qoe;r.videoAnalyticsHarvester.refreshQoeKpis(t,this.getViewId())}})}this.startHeartbeat(),this.state.goHeartbeat()}}sendEnd(t){if(this.state.goEnd()){let e;t=t||{},this.isAd()?(e=v.Events.AD_END,t.timeSinceAdRequested=this.state.timeSinceRequested.getDeltaTime(),t.timeSinceAdStarted=this.state.timeSinceStarted.getDeltaTime(),this.parentTracker&&(this.parentTracker.state.isPlaying=!0),this.state.stopAdsTime()):(e=v.Events.CONTENT_END,t.timeSinceRequested=this.state.timeSinceRequested.getDeltaTime(),t.timeSinceStarted=this.state.timeSinceStarted.getDeltaTime()),this.stopHeartbeat(),this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t),this.parentTracker&&this.isAd()&&this.parentTracker.state.goLastAd(),this.state.goViewCountUp(),this.state.totalPlaytime=0,this.isAd()||(r.videoAnalyticsHarvester.forceNextQoeCycle(),r.videoAnalyticsHarvester.setBeforeDrainCallback(null),this.adsTracker&&this.adsTracker.state.clearTotalAdsTime(),this.state.resetViewIdTrackedState())}}sendPause(t){if(this.state.goPause()){let e=this.isAd()?v.Events.AD_PAUSE:v.Events.CONTENT_PAUSE;this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendResume(t){if(this.state.goResume()){let e;t=t||{},this.isAd()?(e=v.Events.AD_RESUME,t.timeSinceAdPaused=this.state.timeSincePaused.getDeltaTime()):(e=v.Events.CONTENT_RESUME,t.timeSincePaused=this.state.timeSincePaused.getDeltaTime()),this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendBufferStart(t){if(this.state.goBufferStart()){let e;t=t||{},e=this.isAd()?v.Events.AD_BUFFER_START:v.Events.CONTENT_BUFFER_START,t=this.buildBufferAttributes(t),this._lastBufferType=t.bufferType,this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendBufferEnd(t){if(this.state.goBufferEnd()){let e;t=t||{},this.isAd()?(e=v.Events.AD_BUFFER_END,t.timeSinceAdBufferBegin=this.state.timeSinceBufferBegin.getDeltaTime()):(e=v.Events.CONTENT_BUFFER_END,t.timeSinceBufferBegin=this.state.timeSinceBufferBegin.getDeltaTime()),t=this.buildBufferAttributes(t),null!=this._lastBufferType&&(t.bufferType=this._lastBufferType),this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t),this.state.initialBufferingHappened=!0}}buildBufferAttributes(t){return null==t.timeSinceStarted||t.timeSinceStarted<100?t.isInitialBuffering=!this.state.initialBufferingHappened:t.isInitialBuffering=!1,t.bufferType=this.state.calculateBufferType(t.isInitialBuffering),t.timeSinceResumed=this.state.timeSinceResumed.getDeltaTime(),t.timeSinceSeekEnd=this.state.timeSinceSeekEnd.getDeltaTime(),t}sendSeekStart(t){if(this.state.goSeekStart()){let e;e=this.isAd()?v.Events.AD_SEEK_START:v.Events.CONTENT_SEEK_START,this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendSeekEnd(t){if(this.state.goSeekEnd()){let e;t=t||{},this.isAd()?(e=v.Events.AD_SEEK_END,t.timeSinceAdSeekBegin=this.state.timeSinceSeekBegin.getDeltaTime()):(e=v.Events.CONTENT_SEEK_END,t.timeSinceSeekBegin=this.state.timeSinceSeekBegin.getDeltaTime()),this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendDownload(t){(t=t||{}).state||s.A.warn(\"Called sendDownload without { state: xxxxx }.\"),this.sendVideoAction(v.Events.DOWNLOAD,t),this.state.goDownload()}sendError(t){(t=t||{}).isAd=this.isAd(),this.state.goError();let e=this.isAd()?v.Events.AD_ERROR:v.Events.CONTENT_ERROR;this.sendVideoErrorAction(e,t)}sendRenditionChanged(t){let e;(t=t||{}).timeSinceLastRenditionChange=this.state.timeSinceLastRenditionChange.getDeltaTime(),t.shift=this.getRenditionShift(!0),e=this.isAd()?v.Events.AD_RENDITION_CHANGE:v.Events.CONTENT_RENDITION_CHANGE,this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t),this.state.goRenditionChange()}sendHeartbeat(t){if(this.state.isRequested){let e,i=this.getHeartbeat();this.state._hb=!0,i=this.adjustElapsedTimeForPause(i),this.isAd()?(e=v.Events.AD_HEARTBEAT,\"bitmovin-ads\"===this.getPlayerName()?this.sendVideoAdAction(e,t):this.sendVideoAdAction(e,{elapsedTime:i,...t})):(e=v.Events.CONTENT_HEARTBEAT,this.sendVideoAction(e,{elapsedTime:i,...t})),this.state.goHeartbeat()}}adjustElapsedTimeForPause(t){return this.state._acc&&(t-=this.state._acc,this.state._acc=0),this.state.isPaused&&((t-=this.state.elapsedTime.getDeltaTime())<10&&(t=0),this.state.elapsedTime.start()),this.state._bufferAcc?(t-=this.state._bufferAcc,this.state._bufferAcc=0):this.state.isBuffering&&((t-=this.state.bufferElapsedTime.getDeltaTime())<5&&(t=0),this.state.bufferElapsedTime.start()),Math.max(0,t)}sendAdBreakStart(t){this.isAd()&&this.state.goAdBreakStart()&&(this.state.totalAdPlaytime=0,this.parentTracker&&(this.parentTracker.state.isPlaying=!1),this.sendVideoAdAction(v.Events.AD_BREAK_START,t))}sendAdBreakEnd(t){this.isAd()&&this.state.goAdBreakEnd()&&((t=t||{}).timeSinceAdBreakBegin=this.state.timeSinceAdBreakStart.getDeltaTime(),this.sendVideoAdAction(v.Events.AD_BREAK_END,t),this.parentTracker&&(this.parentTracker.state.isPlaying=!0),this.stopHeartbeat(),this.parentTracker&&this.isAd()&&this.parentTracker.state.goLastAd())}sendAdQuartile(t){this.isAd()&&((t=t||{}).quartile||s.A.warn(\"Called sendAdQuartile without { quartile: xxxxx }.\"),t.timeSinceLastAdQuartile=this.state.timeSinceLastAdQuartile.getDeltaTime(),this.sendVideoAdAction(v.Events.AD_QUARTILE,t),this.state.goAdQuartile())}sendAdClick(t){this.isAd()&&((t=t||{}).url||s.A.warn(\"Called sendAdClick without { url: xxxxx }.\"),this.sendVideoAdAction(v.Events.AD_CLICK,t))}}function S(t){t.type!==v.Events.AD_ERROR?this.sendVideoAdAction(t.type,t.data):this.sendVideoErrorAction(t.type,t.data)}v.Events={PLAYER_READY:\"PLAYER_READY\",DOWNLOAD:\"DOWNLOAD\",ERROR:\"ERROR\",CONTENT_REQUEST:\"CONTENT_REQUEST\",CONTENT_START:\"CONTENT_START\",CONTENT_END:\"CONTENT_END\",CONTENT_PAUSE:\"CONTENT_PAUSE\",CONTENT_RESUME:\"CONTENT_RESUME\",CONTENT_SEEK_START:\"CONTENT_SEEK_START\",CONTENT_SEEK_END:\"CONTENT_SEEK_END\",CONTENT_BUFFER_START:\"CONTENT_BUFFER_START\",CONTENT_BUFFER_END:\"CONTENT_BUFFER_END\",CONTENT_HEARTBEAT:\"CONTENT_HEARTBEAT\",CONTENT_RENDITION_CHANGE:\"CONTENT_RENDITION_CHANGE\",CONTENT_ERROR:\"CONTENT_ERROR\",AD_REQUEST:\"AD_REQUEST\",AD_START:\"AD_START\",AD_END:\"AD_END\",AD_PAUSE:\"AD_PAUSE\",AD_RESUME:\"AD_RESUME\",AD_SEEK_START:\"AD_SEEK_START\",AD_SEEK_END:\"AD_SEEK_END\",AD_BUFFER_START:\"AD_BUFFER_START\",AD_BUFFER_END:\"AD_BUFFER_END\",AD_HEARTBEAT:\"AD_HEARTBEAT\",AD_RENDITION_CHANGE:\"AD_RENDITION_CHANGE\",AD_ERROR:\"AD_ERROR\",AD_BREAK_START:\"AD_BREAK_START\",AD_BREAK_END:\"AD_BREAK_END\",AD_QUARTILE:\"AD_QUARTILE\",AD_CLICK:\"AD_CLICK\"};const p=v;var y=i(431),_=i(413),R=i(481),B=i(374);const b={Constants:a.A,Chrono:m.A,Log:s.A,Emitter:f.A,Tracker:n.A,VideoTracker:p,VideoTrackerState:E,Core:g,version:T.rE,NrVideoEventAggregator:y.t,RetryQueueHandler:_.u,OptimizedHttpClient:R.X,HarvestScheduler:B.n,recordEvent:h};export{b as default};\n//# sourceMappingURL=index.js.map","import nrvideo from '@newrelic/video-core'\nimport VideojsAdsTracker from './videojs-ads'\n\nexport default class BrightcoveImaAdsTracker extends VideojsAdsTracker {\n static isUsing (player) {\n return !!player.ima3\n }\n\n getTrackerName () {\n return 'brightcove-ima-ads'\n }\n\n getPlayerName () {\n return 'brightcove-ima-ads'\n }\n\n getPlayhead () {\n return this.player?.ima3?.adPlayer?.currentTime()\n }\n\n registerListeners () {\n nrvideo.Log.debugCommonVideoEvents(this.player, [\n null,\n 'ima3-ready',\n 'ima3error',\n 'ima3-ad-error',\n 'ima3-started',\n 'ima3-complete',\n 'ima3-paused',\n 'ima3-resumed',\n 'ads-request',\n 'ads-load',\n 'ads-ad-started',\n 'ads-ad-ended',\n 'ads-pause',\n 'ads-play',\n 'ads-click',\n 'ads-pod-started',\n 'ads-pod-ended',\n 'ads-allpods-completed'\n ])\n\n this.player.on('ima3-started', this.onStarted.bind(this))\n this.player.on('ima3-paused', this.onPaused.bind(this))\n this.player.on('ima3-resumed', this.onResume.bind(this))\n this.player.on('ima3-complete', this.onComplete.bind(this))\n this.player.on('ima3-skipped', this.onSkipped.bind(this))\n this.player.on('adserror', this.onError.bind(this))\n this.player.on('ads-click', this.onClick.bind(this))\n }\n\n unregisterListeners () {\n this.player.off('ima3-started', this.onStarted)\n this.player.off('ima3-paused', this.onPaused)\n this.player.off('ima3-resumed', this.onResume)\n this.player.off('ima3-complete', this.onComplete)\n this.player.off('ima3-skipped', this.onSkipped)\n this.player.off('adserror', this.onError)\n this.player.off('ads-click', this.onClick)\n }\n\n onStarted (e) {\n this.sendRequest()\n this.sendStart()\n }\n\n onPaused (e) {\n this.sendPause()\n }\n\n onResume (e) {\n this.sendResume()\n }\n\n onComplete (e) {\n this.sendEnd()\n }\n\n onSkipped (e) {\n this.sendEnd({ skipped: true })\n }\n\n onError (e) {\n this.sendError()\n }\n\n onClick (e) {\n this.sendClick()\n }\n}\n","/* global google */\nimport nrvideo from '@newrelic/video-core';\nimport VideojsAdsTracker from './videojs-ads';\n\nconst daiEvents = {\n // Stream Events\n DAI_STREAM_INITIALIZED: 'dai-stream-initialized',\n DAI_STREAM_LOADED: 'dai-stream-loaded',\n DAI_STREAM_ERROR: 'dai-stream-error',\n\n // Ad Events\n DAI_AD_BREAK_STARTED: 'dai-ad-break-started',\n DAI_AD_BREAK_ENDED: 'dai-ad-break-ended',\n DAI_AD_PERIOD_STARTED: 'dai-ad-period-started',\n DAI_AD_PERIOD_ENDED: 'dai-ad-period-ended',\n DAI_AD_STARTED: 'dai-ad-started',\n DAI_AD_FIRST_QUARTILE: 'dai-ad-first-quartile',\n DAI_AD_MIDPOINT: 'dai-ad-midpoint',\n DAI_AD_THIRD_QUARTILE: 'dai-ad-third-quartile',\n DAI_AD_COMPLETE: 'dai-ad-complete',\n DAI_AD_SKIPPED: 'dai-ad-skipped',\n DAI_AD_PAUSED: 'dai-ad-paused',\n DAI_AD_RESUMED: 'dai-ad-resumed',\n DAI_AD_CLICKED: 'dai-ad-clicked',\n DAI_AD_ERROR: 'dai-ad-error',\n\n // Cue Point Events\n DAI_CUEPOINTS_CHANGED: 'dai-cuepoints-changed',\n\n // Timed Metadata Events\n DAI_TIMED_METADATA: 'dai-timed-metadata',\n};\n\nexport default class DaiAdsTracker extends VideojsAdsTracker {\n static isUsing(player) {\n // Check for DAI plugin or imaDai method\n return (\n (player.imaDai && typeof player.imaDai === 'function') ||\n (player.dai && typeof player.dai.VERSION !== 'undefined') ||\n (player.ima && player.ima.dai) ||\n player.streamManager\n );\n }\n\n constructor(player) {\n super(player);\n this.streamManager = null;\n this.currentAdData = null;\n this.adBreakData = null;\n this.streamData = null;\n this.cuePoints = [];\n this.initialized = false;\n this.eventHandlers = null;\n }\n\n setStreamManager(streamManager) {\n this.streamManager = streamManager;\n this.setupStreamManagerListeners();\n this.initialized = true;\n nrvideo.Log.debug(\n 'DaiAdsTracker: StreamManager set and listeners registered'\n );\n }\n\n setupStreamManagerListeners() {\n if (!this.streamManager || !google?.ima?.dai?.api?.StreamEvent) {\n nrvideo.Log.warn('DaiAdsTracker: StreamManager or DAI API not available');\n return;\n }\n\n const StreamEvent = google.ima.dai.api.StreamEvent.Type;\n\n // Create the event handler mapping\n this.eventHandlers = {\n // Stream Events\n [StreamEvent.LOADED]: this.onStreamLoaded.bind(this),\n [StreamEvent.STREAM_INITIALIZED]: this.onStreamInitialized.bind(this),\n [StreamEvent.ERROR]: this.onStreamError.bind(this),\n\n // Ad Break Events\n [StreamEvent.AD_BREAK_STARTED]: this.onAdBreakStarted.bind(this),\n [StreamEvent.AD_BREAK_ENDED]: this.onAdBreakEnded.bind(this),\n\n // Ad Period Events\n [StreamEvent.AD_PERIOD_STARTED]: this.onAdPeriodStarted.bind(this),\n [StreamEvent.AD_PERIOD_ENDED]: this.onAdPeriodEnded.bind(this),\n\n // Individual Ad Events\n [StreamEvent.STARTED]: this.onAdStarted.bind(this),\n [StreamEvent.FIRST_QUARTILE]: this.onAdFirstQuartile.bind(this),\n [StreamEvent.MIDPOINT]: this.onAdMidpoint.bind(this),\n [StreamEvent.THIRD_QUARTILE]: this.onAdThirdQuartile.bind(this),\n [StreamEvent.COMPLETE]: this.onAdComplete.bind(this),\n [StreamEvent.SKIPPED]: this.onAdSkipped.bind(this),\n [StreamEvent.PAUSED]: this.onAdPaused.bind(this),\n [StreamEvent.RESUMED]: this.onAdResumed.bind(this),\n [StreamEvent.CLICK]: this.onAdClicked.bind(this),\n [StreamEvent.VIDEO_CLICKED]: this.onAdClicked.bind(this),\n\n // Cue Points and Metadata Events\n [StreamEvent.CUEPOINTS_CHANGED]: this.onCuePointsChanged.bind(this),\n [StreamEvent.TIMED_METADATA]: this.onTimedMetadata.bind(this),\n };\n\n // Register all event listeners using the mapping\n Object.entries(this.eventHandlers).forEach(([eventType, handler]) => {\n this.streamManager.addEventListener(eventType, handler);\n });\n\n nrvideo.Log.debug('DaiAdsTracker: StreamManager listeners registered');\n }\n\n registerListeners() {\n // Call parent to register basic videojs-ads events\n super.registerListeners();\n\n nrvideo.Log.debugCommonVideoEvents(this.player, [\n null,\n Object.values(daiEvents),\n ]);\n }\n\n unregisterListeners() {\n // Call parent cleanup\n super.unregisterListeners();\n\n // Clean up StreamManager listeners using the same mapping\n if (this.streamManager && this.eventHandlers) {\n Object.entries(this.eventHandlers).forEach(([eventType, handler]) => {\n this.streamManager.removeEventListener(eventType, handler);\n });\n }\n\n // Reset state\n this.streamManager = null;\n this.currentAdData = null;\n this.adBreakData = null;\n this.streamData = null;\n this.cuePoints = [];\n this.initialized = false;\n this.eventHandlers = null;\n }\n\n // Stream Event Handlers\n onStreamLoaded(event) {\n this.streamData = this.extractStreamData(event);\n nrvideo.Log.debug('DaiAdsTracker: Stream loaded', this.streamData);\n this.sendRequest();\n }\n\n onStreamInitialized(event) {\n nrvideo.Log.debug('DaiAdsTracker: Stream initialized');\n this.sendDownload({ state: 'stream-initialized' });\n }\n\n onStreamError(event) {\n const errorData = this.extractErrorData(event);\n nrvideo.Log.error('DaiAdsTracker: Stream error', errorData);\n this.sendError(errorData);\n }\n\n // Ad Break Event Handlers\n onAdBreakStarted(event) {\n this.adBreakData = this.extractAdBreakData(event);\n nrvideo.Log.debug('DaiAdsTracker: Ad break started', this.adBreakData);\n this.sendAdBreakStart(this.adBreakData);\n }\n\n onAdBreakEnded(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad break ended');\n this.sendAdBreakEnd();\n this.adBreakData = null;\n }\n\n // Ad Period Event Handlers (for bumpers, etc.)\n onAdPeriodStarted(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad period started');\n // Track as ad break start if no current break\n if (!this.adBreakData) {\n this.onAdBreakStarted(event);\n }\n }\n\n onAdPeriodEnded(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad period ended');\n // Don't end the break here as there might be more ads\n }\n\n // Individual Ad Event Handlers\n onAdStarted(event) {\n this.currentAdData = this.extractAdData(event);\n nrvideo.Log.debug('DaiAdsTracker: Ad started', this.currentAdData);\n this.sendStart();\n }\n\n onAdFirstQuartile(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad first quartile');\n this.sendAdQuartile({ quartile: 1 });\n }\n\n onAdMidpoint(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad midpoint');\n this.sendAdQuartile({ quartile: 2 });\n }\n\n onAdThirdQuartile(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad third quartile');\n this.sendAdQuartile({ quartile: 3 });\n }\n\n onAdComplete(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad complete');\n this.sendEnd();\n this.currentAdData = null;\n }\n\n onAdSkipped(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad skipped');\n this.sendEnd({ skipped: true });\n this.currentAdData = null;\n }\n\n onAdPaused(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad paused');\n this.sendPause();\n }\n\n onAdResumed(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad resumed');\n this.sendResume();\n }\n\n onAdClicked(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad clicked');\n this.sendAdClick({ url: this.getClickThroughUrl() });\n }\n\n // Cue Points Handler\n onCuePointsChanged(event) {\n this.cuePoints = this.extractCuePoints(event);\n nrvideo.Log.debug('DaiAdsTracker: Cue points changed', this.cuePoints);\n }\n\n // Timed Metadata Handler\n onTimedMetadata(event) {\n const metadata = this.extractTimedMetadata(event);\n nrvideo.Log.debug('DaiAdsTracker: Timed metadata', metadata);\n }\n\n // Data Extraction Methods\n extractStreamData(event) {\n try {\n const streamData = event.getStreamData();\n return {\n streamId: streamData?.streamId,\n url: streamData?.url,\n adTagParameters: streamData?.adTagParameters,\n streamType: this.getStreamType(),\n };\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract stream data', error);\n return {};\n }\n }\n\n extractAdBreakData(event) {\n try {\n const adBreakData = event.getAdBreak();\n return {\n adBreakId: adBreakData?.id,\n adBreakTitle: adBreakData?.title,\n adCount: adBreakData?.ads?.length || 0,\n position: this.getAdPosition(),\n };\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract ad break data', error);\n return {};\n }\n }\n\n extractAdData(event) {\n try {\n const ad = event.getAd();\n return {\n adId: ad?.getAdId(),\n creativeId: ad?.getCreativeId(),\n duration: ad?.getDuration(),\n title: ad?.getTitle(),\n description: ad?.getDescription(),\n advertiserName: ad?.getAdvertiserName(),\n clickThroughUrl: ad?.getClickThroughUrl(),\n dealId: ad?.getDealId(),\n wrapperAdIds: ad?.getWrapperAdIds(),\n position: this.getAdPosition(),\n };\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract ad data', error);\n return {};\n }\n }\n\n extractErrorData(event) {\n try {\n const error = event.getError();\n return {\n errorCode: error?.getErrorCode(),\n errorMessage: error?.getMessage(),\n innerError: error?.getInnerError(),\n };\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract error data', error);\n return { errorMessage: 'Unknown DAI error' };\n }\n }\n\n extractCuePoints(event) {\n try {\n return event.getCuepoints() || [];\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract cue points', error);\n return [];\n }\n }\n\n extractTimedMetadata(event) {\n try {\n return {\n type: event.getType(),\n data: event.getData(),\n };\n } catch (error) {\n nrvideo.Log.warn(\n 'DaiAdsTracker: Failed to extract timed metadata',\n error\n );\n return {};\n }\n }\n\n // Override parent methods for DAI-specific implementations\n getTrackerName() {\n return 'dai-ads';\n }\n\n getPlayerName() {\n return 'videojs-dai';\n }\n\n getPlayerVersion() {\n if (this.player.dai?.VERSION) {\n return this.player.dai.VERSION;\n }\n if (this.player.ima?.VERSION) {\n return `ima-dai: ${this.player.ima.VERSION}`;\n }\n return 'unknown';\n }\n\n getAdCuePoints() {\n return this.cuePoints;\n }\n\n getAdPosition() {\n if (!this.currentAdData && !this.adBreakData) return null;\n\n // Try to determine position from current playback time\n const currentTime = this.player.currentTime();\n const duration = this.player.duration();\n\n if (currentTime < 5) {\n return 'pre';\n } else if (duration && currentTime > duration - 10) {\n return 'post';\n } else {\n return 'mid';\n }\n }\n\n getDuration() {\n if (this.currentAdData?.duration !== undefined) {\n return this.currentAdData.duration * 1000; // Convert to milliseconds\n }\n return null;\n }\n\n getVideoId() {\n return this.currentAdData?.adId || null;\n }\n\n getAdCreativeId() {\n return this.currentAdData?.creativeId || null;\n }\n\n getTitle() {\n return this.currentAdData?.title || null;\n }\n\n getSrc() {\n return this.streamData?.url || null;\n }\n\n getPlayhead() {\n if (this.streamManager) {\n try {\n const streamTime = this.streamManager.getStreamTime();\n return streamTime * 1000; // Convert to milliseconds\n } catch (error) {\n // Fallback to player current time\n return this.player.currentTime() * 1000;\n }\n }\n return this.player.currentTime() * 1000;\n }\n\n getAdPartner() {\n return 'google-dai';\n }\n\n getClickThroughUrl() {\n return this.currentAdData?.clickThroughUrl || null;\n }\n\n getStreamType() {\n // Determine if this is VOD or Live\n if (this.streamData?.streamType) {\n return this.streamData.streamType;\n }\n // Try to infer from player\n const duration = this.player.duration();\n return duration === Infinity ? 'live' : 'vod';\n }\n\n // Additional helper methods\n isLiveStream() {\n return this.getStreamType() === 'live';\n }\n\n getCurrentAdBreak() {\n return this.adBreakData;\n }\n\n getCurrentAd() {\n return this.currentAdData;\n }\n\n getStreamData() {\n return this.streamData;\n }\n\n getBitrate() {\n const tech = this.getTech()\n if (tech && tech.tech && tech.tech.stats && tech.tech.stats.bandwidth) {\n return Math.round(tech.tech.stats.bandwidth);\n }\n return null;\n }\n\n getRenditionBitrate() {\n const tech = this.getTech();\n if (tech && tech.getRenditionBitrate) {\n const bitrate = tech.getRenditionBitrate();\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n return null;\n }\n}\n","import VideojsAdsTracker from './videojs-ads'\n\nexport default class FreewheelAdsTracker extends VideojsAdsTracker {\n static isUsing (player) {\n return !!player.FreeWheelPlugin && typeof tv !== 'undefined' && tv.freewheel\n }\n\n getTrackerName () {\n return 'freewheel-ads'\n }\n\n getPlayerName () {\n return 'freewheel-ads'\n }\n\n getPlayerVersion () {\n return this.player.FreeWheelPlugin.VERSION\n }\n\n getPlayhead () {\n if (this.player.ads.ad.currentTime) {\n return this.player.ads.ad.currentTime() * 1000\n }\n }\n\n getDuration () {\n if (this.player.ads.ad.duration) {\n return this.player.ads.ad.duration * 1000\n }\n }\n\n getVideoId () {\n return this.player.ads.ad.id\n }\n\n getAdPartner () {\n return 'freewheel'\n }\n\n getAdCreativeId () {\n try {\n return this.player.ads.provider.event.adInstance.getActiveCreativeRendition().getId()\n } catch (err) { /* do nothing */ }\n }\n\n getSrc () {\n try {\n let acr = this.player.ads.provider.event.adInstance.getActiveCreativeRendition()\n return acr.getPrimaryCreativeRenditionAsset().getUrl()\n } catch (err) { /* do nothing */ }\n }\n\n getTitle () {\n try {\n let acr = this.player.ads.provider.event.adInstance.getActiveCreativeRendition()\n return acr.getPrimaryCreativeRenditionAsset().getName()\n } catch (err) { /* do nothing */ }\n }\n\n getAdPosition () {\n switch (this.player.ads.ad.type) {\n case 'PREROLL':\n return nrvideo.Constants.AdPositions.PRE\n case 'MIDROLL':\n return nrvideo.Constants.AdPositions.MID\n case 'POSTROLL':\n return nrvideo.Constants.AdPositions.POST\n }\n }\n}\n","/* global google */\nimport nrvideo from '@newrelic/video-core';\nimport VideojsAdsTracker from './videojs-ads';\n\nexport default class ImaAdsTracker extends VideojsAdsTracker {\n static isUsing(player) {\n return player.ima && typeof google !== 'undefined';\n }\n\n getTrackerName() {\n return 'ima-ads';\n }\n\n getPlayerName() {\n return 'ima';\n }\n\n getPlayerVersion() {\n return (\n 'ima: ' + google.ima.VERSION + '; contrib-ads: ' + this.player.ads.VERSION\n );\n }\n\n getCuePoints() {\n return this.player.ima.getAdsManager().getCuePoints();\n }\n\n getAdPosition() {\n if (\n this.lastAdData &&\n this.lastAdData.podInfo &&\n this.lastAdData.podInfo.podIndex !== undefined\n ) {\n const podIndex = this.lastAdData.podInfo.podIndex;\n\n if (podIndex === 0) {\n return 'pre';\n } else if (podIndex === -1) {\n return 'post';\n } else {\n return 'mid';\n }\n }\n return null;\n }\n\n getDuration() {\n if (this.lastAdData && this.lastAdData.duration !== undefined) {\n return this.lastAdData.duration * 1000;\n }\n return null;\n }\n\n getVideoId() {\n if (this.lastAdData && this.lastAdData.adId) {\n return this.lastAdData.adId;\n }\n return null;\n }\n\n getAdCreativeId() {\n if (this.lastAdData && this.lastAdData.creativeId) {\n return this.lastAdData.creativeId;\n }\n return null;\n }\n\n getSrc() {\n if (this.lastAdData && this.lastAdData.mediaUrl) {\n return this.lastAdData.mediaUrl;\n }\n return null;\n }\n\n getTitle() {\n if (this.lastAdData && this.lastAdData.title) {\n return this.lastAdData.title;\n }\n return null;\n }\n\n getPlayhead() {\n let manager = this.player.ima.getAdsManager();\n if (manager) {\n return (this.getDuration() - manager.getRemainingTime()) * 1000;\n }\n }\n\n getPlayrate() {\n return this.player.playbackRate();\n }\n\n getAdPartner() {\n return 'ima';\n }\n\n getWebkitBitrate() {\n const adVideoElement = this.getAdVideoElement();\n if (adVideoElement && adVideoElement.webkitVideoDecodedByteCount) {\n let bitrate;\n if (this._lastAdWebkitBitrate > 0) {\n const current = adVideoElement.webkitVideoDecodedByteCount;\n const delta = current - this._lastAdWebkitBitrate;\n const seconds = this.getHeartbeat() / 1000;\n bitrate = Math.round((delta / seconds) * 8);\n }\n \n this._lastAdWebkitBitrate = adVideoElement.webkitVideoDecodedByteCount;\n return bitrate ?? null;\n }\n return null;\n }\n\n getRenditionBitrate() {\n if (this.lastAdData && this.lastAdData.renditionBitrate) {\n return Math.round(this.lastAdData.renditionBitrate);\n }\n return null;\n }\n\n registerListeners() {\n // Shortcut events\n let e = google.ima.AdEvent.Type;\n let AD_ERROR = google.ima.AdErrorEvent.Type.AD_ERROR;\n\n //store ad data\n this.lastAdData = null;\n // debug\n nrvideo.Log.debugCommonVideoEvents(this.player.ima.addEventListener, [\n null,\n e.ALL_ADS_COMPLETED,\n e.LINEAR_CHANGED,\n e.COMPLETE,\n e.USER_CLOSE,\n e.IMPRESSION,\n e.CONTENT_PAUSE_REQUESTED,\n e.CONTENT_RESUME_REQUESTED,\n e.SKIPPED,\n e.SKIPPABLE_STATE_CHANGED,\n e.LOADED,\n e.PAUSED,\n e.RESUMED,\n e.STARTED,\n e.AD_CAN_PLAY,\n e.AD_METADATA,\n e.EXPANDED_CHANGED,\n e.AD_BREAK_READY,\n e.LOG,\n e.CLICK,\n e.FIRST_QUARTILE,\n e.MIDPOINT,\n e.THIRD_QUARTILE,\n AD_ERROR,\n ]);\n\n // Register listeners\n this.player.ima.addEventListener(e.LOADED, this.onLoaded.bind(this));\n this.player.ima.addEventListener(e.STARTED, this.onStart.bind(this));\n this.player.ima.addEventListener(e.PAUSED, this.onPaused.bind(this));\n this.player.ima.addEventListener(e.RESUMED, this.onResumed.bind(this));\n this.player.ima.addEventListener(e.COMPLETE, this.onComplete.bind(this));\n this.player.ima.addEventListener(e.SKIPPED, this.onSkipped.bind(this));\n this.player.ima.addEventListener(e.CLICK, this.onClick.bind(this));\n this.player.ima.addEventListener(\n e.FIRST_QUARTILE,\n this.onFirstQuartile.bind(this)\n );\n this.player.ima.addEventListener(e.MIDPOINT, this.onMidpoint.bind(this));\n this.player.ima.addEventListener(\n e.THIRD_QUARTILE,\n this.onThirdQuartile.bind(this)\n );\n this.player.ima.addEventListener(AD_ERROR, this.onError.bind(this));\n }\n\n unregisterListeners() {\n // Shortcut events\n let e = google.ima.AdEvent.Type;\n let AD_ERROR = google.ima.AdErrorEvent.Type.AD_ERROR;\n\n // unregister listeners\n this.player.ima.removeEventListener(e.LOADED, this.onLoaded);\n this.player.ima.removeEventListener(e.STARTED, this.onLoaded.bind(this));\n this.player.ima.removeEventListener(e.IMPRESSION, this.onImpression);\n this.player.ima.removeEventListener(e.PAUSED, this.onPaused);\n this.player.ima.removeEventListener(e.RESUMED, this.onResumed);\n this.player.ima.removeEventListener(e.COMPLETE, this.onComplete);\n this.player.ima.removeEventListener(e.SKIPPED, this.onSkipped);\n this.player.ima.removeEventListener(e.CLICK, this.onClick);\n this.player.ima.removeEventListener(e.FIRST_QUARTILE, this.onFirstQuartile);\n this.player.ima.removeEventListener(e.MIDPOINT, this.onMidpoint);\n this.player.ima.removeEventListener(e.THIRD_QUARTILE, this.onThirdQuartile);\n this.player.ima.removeEventListener(AD_ERROR, this.onError);\n //clear ad data\n this.lastAdData = null;\n }\n\n onLoaded(e) {\n this.lastAdData = this.getAdData();\n this.sendRequest();\n }\n\n onStart(e) {\n this.lastAdData = this.getAdData();\n this._lastAdWebkitBitrate = 0;\n this.sendStart();\n }\n\n onComplete(e) {\n this.sendEnd();\n this.lastAdData = null; // Clear the data\n }\n\n onSkipped(e) {\n this.sendEnd({ skipped: true });\n this.lastAdData = null; // Clear the data\n }\n\n onError(e) {\n const adError = e.getError();\n\n const errorCode = adError.getErrorCode();\n const errorMessage = adError.getMessage();\n this.sendError({ adError, errorCode, errorMessage });\n }\n\n onClick(e) {\n this.sendAdClick();\n }\n\n onFirstQuartile() {\n this.sendAdQuartile({ adQuartile: 1 });\n }\n\n onMidpoint() {\n this.sendAdQuartile({ adQuartile: 2 });\n }\n\n onThirdQuartile() {\n this.sendAdQuartile({ adQuartile: 3 });\n }\n\n onPaused() {\n this.sendPause();\n }\n\n onResumed() {\n this.sendResume();\n }\n\n getAdData() {\n try {\n const adsManager = this.player.ima.getAdsManager();\n if (adsManager) {\n const currentAd = adsManager.getCurrentAd();\n if (currentAd) {\n return {\n adId: currentAd.getAdId(),\n creativeId: currentAd.getCreativeId(),\n duration: currentAd.getDuration(),\n mediaUrl: currentAd.getMediaUrl(),\n title: currentAd.getTitle(),\n podInfo: currentAd.getAdPodInfo()?.data,\n renditionBitrate: currentAd.getVastMediaBitrate(),\n // Add other properties as needed\n };\n }\n }\n return null;\n } catch (err) {\n return null;\n }\n }\n\n getAdVideoElement() {\n if (this.player.ima && this.player.ima.controller && this.player.ima.controller.adUi) {\n const adContainerDiv = this.player.ima.controller.adUi.adContainerDiv;\n if (adContainerDiv) {\n const adVideoElement = adContainerDiv.querySelector('video');\n if (adVideoElement) {\n return adVideoElement;\n }\n }\n }\n }\n}\n","/* eslint-disable no-undef */\nimport nrvideo from '@newrelic/video-core';\nimport VideojsAdsTracker from './videojs-ads';\nimport {\n DEFAULT_LIVE_POLL_INTERVAL_MS,\n HLS_MIME_TYPE,\n MEDIATAILOR_HOST_MARKER,\n SCTE35_SCHEME_MARKER,\n TRACKING_API_TIMEOUT_MS,\n STREAM_TYPE,\n MANIFEST_TYPE,\n} from './utils/mt-constants.js';\nimport {\n getTimestamp,\n detectManifestFormatFromUrl,\n detectPlaybackStreamType,\n buildTrackingEndpointUrl,\n determineAdPosition,\n getQuartilesToFire,\n findActiveAdBreak,\n findActivePod,\n mergeAdSchedules,\n parseHlsManifestForAdBreaks,\n parseDashManifestForAdBreaks,\n detectAdBreaksFromVhsPlaylist,\n whichAdSegmentMarker,\n enrichAdScheduleWithTrackingMetadata,\n extractHlsTargetDurationSeconds,\n extractDashMinimumUpdatePeriodSeconds,\n fetchHlsMasterManifest,\n fetchHlsMediaPlaylist,\n fetchDashManifest,\n getTrackingMetadata,\n} from './utils/mt.js';\n\n// Handle both direct and default export from video-core\nconst nrvideoCore = nrvideo.default || nrvideo;\nconst Log = nrvideoCore.Log;\n\n/**\n * AWS MediaTailor Ad Tracker\n * Tracks ads from AWS MediaTailor SSAI streams (HLS/DASH)\n *\n * Features:\n * - Client-side ad detection from manifest markers (CUE-OUT/CUE-IN)\n * - Pod-level tracking (multiple ads within one break)\n * - VOD and Live stream support\n * - Zero race conditions via VHS player hooks\n * - Tracking API metadata enrichment\n */\nexport default class MediaTailorAdsTracker extends VideojsAdsTracker {\n /**\n * Checks if tracker should be used for this player source\n */\n static isUsing(player, options = {}) {\n // Opt-in flag is the single source of truth.\n // Accepts { mediatailor: true } or { mediatailor: { trackingUrl, adSegmentPrefix } }.\n return Boolean(options && options.mediatailor);\n }\n\n /**\n * Returns tracker name for New Relic instrumentation\n */\n getTrackerName() {\n return 'aws-media-tailor';\n }\n\n /**\n * Returns player version (MediaTailor doesn't have version)\n */\n getPlayerVersion() {\n return 'MediaTailor';\n }\n\n /**\n * Override to return the correct ad position from our ad schedule\n * This overrides video-core's default logic which only checks if content started\n */\n getAdPosition() {\n if (this.currentAdBreak && this.currentAdBreak.adPosition) {\n return this.currentAdBreak.adPosition;\n }\n return super.getAdPosition();\n }\n\n constructor(player, options = {}) {\n super(player);\n\n // Normalize mediatailor option: true | { trackingUrl, adSegmentPrefix } | undefined\n const mtOptions =\n options.mediatailor === true ? {} : options.mediatailor || {};\n\n // Initialize state\n this.streamType = null; // 'vod' or 'live'\n this.manifestFormat = null; // 'hls' or 'dash'\n this.playbackManifestUrl = player.currentSrc();\n\n // trackingUrl: optional override for the MediaTailor tracking endpoint.\n // When not provided, the tracker derives it automatically from the playback URL.\n this.explicitTrackingUrl = mtOptions.trackingUrl || null;\n\n // adSegmentPrefix: only needed when the customer configured a CDN ad-segment\n // prefix in AWS MediaTailor that does NOT follow the AWS-recommended /tm/ path.\n // Most setups (default AWS hostname or CDN following AWS conventions) are\n // detected automatically via MT_DEFAULT_AD_SEGMENT_PATH ('/tm/') and do not\n // need this override.\n this.adSegmentPrefix = mtOptions.adSegmentPrefix || null;\n\n if (this.adSegmentPrefix) {\n Log.debug(`[MT] ad segment detection: custom prefix \"${this.adSegmentPrefix}\"`);\n } else {\n Log.debug('[MT] ad segment detection: default (segments.mediatailor hostname or /tm/ path)');\n }\n\n // Ad tracking state\n this.adSchedule = [];\n this.currentAdBreak = null;\n this.currentAdPod = null;\n this.hasEndedContent = false;\n\n // Disposal and abort state\n this.isDisposed = false;\n this.trackingAbortController = null;\n this.manifestAbortController = null;\n this.isFetchingTracking = false;\n this.isFetchingManifest = false;\n\n // Tracking API state\n this.trackingEndpointUrl = null;\n this.hasAttemptedTrackingFetch = false;\n this.trackingFetchRetries = 0;\n this.maxTrackingRetries = 1;\n\n // Live polling timers\n this.manifestPollTimer = null;\n this.trackingPollTimer = null;\n this.liveRefreshIntervalSeconds = null;\n\n // Manifest parsing cache\n this.mediaPlaylistUrl = null;\n this.lastMediaPlaylistText = null;\n\n Log.debug(`[MT - ${getTimestamp()}] MediaTailorAdsTracker initialized`, {\n endpoint: this.playbackManifestUrl,\n trackingAPITimeout: TRACKING_API_TIMEOUT_MS,\n });\n\n this.manifestFormat = detectManifestFormatFromUrl(this.playbackManifestUrl);\n Log.debug(\n `[MT - ${getTimestamp()}] Manifest type: ${this.manifestFormat.toUpperCase()}`,\n );\n\n this.player.one('loadedmetadata', () => {\n this.streamType = detectPlaybackStreamType(this.player.duration());\n Log.debug(\n `[MT - ${getTimestamp()}] Stream type: ${this.streamType.toUpperCase()}`,\n );\n this.initializeTracking();\n });\n }\n\n /**\n * Initializes tracking based on detected stream type\n */\n initializeTracking() {\n Log.debug(\n `[MT - ${getTimestamp()}] Initializing ${this.manifestFormat.toUpperCase()} ${this.streamType.toUpperCase()} tracking`,\n );\n\n // Prefer explicit tracking URL (explicit POST session) over derived one\n this.trackingEndpointUrl =\n this.explicitTrackingUrl ||\n buildTrackingEndpointUrl(this.playbackManifestUrl);\n if (this.trackingEndpointUrl) {\n Log.debug(\n `[MT - ${getTimestamp()}] Tracking URL extracted:`,\n this.trackingEndpointUrl,\n );\n } else {\n Log.warn(\n `[MT - ${getTimestamp()}] Could not derive tracking URL from playback URL — pass trackingUrl in mediatailor options if needed`,\n );\n }\n\n // Set up format-specific tracking\n if (this.streamType === STREAM_TYPE.VOD) {\n this.setupVODTracking();\n } else {\n this.setupLiveTracking();\n }\n }\n\n /**\n * Register listeners (overrides parent class method)\n */\n registerListeners() {\n super.registerListeners();\n\n // Bind before registering — super(player) calls registerListeners() before\n // the constructor body runs, so bindings must happen here, not in the constructor.\n this.onPause = this.onPause.bind(this);\n this.onPlaying = this.onPlaying.bind(this);\n this.onSeeking = this.onSeeking.bind(this);\n this.onSeeked = this.onSeeked.bind(this);\n this.onWaiting = this.onWaiting.bind(this);\n this.onEnded = this.onEnded.bind(this);\n this.onTimeUpdate = this.onTimeUpdate.bind(this);\n\n this.player.on('pause', this.onPause);\n this.player.on('playing', this.onPlaying);\n this.player.on('seeking', this.onSeeking);\n this.player.on('seeked', this.onSeeked);\n this.player.on('waiting', this.onWaiting);\n this.player.on('ended', this.onEnded);\n this.player.on('timeupdate', this.onTimeUpdate);\n Log.debug(`[MT - ${getTimestamp()}] Event listeners registered`);\n }\n\n /**\n * Unregister listeners (overrides parent class method)\n */\n unregisterListeners() {\n super.unregisterListeners();\n this.player.off('pause', this.onPause);\n this.player.off('playing', this.onPlaying);\n this.player.off('seeking', this.onSeeking);\n this.player.off('seeked', this.onSeeked);\n this.player.off('waiting', this.onWaiting);\n this.player.off('ended', this.onEnded);\n this.player.off('timeupdate', this.onTimeUpdate);\n this.stopLivePolling();\n }\n\n /**\n * Stops live polling timers\n */\n stopLivePolling() {\n if (this.manifestPollTimer) {\n clearTimeout(this.manifestPollTimer);\n this.manifestPollTimer = null;\n }\n\n if (this.trackingPollTimer) {\n clearInterval(this.trackingPollTimer);\n this.trackingPollTimer = null;\n }\n }\n\n /**\n * Sets up VOD tracking (single parse, no polling)\n */\n setupVODTracking() {\n Log.debug(`[MT - ${getTimestamp()}] VOD mode: Single manifest parse`);\n this.hookPlayerManifest();\n }\n\n /**\n * Sets up Live tracking (continuous polling)\n */\n setupLiveTracking() {\n Log.debug(`[MT - ${getTimestamp()}] Live mode: Continuous polling`);\n this.hookPlayerManifest();\n\n const pollingInterval = this.getLiveRefreshIntervalMs();\n\n // Start polling timers\n this.manifestPollTimer = setInterval(() => {\n this.pollManifestForNewAds();\n }, pollingInterval);\n\n this.trackingPollTimer = setInterval(() => {\n this.getAndProcessTrackingMetadata();\n }, pollingInterval);\n\n Log.debug(`[MT - ${getTimestamp()}] Live polling started`, {\n pollingInterval,\n });\n }\n\n /**\n * Returns the live polling interval in milliseconds\n */\n getLiveRefreshIntervalMs() {\n return this.liveRefreshIntervalSeconds\n ? this.liveRefreshIntervalSeconds * 1000\n : DEFAULT_LIVE_POLL_INTERVAL_MS;\n }\n\n /**\n * Updates live polling intervals after manifest metadata is detected\n */\n restartLivePollingTimers() {\n if (!this.liveRefreshIntervalSeconds) return;\n\n const newInterval = this.getLiveRefreshIntervalMs();\n Log.debug(\n `[MT - ${getTimestamp()}] Updating live polling interval: ${this.liveRefreshIntervalSeconds}s`,\n );\n\n // Restart timers with new interval\n if (this.manifestPollTimer) clearInterval(this.manifestPollTimer);\n if (this.trackingPollTimer) clearInterval(this.trackingPollTimer);\n\n this.manifestPollTimer = setInterval(() => {\n this.pollManifestForNewAds();\n }, newInterval);\n\n this.trackingPollTimer = setInterval(() => {\n this.getAndProcessTrackingMetadata();\n }, newInterval);\n }\n\n /**\n * Hooks into player's manifest loading (zero race condition)\n * Supports: VHS, Native HLS, contrib-hls, Shaka, dash.js\n */\n hookPlayerManifest() {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n if (!tech) {\n Log.debug(`[MT - ${getTimestamp()}] No tech - using fallback fetch`);\n this.getManifestDirectly();\n return;\n }\n\n // Try hooks in order of preference\n if (this.manifestFormat === MANIFEST_TYPE.HLS) {\n if (\n this.hookHLSViaVHS(tech) ||\n this.hookHLSViaNative(tech) ||\n this.hookHLSViaContribHls(tech)\n ) {\n return; // Successfully hooked\n }\n } else if (this.manifestFormat === MANIFEST_TYPE.DASH) {\n if (this.hookDASHViaShaka(tech) || this.hookDASHViaDashJs(tech)) {\n return; // Successfully hooked\n }\n }\n\n // Fallback: Direct manifest fetch\n Log.debug(\n `[MT - ${getTimestamp()}] Using fallback: direct manifest fetch`,\n );\n this.getManifestDirectly();\n }\n\n /**\n * Hook: VHS (videojs-http-streaming) - Video.js 7.0+\n */\n hookHLSViaVHS(tech) {\n if (!tech.vhs || !tech.vhs.playlists) return false;\n\n Log.debug(`[MT - ${getTimestamp()}] Hooked: VHS`);\n\n // Parse already-loaded playlist\n const currentPlaylist = tech.vhs.playlists.media();\n if (\n currentPlaylist &&\n currentPlaylist.segments &&\n currentPlaylist.segments.length > 0\n ) {\n Log.debug(`[MT - ${getTimestamp()}] Parsing existing playlist`);\n this.parseVhsPlaylistForAdBreaks(currentPlaylist);\n }\n\n // Hook future playlist loads\n tech.vhs.on('loadedplaylist', () => {\n const playlist = tech.vhs.playlists.media();\n if (playlist) {\n this.parseVhsPlaylistForAdBreaks(playlist);\n }\n });\n\n return true;\n }\n\n /**\n * Hook: Native HLS (Safari)\n */\n hookHLSViaNative(tech) {\n // Safari uses native HLS - can't hook directly\n if (\n tech.el_ &&\n tech.el_.canPlayType &&\n tech.el_.canPlayType(HLS_MIME_TYPE)\n ) {\n Log.debug(\n `[MT - ${getTimestamp()}] Native HLS detected - using fallback`,\n );\n this.getManifestDirectly();\n return true;\n }\n return false;\n }\n\n /**\n * Hook: videojs-contrib-hls (legacy Video.js 5.x/6.x)\n */\n hookHLSViaContribHls(tech) {\n if (!tech.hls || !tech.hls.playlists) return false;\n\n Log.debug(`[MT - ${getTimestamp()}] Hooked: contrib-hls (legacy)`);\n\n // Parse already-loaded playlist\n const currentPlaylist = tech.hls.playlists.media();\n if (\n currentPlaylist &&\n currentPlaylist.segments &&\n currentPlaylist.segments.length > 0\n ) {\n this.parseVhsPlaylistForAdBreaks(currentPlaylist);\n }\n\n // Hook future playlist loads\n tech.hls.on('loadedplaylist', () => {\n const playlist = tech.hls.playlists.media();\n if (playlist) {\n this.parseVhsPlaylistForAdBreaks(playlist);\n }\n });\n\n return true;\n }\n\n /**\n * Hook: Shaka Player (DASH)\n */\n hookDASHViaShaka(tech) {\n if (!tech.shakaPlayer) return false;\n\n Log.debug(`[MT - ${getTimestamp()}] Hooked: Shaka Player`);\n tech.shakaPlayer.addEventListener('emsg', (event) => {\n this.handleDASHEmsgEvent(event);\n });\n\n return true;\n }\n\n /**\n * Hook: dash.js (DASH)\n */\n hookDASHViaDashJs(tech) {\n if (!tech.dash || !tech.dash.on) return false;\n\n Log.debug(`[MT - ${getTimestamp()}] Hooked: dash.js`);\n tech.dash.on('EVENT_MODE_ON_RECEIVE', (event) => {\n this.handleDASHEventStream(event);\n });\n\n return true;\n }\n\n /**\n * Fetches manifest directly (fallback when hooks unavailable)\n */\n async getManifestDirectly() {\n Log.debug(\n `[MT - ${getTimestamp()}] Fallback: fetching manifest directly`,\n );\n\n try {\n const manifestUrl = this.playbackManifestUrl;\n\n if (this.manifestFormat === MANIFEST_TYPE.HLS) {\n await this.fetchAndParseHlsManifest(manifestUrl);\n } else if (this.manifestFormat === MANIFEST_TYPE.DASH) {\n await this.fetchAndParseDashManifest(manifestUrl);\n }\n } catch (error) {\n Log.debug(`[MT - ${getTimestamp()}] Fallback fetch error:`, error);\n }\n }\n\n /**\n * Fetches and parses HLS master + media manifest\n */\n async fetchAndParseHlsManifest(manifestUrl) {\n try {\n Log.debug(`[MT - ${getTimestamp()}] Fetching HLS master manifest`);\n\n // Fetch master manifest\n const { mediaPlaylistUrl } = await fetchHlsMasterManifest(manifestUrl);\n\n if (!mediaPlaylistUrl) {\n Log.debug(`[MT - ${getTimestamp()}] No media playlist found`);\n return;\n }\n\n Log.debug(`[MT - ${getTimestamp()}] Fetching media playlist`);\n\n // Fetch media playlist\n const mediaText = await fetchHlsMediaPlaylist(mediaPlaylistUrl);\n\n const hlsTargetDurationSeconds = extractHlsTargetDurationSeconds(mediaText);\n this.updateLiveRefreshIntervalFromManifest(\n hlsTargetDurationSeconds,\n 'hls target duration',\n );\n\n // Parse for ads\n const ads = parseHlsManifestForAdBreaks(mediaText);\n if (ads.length > 0) {\n Log.debug(\n `[MT - ${getTimestamp()}] Detected ${ads.length} ad break(s)`,\n );\n this.mergeNewAds(ads);\n }\n } catch (error) {\n Log.debug(`[MT - ${getTimestamp()}] HLS fetch error:`, error);\n }\n }\n\n /**\n * Fetches and parses DASH MPD manifest\n */\n async fetchAndParseDashManifest(manifestUrl) {\n try {\n Log.debug(`[MT - ${getTimestamp()}] Fetching DASH manifest`);\n\n // Fetch DASH manifest\n const xmlText = await fetchDashManifest(manifestUrl);\n\n const dashMinimumUpdatePeriodSeconds =\n extractDashMinimumUpdatePeriodSeconds(xmlText);\n this.updateLiveRefreshIntervalFromManifest(\n dashMinimumUpdatePeriodSeconds,\n 'dash minimumUpdatePeriod',\n );\n\n // Parse for ads\n const ads = parseDashManifestForAdBreaks(xmlText);\n\n Log.debug(\n `[MT - ${getTimestamp()}] DASH: ${ads.length} ad break(s) found`,\n );\n\n if (ads.length > 0) {\n this.mergeNewAds(ads); // also triggers tracking fetch\n } else if (\n this.streamType === STREAM_TYPE.VOD &&\n this.trackingEndpointUrl &&\n !this.hasAttemptedTrackingFetch\n ) {\n // No SCTE-35 markers in manifest - fall back to tracking API directly\n Log.debug(\n `[MT - ${getTimestamp()}] DASH: no manifest cues, fetching tracking API`,\n );\n this.hasAttemptedTrackingFetch = true;\n this.getAndProcessTrackingMetadata();\n }\n } catch (error) {\n Log.debug(`[MT - ${getTimestamp()}] DASH fetch error:`, error);\n }\n }\n\n /**\n * Handles DASH emsg events from Shaka Player\n */\n handleDASHEmsgEvent(event) {\n Log.debug(`[MT - ${getTimestamp()}] DASH emsg event:`, event);\n\n try {\n // Shaka Player emits emsg events with event.detail containing the emsg box data\n const emsgData = event.detail;\n\n if (!emsgData) {\n Log.debug(`[MT - ${getTimestamp()}] No emsg data in event`);\n return;\n }\n\n // Check if this is a SCTE-35 event\n // schemeIdUri for SCTE-35: urn:scte:scte35:2013:bin or urn:scte:scte35:2014:xml\n const schemeIdUri = emsgData.schemeIdUri || '';\n\n if (!schemeIdUri.includes(SCTE35_SCHEME_MARKER)) {\n Log.debug(\n `[MT - ${getTimestamp()}] Non-SCTE-35 emsg, skipping:`,\n schemeIdUri,\n );\n return;\n }\n\n Log.debug(`[MT - ${getTimestamp()}] SCTE-35 emsg detected:`, {\n schemeIdUri: emsgData.schemeIdUri,\n value: emsgData.value,\n timescale: emsgData.timescale,\n presentationTime: emsgData.presentationTime,\n presentationTimeDelta: emsgData.presentationTimeDelta,\n eventDuration: emsgData.eventDuration,\n });\n\n // Calculate start time in seconds\n const timescale = emsgData.timescale || 1;\n const presentationTime = emsgData.presentationTime || 0;\n const eventDuration = emsgData.eventDuration || 0;\n\n const startTime = presentationTime / timescale;\n const duration = eventDuration / timescale;\n\n // Parse SCTE-35 message data\n const messageData = emsgData.messageData;\n\n if (messageData && duration > 0) {\n const adBreak = {\n id: `dash-emsg-${startTime}`,\n startTime: startTime,\n duration: duration,\n endTime: startTime + duration,\n source: 'dash-emsg',\n confirmedByTracking: false,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n pods: [],\n };\n\n Log.debug(\n `[MT - ${getTimestamp()}] Adding ad break from DASH emsg:`,\n adBreak,\n );\n this.mergeNewAds([adBreak]);\n }\n } catch (error) {\n Log.debug(\n `[MT - ${getTimestamp()}] Error parsing DASH emsg event:`,\n error,\n );\n }\n }\n\n /**\n * Handles DASH event stream from dash.js\n */\n handleDASHEventStream(event) {\n Log.debug(`[MT - ${getTimestamp()}] DASH event stream:`, event);\n\n try {\n // dash.js emits events with different structure\n const eventData = event.event || event;\n\n if (!eventData) {\n Log.debug(`[MT - ${getTimestamp()}] No event data`);\n return;\n }\n\n // Check if this is a SCTE-35 event\n const schemeIdUri = eventData.schemeIdUri || '';\n\n if (!schemeIdUri.includes(SCTE35_SCHEME_MARKER)) {\n Log.debug(\n `[MT - ${getTimestamp()}] Non-SCTE-35 event, skipping:`,\n schemeIdUri,\n );\n return;\n }\n\n Log.debug(`[MT - ${getTimestamp()}] SCTE-35 event stream detected:`, {\n id: eventData.id,\n schemeIdUri: eventData.schemeIdUri,\n presentationTime: eventData.presentationTime,\n duration: eventData.duration,\n messageData: eventData.messageData,\n });\n\n // Calculate timing\n const startTime = parseFloat(eventData.presentationTime || 0);\n const duration = parseFloat(eventData.duration || 0);\n\n if (duration > 0) {\n const adBreak = {\n id: eventData.id || `dash-event-${startTime}`,\n startTime: startTime,\n duration: duration,\n endTime: startTime + duration,\n source: 'dash-event-stream',\n confirmedByTracking: false,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n pods: [],\n };\n\n Log.debug(\n `[MT - ${getTimestamp()}] Adding ad break from DASH event stream:`,\n adBreak,\n );\n this.mergeNewAds([adBreak]);\n }\n } catch (error) {\n Log.debug(\n `[MT - ${getTimestamp()}] Error parsing DASH event stream:`,\n error,\n );\n }\n }\n\n /**\n * Parses VHS playlist object for ads\n */\n parseVhsPlaylistForAdBreaks(playlist) {\n Log.debug(\n `[MT - ${getTimestamp()}] Parsing VHS playlist (${\n playlist.segments?.length || 0\n } segments)`,\n );\n\n if (!playlist.segments || playlist.segments.length === 0) {\n Log.debug(`[MT - ${getTimestamp()}] No segments in playlist`);\n return;\n }\n\n this.updateLiveRefreshIntervalFromManifest(\n playlist.targetDuration,\n 'vhs target duration',\n );\n\n // VHS strips CUE tags - detect via discontinuityStarts + MediaTailor segments\n const ads = detectAdBreaksFromVhsPlaylist(playlist, {\n adSegmentPrefix: this.adSegmentPrefix,\n });\n\n if (ads.length > 0) {\n // Log which detection path matched — only on first detection to avoid noise\n if (!this._detectionPathLogged) {\n const firstSeg = playlist.segments && playlist.segments.find(s =>\n whichAdSegmentMarker(s, { adSegmentPrefix: this.adSegmentPrefix })\n );\n if (firstSeg) {\n const path = whichAdSegmentMarker(firstSeg, { adSegmentPrefix: this.adSegmentPrefix });\n Log.debug(`[MT] ad segment detection matched via: ${path}`);\n this._detectionPathLogged = true;\n }\n }\n Log.debug(\n `[MT - ${getTimestamp()}] VHS detected ${ads.length} ad break(s), ${ads.reduce(\n (sum, ab) => sum + ab.pods.length,\n 0,\n )} pod(s)`,\n );\n this.mergeNewAds(ads);\n } else {\n Log.debug(`[MT - ${getTimestamp()}] No ads detected in VHS playlist`);\n }\n }\n\n /**\n * Polls manifest for new ads (Live streams only)\n */\n async pollManifestForNewAds() {\n if (this.isDisposed) return;\n if (this.streamType !== STREAM_TYPE.LIVE) return;\n\n if (this.isFetchingManifest) {\n Log.debug(\n `[MT - ${getTimestamp()}] Manifest fetch already in progress, skipping`,\n );\n return;\n }\n\n this.isFetchingManifest = true;\n\n try {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n if (tech && tech.vhs) {\n const playlist = tech.vhs.playlists.media();\n if (playlist) {\n this.parseVhsPlaylistForAdBreaks(playlist);\n }\n } else if (this.manifestFormat === MANIFEST_TYPE.DASH) {\n await this.fetchAndParseDashManifest(this.playbackManifestUrl);\n }\n } catch (error) {\n Log.debug(`[MT - ${getTimestamp()}] Manifest poll error:`, error);\n } finally {\n this.isFetchingManifest = false;\n }\n }\n\n /**\n * Merges new ads into schedule (deduplicates)\n */\n mergeNewAds(newAds) {\n this.adSchedule = mergeAdSchedules(this.adSchedule, newAds);\n\n Log.debug(\n `[MT - ${getTimestamp()}] Ad schedule: ${this.adSchedule.length} ad break(s)`,\n );\n\n // VOD: Fetch tracking metadata after first manifest parse (AWS best practice)\n if (\n this.streamType === STREAM_TYPE.VOD &&\n this.trackingEndpointUrl &&\n !this.hasAttemptedTrackingFetch\n ) {\n this.hasAttemptedTrackingFetch = true;\n Log.debug(\n `[MT - ${getTimestamp()}] Fetching tracking metadata (first manifest parse)`,\n );\n this.getAndProcessTrackingMetadata();\n }\n }\n\n /**\n * Updates live polling cadence from manifest-derived metadata\n */\n updateLiveRefreshIntervalFromManifest(intervalSeconds, source) {\n if (\n this.streamType !== STREAM_TYPE.LIVE ||\n !intervalSeconds ||\n intervalSeconds <= 0\n ) {\n return;\n }\n\n if (this.liveRefreshIntervalSeconds === intervalSeconds) {\n return;\n }\n\n this.liveRefreshIntervalSeconds = intervalSeconds;\n Log.debug(\n `[MT - ${getTimestamp()}] Derived live polling interval from ${source}: ${intervalSeconds}s`,\n );\n\n if (this.manifestPollTimer || this.trackingPollTimer) {\n this.restartLivePollingTimers();\n }\n }\n\n /**\n * Fetches and processes tracking metadata from AWS MediaTailor Tracking API\n */\n async getAndProcessTrackingMetadata() {\n if (this.isDisposed || !this.trackingEndpointUrl) return;\n\n if (this.isFetchingTracking) {\n Log.debug(\n `[MT - ${getTimestamp()}] Tracking fetch already in progress, skipping`,\n );\n return;\n }\n\n this.isFetchingTracking = true;\n\n try {\n Log.debug(`[MT - ${getTimestamp()}] Fetching tracking metadata`);\n\n this.trackingAbortController = new AbortController();\n\n const data = await getTrackingMetadata(\n this.trackingEndpointUrl,\n TRACKING_API_TIMEOUT_MS,\n this.trackingAbortController.signal,\n );\n\n if (this.isDisposed) {\n Log.debug(\n `[MT - ${getTimestamp()}] Disposed during tracking fetch, ignoring result`,\n );\n return;\n }\n\n if (data.avails && data.avails.length > 0) {\n Log.debug(\n `[MT - ${getTimestamp()}] Enriching with ${data.avails.length} avail(s)`,\n );\n this.enrichWithTrackingMetadata(data.avails);\n this.trackingFetchRetries = 0;\n } else {\n Log.debug(`[MT - ${getTimestamp()}] Tracking API returned 0 avails`);\n }\n } catch (error) {\n if (error.name === 'AbortError' || this.isDisposed) {\n Log.debug(`[MT - ${getTimestamp()}] Tracking fetch aborted`);\n return;\n }\n\n Log.debug(\n `[MT - ${getTimestamp()}] Tracking API error: ${error.message}`,\n error,\n );\n\n if (this.trackingFetchRetries < this.maxTrackingRetries) {\n this.trackingFetchRetries++;\n Log.debug(\n `[MT - ${getTimestamp()}] Retrying tracking fetch (${this.trackingFetchRetries}/${this.maxTrackingRetries})`,\n );\n this.isFetchingTracking = false;\n await this.getAndProcessTrackingMetadata();\n return;\n }\n\n Log.debug(\n `[MT - ${getTimestamp()}] Max retries reached, continuing with manifest data only`,\n );\n } finally {\n this.isFetchingTracking = false;\n this.trackingAbortController = null;\n }\n }\n\n /**\n * Enriches ad schedule with tracking API metadata\n */\n enrichWithTrackingMetadata(avails) {\n const newAds = enrichAdScheduleWithTrackingMetadata(this.adSchedule, avails);\n\n // Add any new ads from tracking\n if (newAds.length > 0) {\n this.adSchedule.push(...newAds);\n this.adSchedule.sort((a, b) => a.startTime - b.startTime);\n }\n\n Log.debug(\n `[MT - ${getTimestamp()}] Enrichment complete: ${\n this.adSchedule.length\n } ad break(s)`,\n );\n\n // Log enriched schedule with full details\n Log.debug(\n `[MT - ${getTimestamp()}] Enriched schedule:`,\n this.adSchedule.map((ab) => ({\n id: ab.id,\n startTime: ab.startTime,\n endTime: ab.endTime,\n duration: ab.duration,\n title: ab.title,\n podCount: ab.pods.length,\n pods: ab.pods.map((p) => ({\n title: p.title,\n startTime: p.startTime,\n endTime: p.endTime,\n duration: p.duration,\n })),\n })),\n );\n\n // Log current player time for debugging\n Log.debug(\n `[MT - ${getTimestamp()}] Current player time: ${this.player.currentTime()}s`,\n );\n }\n\n /**\n * Tracks quartile events for active pod/ad\n */\n trackQuartiles(adObject, progress) {\n if (!adObject.duration || adObject.duration <= 0) return;\n\n const quartilesToFire = getQuartilesToFire(progress, adObject.duration, {\n q1: adObject.hasFiredQ1,\n q2: adObject.hasFiredQ2,\n q3: adObject.hasFiredQ3,\n });\n\n quartilesToFire.forEach(({ quartile, key }) => {\n Log.debug(`[MT - ${getTimestamp()}] → AD_QUARTILE ${quartile * 25}%`);\n this.sendAdQuartile({ quartile });\n adObject[`hasFired${key.toUpperCase()}`] = true;\n });\n }\n\n /**\n * Called on timeupdate - main event tracking logic\n */\n onTimeUpdate() {\n const currentTime = this.player.currentTime();\n const activeAdBreak = findActiveAdBreak(this.adSchedule, currentTime);\n\n // Debug logging (only log when schedule exists and every 5 seconds)\n if (\n this.adSchedule.length > 0 &&\n Math.floor(currentTime) % 5 === 0 &&\n Math.floor(currentTime * 10) % 10 === 0\n ) {\n Log.debug(\n `[MT - ${getTimestamp()}] TimeUpdate: ${currentTime.toFixed(2)}s, Active break: ${\n activeAdBreak ? activeAdBreak.id : 'none'\n }, Schedule count: ${this.adSchedule.length}`,\n );\n }\n\n if (activeAdBreak) {\n // === INSIDE AD BREAK ===\n\n // Fire AD_BREAK_START once\n if (!activeAdBreak.hasFiredStart) {\n this.currentAdBreak = activeAdBreak;\n this.setIsAd(true); // Switch to ad mode\n Log.debug(\n `[MT - ${getTimestamp()}] setIsAd(true) - Entering ad break`,\n );\n\n // Calculate ad position by finding index based on startTime\n const adBreakIndex = this.adSchedule.findIndex(\n (ad) => Math.abs(ad.startTime - activeAdBreak.startTime) < 0.5,\n );\n const adPosition = determineAdPosition(\n adBreakIndex,\n this.adSchedule.length,\n this.streamType,\n );\n\n // Store position on the ad break for reuse\n activeAdBreak.adPosition = adPosition;\n\n Log.debug(`[MT - ${getTimestamp()}] → AD_BREAK_START`, {\n startTime: activeAdBreak.startTime,\n duration: activeAdBreak.duration,\n podCount: activeAdBreak.pods?.length || 0,\n position: adPosition,\n breakIndex: adBreakIndex,\n totalBreaks: this.adSchedule.length,\n });\n this.sendAdBreakStart();\n activeAdBreak.hasFiredStart = true;\n }\n\n // Check for pod-level tracking\n if (activeAdBreak.pods && activeAdBreak.pods.length > 0) {\n const activePod = findActivePod(activeAdBreak, currentTime);\n\n if (activePod) {\n // Entering new pod\n if (!this.currentAdPod || this.currentAdPod !== activePod) {\n // End previous pod\n if (this.currentAdPod) {\n Log.debug(`[MT - ${getTimestamp()}] → AD_END (pod transition)`);\n this.sendEnd();\n }\n\n // Start new pod\n this.currentAdPod = activePod;\n\n Log.debug(`[MT - ${getTimestamp()}] → AD_START (new pod)`, {\n startTime: activePod.startTime,\n duration: activePod.duration,\n position: activeAdBreak.adPosition,\n });\n\n // NOTE: If the tracking API was slow to respond, the no-pods path\n // (below) will have already called sendStart() on this break.\n // Calling sendStart() again here is intentional — video-core's state\n // machine suppresses duplicate AD_START transitions (AD_START →\n // AD_START is a no-op), so nothing double-fires in New Relic. Once\n // pods are populated by the tracking API, this path takes over and\n // provides pod-level metadata (title, duration, creativeId) for all\n // subsequent events in the break.\n this.sendRequest({\n adPartner: 'aws-mediatailor',\n adPosition: activeAdBreak.adPosition,\n });\n\n this.sendStart({\n adPartner: 'aws-mediatailor',\n adPosition: activeAdBreak.adPosition,\n });\n activePod.hasFiredStart = true;\n }\n\n // Track quartiles for pod\n const podProgress = currentTime - activePod.startTime;\n this.trackQuartiles(activePod, podProgress);\n }\n } else {\n // No pods - treat entire break as single ad\n if (!activeAdBreak.hasFiredAdStart) {\n Log.debug(`[MT - ${getTimestamp()}] → AD_START (no pods)`, {\n startTime: activeAdBreak.startTime,\n duration: activeAdBreak.duration,\n position: activeAdBreak.adPosition,\n });\n\n // Send AD_REQUEST before AD_START (required sequence)\n this.sendRequest({\n adPartner: 'aws-mediatailor',\n adPosition: activeAdBreak.adPosition,\n });\n\n // Send AD_START\n this.sendStart({\n adPartner: 'aws-mediatailor',\n adPosition: activeAdBreak.adPosition,\n });\n activeAdBreak.hasFiredAdStart = true;\n }\n\n // Track quartiles for entire break\n const adProgress = currentTime - activeAdBreak.startTime;\n this.trackQuartiles(activeAdBreak, adProgress);\n }\n } else if (this.currentAdBreak) {\n // === EXITING AD BREAK ===\n\n // End last pod\n if (this.currentAdPod) {\n Log.debug(`[MT - ${getTimestamp()}] → AD_END (final pod)`);\n this.sendEnd();\n this.currentAdPod = null;\n }\n\n // End ad break\n if (!this.currentAdBreak.hasFiredEnd) {\n Log.debug(`[MT - ${getTimestamp()}] → AD_BREAK_END`);\n this.sendAdBreakEnd();\n this.currentAdBreak.hasFiredEnd = true;\n }\n\n this.currentAdBreak = null;\n this.setIsAd(false); // Switch back to content mode\n Log.debug(`[MT - ${getTimestamp()}] setIsAd(false) - Exiting ad break`);\n\n // Check if video has ended after exiting last ad break\n if (this.player.ended() && !this.hasEndedContent) {\n Log.debug(\n `[MT - ${getTimestamp()}] Video ended after last ad → CONTENT_END`,\n );\n this.sendContentEnd();\n this.hasEndedContent = true;\n }\n }\n }\n\n /**\n * Sends CONTENT_END event via parent content tracker\n */\n sendContentEnd() {\n if (this.parentTracker) {\n this.parentTracker.sendEnd();\n } else {\n super.sendEnd();\n }\n }\n\n /**\n * Generic handler for ad events - only fires if currently in an ad break\n * @param {string} eventName - The event name for logging (e.g., 'AD_PAUSE')\n * @param {Function} sendMethod - The method to call (e.g., this.sendPause)\n */\n handleAdEvent(eventName, sendMethod) {\n if (this.isAd()) {\n Log.debug(`[MT - ${getTimestamp()}] → ${eventName}`);\n sendMethod.call(this);\n }\n }\n\n /**\n * Handle pause events - sends AD_PAUSE only when ads are playing\n */\n onPause() {\n this.handleAdEvent('AD_PAUSE', this.sendPause);\n }\n\n /**\n * Handle playing events - sends AD_RESUME only when ads are playing\n */\n onPlaying() {\n if (this.isAd()) {\n Log.debug(`[MT - ${getTimestamp()}] → AD_RESUME`);\n this.sendResume();\n this.sendBufferEnd(); // Playing event also ends any buffering\n }\n }\n\n /**\n * Handle seeking events - sends AD_SEEK_START only when ads are playing\n */\n onSeeking() {\n this.handleAdEvent('AD_SEEK_START', this.sendSeekStart);\n }\n\n /**\n * Handle seeked events - sends AD_SEEK_END only when ads are playing\n */\n onSeeked() {\n this.handleAdEvent('AD_SEEK_END', this.sendSeekEnd);\n }\n\n /**\n * Handle waiting (buffering) events - sends AD_BUFFER_START only when ads are playing\n */\n onWaiting() {\n this.handleAdEvent('AD_BUFFER_START', this.sendBufferStart);\n }\n\n /**\n * Override: Fire CONTENT_END when video ends\n */\n onEnded() {\n if (!this.hasEndedContent) {\n Log.debug(`[MT - ${getTimestamp()}] Video ended → CONTENT_END`);\n this.sendContentEnd();\n this.hasEndedContent = true;\n }\n }\n\n /**\n * Returns ad title for New Relic\n */\n getTitle() {\n if (this.currentAdPod) {\n return this.currentAdPod.title || this.currentAdBreak?.id || null;\n }\n return this.currentAdBreak?.title || this.currentAdBreak?.id || null;\n }\n\n /**\n * Returns ad ID for New Relic (adId attribute)\n */\n getVideoId() {\n if (this.currentAdPod) {\n return (\n this.currentAdPod.creativeId ||\n this.currentAdPod.title ||\n this.currentAdBreak?.id ||\n null\n );\n }\n return this.currentAdBreak?.creativeId || this.currentAdBreak?.id || null;\n }\n\n /**\n * Returns ad source URL for New Relic (adSrc attribute)\n */\n getSrc() {\n // MediaTailor doesn't provide individual creative URLs\n return this.trackingEndpointUrl || this.playbackManifestUrl || null;\n }\n\n /**\n * Returns ad duration in milliseconds for New Relic\n */\n getDuration() {\n if (this.currentAdPod) {\n return this.currentAdPod.duration * 1000;\n }\n return this.currentAdBreak ? this.currentAdBreak.duration * 1000 : null;\n }\n\n /**\n * Stops polling timers\n */\n stopPolling() {\n if (this.manifestPollTimer) {\n clearInterval(this.manifestPollTimer);\n this.manifestPollTimer = null;\n }\n\n if (this.trackingPollTimer) {\n clearInterval(this.trackingPollTimer);\n this.trackingPollTimer = null;\n }\n\n Log.debug(`[MT - ${getTimestamp()}] Polling stopped`);\n }\n\n /**\n * Cleanup when tracker is destroyed\n */\n dispose() {\n Log.debug(`[MT - ${getTimestamp()}] Disposing MediaTailorAdsTracker`);\n\n this.isDisposed = true;\n\n if (this.trackingAbortController) {\n Log.debug(`[MT - ${getTimestamp()}] Aborting in-flight tracking fetch`);\n this.trackingAbortController.abort();\n this.trackingAbortController = null;\n }\n\n if (this.manifestAbortController) {\n Log.debug(`[MT - ${getTimestamp()}] Aborting in-flight manifest fetch`);\n this.manifestAbortController.abort();\n this.manifestAbortController = null;\n }\n\n this.stopLivePolling();\n this.unregisterListeners();\n super.dispose && super.dispose();\n }\n}\n","/**\n * MediaTailor Constants\n * Contains all regex patterns, config defaults, and constant values for AWS MediaTailor ad tracking\n */\n\n// HLS manifest regex patterns used while scanning raw MediaTailor playlists.\n// Example inputs:\n// - #EXT-X-CUE-OUT:DURATION=29.988\n// - #EXT-X-DISCONTINUITY\n// - #EXT-X-MAP:URI=\"https://segments.mediatailor.../init.mp4\"\nexport const REGEX_CUE_OUT = /#EXT-X-CUE-OUT:DURATION=([\\d.]+)/; // Captures the numeric ad break duration from a MediaTailor CUE-OUT tag so the tracker can seed an ad break before CUE-IN arrives\nexport const REGEX_DISCONTINUITY = /#EXT-X-DISCONTINUITY/; // Detects HLS discontinuity boundaries, which MediaTailor playlists can use around ad/content transitions and pod boundaries\nexport const REGEX_MAP = /#EXT-X-MAP:URI=\"([^\"]+)\"/; // Captures the MAP URI from fMP4 playlists so MAP changes can be used to split one avail into multiple ad pods\n\n// MediaTailor URL and manifest regex patterns.\n// These are used to derive the tracking endpoint and to read manifest refresh metadata\n// directly from HLS and DASH payloads.\nexport const REGEX_SESSION_ID = /sessionId=([^&]+)/; // Captures the session id from a sessionized playback URL query string such as ?aws.sessionId=abc123 so we can construct the MediaTailor tracking endpoint\nexport const REGEX_TRACKING_PATH_SEGMENT = /\\/v1\\/(master|session|dash)\\//; // Matches the playback path prefix in URLs like /v1/master/... or /v1/dash/... so it can be rewritten to /v1/tracking/...\nexport const REGEX_MANIFEST_FILE_SUFFIX = /\\/[^/]*\\.(m3u8|mpd).*$/; // Matches the trailing manifest filename and any query string, such as /master.m3u8?... or /index.mpd?..., so it can be replaced with /{sessionId}\nexport const REGEX_HLS_TARGET_DURATION = /#EXT-X-TARGETDURATION:(\\d+)/; // Captures the HLS target duration value from a line like #EXT-X-TARGETDURATION:6, which we use as the live polling cadence when available\nexport const REGEX_DASH_MINIMUM_UPDATE_PERIOD = /minimumUpdatePeriod=\"([^\"]+)\"/; // Captures the DASH MPD minimumUpdatePeriod attribute, for example minimumUpdatePeriod=\"PT5S\", so live polling follows the manifest's declared refresh rate\nexport const REGEX_ISO_8601_DURATION = /PT(?:(\\d+)H)?(?:(\\d+)M)?(?:([\\d.]+)S)?/; // Parses ISO 8601 duration values like PT5S, PT1M14S, or PT1H2M3.5S into hour, minute, and second groups for DASH timing calculations\n\n// MediaTailor string markers used across tracker selection and manifest parsing\nexport const HLS_MANIFEST_EXTENSION = '.m3u8'; // Identifies HLS manifest URLs and child playlist references\nexport const DASH_MANIFEST_EXTENSION = '.mpd'; // Identifies DASH manifest URLs\nexport const MEDIATAILOR_HOST_MARKER = '.mediatailor.'; // Identifies MediaTailor playback URLs when selecting this ads tracker\nexport const MT_HLS_CUE_OUT_TAG = '#EXT-X-CUE-OUT'; // Marks the start of an HLS ad break in MediaTailor manifests\nexport const MT_HLS_CUE_IN_TAG = '#EXT-X-CUE-IN'; // Marks the end of an HLS ad break in MediaTailor manifests\nexport const HLS_SEGMENT_DURATION_TAG = '#EXTINF:'; // Carries HLS segment duration values used to advance manifest time\nexport const HLS_TAG_PREFIX = '#'; // Distinguishes HLS tags from playlist URI lines in manifest scans\nexport const SCTE35_SCHEME_MARKER = 'scte35'; // Identifies SCTE-35 DASH signaling in schemeIdUri values\nexport const DASH_SCTE35_EVENT_STREAM_SELECTOR =\n 'EventStream[schemeIdUri*=\"scte35\"], EventStream[schemeIdUri*=\"SCTE35\"]'; // Selects DASH EventStream nodes that carry SCTE-35 ad markers\nexport const HLS_MIME_TYPE = 'application/vnd.apple.mpegurl'; // MIME type used to detect Safari/native HLS playback support\n\n// MediaTailor URL Patterns\nexport const MT_SEGMENT_PATTERN = 'segments.mediatailor'; // Identifies MediaTailor ad segments (AWS default hostname)\nexport const MT_DEFAULT_AD_SEGMENT_PATH = '/tm/'; // Default ad-segment path per AWS CDN integration guide (custom-CDN setups)\n\nexport const TRACKING_API_TIMEOUT_MS = 5000; // Keep tracking metadata requests within the guide's 5s end-to-end budget\nexport const DEFAULT_LIVE_POLL_INTERVAL_MS = 5000; // Temporary fallback until manifest metadata provides cadence\n// Timing Thresholds\nexport const MIN_AD_DURATION = 0.5; // Minimum ad duration in seconds (filter false positives)\nexport const AD_TIMING_TOLERANCE = 0.5; // Tolerance for matching ad times in seconds\nexport const POST_AD_PAUSE_THRESHOLD = 500; // Ignore pause events within 500ms after ad break (avoids false CONTENT_PAUSE)\n\n// Stream Types\nexport const STREAM_TYPE = {\n VOD: 'vod', // Video on Demand\n LIVE: 'live', // Live streaming\n};\n\n// Manifest Types\nexport const MANIFEST_TYPE = {\n HLS: 'hls', // HTTP Live Streaming (.m3u8)\n DASH: 'dash', // Dynamic Adaptive Streaming over HTTP (.mpd)\n};\n\n// Ad Position Types (for VOD only)\nexport const AD_POSITION = {\n PRE_ROLL: 'pre', // First ad break\n MID_ROLL: 'mid', // Middle ad break\n POST_ROLL: 'post', // Last ad break\n};\n\n// Ad Detection Sources\nexport const AD_SOURCE = {\n MANIFEST_CUE: 'manifest-cue', // Detected from CUE-OUT/CUE-IN tags (HLS) or EventStream (DASH)\n VHS_DISCONTINUITY: 'vhs-discontinuity', // Detected from VHS discontinuityStarts\n TRACKING_API: 'tracking-api', // Added from tracking API response\n MANIFEST_AND_TRACKING: 'manifest+tracking', // Enriched by both sources\n DASH_EMSG: 'dash-emsg', // Detected from DASH emsg events (Shaka Player)\n DASH_EVENT_STREAM: 'dash-event-stream', // Detected from DASH EventStream (dash.js)\n};\n\n// Quartile Percentages\nexport const QUARTILES = {\n Q1: 0.25, // 25% progress\n Q2: 0.5, // 50% progress\n Q3: 0.75, // 75% progress\n};\n","/**\n * MediaTailor Utility Functions\n * Helper functions for AWS MediaTailor ad tracking\n */\n\nimport nrvideo from '@newrelic/video-core';\n\nconst nrvideoCore = nrvideo.default || nrvideo;\nconst Log = nrvideoCore.Log;\n\nimport {\n DASH_MANIFEST_EXTENSION,\n DASH_SCTE35_EVENT_STREAM_SELECTOR,\n HLS_MANIFEST_EXTENSION,\n HLS_SEGMENT_DURATION_TAG,\n HLS_TAG_PREFIX,\n REGEX_CUE_OUT,\n REGEX_DASH_MINIMUM_UPDATE_PERIOD,\n REGEX_DISCONTINUITY,\n REGEX_HLS_TARGET_DURATION,\n REGEX_ISO_8601_DURATION,\n REGEX_MAP,\n REGEX_MANIFEST_FILE_SUFFIX,\n REGEX_SESSION_ID,\n REGEX_TRACKING_PATH_SEGMENT,\n MT_HLS_CUE_IN_TAG,\n MT_HLS_CUE_OUT_TAG,\n MT_SEGMENT_PATTERN,\n MT_DEFAULT_AD_SEGMENT_PATH,\n MIN_AD_DURATION,\n AD_TIMING_TOLERANCE,\n SCTE35_SCHEME_MARKER,\n STREAM_TYPE,\n MANIFEST_TYPE,\n AD_POSITION,\n AD_SOURCE,\n QUARTILES,\n} from './mt-constants.js';\n\n/**\n * Generates timestamp string for logging (HH:MM:SS.mmm format)\n */\nexport function getTimestamp() {\n const now = new Date();\n return now.toISOString().substring(11, 23);\n}\n\n/**\n * Detects manifest format from URL (.m3u8 = HLS, .mpd = DASH)\n */\nexport function detectManifestFormatFromUrl(url) {\n if (url.includes(HLS_MANIFEST_EXTENSION)) {\n return MANIFEST_TYPE.HLS;\n } else if (url.includes(DASH_MANIFEST_EXTENSION)) {\n return MANIFEST_TYPE.DASH;\n }\n return MANIFEST_TYPE.HLS; // Default fallback\n}\n\n/**\n * Detects stream type from player duration (Infinity = Live, else = VOD)\n */\nexport function detectPlaybackStreamType(duration) {\n return duration === Infinity ? STREAM_TYPE.LIVE : STREAM_TYPE.VOD;\n}\n\n/**\n * Builds a tracking endpoint URL from a sessionized manifest URL\n * Format: /v1/tracking/{customerId}/{configName}/{sessionId}\n */\nexport function buildTrackingEndpointUrl(manifestUrl) {\n const match = manifestUrl.match(REGEX_SESSION_ID);\n\n if (!match) {\n return null;\n }\n\n const sessionId = match[1];\n\n // Convert manifest URL to tracking URL:\n // /v1/master/{id}/{name}/master.m3u8?aws.sessionId=xxx → /v1/tracking/{id}/{name}/{sessionId}\n // /v1/dash/{id}/{name}/index.mpd?aws.sessionId=xxx → /v1/tracking/{id}/{name}/{sessionId}\n const trackingEndpointUrl = manifestUrl\n .replace(REGEX_TRACKING_PATH_SEGMENT, '/v1/tracking/')\n .replace(REGEX_MANIFEST_FILE_SUFFIX, `/${sessionId}`);\n\n return trackingEndpointUrl;\n}\n\n/**\n * Checks if segment is a MediaTailor ad segment\n */\nexport function isMediaTailorSegment(segment, { adSegmentPrefix } = {}) {\n const candidates = [MT_SEGMENT_PATTERN, MT_DEFAULT_AD_SEGMENT_PATH];\n if (adSegmentPrefix) candidates.push(adSegmentPrefix);\n\n const mapUri = (segment.map && segment.map.uri) || '';\n const segUri = segment.uri || '';\n\n return candidates.some(\n (marker) => mapUri.includes(marker) || segUri.includes(marker),\n );\n}\n\nexport function whichAdSegmentMarker(segment, { adSegmentPrefix } = {}) {\n const labeled = [\n { marker: MT_SEGMENT_PATTERN, label: 'aws-hostname (segments.mediatailor)' },\n { marker: MT_DEFAULT_AD_SEGMENT_PATH, label: 'default-cdn-path (/tm/)' },\n ];\n if (adSegmentPrefix) labeled.push({ marker: adSegmentPrefix, label: `custom-prefix (${adSegmentPrefix})` });\n\n const mapUri = (segment.map && segment.map.uri) || '';\n const segUri = segment.uri || '';\n\n const hit = labeled.find(({ marker }) => mapUri.includes(marker) || segUri.includes(marker));\n return hit ? hit.label : null;\n}\n\n/**\n * Determines ad position based on schedule index (VOD only, Live returns null)\n */\nexport function determineAdPosition(adBreakIndex, totalAdBreaks, streamType) {\n if (streamType === STREAM_TYPE.LIVE) {\n return null; // Live streams have no position concept\n }\n\n // VOD: Determine position by schedule index\n if (adBreakIndex === 0) {\n return AD_POSITION.PRE_ROLL; // First ad\n } else if (adBreakIndex === totalAdBreaks - 1) {\n return AD_POSITION.POST_ROLL; // Last ad\n } else {\n return AD_POSITION.MID_ROLL; // Middle ad\n }\n}\n\n/**\n * Finds ad break index in schedule by start time\n */\nexport function findAdBreakIndex(adSchedule, startTime) {\n return adSchedule.findIndex(\n (ad) => Math.abs(ad.startTime - startTime) < AD_TIMING_TOLERANCE\n );\n}\n\n/**\n * Calculates quartile thresholds for an ad duration\n */\nexport function calculateQuartiles(duration) {\n return {\n q1: duration * QUARTILES.Q1,\n q2: duration * QUARTILES.Q2,\n q3: duration * QUARTILES.Q3,\n };\n}\n\n/**\n * Checks which quartile events should fire based on progress\n */\nexport function getQuartilesToFire(progress, duration, firedQuartiles) {\n const quartiles = calculateQuartiles(duration);\n const toFire = [];\n\n if (progress >= quartiles.q1 && !firedQuartiles.q1) {\n toFire.push({ quartile: 1, key: 'q1' });\n }\n if (progress >= quartiles.q2 && !firedQuartiles.q2) {\n toFire.push({ quartile: 2, key: 'q2' });\n }\n if (progress >= quartiles.q3 && !firedQuartiles.q3) {\n toFire.push({ quartile: 3, key: 'q3' });\n }\n\n return toFire;\n}\n\n/**\n * Finds active ad break at current playhead time\n */\nexport function findActiveAdBreak(adSchedule, currentTime) {\n return adSchedule.find(\n (ad) => currentTime >= ad.startTime && currentTime < ad.endTime\n );\n}\n\n/**\n * Finds active pod within ad break at current playhead time\n */\nexport function findActivePod(adBreak, currentTime) {\n if (!adBreak || !adBreak.pods || adBreak.pods.length === 0) {\n return null;\n }\n\n return adBreak.pods.find(\n (pod) => currentTime >= pod.startTime && currentTime < pod.endTime\n );\n}\n\n/**\n * Validates if ad break duration meets minimum threshold\n */\nexport function isValidAdBreak(adBreak) {\n return adBreak.duration > MIN_AD_DURATION;\n}\n\n/**\n * Merges new ads into existing schedule (deduplicates by start time)\n */\nexport function mergeAdSchedules(existingSchedule, newAds) {\n const scheduleMap = new Map();\n\n // Add existing ads to map (keyed by rounded start time)\n existingSchedule.forEach((ad) => {\n const key = Math.round(ad.startTime);\n scheduleMap.set(key, ad);\n });\n\n // Merge new ads\n const merged = [];\n newAds.forEach((newAd) => {\n const key = Math.round(newAd.startTime);\n const existingAd = scheduleMap.get(key);\n\n if (!existingAd) {\n merged.push(newAd);\n scheduleMap.set(key, newAd);\n } else if (!existingAd.confirmedByTracking && newAd.confirmedByTracking) {\n Object.assign(existingAd, newAd);\n }\n });\n\n // Combine and sort by start time\n const finalSchedule = [...existingSchedule, ...merged];\n finalSchedule.sort((a, b) => a.startTime - b.startTime);\n\n return finalSchedule;\n}\n\n/**\n * Parses HLS manifest text for CUE-OUT/CUE-IN markers\n */\nexport function parseHlsManifestForAdBreaks(manifestText) {\n const lines = manifestText.split('\\n');\n const adBreaks = [];\n\n let currentTime = 0;\n let currentAdBreak = null;\n let currentPodStartTime = null;\n let lastMapUrl = null;\n let adPods = [];\n let isInAdBreak = false;\n\n for (const line of lines) {\n // Detect DISCONTINUITY marker\n if (REGEX_DISCONTINUITY.test(line)) {\n if (isInAdBreak && lastMapUrl) {\n const mapMatch = line.match(REGEX_MAP);\n const mapUrl = mapMatch ? mapMatch[1] : null;\n\n if (mapUrl && mapUrl !== lastMapUrl) {\n // New MAP = new pod boundary\n if (currentPodStartTime !== null) {\n const podDuration = currentTime - currentPodStartTime;\n adPods.push({\n startTime: currentPodStartTime,\n duration: podDuration,\n endTime: currentTime,\n mapUrl: lastMapUrl,\n });\n }\n currentPodStartTime = currentTime;\n lastMapUrl = mapUrl;\n }\n }\n }\n\n // Detect MAP URL changes\n const mapMatch = line.match(REGEX_MAP);\n if (mapMatch && isInAdBreak) {\n const mapUrl = mapMatch[1];\n if (mapUrl && mapUrl !== lastMapUrl) {\n // New MAP = new pod\n if (currentPodStartTime !== null) {\n const podDuration = currentTime - currentPodStartTime;\n adPods.push({\n startTime: currentPodStartTime,\n duration: podDuration,\n endTime: currentTime,\n mapUrl: lastMapUrl,\n });\n }\n currentPodStartTime = currentTime;\n lastMapUrl = mapUrl;\n }\n }\n\n // Detect CUE-OUT (ad break start)\n if (line.startsWith(MT_HLS_CUE_OUT_TAG)) {\n const durationMatch = line.match(REGEX_CUE_OUT);\n const duration = durationMatch ? parseFloat(durationMatch[1]) : null;\n\n isInAdBreak = true;\n adPods = [];\n currentAdBreak = {\n id: `avail-${currentTime}`,\n startTime: currentTime,\n duration: duration,\n endTime: null,\n pods: [],\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n confirmedByTracking: false,\n };\n }\n\n // Detect CUE-IN (ad break end)\n if (line.startsWith(MT_HLS_CUE_IN_TAG)) {\n if (currentAdBreak) {\n // Close final pod\n if (currentPodStartTime !== null) {\n const podDuration = currentTime - currentPodStartTime;\n adPods.push({\n startTime: currentPodStartTime,\n duration: podDuration,\n endTime: currentTime,\n mapUrl: lastMapUrl,\n });\n }\n\n // Calculate actual duration\n const actualDuration = currentTime - currentAdBreak.startTime;\n\n // Filter zero-duration false positives\n if (actualDuration >= MIN_AD_DURATION) {\n currentAdBreak.duration = actualDuration;\n currentAdBreak.endTime = currentTime;\n currentAdBreak.pods = adPods;\n adBreaks.push(currentAdBreak);\n }\n\n // Reset state\n currentAdBreak = null;\n isInAdBreak = false;\n currentPodStartTime = null;\n lastMapUrl = null;\n adPods = [];\n }\n }\n\n // Track time via EXTINF\n if (line.startsWith(HLS_SEGMENT_DURATION_TAG)) {\n const duration = parseFloat(line.split(':')[1]);\n if (!isNaN(duration)) {\n currentTime += duration;\n }\n }\n }\n\n // Handle unclosed ad break\n if (currentAdBreak && currentAdBreak.duration) {\n currentAdBreak.endTime = currentAdBreak.startTime + currentAdBreak.duration;\n currentAdBreak.pods = adPods;\n adBreaks.push(currentAdBreak);\n }\n\n return adBreaks;\n}\n\n/**\n * Detects ads from VHS playlist using discontinuityStarts and MediaTailor segments\n */\nexport function detectAdBreaksFromVhsPlaylist(playlist, { adSegmentPrefix } = {}) {\n const segments = playlist.segments;\n const discontinuityStarts = playlist.discontinuityStarts || [];\n const adBreaks = [];\n\n let currentAdBreak = null;\n let currentPod = null;\n let currentTime = 0;\n\n segments.forEach((segment, index) => {\n const isMTSegment = isMediaTailorSegment(segment, { adSegmentPrefix });\n const hasDiscontinuity = discontinuityStarts.includes(index);\n\n if (isMTSegment) {\n // Discontinuity marks new pod boundary\n if (hasDiscontinuity && currentPod) {\n currentPod.endTime = currentTime;\n if (currentPod.duration > MIN_AD_DURATION) {\n currentAdBreak.pods.push(currentPod);\n }\n currentPod = null;\n }\n\n // Start new ad break if not in one\n if (!currentAdBreak) {\n currentAdBreak = {\n id: `avail-${currentTime}`,\n startTime: currentTime,\n duration: 0,\n endTime: null,\n source: 'vhs-discontinuity',\n confirmedByTracking: false,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n pods: [],\n };\n }\n\n // Start new pod if not in one\n if (!currentPod) {\n currentPod = {\n startTime: currentTime,\n duration: 0,\n endTime: null,\n hasFiredStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n };\n }\n\n // Accumulate durations\n const segmentDuration = segment.duration || 0;\n currentAdBreak.duration += segmentDuration;\n currentPod.duration += segmentDuration;\n } else {\n // Not MediaTailor segment - end ad break\n if (currentAdBreak) {\n // Close current pod\n if (currentPod) {\n currentPod.endTime = currentTime;\n if (currentPod.duration > MIN_AD_DURATION) {\n currentAdBreak.pods.push(currentPod);\n }\n currentPod = null;\n }\n\n // Close ad break\n currentAdBreak.endTime = currentTime;\n if (currentAdBreak.duration > MIN_AD_DURATION) {\n adBreaks.push(currentAdBreak);\n }\n currentAdBreak = null;\n }\n }\n\n currentTime += segment.duration || 0;\n });\n\n // Handle unclosed pod/ad break at end\n if (currentAdBreak) {\n if (currentPod) {\n currentPod.endTime = currentTime;\n if (currentPod.duration > MIN_AD_DURATION) {\n currentAdBreak.pods.push(currentPod);\n }\n }\n currentAdBreak.endTime = currentTime;\n if (currentAdBreak.duration > MIN_AD_DURATION) {\n adBreaks.push(currentAdBreak);\n }\n }\n\n return adBreaks;\n}\n\n/**\n * Enriches ad schedule with tracking API metadata\n */\nexport function enrichAdScheduleWithTrackingMetadata(adSchedule, trackingAvails) {\n const scheduleMap = new Map();\n\n // Build map of existing ads\n adSchedule.forEach((ad) => {\n const key = Math.round(ad.startTime);\n scheduleMap.set(key, ad);\n });\n\n // Process each avail from tracking API\n const newAds = [];\n trackingAvails.forEach((avail) => {\n const firstAd = avail.ads && avail.ads.length > 0 ? avail.ads[0] : null;\n if (!firstAd) return;\n\n const key = Math.round(firstAd.startTimeInSeconds);\n const existingAd = scheduleMap.get(key);\n\n if (existingAd) {\n // Enrich existing ad with tracking metadata\n existingAd.id = avail.availId;\n existingAd.creativeId = firstAd.adId;\n existingAd.title = firstAd.adTitle;\n existingAd.confirmedByTracking = true;\n\n // Enrich pods with tracking ad metadata\n if (avail.ads && avail.ads.length > 0 && existingAd.pods) {\n avail.ads.forEach((trackingAd, adIndex) => {\n if (existingAd.pods[adIndex]) {\n // Update existing pod\n existingAd.pods[adIndex].title = trackingAd.adTitle;\n existingAd.pods[adIndex].creativeId = trackingAd.adId;\n existingAd.pods[adIndex].trackingStartTime = trackingAd.startTimeInSeconds;\n existingAd.pods[adIndex].trackingDuration = trackingAd.durationInSeconds;\n } else {\n // Add new pod from tracking\n existingAd.pods.push({\n startTime: trackingAd.startTimeInSeconds,\n duration: trackingAd.durationInSeconds,\n endTime: trackingAd.startTimeInSeconds + trackingAd.durationInSeconds,\n title: trackingAd.adTitle,\n creativeId: trackingAd.adId,\n hasFiredStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n });\n }\n });\n }\n } else {\n // Add new ad from tracking\n newAds.push({\n id: avail.availId,\n startTime: firstAd.startTimeInSeconds,\n duration: avail.durationInSeconds,\n endTime: firstAd.startTimeInSeconds + avail.durationInSeconds,\n title: firstAd.adTitle,\n creativeId: firstAd.adId,\n source: 'tracking-api',\n confirmedByTracking: true,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n pods: avail.ads.map((ad) => ({\n startTime: ad.startTimeInSeconds,\n duration: ad.durationInSeconds,\n endTime: ad.startTimeInSeconds + ad.durationInSeconds,\n title: ad.adTitle,\n creativeId: ad.adId,\n hasFiredStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n })),\n });\n }\n });\n\n return newAds;\n}\n\n/**\n * Extracts the HLS live target duration from manifest text.\n * In HLS, EXT-X-TARGETDURATION is the closest manifest-level hint for refresh cadence.\n */\nexport function extractHlsTargetDurationSeconds(manifestText) {\n const match = manifestText.match(REGEX_HLS_TARGET_DURATION);\n return match ? parseInt(match[1], 10) : null;\n}\n\n/**\n * Extracts the DASH live minimumUpdatePeriod from MPD manifest text.\n * In DASH, minimumUpdatePeriod is the MPD's refresh hint for clients polling a live manifest.\n */\nexport function extractDashMinimumUpdatePeriodSeconds(manifestText) {\n const match = manifestText.match(REGEX_DASH_MINIMUM_UPDATE_PERIOD);\n return match ? parseIsoDuration(match[1]) : null;\n}\n\nasync function fetchTextOrThrow(url) {\n const response = await fetch(url, { credentials: 'include' });\n\n if (response.ok === false) {\n throw new Error(\n `Manifest request failed: ${response.status || 'unknown'} ${\n response.statusText || 'Request failed'\n }`\n );\n }\n\n return await response.text();\n}\n\n/**\n * Fetches HLS master manifest and returns master text + first media playlist URL\n */\nexport async function fetchHlsMasterManifest(manifestUrl) {\n const masterText = await fetchTextOrThrow(manifestUrl);\n\n // Find first media playlist URL\n const lines = masterText.split('\\n');\n let mediaPlaylistUrl = null;\n\n for (const line of lines) {\n if (!line.startsWith(HLS_TAG_PREFIX) && line.includes(HLS_MANIFEST_EXTENSION)) {\n mediaPlaylistUrl = new URL(line.trim(), manifestUrl).href;\n break;\n }\n }\n\n return { masterText, mediaPlaylistUrl };\n}\n\n/**\n * Fetches HLS media playlist and returns text\n */\nexport async function fetchHlsMediaPlaylist(playlistUrl) {\n return await fetchTextOrThrow(playlistUrl);\n}\n\n/**\n * Fetches DASH MPD manifest and returns XML text\n */\nexport async function fetchDashManifest(manifestUrl) {\n return await fetchTextOrThrow(manifestUrl);\n}\n\n/**\n * Parses ISO 8601 duration string to seconds\n * e.g. \"PT1M14S\" → 74, \"PT10S\" → 10, \"PT12M54S\" → 774\n */\nexport function parseIsoDuration(durationStr) {\n if (!durationStr) return 0;\n const match = durationStr.match(REGEX_ISO_8601_DURATION);\n if (!match) return 0;\n const hours = parseFloat(match[1] || 0);\n const minutes = parseFloat(match[2] || 0);\n const seconds = parseFloat(match[3] || 0);\n return hours * 3600 + minutes * 60 + seconds;\n}\n\n/**\n * Parses DASH MPD for ad breaks — supports both MULTI_PERIOD and SINGLE_PERIOD formats.\n *\n * MULTI_PERIOD (MediaTailor default): ad breaks are separate <Period> elements\n * whose <BaseURL> points to segments.mediatailor.amazonaws.com.\n *\n * SINGLE_PERIOD: the entire stream is one period; ads are signalled via\n * SCTE-35 <EventStream> elements inside that period.\n */\nexport function parseDashManifestForAdBreaks(xmlText, { adSegmentPrefix } = {}) {\n const parser = new DOMParser();\n const xml = parser.parseFromString(xmlText, 'text/xml');\n const ads = [];\n\n const parserError = xml.querySelector('parsererror');\n if (parserError) {\n Log.error('[MT] DASH XML parse error:', parserError.textContent);\n return ads;\n }\n\n const periods = xml.querySelectorAll('Period');\n Log.debug(`[MT] Found ${periods.length} Period(s) in DASH manifest`);\n\n if (periods.length > 1) {\n // ── MULTI_PERIOD ──────────────────────────────────────────────────────────\n // Ad periods are identified by a BaseURL pointing to the MediaTailor CDN.\n periods.forEach((period) => {\n const baseUrlEl = period.querySelector('BaseURL');\n const baseUrl = baseUrlEl ? baseUrlEl.textContent.trim() : '';\n\n const adCandidates = [MT_SEGMENT_PATTERN, MT_DEFAULT_AD_SEGMENT_PATH];\n if (adSegmentPrefix) adCandidates.push(adSegmentPrefix);\n if (!adCandidates.some((m) => baseUrl.includes(m))) {\n return; // content period\n }\n\n const periodId = period.getAttribute('id') || '';\n const startTime = parseIsoDuration(period.getAttribute('start') || 'PT0S');\n const duration = parseIsoDuration(period.getAttribute('duration') || '');\n\n if (duration < MIN_AD_DURATION) {\n Log.debug(`[MT] Skipping period ${periodId} - duration too short (${duration}s)`);\n return;\n }\n\n Log.debug(`[MT] Ad period detected: ${periodId}`, { startTime, duration });\n\n ads.push({\n id: periodId,\n startTime,\n duration,\n endTime: startTime + duration,\n source: AD_SOURCE.MANIFEST_CUE,\n confirmedByTracking: false,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n pods: [],\n });\n });\n } else {\n // ── SINGLE_PERIOD ─────────────────────────────────────────────────────────\n // Ads are signalled via SCTE-35 EventStream elements within the single period.\n const eventStreams = xml.querySelectorAll(\n DASH_SCTE35_EVENT_STREAM_SELECTOR,\n );\n\n Log.debug(`[MT] Found ${eventStreams.length} SCTE-35 EventStream(s) in single-period manifest`);\n\n eventStreams.forEach((stream) => {\n const timescale = parseFloat(stream.getAttribute('timescale') || '1');\n\n stream.querySelectorAll('Event').forEach((event) => {\n const presentationTime = parseFloat(event.getAttribute('presentationTime') || 0);\n const duration = parseFloat(event.getAttribute('duration') || 0);\n const eventId =\n event.getAttribute('id') ||\n `${SCTE35_SCHEME_MARKER}-${presentationTime}`;\n\n const startTime = timescale !== 1 ? presentationTime / timescale : presentationTime;\n const durationSeconds = timescale !== 1 ? duration / timescale : duration;\n\n if (durationSeconds < MIN_AD_DURATION) {\n Log.debug(`[MT] Skipping event ${eventId} - duration too short (${durationSeconds}s)`);\n return;\n }\n\n Log.debug(`[MT] SCTE-35 event detected: ${eventId}`, { startTime, durationSeconds });\n\n ads.push({\n id: eventId,\n startTime,\n duration: durationSeconds,\n endTime: startTime + durationSeconds,\n source: AD_SOURCE.MANIFEST_CUE,\n confirmedByTracking: false,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n pods: [],\n });\n });\n });\n }\n\n Log.debug(`[MT] Parsed ${ads.length} valid ad break(s) from DASH manifest`);\n return ads;\n}\n\n/**\n * Fetches tracking metadata from AWS MediaTailor Tracking API\n * @param {string} trackingEndpointUrl - The tracking API URL\n * @param {number} timeout - Timeout in milliseconds\n * @param {AbortSignal} externalSignal - Optional external abort signal for cancellation\n */\nexport async function getTrackingMetadata(trackingEndpointUrl, timeout = 8000, externalSignal = null) {\n // Create AbortController for timeout support\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n // If external signal provided, listen for its abort event\n const abortHandler = () => controller.abort();\n if (externalSignal) {\n externalSignal.addEventListener('abort', abortHandler);\n }\n\n try {\n const response = await fetch(`${trackingEndpointUrl}?t=${Date.now()}`, {\n signal: controller.signal,\n credentials: 'include',\n });\n\n clearTimeout(timeoutId);\n if (externalSignal) {\n externalSignal.removeEventListener('abort', abortHandler);\n }\n\n if (!response.ok) {\n throw new Error(`Tracking API error: ${response.status}`);\n }\n\n return await response.json();\n } catch (error) {\n clearTimeout(timeoutId);\n if (externalSignal) {\n externalSignal.removeEventListener('abort', abortHandler);\n }\n throw error;\n }\n}\n\n/**\n * Extracts first media playlist URL from HLS master manifest text\n */\nexport function extractMediaPlaylistUrl(masterText, baseUrl) {\n const lines = masterText.split('\\n');\n\n for (const line of lines) {\n if (\n !line.startsWith(HLS_TAG_PREFIX) &&\n line.includes(HLS_MANIFEST_EXTENSION)\n ) {\n return new URL(line.trim(), baseUrl).href;\n }\n }\n\n return null;\n}\n","import nrvideo from '@newrelic/video-core'\nimport pkg from '../../package.json'\nimport ContribHlsTech from '../techs/contrib-hls';\nimport HlsJsTech from '../techs/hls-js';\nimport ShakaTech from '../techs/shaka';\n\nexport default class VideojsAdsTracker extends nrvideo.VideoTracker {\n\n getTech() {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n \n if (tech) {\n if (ContribHlsTech.isUsing(tech)) {\n return new ContribHlsTech(tech);\n } else if (HlsJsTech.isUsing(tech)) {\n return new HlsJsTech(tech);\n } else if (ShakaTech.isUsing(tech)) {\n return new ShakaTech(tech);\n }\n }\n }\n \n getTrackerName () {\n return 'videojs-ads'\n }\n\n getTrackerVersion () {\n return pkg.version\n }\n\n isMuted () {\n return this.player.muted()\n }\n\n getRenditionHeight () {\n return null\n }\n\n getRenditionWidth () {\n return null\n }\n\n getPlayerName () {\n return 'videojs-ads'\n }\n\n getPlayerVersion () {\n return this.player.ads.VERSION\n }\n\n registerListeners () {\n nrvideo.Log.debugCommonVideoEvents(this.player, [\n null,\n 'ads-request',\n 'ads-load',\n 'adstart',\n 'adend',\n 'adskip',\n 'adserror',\n 'ads-click',\n 'ads-pod-started',\n 'ads-pod-ended',\n 'ads-first-quartile',\n 'ads-midpoint',\n 'ads-third-quartile',\n 'ads-pause',\n 'ads-play',\n 'adtimeout'\n ])\n\n // Register listeners\n this.player.on('ads-request', this.onAdrequest.bind(this))\n this.player.on('ads-load', this.onAdload.bind(this))\n this.player.on('adstart', this.onAdstart.bind(this))\n this.player.on('adend', this.onAdend.bind(this))\n this.player.on('adskip', this.onAdskip.bind(this))\n this.player.on('adserror', this.onAdserror.bind(this))\n this.player.on('ads-click', this.onAdsClick.bind(this))\n this.player.on('ads-pod-started', this.onPodStart.bind(this))\n this.player.on('ads-pod-ended', this.onPodEnd.bind(this))\n this.player.on('ads-first-quartile', this.onFirstQuartile.bind(this))\n this.player.on('ads-midpoint', this.onMidpoint.bind(this))\n this.player.on('ads-third-quartile', this.onThirdQuartile.bind(this))\n this.player.on('ads-pause', this.onAdspause.bind(this))\n this.player.on('ads-play', this.onAdsplay.bind(this))\n }\n\n unregisterListeners () {\n // unregister listeners\n this.player.off('ads-request', this.onAdrequest)\n this.player.off('ads-load', this.onAdload)\n this.player.off('adstart', this.onAdstart)\n this.player.off('adend', this.onAdend)\n this.player.off('adskip', this.onAdskip)\n this.player.off('adserror', this.onAdserror)\n this.player.off('ads-click', this.onAdsClick)\n this.player.off('ads-pod-started', this.onPodStart)\n this.player.off('ads-pod-ended', this.onPodEnd)\n this.player.off('ads-first-quartile', this.onFirstQuartile)\n this.player.off('ads-midpoint', this.onMidpoint)\n this.player.off('ads-third-quartile', this.onThirdQuartile)\n this.player.off('ads-pause', this.onAdspause)\n this.player.off('ads-play', this.onAdsplay)\n }\n\n onAdrequest (e) {\n this.sendRequest()\n this.sendDownload({ state: 'ads-request' })\n }\n\n onAdload (e) {\n this.sendDownload({ state: 'ads-load' })\n }\n\n onAdstart (e) {\n this.sendRequest()\n this.sendStart()\n }\n\n onAdend (e) {\n this.sendEnd()\n }\n\n onAdskip (e) {\n this.sendEnd({ skipped: true })\n }\n\n onAdserror (e) {\n this.sendError()\n }\n\n onAdsClick (e) {\n this.sendAdClick({ url: 'unknown' })\n }\n\n onPodStart (e) {\n this.sendAdBreakStart()\n }\n\n onPodEnd (e) {\n this.sendAdBreakEnd()\n }\n\n onFirstQuartile () {\n this.sendAdQuartile({ quartile: 1 })\n }\n\n onMidpoint () {\n this.sendAdQuartile({ quartile: 2 })\n }\n\n onThirdQuartile () {\n this.sendAdQuartile({ quartile: 3 })\n }\n\n onAdspause () {\n this.sendPause()\n }\n\n onAdsplay () {\n this.sendResume()\n }\n}\n","export default class ContribHlsTech {\n constructor(tech) {\n this.tech = tech.vhs;\n this.player = tech.el().player; // Store player reference for playback bitrate calculation\n }\n\n getRenditionName() {\n try {\n var media = this.tech.playlists.media();\n if (media && media.attributes) return media.attributes.NAME;\n } catch (err) {}\n return null;\n }\n\n getRenditionBitrate() {\n try {\n var media = this.tech.playlists.media();\n if (media && media.attributes) return Math.round(media.attributes.BANDWIDTH);\n } catch (err) {}\n return null;\n }\n\n getRenditionWidth() {\n try {\n var media = this.tech.playlists.media();\n if (media && media.attributes && media.attributes.RESOLUTION) {\n return media.attributes.RESOLUTION.width;\n }\n } catch (err) {}\n return null;\n }\n\n getRenditionHeight() {\n try {\n var media = this.tech.playlists.media();\n if (media && media.attributes && media.attributes.RESOLUTION) {\n return media.attributes.RESOLUTION.height;\n }\n } catch (err) {}\n return null;\n }\n\n getBitrate() {\n // Calculate playback bitrate (actual content consumption rate)\n return this.getContentBitratePlayback();\n }\n\n getManifestBitrate() {\n try {\n // Return highest available bitrate from all renditions\n const playlists = this.tech.playlists.master.playlists;\n if (playlists && playlists.length > 0) {\n return Math.round(Math.max(...playlists.map((p) => p.attributes.BANDWIDTH)));\n }\n } catch (err) {}\n return null;\n }\n\n getSegmentDownloadBitrate() {\n if (\n this.tech.stats?.bandwidth !== undefined &&\n this.tech.stats.bandwidth > 0\n ) {\n return Math.round(this.tech.stats.bandwidth);\n }\n return null;\n }\n\n getNetworkDownloadBitrate() {\n if (this.tech.throughput !== undefined && this.tech.throughput > 0) {\n return Math.round(this.tech.throughput);\n }\n return null;\n }\n\n getContentBitratePlayback() {\n try {\n // Get the current active rendition's bitrate from manifest\n const media = this.tech.playlists.media();\n if (media && media.attributes) {\n // Use AVERAGE-BANDWIDTH if available, fallback to BANDWIDTH\n const bitrate = media.attributes['AVERAGE-BANDWIDTH'] ||\n media.attributes.BANDWIDTH ||\n null;\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n } catch (err) {}\n return null;\n }\n}\n\nContribHlsTech.isUsing = function (tech) {\n return !!tech.vhs;\n};\n","export default class HlsJs {\n constructor(tech) {\n this.tech = tech.vhs_;\n this.player = tech.el().player; // Store player reference for currentTime\n }\n\n getResource(tech) {\n return this.tech.url;\n }\n\n getRenditionName(tech) {\n try {\n var level = this.tech.levels[this.tech.currentLevel];\n if (level && level.name) return level.name;\n } catch (err) {}\n return null;\n }\n\n getRenditionBitrate(tech) {\n try {\n var level = this.tech.levels[this.tech.currentLevel];\n if (level && level.bitrate) return Math.round(level.bitrate);\n } catch (err) {}\n return null;\n }\n\n getRenditionWidth(tech) {\n try {\n var level = this.tech.levels[this.tech.currentLevel];\n if (level && level.width) return level.width;\n } catch (err) {}\n return null;\n }\n\n getRenditionHeight(tech) {\n try {\n var level = this.tech.levels[this.tech.currentLevel];\n if (level && level.height) return level.height;\n } catch (err) {}\n return null;\n }\n\n getBitrate() {\n // Default uses playback bitrate (Method 4)\n return this.getContentBitratePlayback();\n }\n\n getContentBitratePlayback() {\n try {\n // Get the current active level's bitrate from manifest\n const level = this.tech.levels[this.tech.currentLevel];\n if (level && level.bitrate) {\n return Math.round(level.bitrate);\n }\n } catch (err) {}\n return null;\n }\n\n getManifestBitrate() {\n try {\n // Return highest available bitrate from all renditions\n if (this.tech.levels && this.tech.levels.length > 0) {\n return Math.round(Math.max(...this.tech.levels.map(l => l.bitrate)));\n }\n } catch (err) {}\n return null;\n }\n\n getSegmentDownloadBitrate() {\n try {\n // VHS stats.bandwidth\n if (this.tech.stats && this.tech.stats.bandwidth > 0)\n return Math.round(this.tech.stats.bandwidth);\n } catch (err) {}\n return null;\n }\n\n getNetworkDownloadBitrate() {\n if (this.tech.throughput && this.tech.throughput > 0) {\n return Math.round(this.tech.throughput);\n }\n return null;\n }\n}\n\nHlsJs.isUsing = function (tech) {\n return !!tech.vhs_;\n};\n","export default class ShakaTech {\n constructor(tech) {\n this.tech = tech.shakaPlayer;\n this.player = tech.el().player; // Store player reference for playback bitrate calculation\n }\n\n getSrc(tech) {\n try {\n return this.tech.getManifestUri();\n } catch (err) {}\n return null;\n }\n\n getRenditionBitrate(tech) {\n try {\n const bitrate = this.tech.getStats().streamBandwidth;\n return bitrate ? Math.round(bitrate) : null;\n } catch (err) {}\n return null;\n }\n\n getManifestBitrate() {\n try {\n // Return highest available bitrate from all variants\n const tracks = this.tech.getVariantTracks();\n if (tracks && tracks.length > 0) {\n return Math.round(Math.max(\n ...tracks.map((t) => t.videoBandwidth + (t.audioBandwidth || 0)),\n ));\n }\n } catch (err) {}\n return null;\n }\n\n getRenditionWidth(tech) {\n try {\n var tracks = this.tech.getVariantTracks();\n for (var i in tracks) {\n var track = tracks[i];\n if (track.active && track.type === 'video') {\n return track.width;\n }\n }\n } catch (err) {}\n return null;\n }\n\n getRenditionHeight(tech) {\n try {\n var tracks = this.tech.getVariantTracks();\n for (var i in tracks) {\n var track = tracks[i];\n if (track.active && track.type === 'video') {\n return track.height;\n }\n }\n } catch (err) {}\n return null;\n }\n\n getBitrate() {\n // Calculate playback bitrate (actual content consumption rate)\n return this.getContentBitratePlayback();\n }\n\n getContentBitratePlayback() {\n try {\n // Get the current variant's bitrate from manifest (streamBandwidth)\n var stats = this.tech.getStats();\n if (stats && stats.streamBandwidth && stats.streamBandwidth > 0) {\n return Math.round(stats.streamBandwidth);\n }\n } catch (err) {}\n return null;\n }\n\n getSegmentDownloadBitrate() {\n try {\n // Use estimatedBandwidth for measured bitrate\n var stats = this.tech.getStats();\n if (stats && stats.estimatedBandwidth > 0) {\n return Math.round(stats.estimatedBandwidth);\n }\n } catch (err) {}\n return null;\n }\n\n getNetworkDownloadBitrate() {\n try {\n // Shaka: use estimatedBandwidth for download bitrate (no separate property)\n var stats = this.tech.getStats();\n if (stats && stats.estimatedBandwidth > 0) {\n return Math.round(stats.estimatedBandwidth);\n }\n } catch (err) {}\n return null;\n }\n}\n\nShakaTech.isUsing = function (tech) {\n return !!tech.shakaPlayer;\n};\n","import nrvideo from '@newrelic/video-core';\nimport pkg from '../package.json';\nimport ContribHlsTech from './techs/contrib-hls';\nimport HlsJsTech from './techs/hls-js';\nimport ShakaTech from './techs/shaka';\nimport VideojsAdsTracker from './ads/videojs-ads';\nimport ImaAdsTracker from './ads/ima';\nimport BrightcoveImaAdsTracker from './ads/brightcove-ima';\nimport FreewheelAdsTracker from './ads/freewheel';\nimport DaiAdsTracker from './ads/dai';\nimport MediaTailorAdsTracker from './ads/media-tailor';\n\n/**\n * Explicit ad tracking modes. Pass via config.ad.type.\n *\n * CSAI (Client-Side Ad Insertion)\n * All CSAI frameworks share the adsready event path. The tracker auto-detects\n * the right framework (Brightcove IMA → IMA → Freewheel → generic) — no sub-type needed.\n *\n * SSAI (Server-Side Ad Insertion) — sub-type is always required.\n * Each SSAI platform has its own SDK and a different activation path.\n * Cannot be auto-detected — declare which one you are using.\n * SSAI.DAI — Google DAI (google.ima.dai.api)\n * SSAI.MT — AWS MediaTailor\n *\n * If config.ad is not set, no ad tracking runs (safe default).\n * To add a new SSAI platform: add a key to SSAI — validation derives from this object.\n */\nexport const AD_TRACKING = {\n CSAI: 'csai',\n SSAI: Object.freeze({\n DAI: 'ssai:dai',\n MT: 'ssai:mt',\n }),\n};\n\nexport default class VideojsTracker extends nrvideo.VideoTracker {\n constructor(player, options) {\n super(player, options);\n this.options = options;\n this.isContentEnd = false;\n this.imaAdCuePoints = '';\n this.daiInitialized = false;\n this.adTracking = options?.config?.ad?.type || null;\n this.previousBitrate = null;\n\n // When options are provided but config.ad is not declared, no ad tracking\n // will run. Warn so the caller knows to set it explicitly.\n if (options && !this.adTracking) {\n nrvideo.Log.warn(\n 'VideojsTracker: config.ad not set — no ad tracking will run. ' +\n 'Set config.ad.type to enable it (e.g. AD_TRACKING.CSAI, AD_TRACKING.SSAI.MT).',\n );\n }\n\n // Merge config.ad options (segmentPrefix, trackingUrl) into the internal\n // mediatailor object that MediaTailorAdsTracker reads.\n if (this.adTracking === AD_TRACKING.SSAI.MT) {\n const adConfig = options?.config?.ad || {};\n this.options = Object.assign({}, this.options, {\n mediatailor: {\n segmentPrefix: adConfig.segmentPrefix,\n trackingUrl: adConfig.trackingUrl,\n ...this.options?.mediatailor,\n },\n });\n }\n\n nrvideo.Core.addTracker(this, options);\n }\n\n /**\n * Sets the ad tracking mode at runtime.\n * Must be called before the first loadstart / adsready event to take effect.\n * @param {'csai'|'ssai:dai'|'ssai:mt'} type\n */\n setAdTracking(type) {\n const valid = [AD_TRACKING.CSAI, ...Object.values(AD_TRACKING.SSAI)];\n if (!valid.includes(type)) {\n nrvideo.Log.warn(\n `VideojsTracker.setAdTracking: unknown value \"${type}\". Valid values: ${valid.join(', ')}`,\n );\n return;\n }\n this.adTracking = type;\n nrvideo.Log.debug(`VideojsTracker: adTracking set to \"${type}\"`);\n }\n\n getTech() {\n let tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n\n if (tech) {\n if (ContribHlsTech.isUsing(tech)) {\n return new ContribHlsTech(tech);\n } else if (HlsJsTech.isUsing(tech)) {\n return new HlsJsTech(tech);\n } else if (ShakaTech.isUsing(tech)) {\n return new ShakaTech(tech);\n }\n }\n }\n\n getTrackerName() {\n return 'videojs';\n }\n\n getInstrumentationProvider() {\n return 'New Relic';\n }\n\n getInstrumentationName() {\n return this.getPlayerName();\n }\n\n getInstrumentationVersion() {\n return this.getPlayerVersion();\n }\n\n getTrackerVersion() {\n return pkg.version;\n }\n\n getPlayhead() {\n if (\n this.player.ads &&\n this.player.ads.state === 'ads-playback' &&\n this.player.ads.snapshot &&\n this.player.ads.snapshot.currentTime\n ) {\n return this.player.ads.snapshot.currentTime * 1000;\n } else if (this.player.absoluteTime) {\n return this.player.absoluteTime() * 1000;\n } else {\n return this.player.currentTime() * 1000;\n }\n }\n\n getDuration() {\n if (\n this.player.mediainfo &&\n typeof this.player.mediainfo.duration !== 'undefined'\n ) {\n return this.player.mediainfo.duration * 1000; // Brightcove\n } else {\n return this.player.duration() * 1000;\n }\n }\n\n getTitle() {\n return this.player?.mediainfo?.name; // Brightcove\n }\n\n getId() {\n return this.player?.mediainfo?.id; // Brightcove\n }\n\n getLanguage() {\n return this.player?.language();\n }\n\n getSrc() {\n let tech = this.getTech();\n if (tech && tech.getSrc) {\n return tech.getSrc();\n } else {\n return this.player.currentSrc();\n }\n }\n\n getPlayerName() {\n return this.player?.name() || 'videojs';\n }\n\n getPlayerVersion() {\n return this.player?.version || videojs.VERSION;\n }\n\n isMuted() {\n return this.player.muted();\n }\n\n getBitrate() {\n return this.getContentBitratePlayback();\n }\n\n // Measures: Actual content consumption rate during playback\n getContentBitratePlayback() {\n try {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n\n // 1. Get the current active rendition (The most accurate \"Playback Bitrate\")\n if (tech?.vhs?.playlists?.media()) {\n const activePlaylist = tech.vhs.playlists.media();\n // Use AVERAGE-BANDWIDTH if available, fallback to BANDWIDTH\n const bitrate =\n activePlaylist.attributes['AVERAGE-BANDWIDTH'] ||\n activePlaylist.attributes.BANDWIDTH ||\n null;\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n\n // 2. Fallback to tech wrappers (Shaka/Hls.js) if they have a getBitrate method\n const techWrapper = this.getTech();\n if (techWrapper?.getBitrate) {\n const bitrate = techWrapper.getBitrate();\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n } catch (err) {\n /* ignore */\n }\n return null;\n }\n\n getRenditionName() {\n let tech = this.getTech();\n if (tech && tech.getRenditionName) {\n return tech.getRenditionName();\n }\n }\n\n getManifestBitrate() {\n try {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n // tech.vhs.playlists.master.playlists contains the array of all renditions\n const allRenditions = tech?.vhs?.playlists?.master?.playlists;\n\n if (allRenditions && allRenditions.length > 0) {\n // Find the highest BANDWIDTH value in the list\n const maxBitrate = Math.max(\n ...allRenditions.map((p) => p.attributes.BANDWIDTH || 0),\n );\n return maxBitrate > 0 ? Math.round(maxBitrate) : null;\n }\n\n // Fallback to tech wrappers (Shaka/Hls.js)\n const techWrapper = this.getTech();\n if (techWrapper?.getManifestBitrate) {\n const bitrate = techWrapper.getManifestBitrate();\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n } catch (e) {\n /* ignore */\n }\n return null;\n }\n\n getSegmentDownloadBitrate() {\n try {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n\n // VHS stats.bandwidth\n if (tech?.vhs?.stats?.bandwidth && tech.vhs.stats.bandwidth > 0) {\n return Math.round(tech.vhs.stats.bandwidth);\n }\n\n // Fallback to tech wrappers (Shaka/Hls.js)\n const techWrapper = this.getTech();\n if (techWrapper?.getSegmentDownloadBitrate) {\n const bitrate = techWrapper.getSegmentDownloadBitrate();\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n } catch (err) {\n /* ignore */\n }\n return null;\n }\n\n getNetworkDownloadBitrate() {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n\n if (tech?.vhs?.throughput && tech.vhs.throughput > 0) {\n return Math.round(tech.vhs.throughput);\n }\n\n // Fallback to tech wrapper implementation\n const techWrapper = this.getTech();\n if (techWrapper?.getNetworkDownloadBitrate) {\n const bitrate = techWrapper.getNetworkDownloadBitrate();\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n\n return null;\n }\n\n getRenditionHeight() {\n let tech = this.getTech();\n\n if (tech && tech.getRenditionHeight) {\n return tech.getRenditionHeight();\n }\n return this.player.videoHeight();\n }\n\n getRenditionWidth() {\n let tech = this.getTech();\n if (tech && tech.getRenditionWidth) {\n return tech.getRenditionWidth();\n }\n return this.player.videoWidth();\n }\n\n getPlayrate() {\n return this.player.playbackRate();\n }\n\n isAutoplayed() {\n return this.player.autoplay();\n }\n\n isFullscreen() {\n return this.player.isFullscreen();\n }\n\n getPreload() {\n return this.player.preload();\n }\n\n registerListeners() {\n nrvideo.Log.debugCommonVideoEvents(this.player, [\n 'adstart',\n 'adend',\n 'adskip',\n 'adsready',\n 'adserror',\n 'dispose',\n ]);\n\n // BIND LISTENER METHODS\n this.onDownload = this.onDownload.bind(this);\n this.onAdsready = this.onAdsready.bind(this);\n this.onAdStart = this.onAdStart.bind(this);\n this.onAdEnd = this.onAdEnd.bind(this);\n this.onPlay = this.onPlay.bind(this);\n this.onPause = this.onPause.bind(this);\n this.onPlaying = this.onPlaying.bind(this);\n this.onAbort = this.onAbort.bind(this);\n this.onEnded = this.onEnded.bind(this);\n this.onDispose = this.onDispose.bind(this);\n this.onSeeking = this.onSeeking.bind(this);\n this.onSeeked = this.onSeeked.bind(this);\n this.onError = this.onError.bind(this);\n this.onWaiting = this.onWaiting.bind(this);\n this.onTimeupdate = this.onTimeupdate.bind(this);\n this.OnAdsAllpodsCompleted = this.OnAdsAllpodsCompleted.bind(this);\n this.onStreamManager = this.onStreamManager.bind(this);\n this.onCanPlayThrough = this.onCanPlayThrough.bind(this);\n\n this.player.on('loadstart', this.onDownload);\n this.player.on('loadeddata', this.onDownload);\n this.player.on('loadedmetadata', this.onDownload);\n this.player.on('adsready', this.onAdsready);\n this.player.on('adstart', this.onAdStart);\n this.player.on('adend', this.onAdEnd);\n this.player.on('play', this.onPlay);\n this.player.on('pause', this.onPause);\n this.player.on('playing', this.onPlaying);\n this.player.on('abort', this.onAbort);\n this.player.on('ended', this.onEnded);\n this.player.on('dispose', this.onDispose);\n this.player.on('seeking', this.onSeeking);\n this.player.on('seeked', this.onSeeked);\n this.player.on('error', this.onError);\n this.player.on('waiting', this.onWaiting);\n this.player.on('timeupdate', this.onTimeupdate);\n this.player.on('ads-allpods-completed', this.OnAdsAllpodsCompleted);\n this.player.on('stream-manager', this.onStreamManager);\n this.player.on('canplaythrough', this.onCanPlayThrough);\n\n this.onQualityLevelChange = this.onQualityLevelChange.bind(this);\n // Get qualityLevels lazily after player is ready\n if (typeof this.player.qualityLevels === 'function') {\n this.qualityLevels = this.player.qualityLevels();\n if (this.qualityLevels) {\n this.qualityLevels.on('change', this.onQualityLevelChange);\n }\n }\n }\n\n unregisterListeners() {\n this.player.off('loadstart', this.onDownload);\n this.player.off('loadeddata', this.onDownload);\n this.player.off('loadedmetadata', this.onDownload);\n this.player.off('adsready', this.onAdsready);\n this.player.off('adstart', this.onAdStart);\n this.player.off('adend', this.onAdEnd);\n this.player.off('play', this.onPlay);\n this.player.off('pause', this.onPause);\n this.player.off('playing', this.onPlaying);\n this.player.off('abort', this.onAbort);\n this.player.off('ended', this.onEnded);\n this.player.off('dispose', this.onDispose);\n this.player.off('seeking', this.onSeeking);\n this.player.off('seeked', this.onSeeked);\n this.player.off('error', this.onError);\n this.player.off('waiting', this.onWaiting);\n this.player.off('timeupdate', this.onTimeupdate);\n this.player.off('ads-allpods-completed', this.OnAdsAllpodsCompleted);\n this.player.off('stream-manager', this.onStreamManager);\n this.player.off('canplaythrough', this.onCanPlayThrough);\n if (this.qualityLevels) {\n this.qualityLevels.off('change', this.onQualityLevelChange);\n }\n }\n\n onDownload(e) {\n this.sendDownload({ state: e.type });\n\n if (\n this.adTracking === AD_TRACKING.SSAI.MT &&\n !this.adsTracker &&\n e.type === 'loadstart'\n ) {\n nrvideo.Log.debug('VideojsTracker: Creating MediaTailorAdsTracker');\n this.setAdsTracker(new MediaTailorAdsTracker(this.player, this.options));\n // MediaTailor SSAI starts with content, not ads (unlike client-side frameworks)\n this.adsTracker.setIsAd(false);\n }\n }\n\n // DAI methods\n onStreamManager(event) {\n if (\n this.adTracking === AD_TRACKING.SSAI.DAI &&\n !this.adsTracker &&\n event.StreamManager\n ) {\n const daiTracker = new DaiAdsTracker(this.player);\n daiTracker.setStreamManager(event.StreamManager);\n this.setAdsTracker(daiTracker);\n }\n }\n // DAI methods end\n\n onAdsready() {\n // SSAI platforms never fire adsready — skip when an SSAI type is explicitly set.\n if (Object.values(AD_TRACKING.SSAI).includes(this.adTracking)) return;\n\n // config.ad.type is not set — warn and fall back to auto-detection.\n if (!this.adTracking) {\n nrvideo.Log.warn(\n 'VideojsTracker: adsready fired but config.ad.type is not set — ' +\n 'attempting CSAI auto-detection for backward compatibility.',\n );\n }\n\n if (!this.adsTracker) {\n if (BrightcoveImaAdsTracker.isUsing(this.player)) {\n nrvideo.Log.debug(\n 'VideojsTracker: auto-detected BrightcoveImaAdsTracker',\n );\n this.setAdsTracker(new BrightcoveImaAdsTracker(this.player));\n } else if (ImaAdsTracker.isUsing(this.player)) {\n nrvideo.Log.debug('VideojsTracker: auto-detected ImaAdsTracker');\n this.setAdsTracker(new ImaAdsTracker(this.player));\n } else if (FreewheelAdsTracker.isUsing(this.player)) {\n nrvideo.Log.debug('VideojsTracker: auto-detected FreewheelAdsTracker');\n this.setAdsTracker(new FreewheelAdsTracker(this.player));\n } else {\n nrvideo.Log.debug(\n 'VideojsTracker: no specific CSAI framework detected, using generic VideojsAdsTracker',\n );\n this.setAdsTracker(new VideojsAdsTracker(this.player));\n }\n }\n }\n\n onAdStart() {\n this.currentAdPlaying = true;\n\n /* get the array with all the cue points which will be played */\n if (!this.imaAdCuePoints) {\n this.imaAdCuePoints = this.player?.ima?.getAdsManager().getCuePoints();\n }\n }\n onAdEnd() {\n if (this.isContentEnd) {\n this.sendEnd();\n }\n }\n\n OnAdsAllpodsCompleted() {\n this.onEnded.bind(this);\n this.FreewheelAdsCompleted = true;\n }\n\n /**\n * Check if ads tracker is currently in ad mode\n * @returns {boolean} True if ads are playing\n */\n isAdsTrackerActive() {\n // For CSAI: videojs-contrib-ads manages ad state exclusively\n if (this.player.ads) {\n return this.player.ads.state === 'ads-playback';\n }\n // For SSAI (no player.ads): check tracker's isAd flag (manually toggled)\n return this.adsTracker && this.adsTracker.isAd && this.adsTracker.isAd();\n }\n\n onPlay() {\n this.sendRequest();\n }\n\n onPause() {\n // Don't send CONTENT_PAUSE if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n // Don't send CONTENT_PAUSE if video has ended (CONTENT_END will be sent instead)\n if (this.player.ended()) {\n return;\n }\n this.sendPause();\n }\n\n onCanPlayThrough() {\n // Don't send CONTENT_BUFFER_END if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n // Send BUFFER_END when buffer fills, even if paused\n // This ensures accurate buffer duration metrics when user pauses during buffering\n this.sendBufferEnd();\n }\n\n onPlaying() {\n // Don't send CONTENT_RESUME if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n this.sendResume();\n this.sendBufferEnd();\n }\n\n onAbort() {\n this.sendEnd();\n }\n\n onEnded() {\n if (this.adsTracker) {\n this.isContentEnd = true;\n if (this.imaAdCuePoints && !this.imaAdCuePoints.includes(-1)) {\n this.sendEnd();\n }\n } else {\n this.sendEnd();\n }\n }\n\n onDispose() {\n this.sendEnd();\n }\n\n onSeeking() {\n // Don't send CONTENT_SEEK_START if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n this.sendSeekStart();\n }\n\n onSeeked() {\n // Don't send CONTENT_SEEK_END if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n this.sendSeekEnd();\n }\n\n onError() {\n const error = this.player.error();\n\n const errorCode = error.code;\n const errorMessage = error.message;\n if (this.player.error && this.player.error()) {\n this.sendError({ errorCode, errorMessage });\n }\n }\n\n onWaiting(e) {\n // Don't send CONTENT_BUFFER_START if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n this.sendBufferStart();\n }\n\n onTimeupdate(e) {\n if (this.getPlayhead() > 0.1) {\n this.sendStart();\n }\n }\n\n onQualityLevelChange(e) {\n if (this.qualityLevels && this.qualityLevels.selectedIndex >= 0) {\n const selectedLevel =\n this.qualityLevels[this.qualityLevels.selectedIndex];\n if (selectedLevel) {\n const newBitrate = selectedLevel.bitrate;\n const oldBitrate = this.previousBitrate;\n\n this.sendRenditionChanged({\n oldBitrate,\n newBitrate,\n });\n\n this.previousBitrate = newBitrate;\n }\n }\n }\n}\n\n// Attach AD_TRACKING and Log as static properties so UMD callers can use\n// VideojsTracker.AD_TRACKING and VideojsTracker.Log without importing named exports.\nVideojsTracker.AD_TRACKING = AD_TRACKING;\nVideojsTracker.Log = nrvideo.Log;\n\n// Static members\nexport {\n HlsJsTech,\n ContribHlsTech,\n ShakaTech,\n VideojsAdsTracker,\n ImaAdsTracker,\n BrightcoveImaAdsTracker,\n FreewheelAdsTracker,\n DaiAdsTracker,\n MediaTailorAdsTracker,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import VideojsTracker from './tracker';\nexport default VideojsTracker;"],"names":["root","factory","exports","module","define","amd","self","t","e","i","d","videoAnalyticsHarvester","h","s","r","a","n","o","constructor","this","isInitialized","harvestScheduler","eventBuffer","initialize","A","warn","startScheduler","notice","error","message","addEvent","actionName","Events","QOE_AGGREGATE","viewId","addOrReplaceByActionNameAndViewId","addOrReplaceByActionName","add","setHarvestInterval","updateHarvestInterval","forceNextQoeCycle","setBeforeDrainCallback","beforeDrainCallback","refreshQoeKpis","findByActionNameAndViewId","findByActionName","QOE_KPI_KEYS","reset","startTime","stopTime","accumulator","offset","getDeltaTime","Date","getTime","start","stop","getDuration","clone","AdPositions","PRE","MID","POST","COLLECTOR","US","EU","Staging","GOV","VALID_EVENT_TYPES","MAX_PAYLOAD_SIZE","MAX_BEACON_SIZE","MAX_EVENTS_PER_BATCH","INTERVAL","QOE_AGGREGATE_KEYS","on","_listeners","push","off","indexOf","splice","emit","Array","isArray","forEach","call","eventType","type","data","target","buffer","maxPayloadSize","maxEventsPerBatch","currentPayloadSize","totalEvents","smartHarvestPayloadThreshold","Math","floor","overflowPayloadThreshold","smartHarvestEventThreshold","overflowEventThreshold","onSmartHarvestTrigger","findIndex","find","Q3","makeRoom","checkSmartHarvestTrigger","round","setSmartHarvestCallback","drain","isEmpty","size","clear","length","shift","l","retryQueueHandler","u","httpClient","X","fallBackUrl","retryCount","triggerSmartHarvest","isStarted","currentTimerId","harvestCycle","isHarvesting","qoeCycleCount","_lastSentQoeKpis","setupPageLifecycleHandlers","eventBufferSize","scheduleNextHarvest","stopScheduler","clearTimeout","threshold","triggerHarvest","setTimeout","onHarvestInterval","getQueueSize","success","reason","drainEvents","isFinalHarvest","trimEventsToFit","sendChunk","totalChunks","results","handleHarvestFailure","consecutiveFailures","ins","unshift","slice","originalCount","trimmedCount","finalSize","maxSize","addFailedEvents","window","NRVIDEO","config","qoeIntervalFactor","_qoeKpisUnchanged","_saveQoeKpis","c","getRetryEventsToFit","url","c$","payload","body","options","isLastChunk","Promise","send","retry","handleRequestFailure","status","chunk","eventCount","info","region","isNaN","force","document","addEventListener","hidden","Levels","ERROR","WARNING","arguments","NOTICE","debug","DEBUG","debugCommonVideoEvents","level","concat","addEventHandler","prefix","includeTime","getDate","getMinutes","getSeconds","getMilliseconds","SILENT","colorful","documentMode","console","cast","log","apply","ALL","location","search","exec","Error","callback","executeRequest","now","JSON","stringify","obfuscate","reduce","regex","RegExp","flags","includes","source","replace","replacement","navigator","sendBeacon","sendWithBeacon","handleRequestComplete","fetchWithTimeout","method","headers","keepalive","ok","statusText","Sc","AbortController","abort","fetch","signal","name","retryQueue","maxQueueSize","maxQueueSizeBytes","queueSizeBefore","evictOldestEvent","discardEvent","super","customData","heartbeat","parentTracker","_trackerReadyChrono","_actionTable","ACTION_TABLE","_actionAdTable","ACTION_AD_TABLE","setOptions","dispose","unregisterListeners","registerListeners","getHeartbeat","state","_isAd","startHeartbeat","_heartbeatInterval","setInterval","sendHeartbeat","bind","max","stopHeartbeat","clearInterval","sendVideoAction","HEARTBEAT","getAttributes","trackerName","getTrackerName","trackerVersion","getTrackerVersion","coreVersion","rE","timeSinceTrackerReady","isBackgroundEvent","sendVideoAdAction","sendVideoErrorAction","isAd","sendVideoCustomAction","z8","beacon","licenseKey","applicationID","href","ArrayBuffer","byteLength","Blob","FormData","WeakSet","has","Object","defineProperty","enumerable","get","prototype","hasOwnProperty","appName","qoe","timestamp","timeSinceLoad","performance","g","m","qoeAggregateVersion","f","qoeAggregate","setConfiguration","validateRequiredFields","validateConfigFields","initializeGlobalConfig","values","flatMap","keys","join","filterObfuscateRules","filter","sanitizeQoeIntervalFactor","Number","isInteger","addTracker","trackerInit","removeTracker","getTrackers","sendError","forceHarvest","E","_createdAt","_hb","_acc","_bufferAcc","_viewSession","_viewCount","numberOfErrors","numberOfAds","numberOfVideos","totalPlaytime","weightedAverageBitrate","totalAdPlaytime","isAdBreak","initialBufferingHappened","startupTime","peakBitrate","_lastBitrate","_lastBitrateChangeTimestamp","partialAverageBitrate","_totalBitrateDuration","hadStartupError","hadPlaybackError","totalRebufferingTime","resetFlags","resetChronos","isPlayerReady","isRequested","isPaused","isSeeking","isBuffering","isPlaying","timeSinceRequested","timeSinceStarted","timeSincePaused","timeSinceSeekBegin","timeSinceBufferBegin","timeSinceAdBreakStart","timeSinceLastDownload","timeSinceLastHeartbeat","timeSinceLastRenditionChange","timeSinceLastAdQuartile","timeSinceLastAd","timeSinceLastError","timeSinceLastAdError","timeSinceResumed","timeSinceSeekEnd","playtimeSinceLastEvent","customTimeSinceAttributes","elapsedTime","bufferElapsedTime","_totalAdPlaytime","setIsAd","setTimeSinceAttribute","removeTimeSinceAttribute","getViewSession","random","toString","substring","getViewId","getStateAttributes","timeSinceAdRequested","timeSinceLastAdHeartbeat","timeSinceAdStarted","timeSinceAdPaused","timeSinceAdBufferBegin","timeSinceAdSeekBegin","timeSinceAdBreakBegin","entries","getQoeAttributes","rebufferingRatio","averageBitrate","weightedBitrate","calculateBufferType","goViewCountUp","goPlayerReady","goRequest","goStart","goEnd","goPause","goResume","goBufferStart","goBufferEnd","goSeekStart","goSeekEnd","goAdBreakStart","goAdBreakEnd","goDownload","goHeartbeat","goRenditionChange","goAdQuartile","goError","isError","goLastAd","trackContentBitrateState","resetViewIdTrackedState","clearTotalAdsTime","totalAdTime","startAdsTime","stopAdsTime","setStartupTime","T","v","adsTracker","_lastBufferType","_userId","setPlayer","tag","setUserId","setAdsTracker","player","getElementById","disposeAdsTracker","S","getVideoId","getTitle","isLive","getBitrate","getManifestBitrate","getSegmentDownloadBitrate","getNetworkDownloadBitrate","getWebkitBitrate","webkitVideoDecodedByteCount","_lastWebkitBitrate","getRenditionName","getRenditionBitrate","getRenditionShift","_lastAdRendition","_lastRendition","getRenditionHeight","videoHeight","getRenditionWidth","videoWidth","duration","getPlayhead","currentTime","getLanguage","getSrc","currentSrc","getPlayrate","playbackRate","isMuted","muted","isFullscreen","getCdn","getPlayerName","getPlayerVersion","getFps","isAutoplayed","autoplay","getPreload","preload","getAdQuartile","getAdPosition","getAdPartner","getAdCreativeId","getInstrumentationProvider","getInstrumentationName","getInstrumentationVersion","viewSession","playerName","playerVersion","src","pageUrl","adId","adTitle","adSrc","adCdn","adBitrate","adRenditionName","adRenditionHeight","adRenditionWidth","adDuration","adPlayhead","adLanguage","adIsMuted","adFps","adPosition","adCreativeId","adPartner","contentId","contentTitle","contentSrc","contentCdn","contentPlayhead","contentIsLive","contentBitrate","contentManifestBitrate","contentSegmentDownloadBitrate","contentNetworkDownloadBitrate","contentRenditionName","contentRenditionHeight","contentRenditionWidth","contentDuration","contentLanguage","contentPlayrate","contentIsFullscreen","contentIsMuted","contentIsAutoplayed","contentPreload","contentFps","addQoeAttributes","sendCustom","sendPlayerReady","PLAYER_READY","sendRequest","AD_REQUEST","CONTENT_REQUEST","sendStart","AD_START","CONTENT_START","sendEnd","AD_END","CONTENT_END","sendPause","AD_PAUSE","CONTENT_PAUSE","sendResume","AD_RESUME","CONTENT_RESUME","sendBufferStart","AD_BUFFER_START","CONTENT_BUFFER_START","buildBufferAttributes","bufferType","sendBufferEnd","AD_BUFFER_END","CONTENT_BUFFER_END","isInitialBuffering","sendSeekStart","AD_SEEK_START","CONTENT_SEEK_START","sendSeekEnd","AD_SEEK_END","CONTENT_SEEK_END","sendDownload","DOWNLOAD","AD_ERROR","CONTENT_ERROR","sendRenditionChanged","AD_RENDITION_CHANGE","CONTENT_RENDITION_CHANGE","adjustElapsedTimeForPause","AD_HEARTBEAT","CONTENT_HEARTBEAT","sendAdBreakStart","AD_BREAK_START","sendAdBreakEnd","AD_BREAK_END","sendAdQuartile","quartile","AD_QUARTILE","sendAdClick","AD_CLICK","p","y","_","R","B","b","Constants","Chrono","Log","Emitter","Tracker","VideoTracker","VideoTrackerState","Core","version","NrVideoEventAggregator","RetryQueueHandler","OptimizedHttpClient","HarvestScheduler","recordEvent","_videoCore","_interopRequireDefault","require","_videojsAds","__esModule","default","_defineProperties","configurable","writable","_toPropertyKey","key","_typeof","Symbol","toPrimitive","TypeError","String","_toPrimitive","_callSuper","_getPrototypeOf","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","Boolean","valueOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","_VideojsAdsTracker","BrightcoveImaAdsTracker","_classCallCheck","create","value","_inherits","ima3","_this$player","adPlayer","nrvideo","onStarted","onPaused","onResume","onComplete","onSkipped","onError","onClick","skipped","sendClick","VideojsAdsTracker","_slicedToArray","_arrayWithHoles","iterator","next","done","_iterableToArrayLimit","_arrayLikeToArray","from","test","_unsupportedIterableToArray","_nonIterableRest","_defineProperty","_superPropGet","_get","_superPropBase","getOwnPropertyDescriptor","daiEvents","DAI_STREAM_INITIALIZED","DAI_STREAM_LOADED","DAI_STREAM_ERROR","DAI_AD_BREAK_STARTED","DAI_AD_BREAK_ENDED","DAI_AD_PERIOD_STARTED","DAI_AD_PERIOD_ENDED","DAI_AD_STARTED","DAI_AD_FIRST_QUARTILE","DAI_AD_MIDPOINT","DAI_AD_THIRD_QUARTILE","DAI_AD_COMPLETE","DAI_AD_SKIPPED","DAI_AD_PAUSED","DAI_AD_RESUMED","DAI_AD_CLICKED","DAI_AD_ERROR","DAI_CUEPOINTS_CHANGED","DAI_TIMED_METADATA","DaiAdsTracker","_this","streamManager","currentAdData","adBreakData","streamData","cuePoints","initialized","eventHandlers","imaDai","dai","VERSION","ima","setupStreamManagerListeners","_google","_this$eventHandlers","_this2","google","api","StreamEvent","Type","LOADED","onStreamLoaded","STREAM_INITIALIZED","onStreamInitialized","onStreamError","AD_BREAK_STARTED","onAdBreakStarted","AD_BREAK_ENDED","onAdBreakEnded","AD_PERIOD_STARTED","onAdPeriodStarted","AD_PERIOD_ENDED","onAdPeriodEnded","STARTED","onAdStarted","FIRST_QUARTILE","onAdFirstQuartile","MIDPOINT","onAdMidpoint","THIRD_QUARTILE","onAdThirdQuartile","COMPLETE","onAdComplete","SKIPPED","onAdSkipped","PAUSED","onAdPaused","RESUMED","onAdResumed","CLICK","onAdClicked","VIDEO_CLICKED","CUEPOINTS_CHANGED","onCuePointsChanged","TIMED_METADATA","onTimedMetadata","_ref","_ref2","handler","_this3","_ref3","_ref4","removeEventListener","event","extractStreamData","errorData","extractErrorData","extractAdBreakData","extractAdData","getClickThroughUrl","extractCuePoints","metadata","extractTimedMetadata","getStreamData","streamId","adTagParameters","streamType","getStreamType","_adBreakData$ads","getAdBreak","adBreakId","id","adBreakTitle","title","adCount","ads","position","ad","getAd","getAdId","creativeId","getCreativeId","description","getDescription","advertiserName","getAdvertiserName","clickThroughUrl","dealId","getDealId","wrapperAdIds","getWrapperAdIds","getError","errorCode","getErrorCode","errorMessage","getMessage","innerError","getInnerError","getCuepoints","getType","getData","_this$player$dai","_this$player$ima","_this$currentAdData","undefined","_this$currentAdData2","_this$currentAdData3","_this$currentAdData4","_this$streamData","getStreamTime","_this$currentAdData5","_this$streamData2","Infinity","tech","getTech","stats","bandwidth","bitrate","FreewheelAdsTracker","_createClass","FreeWheelPlugin","provider","adInstance","getActiveCreativeRendition","getId","err","getPrimaryCreativeRenditionAsset","getUrl","getName","tv","freewheel","ImaAdsTracker","getAdsManager","getCuePoints","lastAdData","podInfo","podIndex","mediaUrl","manager","getRemainingTime","adVideoElement","getAdVideoElement","_lastAdWebkitBitrate","delta","seconds","renditionBitrate","AdEvent","AdErrorEvent","ALL_ADS_COMPLETED","LINEAR_CHANGED","USER_CLOSE","IMPRESSION","CONTENT_PAUSE_REQUESTED","CONTENT_RESUME_REQUESTED","SKIPPABLE_STATE_CHANGED","AD_CAN_PLAY","AD_METADATA","EXPANDED_CHANGED","AD_BREAK_READY","LOG","onLoaded","onStart","onResumed","onFirstQuartile","onMidpoint","onThirdQuartile","onImpression","getAdData","adError","adQuartile","adsManager","_currentAd$getAdPodIn","currentAd","getCurrentAd","getMediaUrl","getAdPodInfo","getVastMediaBitrate","controller","adUi","adContainerDiv","querySelector","_mtConstants","_mt","_regenerator","toStringTag","Generator","_regeneratorDefine2","G","GeneratorFunction","GeneratorFunctionPrototype","displayName","w","_invoke","asyncGeneratorStep","resolve","then","_asyncToGenerator","_next","_throw","MediaTailorAdsTracker","mtOptions","mediatailor","manifestFormat","playbackManifestUrl","explicitTrackingUrl","trackingUrl","adSegmentPrefix","adSchedule","currentAdBreak","currentAdPod","hasEndedContent","isDisposed","trackingAbortController","manifestAbortController","isFetchingTracking","isFetchingManifest","trackingEndpointUrl","hasAttemptedTrackingFetch","trackingFetchRetries","maxTrackingRetries","manifestPollTimer","trackingPollTimer","liveRefreshIntervalSeconds","mediaPlaylistUrl","lastMediaPlaylistText","getTimestamp","endpoint","trackingAPITimeout","TRACKING_API_TIMEOUT_MS","detectManifestFormatFromUrl","toUpperCase","one","detectPlaybackStreamType","initializeTracking","buildTrackingEndpointUrl","STREAM_TYPE","VOD","setupVODTracking","setupLiveTracking","onPause","onPlaying","onSeeking","onSeeked","onWaiting","onEnded","onTimeUpdate","stopLivePolling","hookPlayerManifest","pollingInterval","getLiveRefreshIntervalMs","pollManifestForNewAds","getAndProcessTrackingMetadata","DEFAULT_LIVE_POLL_INTERVAL_MS","newInterval","IWillNotUseThisInPlugins","getManifestDirectly","MANIFEST_TYPE","HLS","hookHLSViaVHS","hookHLSViaNative","hookHLSViaContribHls","DASH","hookDASHViaShaka","hookDASHViaDashJs","_this4","vhs","playlists","currentPlaylist","media","segments","parseVhsPlaylistForAdBreaks","playlist","el_","canPlayType","HLS_MIME_TYPE","_this5","hls","_this6","shakaPlayer","handleDASHEmsgEvent","_this7","dash","handleDASHEventStream","_getManifestDirectly","_callee","manifestUrl","_t","_context","fetchAndParseHlsManifest","fetchAndParseDashManifest","_fetchAndParseHlsManifest","_callee2","_yield$fetchHlsMaster","mediaText","hlsTargetDurationSeconds","_t2","_context2","fetchHlsMasterManifest","fetchHlsMediaPlaylist","extractHlsTargetDurationSeconds","updateLiveRefreshIntervalFromManifest","parseHlsManifestForAdBreaks","mergeNewAds","_x","_fetchAndParseDashManifest","_callee3","xmlText","dashMinimumUpdatePeriodSeconds","_t3","_context3","fetchDashManifest","extractDashMinimumUpdatePeriodSeconds","parseDashManifestForAdBreaks","_x2","emsgData","detail","schemeIdUri","SCTE35_SCHEME_MARKER","timescale","presentationTime","presentationTimeDelta","eventDuration","messageData","adBreak","endTime","confirmedByTracking","hasFiredStart","hasFiredEnd","hasFiredAdStart","pods","eventData","parseFloat","_playlist$segments","_this8","targetDuration","detectAdBreaksFromVhsPlaylist","_detectionPathLogged","firstSeg","whichAdSegmentMarker","path","sum","ab","_pollManifestForNewAds","_callee4","_t4","_context4","LIVE","newAds","mergeAdSchedules","intervalSeconds","restartLivePollingTimers","_getAndProcessTrackingMetadata","_callee5","_t5","_context5","getTrackingMetadata","avails","enrichWithTrackingMetadata","_this$adSchedule","enrichAdScheduleWithTrackingMetadata","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_toConsumableArray","sort","map","podCount","adObject","progress","_this9","getQuartilesToFire","q1","hasFiredQ1","q2","hasFiredQ2","q3","hasFiredQ3","activeAdBreak","findActiveAdBreak","toFixed","_activeAdBreak$pods","adBreakIndex","abs","determineAdPosition","breakIndex","totalBreaks","activePod","findActivePod","podProgress","trackQuartiles","adProgress","ended","sendContentEnd","eventName","sendMethod","handleAdEvent","_this$currentAdBreak2","_this$currentAdBreak3","_this$currentAdBreak","_this$currentAdBreak5","_this$currentAdBreak6","_this$currentAdBreak4","PRE_ROLL","MID_ROLL","POST_ROLL","MANIFEST_CUE","VHS_DISCONTINUITY","TRACKING_API","MANIFEST_AND_TRACKING","DASH_EMSG","DASH_EVENT_STREAM","Q1","Q2","match","REGEX_SESSION_ID","sessionId","REGEX_TRACKING_PATH_SEGMENT","REGEX_MANIFEST_FILE_SUFFIX","discontinuityStarts","adBreaks","currentPod","segment","index","isMTSegment","isMediaTailorSegment","hasDiscontinuity","MIN_AD_DURATION","segmentDuration","HLS_MANIFEST_EXTENSION","DASH_MANIFEST_EXTENSION","totalAdBreaks","AD_POSITION","trackingAvails","scheduleMap","Map","set","avail","firstAd","startTimeInSeconds","existingAd","availId","trackingAd","adIndex","trackingStartTime","trackingDuration","durationInSeconds","manifestText","REGEX_DASH_MINIMUM_UPDATE_PERIOD","parseIsoDuration","REGEX_HLS_TARGET_DURATION","parseInt","masterText","baseUrl","_step2","_iterator2","_createForOfIteratorHelper","split","line","startsWith","HLS_TAG_PREFIX","URL","trim","_x4","_fetchDashManifest","_fetchHlsMasterManifest","_x3","_fetchHlsMediaPlaylist","pod","AD_TIMING_TOLERANCE","firedQuartiles","quartiles","calculateQuartiles","toFire","toISOString","_x5","_getTrackingMetadata","existingSchedule","merged","newAd","assign","finalSchedule","xml","DOMParser","parseFromString","parserError","textContent","periods","querySelectorAll","period","baseUrlEl","adCandidates","MT_SEGMENT_PATTERN","MT_DEFAULT_AD_SEGMENT_PATH","some","periodId","getAttribute","AD_SOURCE","eventStreams","DASH_SCTE35_EVENT_STREAM_SELECTOR","stream","eventId","durationSeconds","_step","currentPodStartTime","lastMapUrl","adPods","isInAdBreak","_iterator","REGEX_DISCONTINUITY","mapMatch","REGEX_MAP","mapUrl","podDuration","MT_HLS_CUE_OUT_TAG","durationMatch","REGEX_CUE_OUT","MT_HLS_CUE_IN_TAG","actualDuration","HLS_SEGMENT_DURATION_TAG","labeled","marker","label","mapUri","uri","segUri","hit","_n","F","candidates","QUARTILES","fetchTextOrThrow","_fetchTextOrThrow","response","credentials","text","lines","_iterator3","_step3","playlistUrl","durationStr","REGEX_ISO_8601_DURATION","timeout","externalSignal","timeoutId","abortHandler","_args5","json","_package","_contribHls","_hlsJs","_shaka","_nrvideo$VideoTracker","ContribHlsTech","isUsing","HlsJsTech","ShakaTech","pkg","onAdrequest","onAdload","onAdstart","onAdend","onAdskip","onAdserror","onAdsClick","onPodStart","onPodEnd","onAdspause","onAdsplay","el","attributes","NAME","BANDWIDTH","RESOLUTION","width","height","getContentBitratePlayback","master","_this$tech$stats","throughput","HlsJs","vhs_","levels","currentLevel","getManifestUri","getStats","streamBandwidth","tracks","getVariantTracks","videoBandwidth","audioBandwidth","track","active","estimatedBandwidth","_ima","_brightcoveIma","_freewheel","_dai","_mediaTailor","ownKeys","getOwnPropertySymbols","_objectSpread","getOwnPropertyDescriptors","defineProperties","AD_TRACKING","CSAI","SSAI","freeze","DAI","MT","VideojsTracker","_options$config","isContentEnd","imaAdCuePoints","daiInitialized","adTracking","previousBitrate","_options$config2","_this$options","adConfig","segmentPrefix","valid","snapshot","absoluteTime","mediainfo","_this$player2","_this$player3","language","_this$player4","_this$player5","videojs","_tech$vhs","activePlaylist","techWrapper","_tech$vhs2","allRenditions","maxBitrate","_tech$vhs3","_tech$vhs4","onDownload","onAdsready","onAdStart","onAdEnd","onPlay","onAbort","onDispose","onTimeupdate","OnAdsAllpodsCompleted","onStreamManager","onCanPlayThrough","onQualityLevelChange","qualityLevels","StreamManager","daiTracker","setStreamManager","_this$player6","currentAdPlaying","FreewheelAdsCompleted","isAdsTrackerActive","code","selectedIndex","selectedLevel","newBitrate","oldBitrate","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","obj","prop","_tracker"],"sourceRoot":""}
|