stormcloud-video-player 0.8.78 → 0.8.79
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/dist/stormcloud-vp.min.js +1 -1
- package/lib/StormcloudPlayer.cjs +5 -1
- package/lib/StormcloudPlayer.cjs.map +1 -1
- package/lib/index.cjs +5 -1
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs +5 -1
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdConfigManager.cjs +3 -1
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +5 -1
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.cjs +5 -1
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +5 -1
- package/lib/players/index.cjs.map +1 -1
- package/lib/types.d.cts +1 -0
- package/lib/ui/StormcloudVideoPlayer.cjs +5 -1
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/utils/tracking.cjs +5 -1
- package/lib/utils/tracking.cjs.map +1 -1
- package/lib/utils/tracking.d.cts +1 -1
- package/package.json +1 -1
package/lib/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\index.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","index_exports","DEFAULT_FLOOR_LADDER_BOUNDS","DEFAULT_REQUEST_SAFETY_MS","DEFAULT_TRACKING_INGEST_CONFIG","DISABLED_FLOOR_LADDER_CONFIG","GAM_AD_OPPORTUNITY_DURATION_MS","IS_BROWSER","IS_GLOBAL","IS_IOS","IS_SAFARI","SUPPORTS_DASH","SUPPORTS_HLS","StormcloudPlayer","StormcloudPlayer_default","StormcloudVideoPlayer","StormcloudVideoPlayerComponent","applyTrackingIngestConfig","buildAnalyticsContext","canPlay","configureTrackingIngest","createHlsAdPlayer","createPalNonceManager","createStormcloudPlayer","default","detectBrowser","fixedFloorSelector","generateFloorLevels","getBrowserConfigOverrides","getBrowserID","getClientInfo","ingestPlayerTracking","initializePolyfills","isMediaStream","isTrackingIngestEnabled","lazy","logBrowserInfo","merge","omit","parseApiFloorLadder","parseQuery","players","players_default","randomString","requiresMediaPipelineResetAfterAds","resolveFloorLadderBounds","sendAdDetectTracking","sendAdImpressionTracking","sendAdLoadedTracking","sendHeartbeat","sendInitialTracking","supportsFeature","supportsModernJS","supportsWebKitPresentationMode","trackingIngestConfig","validateFloorCents","validateFloorLadderConfig","module","exports","import_react","require","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","Set","resolveVastEnvironmentSignals","isCtv","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","bridgeDeviceId","validDeviceId","deviceId","realDeviceId","readStoredDeviceId","deviceIdType","readStoredString","inferDeviceIdType","platformLat","limitAdTracking","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","sessionId","getOrCreateCtvSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","navigator","ua","userAgent","maxTouchPoints","test","window","keys","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","source","normalized","safeCall","Number","isInteger","trimmed","trim","parseInt","toLowerCase","replace","fn","thisArg","isMacroPlaceholder","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","has","resolveNativeDeviceId","includeStored","isZeroedAdId","storageKey","existing","readPersistentId","writePersistentId","id","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","document","prefix","encodeURIComponent","parts","cookie","split","part","entry","startsWith","decodeURIComponent","slice","length","bytes","crypto","randomUUID","Uint8Array","getRandomValues","seed","Date","now","Math","floor","performanceNow","i","random","hex","toString","padStart","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","result","normalizeBoolean","getItem","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","pattern","getValue","ctx","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","String","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","location","pathname","search","expandInlineMacroPlaceholders","baseUrl","url","applyDeviceIdentityParams","params","runtimeId","tagRdid","tagLat","latValue","set","delete","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","forEach","_value","push","includes","suffix","normalizeVastTagUrl","raw","URL","anValue","searchParams","orphanFragments","reconstructed","join","_match","val","GAM_AD_HOSTS","ensureVideoAdType","rawUrl","hostname","SCVP_MACRO_DETECT","SCVP_MACRO_PATTERN","SCVP_WHOLE_VALUE_PATTERN","NESTED_QUERY_PARAM_KEYS","SCVP_POD_MACROS","hasScvpMacros","safeDecode","findScvpMacroNames","names","text","pass","_m","bracketName","parenName","add","toUpperCase","decoded","Array","resolveScvpMacroValues","values","Map","str","toFlag","palNonce","programTitle","channelName","pod","streamCorrelator","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","keepNone","substituteScvpParams","unresolved","keep","nested","out","replaceMacro","match","whole","resolved","inner","URLSearchParams","map","k","v","substituteScvpMacros","replaced","entries","append","applyScvpMacros","deferred","stripScvpMacros","applyVastMacros","expandedUrl","replaceCorrelatorFallback","existingUrl","pageUrl","adTest","staleKeys","correlatorRegex","sep","fetchConsentSignals","timeoutMs","signals","Promise","resolve","tasks","tcfApi","__tcfapi","settled","tcData","success","eventStatus","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","setTimeout","uspApi","__uspapi","data","uspString","then","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","minCents","maxCents","levels","cents","overrides","config","bounds","ok","reason","gamLevels","configLevels","indexOf","ready","isArray","errors","check","selected","select","context","floorCents","resolveOpportunityFloor","selector","base","position","skipped","status","positions","decodeQueryComponent","mergeCustParams","kept","pair","applyFloorToVastUrl","applied","parsed","hashIndex","beforeHash","hash","queryIndex","segments","insertAt","rest","segment","eq","rawKey","merged","splice","query","copyConfig","mergeDefined","update","next","finiteNumber","isFinite","src","min","max","step","AD_POSITIONS","FloorLadderController","isEnabled","applyApiConfig","reset","getBounds","validate","setSelector","snapshotFor","getChromeVersion","getPlatform","userAgentData","platform","version","majorVersion","isLegacyTV","supportsModernJS2","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","getWebKitVersion","isSmartTV","browser","prefersProgressiveAdMedia","allowNativeHls","pauseContentDuringAds","assign","e","debug","log","feature","formatPlayhead","fetch","subtle","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","seconds","total","mm","ss","ms","hh","resolveMacroValues","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","toISOString","errorCode","playerWidth","playerHeight","round","clientUa","podSequence","adServingId","substituteVastTrackingMacros","POD_PARAM_KEYS","POSITIVE_INT","NON_NEGATIVE_INT","positiveInt","resolveAdPodConfig","nonNegativeInt","adPodConfig","requestSafetyMs","minPodDurationMs","maxAdsPerBreak","maxPodDurationMs","podMaxAds","podMaxDurationMs","timing","scheduled","scheduledBreakDurationMs","untilEnd","unplayed","resolvePodParams","endMonoMs","input","nowMonoMs","pmxd","breakEndMonoMs","breakStartMonoMs","playedDurationMs","elapsedBeforeGamRequestMs","remainingAtGamDispatchMs","capacity","tagMaxDurationMs","kind","minUsable","minUsablePmxdMs","pmxdCandidateMs","pmnd","exactDuration","podRequestAborted","error","Error","message","diagnostics","isPodRequestAbortedError","firstPositiveIntParam","getAll","isOptimizedPodUrl","some","finalUrl","optimizedPod","safetyReserveMs","problems","validateGamRequestUrl","finalizeGamRequestUrl","breakId","scteBreakDurationMs","decision","pmad","substituted","pmxdSource","pmndSent","pmxdSent","pmadSent","palNoncePresent","givn","gamRequestDispatchTimestamp","nowEpochMs","strippedMacros","expect","leftover","concat","remainingMs","computePodResponseDiagnostics","vastAdCount","totalVastCreativeDurationMs","estimatedUnusedPodMs","estimatedUnmatchedCount","LINEAR_TRACKING_EVENTS","textOf","el","textContent","parseVastTime","h","m","p","parseFloat","s","every","n","parseProgressOffset","offset","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","VAST_REQUEST_TIMEOUT_MS","BEACON_TIMEOUT_MS","inFlightBeacons","VAST_ERROR_MEDIA_DISPLAY","VAST_ERROR_WRAPPER_TIMEOUT","VAST_ERROR_WRAPPER_LIMIT","VAST_ERROR_WRAPPER_NO_ADS","VAST_ERROR_NO_SUPPORTED_MEDIA","VERIFICATION_NOT_SUPPORTED_REASON","VIEWABLE_MIN_VISIBLE_RATIO","VIEWABLE_MIN_CONTINUOUS_S","toVastMediaErrorCode","gamCredentialsMode","contentVideo","options","adPlaying","originalMutedState","originalVolume","volume","listeners","mainHlsInstance","AD_CONTAINER_PROP","AD_VIDEO_PROP","FRAME_COUNTER_RELIABLE_PROP","RVFC_RELIABLE_PROP","adVideoElement","adHls","adContainerEl","adEventHandlers","containerHandlers","currentAd","currentAdMediaFile","podAds","podIndex","preloadedAds","preloadingAds","destroyed","pendingTimeouts","STALL_TIMEOUT_MS","STALL_CHECK_INTERVAL_MS","BLACKFRAME_MIN_PLAYBACK_S","stallWatchdogId","lastAdProgressTime","lastAdProgressPosition","sawDecodedVideoFrame","videoFrameCallbackHandle","pendingPlayPromise","currentVastTagUrl","funnelContext","mediaProbe","lastPodAdElementCount","mediaCandidates","mediaCandidateIndex","mediaStartTimerId","MEDIA_START_TIMEOUT_MS","mediaStartTimeoutMs","VAST_ERROR_MEDIA_TIMEOUT","pendingVastRequests","pendingRequestAbortReason","forcedMuteByAutoplay","createTrackingState","impression","loaded","start","firstQuartile","midpoint","thirdQuartile","complete","viewabilitySettled","lastMuted","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastViewSampleTime","lastPlayerExpanded","documentHandlers","emit","event","payload","SENSITIVE_URL_PARAMS","redactUrl","logFunnel","stage","extra","requestId","controllerId","visibilityState","adId","podSize","vastUrl","mediaUrl","mediaType","type","muted","buildTrackingMacroContext","options2","ad","currentTime","clientWidth","clientHeight","href","fireTrackingPixels","urls","macroContext","trackingUrl","trackingHost","host","unexpanded","macros","img","Image","release","outcome","timeoutId","clearTimeout","onload","onerror","warn","getMainStreamQuality","currentLevel","autoLevel","loadLevel","level2","width","height","bitrate","level","getMediaTargetQuality","mainQuality","dpr","devicePixelRatio","containerWidth","containerHeight","rankMediaCandidates","mediaFiles","probe","createElement","pageIsHttps","protocol","deprioritizeHls","accepted","file","index","isHls","isHlsMediaFile","mimeForProbe","canPlay2","canPlayType","playable","import_hls","isSupported","insecure","details","candidateUrl","candidateType","hlsJs","why","score","resolutionDiff","abs","bitrateDiff","deprioritizedHls","sort","b","a","mediaFile","isProgressiveMediaFile","getMediaProbe","isAudioMediaFile","evaluateMediaFile","mf","getAttribute","delivery","codec","category","whyRejected","apiFramework","bitrateAttr","bitrateValue","hasExplicitDimensions","nativeHls","whyAccepted","baseType","withCodec","collectVideoMediaFiles","mediaFileElements","linear","verbose","querySelectorAll","stats","fileUrl","categories","createEmptyTrackingUrls","clickTracking","viewable","notViewable","viewUndetermined","verificationNotExecuted","progress","pushUrls","elements","collectLinearTracking","into","collectAdLevelTracking","adBody","verification","mergeTrackingUrls","targetLists","sourceLists","incoming","parseXml","xmlString","xmlDoc","DOMParser","parseFromString","parserError","getAdSequence","adElement","sequence","errorUrls","root","parseVastXml","documentElement","adElements","emptyVastResult","ordered","firstEmpty","parseAdElement","usedAdIndex","vastAdTagUri","wrapper","querySelector","trackingUrls2","linear2","trackingUrls","rules","followAdditionalWrappers","inLine","conditionalAd","rejectStats","candidate","files","top","count","mediaFileCount","rejectedByCategory","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","finalizeRequestUrl","controller","startedAt","attempt","resolveDispatchUrl","requestVast","response","AbortController","abort","creds","pending","headers","referrerPolicy","signal","httpStatus","elapsedMs","aborted","errorMessage","statusText","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fetchStartedAt","wrapperUrl","isEdgeEmptySentinelAd","durations","fetchAndParsePod","isEdge","trimmedXml","empty","resolveAd","candidates","podElements","buffet","resolveAll","ads","adElementCount","vastVersion","inlineCount","sentinelCount","catch","shift","createAdVideoElement","video","style","left","objectFit","backgroundColor","playsInline","setupAdEventListeners","onTimeUpdate","sampleViewability","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","candidateIndex","onCanPlay","onPlaying","startStallWatchdog","mutedByAutoplay","creativeView","onEnded","settleViewability","onError","vastErrorCode","mediaErrorCode","code","readyState","currentSrc","recoverFromAdFailure","onMediaDiagnostic","networkState","onVolumeChange","userActivation","isActive","mute","unmute","isTrackablePlayback","ended","onPause","onPlay","resume","handler","addEventListener","removeEventListener","handleAdClick","open","fireNotUsedForUnplayedAds","notUsed","inView","paused","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","contains","fullscreen","playerExpand","exitFullscreen","playerCollapse","attachContainerHandlers","onClick","onInteraction","onFullscreenChange","IntersectionObserver","isIntersecting","intersectionRatio","observe","detachContainerHandlers","setAdPlayingFlag","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","requestVideoFrameCallback","settlePendingPlay","toVastPlayErrorCode","failAdPlayback","errorName","startAdPlayback","isMutedRetry","computed","getComputedStyle","isConnected","containerDisplay","display","containerVisibility","visibility","playPromise","play","finally","prepareVideoElementForNewSource","destroy","pause","removeAttribute","load","recreateAdVideoElement","teardownAdEventListeners","remove","appendChild","clearMediaStartTimer","startMediaStartTimer","resetVideoElementForNextSource","clearStallWatchdog","previousSourceUsedHlsJs","tryNextMediaCandidate","failedUrl","nextUrl","nextType","candidateCount","loadMediaCandidate","reportCurrentAdError","advanceToNextPodAd","handleAdError","loadCurrentAdMedia","isHlsAd","enableWorker","lowLatencyMode","pipeline","loadSource","attachMedia","on","Events","MANIFEST_PARSED","ERROR","_event","fatal","ErrorTypes","NETWORK_ERROR","responseCode","responseText","clearInterval","cancelVideoFrameProbe","noteAdProgress","handleAdStall","getDecodedVideoFrameCount","getVideoPlaybackQuality","quality","totalVideoFrames","legacyCount","webkitDecodedFrameCount","isFrameCounterReliable","markFrameCounterReliable","isRvfcReliable","markRvfcReliable","cancelVideoFrameCallback","startVideoFrameProbe","rvfc","onPresentedFrame","blackFrameDetectionEnabled","setInterval","decodedFrames","timeAdvancing","releaseAdDecoder","pointerEvents","handleAdComplete","continueLiveStreamDuringAds","opacity","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","requestOptions","preloaded","reject","adCount","adIndex","missingAdId","contentVolume","loadError","stop","previousMutedState","clear","abortPendingRequest","isAdPlaying","setFunnelContext","size","resize","listener","off","updateOriginalMutedState","nextVolume","isNaN","getOriginalMutedState","getOriginalVolume","setAdVolume","clamped","requestedVolume","getAdVolume","showPlaceholder","hidePlaceholder","getLoadedAdDuration","getLoadedAdId","getPodAdCount","getPodTotalDurationMs","reduce","limitPodToBudget","maxDurationMs","maxAds","dropped","totalMs","durationMs","keptCount","droppedCount","keptDurationMs","PRIVATE_HOST_PATTERNS","isLocalDevHost","toDevSafeUrl","cleanPath","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","currentNonce","currentNonceManager","pendingNonce","generateNonce","run","generate","settle","getCurrentNonce","waitForNonce","maxWaitMs","timer","nonce","injectNonce","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","loader","request","manager","NonceRequest","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","JSON","stringify","loadNonceManager","getNonce","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","licenseKey","body","method","Authorization","cachedBrowserId","contentChannel","contentNetwork","contentTitle","debugAdTiming","inputStreamType","isLiveStream","screen","vendor","memory","deviceMemory","screenInfo","availWidth","availHeight","orientation","pixelDepth","deviceType","brand","os","model","isAndroid","isWebView","isWebApp","webosMatch","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","substring","origin","domain","path","hardwareConcurrency","language","cookieEnabled","languages","doNotTrack","referrer","sha256Hex","encodedData","utf8","buffer","hashBuffer","char","fallbackHash","timestamp","digest","TextEncoder","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getCachedBrowserId","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","metricEvent","events","adDetectInfo","adLoadedInfo","adImpressionInfo","ad_played_count","content_network","content_channel","heartbeatData","polyfillURLSearchParams","URLSearchParamsPolyfill","init","parseQueryString","cleanQuery","decodedKey","safeDecodeURIComponent","decodedValue","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","polyfillObjectAssign","sources","TypeError","nextSource","nextKey","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","pos","polyfillStringEndsWith","polyfillStringIncludes","parseCueOutDuration","num","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","toNumber","getDateRangeDurationSeconds","marker","id3","splice_command_type","decodeId3ValueToText","decoder","TextDecoder","decode","fromCharCode","getFragmentStartSeconds","frag","startPTS","cueOutMatch","arg","dur","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","bin","parseScte35Binary","normalizeFragmentPayload","ArrayBuffer","view","byteOffset","byteLength","detectTsPacketFormat","packetSizes","packetSize","tsPayloadOffset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","programNumber","pid","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","firstKey","addScte35SectionMarker","markers","appendScte35Bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","parseScte35FromTsPackets","packetInfo","sectionAssemblers","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","bytePos","readBits","numBits","r","BitReader","bitPos","remainingInByte","toRead","currentByte","mask","bits","skipBits","bytePosition","readSpliceTime","timeSpecifiedFlag","ptsAdjustmentTicks","high","ptsTicks","low","markerTypeFromSegmentationTypeId","segmentationTypeId","parseScte35SegmentationDescriptor","descriptor","identifier","segmentationEventId","cancelIndicator","programSegmentationFlag","segmentationDurationFlag","descriptorDataStart","componentCount","durationTicks","segmentationUpidLength","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorTag","descriptorLength","descriptorDataEnd","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","spliceEventId","commandBodyStart","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","splice_event_id","pendingScte35CueKeyValue","processedTsScte35Sections","createScte35CueContext","onScte35Cue","readiness","segmentation_event_id","Scte35CueManager","callbacks","pendingScte35Cues","recentScte35CueKeys","recentScte35CueLimit","activeScte35BreakKey","activeScte35BreakKeyValue","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","sn","fragmentSn","fragmentStartSec","fragmentStartSeconds","cue","createScte35Cue","pendingKey","getPendingScte35CueKey","trimRecentScte35CueMaps","onEarlyStartCue","shouldAcceptScte35EndCue","inAdBreak","isInAdBreak","hasRecentlyHandledScte35Cue","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","isStrongScte35CueKey","recentKey","withDeferredPodParams","deferNonce","lastHeartbeatTime","AdConfigManager","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","defaultEdgePodMaxAds","palNonceDispatchWaitMs","viewCorrelator","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","fetchAndParseVmap","apiVastTagUrl","apiUrl","json","apiEnableEdge","enableEdgePodRequest","apiEdgeUrl","edgePodUrl","apiEnableEdgePodRequest","apiEdgePodUrl","apiFloorLadder","floorLadder","imaPayload","ima","decodedPayload","numberAds","vast","cue_tones","number_ads","apiNumberAds","vmapXml","parseVmapToBreaks","doc","VMAP_NS","adBreakNodes","getElementsByTagNameNS","getElementsByTagName","localName","node","timeOffsetRaw","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","aStart","bStart","timeOffset","hms","hours","minutes","millis","ratio","durationSec","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","tol","driftToleranceMs","breakStartMs","findBreakForTime","selectVastTagsForBreak","beginNewAdPod","resolveEdgeMaxAds","getPalDescriptionUrl","generatePodVastUrl","adPlayer","envSignals","ctvAdRequest","autoplay","nonceReady","completeDeferredRequestSignals","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","monotonicNow","AdTimingService","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","adRequestTokenCounter","backoffBaseMs","maxBackoffMs","activeAdRequestToken","currentAdIndex","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","lastAdRequestTime","consecutiveFailures","maxConsecutiveFailures","minAdRequestIntervalMs","defaultMinRemainingMsToStartAd","failedVastUrls","temporaryFailureUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalNoFillThreshold","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","onAdStopTimerFired","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","beginBreakTiming","startWallClockMs","currentAdBreakStartWallClockMs","markBreakEndedNow","scteAdBreakEndWallClockMs","setAdBreakDurationBoundary","expectedAdBreakDurationMs","getBreakTimingSnapshot","scheduleAdStopAtBreakBoundary","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","adFitsRemainingBudget","logAdDurationDecision","remainingBudget","recordPlayedAdDuration","ensureLoadedAdFitsBudget","fits","rejectLoadedAdForDuration","markAdStarted","noteAdRequestSent","notePodAdStarted","getRemainingAdMs","wallClockRemaining","budgetRemaining","getMinRemainingMsToStartAd","configured","minRemainingMsToStartAd","hasTimeToStartAnotherAd","minRemaining","isTemporaryAdError","isUrlInCooldown","failureTime","cleanupTemporaryFailures","isGamInCooldown","recordGamNoFill","exponent","backoff","pow","resetGamNoFillCounter","enforceGlobalRateLimit","waitMs","startAdRequestWatchdog","token","clearAdRequestWatchdog","adFailsafeTimeoutMs","adRequestWatchdogId","logAdState","onWatchdogTimeout","startAdFailsafeTimer","clearAdFailsafeTimer","adFailsafeTimerId","failsafeMs","videoPaused","onFailsafeTimeout","getAdState","showAds","resetForBreakEnd","ensureContainer","PlaceholderLayer","transition","show","wasHidden","offsetHeight","requestAnimationFrame","hide","removeChild","import_hls2","HlsEngine","cueManager","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","shouldUseNativeHls","getStreamType","canNative","setupNativeHls","adBehavior","isLive","setupHls","hls","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","MEDIA_ATTACHED","_","_data","minSegments","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","hasPendingAdBreak","fragments","fragmentsToScan","tagList","idx","isDateRange","earlyDetection","FRAG_BUFFERED","err","FRAG_DECRYPTED","FRAG_PARSING_METADATA","id3Tags","samples","pts","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","FRAG_CHANGED","activatePendingCuesForFragment","prog","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","parseScte35FromId3","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","recreateDelayMs","EDGE_POD_MAX_ADS","EDGE_POD_EXCEEDS_BUDGET","LICENSE_KEY_PLACEHOLDER","resolveEdgePodBaseUrl","encodedKey","hasPlaceholder","resolveEdgePodRequestContext","setOptionalParam","buildEdgePodUrl","remainingAdLimit","maxMs","classifyEdgeVastResponse","podAdCount","describeEdgeUrl","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setMuted","setVolume","clampedVolume","getVolume","isFullscreen","resizePlayer","REQUEST_FAILURE_STAGES","AdBreakOrchestrator","adConfig","placeholder","isShowingPlaceholder","adDetectSentForCurrentBreak","slotState","unusableResponsesInBreak","controllerGeneration","requestDiagnostics","controllerCallInFlight","playbackStartedForCurrentRequest","opportunityEpoch","edgeExhaustedForBreak","edgeRequestsInBreak","adPodQueue","defaultMinRemainingMsToRequestAd","defaultMaxNoFillsPerBreak","defaultLiveMaxNoFillsPerBreak","breakDurationWaitMs","pendingAdBreak","analyticsContext","nextAdRequestUrl","baseVastUrl","attachImaEventListeners","getAdPlayer","generation","logOrchestratorFunnel","staleControllerId","currentControllerId","onAdClick","onAdInteraction","countFunnelStage","pixelCount","recordRequestDiagnostic","setSlotState","requestNextAd","recreateAdController","currentRequestId","state","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","clearPendingAdBreak","prefetchTimerId","pendingScte35CueKey","isBreakActive","getSlotState","beginVmapBreak","breakKey","resetEdgeStateForBreak","followUpBaseVastUrl","noteOpportunity","handleAdStart","edgeConfigured","adBreakDurationMs","currentMuted","currentVolume","epoch","edgeUrl","podPlayed","getEdgePodBaseUrl","breakSource","waitForBreakDuration","canRequestEdge","prepareEdgePodRequest","runEdgePod","continueAfterEdgeOutcome","markEdgeExhausted","isLiveBreak","startOptimizedPod","deadline","waitedForMs","prefetched","requestToken","requestUrl","podCount","vastUrls","podUrl","noteVastUrlGenerated","currentPodSource","beginFunnelRequest","applyOpportunityFloor","currentVastUrl","isStale","completeGamRequestSignals","createGamDispatchFinalizer","callController","recordPodResponseDiagnostics","recordRequestFailure","handlePodRequestNotSent","adsInBreak","getMinRemainingMsToRequestAd","remainingAds","offsetWidth","trigger","overrunAllowanceMs","classification","diag","endpoint","podDurationMs","failureReason","previous","minRemainingMsToRequestAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","getNextRequestDelayMs","failures","minInterval","sinceLast","nextAdTimerId","stopReason","requestsSent","unusableResponses","handleAdPodComplete","requestFollowUpAd","epoch2","playSingleAd","continueAfterRequestFailure","cancelScheduledRequest","adType","podParamsDeferredToDispatch","impressionFired","failureKey","dispatchedUrl","impressionCount","requestFloorFields","gamRequestSent","logPodDispatch","edgeRequestSent","vastHttpStatus","wrapperDepth","inlineResolved","mediaCandidateCount","supportedMediaCount","playStarted","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","_dispatchedUrl","podDispatchLogged","_logged","fields","measureBreakCapacity","podResponse","opportunityFloorFields","opportunityFloor","floorStatus","floorReason","floorSelector","floorConfigVersion","floorApplied","floorSource","adPosition","amount","breakFunnel","opportunityBreakKey","getFloorSnapshot","expectedDurationMs","newRequestId","requestStartedAt","isAdLoadingWithoutPlayback","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","ap","adDurationS","adDurationMs","logBreakFunnel","funnel","countPrefix","requestRetries","requests","opportunities","floorAppliedRequests","floorSkippedRequests","vastUrlsGenerated","gamResponses","edgeRequests","edgeFills","edgeEmptySentinels","edgeFallbacks","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestAbortedTimeout","wrapperFailures","noSupportedMedia","audioOnly","mediaFilesEvaluated","mediaFilesAccepted","controllerDestroys","staleCallbacks","tagAllowsAudio","missingImpression","discardedBudget","mediaRejected","mediaFallbacks","playCalled","playRejected","mutedRetry","startTimeouts","impressions","impressionUrls","trackingRequests","trackingNotLoaded","trackingUnexpandedMacros","trackingInvalidUrls","vastAdFallbacks","mediaEvents","quartile25","quartile50","quartile75","stoppedBeforeStart","stoppedBeforeStartByBreakEnd","unexpectedUnmutes","unmuteBlocked","visibilityHidden","playbackFailures","stages","previousState","alreadyEnded","contentWasInterrupted","restoredMuted","restoredVolume","monitorLiveResumeStall","resumeContentPlayback","liveSyncPos","toFixed","getBufferedAhead","ranges","buffered","describeVideoState","networkStates","readyStates","net","seeking","resumeBaseline","pollIntervalMs","graceMs","needsReset","recoveryCooldownMs","maxRecoveries","maxMonitorMs","startTime","baseline","recoveries","lastRecoveryAt","listenersAttached","onMediaEvent","diagEvents","dt"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n DEFAULT_FLOOR_LADDER_BOUNDS: () => DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_REQUEST_SAFETY_MS: () => DEFAULT_REQUEST_SAFETY_MS,\n DEFAULT_TRACKING_INGEST_CONFIG: () => DEFAULT_TRACKING_INGEST_CONFIG,\n DISABLED_FLOOR_LADDER_CONFIG: () => DISABLED_FLOOR_LADDER_CONFIG,\n GAM_AD_OPPORTUNITY_DURATION_MS: () => GAM_AD_OPPORTUNITY_DURATION_MS,\n IS_BROWSER: () => IS_BROWSER,\n IS_GLOBAL: () => IS_GLOBAL,\n IS_IOS: () => IS_IOS,\n IS_SAFARI: () => IS_SAFARI,\n SUPPORTS_DASH: () => SUPPORTS_DASH,\n SUPPORTS_HLS: () => SUPPORTS_HLS,\n StormcloudPlayer: () => StormcloudPlayer_default,\n StormcloudVideoPlayer: () => StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent: () => StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig: () => applyTrackingIngestConfig,\n buildAnalyticsContext: () => buildAnalyticsContext,\n canPlay: () => canPlay,\n configureTrackingIngest: () => configureTrackingIngest,\n createHlsAdPlayer: () => createHlsAdPlayer,\n createPalNonceManager: () => createPalNonceManager,\n createStormcloudPlayer: () => createStormcloudPlayer,\n default: () => StormcloudVideoPlayerComponent,\n detectBrowser: () => detectBrowser,\n fixedFloorSelector: () => fixedFloorSelector,\n generateFloorLevels: () => generateFloorLevels,\n getBrowserConfigOverrides: () => getBrowserConfigOverrides,\n getBrowserID: () => getBrowserID,\n getClientInfo: () => getClientInfo,\n ingestPlayerTracking: () => ingestPlayerTracking,\n initializePolyfills: () => initializePolyfills,\n isMediaStream: () => isMediaStream,\n isTrackingIngestEnabled: () => isTrackingIngestEnabled,\n lazy: () => lazy,\n logBrowserInfo: () => logBrowserInfo,\n merge: () => merge,\n omit: () => omit,\n parseApiFloorLadder: () => parseApiFloorLadder,\n parseQuery: () => parseQuery,\n players: () => players_default,\n randomString: () => randomString,\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds,\n resolveFloorLadderBounds: () => resolveFloorLadderBounds,\n sendAdDetectTracking: () => sendAdDetectTracking,\n sendAdImpressionTracking: () => sendAdImpressionTracking,\n sendAdLoadedTracking: () => sendAdLoadedTracking,\n sendHeartbeat: () => sendHeartbeat,\n sendInitialTracking: () => sendInitialTracking,\n supportsFeature: () => supportsFeature,\n supportsModernJS: () => supportsModernJS,\n supportsWebKitPresentationMode: () => supportsWebKitPresentationMode,\n trackingIngestConfig: () => trackingIngestConfig,\n validateFloorCents: () => validateFloorCents,\n validateFloorLadderConfig: () => validateFloorLadderConfig\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_react = __toESM(require(\"react\"), 1);\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const bridgeDeviceId = validDeviceId(bridgeSignals.deviceId);\n const realDeviceId = bridgeDeviceId || (isCtv ? validDeviceId(readStoredDeviceId()) : void 0) || validDeviceId(platformDevice.deviceId);\n let deviceId = realDeviceId;\n let deviceIdType = (bridgeDeviceId ? bridgeSignals.deviceIdType : void 0) || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeDeviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking();\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n return {\n isCtv: false,\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction validDeviceId(value) {\n return value && !isMacroPlaceholder(value) ? value : void 0;\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nvar pageViewCorrelator;\nfunction getPageViewCorrelator() {\n const key = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n if (!pageViewCorrelator || pageViewCorrelator.key !== key) {\n pageViewCorrelator = { key, value: generateCorrelator() };\n }\n return pageViewCorrelator.value;\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nvar GAM_AD_HOSTS = /* @__PURE__ */ new Set([\n \"pubads.g.doubleclick.net\",\n \"securepubads.g.doubleclick.net\"\n]);\nfunction ensureVideoAdType(rawUrl) {\n try {\n const url = new URL(rawUrl);\n if (!GAM_AD_HOSTS.has(url.hostname)) return rawUrl;\n if (url.searchParams.has(\"ad_type\")) return rawUrl;\n url.searchParams.set(\"ad_type\", \"video\");\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nvar SCVP_MACRO_DETECT = /\\[SCVP-|%5BSCVP-|\\(SCVP-|%28SCVP-/i;\nvar SCVP_MACRO_PATTERN = /\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\)/gi;\nvar SCVP_WHOLE_VALUE_PATTERN = /^\\s*(?:\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\))\\s*$/i;\nvar NESTED_QUERY_PARAM_KEYS = /* @__PURE__ */ new Set([\"cust_params\"]);\nvar SCVP_POD_MACROS = /* @__PURE__ */ new Set([\"PMND\", \"PMXD\", \"PMAD\"]);\nfunction hasScvpMacros(url) {\n return !!url && SCVP_MACRO_DETECT.test(url);\n}\nfunction safeDecode(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return value;\n }\n}\nfunction findScvpMacroNames(url) {\n if (!url) return [];\n const names = /* @__PURE__ */ new Set();\n let text = url;\n for (let pass = 0; pass < 3; pass++) {\n text.replace(SCVP_MACRO_PATTERN, (_m, bracketName, parenName) => {\n names.add(String(bracketName || parenName).toUpperCase());\n return \"\";\n });\n const decoded = safeDecode(text);\n if (decoded === text) break;\n text = decoded;\n }\n return Array.from(names);\n}\nfunction resolveScvpMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (name, value) => {\n if (value == null) return;\n const str = String(value).trim();\n if (str) values.set(name, str);\n };\n const toFlag = (value) => value == null ? void 0 : value ? \"1\" : \"0\";\n const deviceId = ctx.deviceId?.trim();\n const deviceIdType = deviceId ? ctx.deviceIdType?.trim() || inferDeviceIdType() : void 0;\n if (deviceId && deviceIdType) {\n set(\"RDID\", deviceId);\n set(\"IDTYPE\", deviceIdType);\n set(\"IS-LAT\", toFlag(ctx.limitAdTracking) ?? \"0\");\n }\n set(\"SID\", ctx.sessionId);\n set(\"DTH\", ctx.deviceTypeHint);\n set(\"GIVN\", ctx.palNonce);\n set(\"CT-TI\", ctx.programTitle);\n set(\"CT-CH\", ctx.channelName);\n set(\"POD\", ctx.pod);\n set(\"CORRELATOR\", ctx.correlator);\n set(\"SCOR\", ctx.streamCorrelator);\n set(\"VPMUTE\", toFlag(ctx.adWillPlayMuted));\n if (ctx.adWillAutoPlay != null) {\n set(\"VPA\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n set(\"GDPR\", ctx.consent?.gdpr);\n set(\"GDPR-CONSENT\", ctx.consent?.gdprConsent);\n set(\"US-PRIVACY\", ctx.consent?.usPrivacy);\n return values;\n}\nvar keepNone = () => false;\nfunction substituteScvpParams(params, values, unresolved, keep, nested) {\n const out = [];\n const replaceMacro = (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return value;\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n };\n params.forEach((value, key) => {\n const whole = value.match(SCVP_WHOLE_VALUE_PATTERN);\n if (whole) {\n const name = String(whole[1] || whole[2]).toUpperCase();\n const resolved = values.get(name);\n if (resolved != null) {\n out.push([key, resolved]);\n } else if (keep(name)) {\n out.push([key, value]);\n } else {\n unresolved.add(name);\n }\n return;\n }\n if (!SCVP_MACRO_DETECT.test(value)) {\n out.push([key, value]);\n return;\n }\n if (!nested && NESTED_QUERY_PARAM_KEYS.has(key)) {\n const inner = substituteScvpParams(new URLSearchParams(value), values, unresolved, keep, true);\n if (inner.length > 0) {\n out.push([\n key,\n inner.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join(\"&\")\n ]);\n }\n return;\n }\n out.push([key, value.replace(SCVP_MACRO_PATTERN, replaceMacro)]);\n });\n return out;\n}\nfunction substituteScvpMacros(baseUrl, values, keep = keepNone) {\n const unresolved = /* @__PURE__ */ new Set();\n let url;\n try {\n url = new URL(normalizeVastTagUrl(baseUrl));\n } catch {\n const replaced = baseUrl.replace(\n SCVP_MACRO_PATTERN,\n (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n }\n );\n return { url: replaced, unresolved: Array.from(unresolved) };\n }\n const entries = substituteScvpParams(url.searchParams, values, unresolved, keep, false);\n const search = new URLSearchParams();\n for (const [key, value] of entries) search.append(key, value);\n url.search = search.toString();\n return { url: url.toString(), unresolved: Array.from(unresolved) };\n}\nfunction applyScvpMacros(baseUrl, ctx, deferred = /* @__PURE__ */ new Set()) {\n return substituteScvpMacros(baseUrl, resolveScvpMacroValues(ctx), (name) => deferred.has(name));\n}\nfunction stripScvpMacros(url) {\n if (findScvpMacroNames(url).length === 0) return { url, unresolved: [] };\n return substituteScvpMacros(url, /* @__PURE__ */ new Map());\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n } else {\n params.set(\"unviewed_position_start\", \"1\");\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\nfunction fetchConsentSignals(timeoutMs = 1500) {\n const signals = {};\n if (typeof window === \"undefined\") {\n return Promise.resolve(signals);\n }\n const tasks = [];\n const tcfApi = window.__tcfapi;\n if (typeof tcfApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n let settled = false;\n try {\n tcfApi(\"addEventListener\", 2, (tcData, success) => {\n if (settled) return;\n if (success && tcData && (tcData.eventStatus === \"tcloaded\" || tcData.eventStatus === \"useractioncomplete\")) {\n settled = true;\n signals.gdpr = tcData.gdprApplies ? \"1\" : \"0\";\n signals.storageAllowed = tcData.gdprApplies ? tcData.purpose?.consents?.[1] === true : true;\n if (typeof tcData.tcString === \"string\" && tcData.tcString) {\n signals.gdprConsent = tcData.tcString;\n }\n try {\n tcfApi(\"removeEventListener\", 2, () => {\n }, tcData.listenerId);\n } catch {\n }\n resolve();\n }\n });\n } catch {\n resolve();\n }\n setTimeout(() => {\n if (!settled) {\n settled = true;\n resolve();\n }\n }, timeoutMs);\n })\n );\n }\n const uspApi = window.__uspapi;\n if (typeof uspApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n try {\n uspApi(\"getUSPData\", 1, (data, success) => {\n if (success && typeof data?.uspString === \"string\" && data.uspString) {\n signals.usPrivacy = data.uspString;\n }\n resolve();\n });\n } catch {\n resolve();\n }\n setTimeout(resolve, timeoutMs);\n })\n );\n }\n if (tasks.length === 0) {\n return Promise.resolve(signals);\n }\n return Promise.all(tasks).then(() => signals);\n}\n\n// src/player/FloorLadder.ts\nvar DISABLED_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"\",\n minFloorCents: 0,\n maxFloorCents: 0,\n stepCents: 0,\n selectedFloorCents: 0,\n fallbackFloorCents: 0,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [],\n targetAdUnitPath: \"\",\n configurationVersion: \"\"\n});\nvar DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({\n minCents: 25,\n maxCents: 300,\n stepCents: 25\n});\nfunction isInteger(value) {\n return typeof value === \"number\" && Number.isInteger(value);\n}\nfunction generateFloorLevels(minCents, maxCents, stepCents) {\n if (!isInteger(minCents) || !isInteger(maxCents) || !isInteger(stepCents)) return [];\n if (stepCents <= 0 || minCents <= 0 || maxCents < minCents) return [];\n const levels = [];\n for (let cents = minCents; cents <= maxCents; cents += stepCents) {\n levels.push(cents);\n }\n return levels;\n}\nfunction resolveFloorLadderBounds(overrides = {}) {\n return {\n minCents: overrides.minCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.minCents,\n maxCents: overrides.maxCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.maxCents,\n stepCents: overrides.stepCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.stepCents\n };\n}\nfunction validateFloorCents(value, config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n if (!isInteger(value)) return { ok: false, reason: \"not_integer\" };\n if (!(value >= bounds.minCents && value <= bounds.maxCents) || !(value >= config.minFloorCents && value <= config.maxFloorCents)) {\n return { ok: false, reason: \"out_of_range\" };\n }\n const gamLevels = generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents);\n const configLevels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents);\n if (gamLevels.indexOf(value) === -1 || configLevels.indexOf(value) === -1) {\n return { ok: false, reason: \"not_step_multiple\" };\n }\n const ready = Array.isArray(config.readyFloorCents) ? config.readyFloorCents : [];\n if (ready.indexOf(value) === -1) return { ok: false, reason: \"not_ready\" };\n return { ok: true };\n}\nfunction validateFloorLadderConfig(config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n const errors = [];\n if (generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents).length === 0) {\n errors.push(\"invalid_gam_bounds\");\n }\n const levels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents).filter((cents) => validateFloorCents(cents, { ...config, readyFloorCents: [cents] }, bounds).ok);\n if (levels.length === 0) errors.push(\"invalid_level_bounds\");\n if (config.minFloorCents < bounds.minCents || config.maxFloorCents > bounds.maxCents) {\n errors.push(\"level_bounds_outside_gam_ladder\");\n }\n if (!config.targetingKey) errors.push(\"missing_targeting_key\");\n if (config.mode !== \"fixed\") errors.push(`unsupported_mode:${String(config.mode)}`);\n if (!Array.isArray(config.readyFloorCents)) {\n errors.push(\"ready_floor_cents_not_array\");\n } else {\n for (const cents of config.readyFloorCents) {\n const check = validateFloorCents(cents, config, bounds);\n if (!check.ok) errors.push(`ready_floor_invalid:${String(cents)}:${check.reason}`);\n }\n }\n const selected = validateFloorCents(config.selectedFloorCents, config, bounds);\n if (!selected.ok) errors.push(`selected_floor_invalid:${selected.reason}`);\n const fallback = validateFloorCents(config.fallbackFloorCents, config, bounds);\n if (!fallback.ok) errors.push(`fallback_floor_invalid:${fallback.reason}`);\n return { ok: errors.length === 0, levels, errors };\n}\nvar fixedFloorSelector = {\n name: \"fixed\",\n select(config, context) {\n if (config.mode !== \"fixed\") return { source: \"none\", reason: \"unsupported_mode\" };\n const selected = validateFloorCents(config.selectedFloorCents, config, context.bounds);\n if (selected.ok) return { floorCents: config.selectedFloorCents, source: \"selected\" };\n const fallback = validateFloorCents(config.fallbackFloorCents, config, context.bounds);\n if (fallback.ok) {\n return {\n floorCents: config.fallbackFloorCents,\n source: \"fallback\",\n reason: `selected_${selected.reason}`\n };\n }\n return {\n source: \"none\",\n reason: `no_valid_floor:selected_${selected.reason}:fallback_${fallback.reason}`\n };\n }\n};\nfunction resolveOpportunityFloor(config, context, selector = fixedFloorSelector) {\n const base = {\n selector: selector.name,\n position: context.position,\n configurationVersion: String(config.configurationVersion ?? \"\"),\n targetingKey: config.targetingKey,\n targetAdUnitPath: config.targetAdUnitPath\n };\n const skipped = (reason, source = \"none\") => Object.freeze({ ...base, status: \"skipped\", floorCents: void 0, source, reason });\n if (!config.enabled) return skipped(\"disabled\");\n const positions = Array.isArray(config.allowedPositions) ? config.allowedPositions : [];\n if (positions.indexOf(context.position) === -1) return skipped(\"position_not_allowed\");\n if (!config.targetingKey) return skipped(\"missing_targeting_key\");\n if (!config.targetAdUnitPath) return skipped(\"missing_target_ad_unit\");\n let result;\n try {\n result = selector.select(config, context);\n } catch {\n return skipped(\"selector_error\");\n }\n if (result.floorCents == null) return skipped(result.reason ?? \"no_valid_floor\", result.source);\n const check = validateFloorCents(result.floorCents, config, context.bounds);\n if (!check.ok) return skipped(`selector_floor_${check.reason}`);\n return Object.freeze({\n ...base,\n status: \"armed\",\n floorCents: result.floorCents,\n source: result.source,\n reason: result.reason\n });\n}\nfunction decodeQueryComponent(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return void 0;\n }\n}\nfunction mergeCustParams(decoded, key, cents) {\n const prefix = `${key}=`;\n const kept = decoded.split(\"&\").filter((pair) => pair !== \"\" && pair !== key && pair.indexOf(prefix) !== 0);\n kept.push(`${prefix}${cents}`);\n return kept.join(\"&\");\n}\nfunction applyFloorToVastUrl(url, floor) {\n if (floor.status !== \"armed\" || floor.floorCents == null) {\n return { url, applied: false, reason: floor.reason };\n }\n let parsed;\n try {\n parsed = new URL(url);\n } catch {\n return { url, applied: false, reason: \"invalid_url\" };\n }\n if (!GAM_AD_HOSTS.has(parsed.hostname)) {\n return { url, applied: false, reason: \"not_gam_host\" };\n }\n if (parsed.searchParams.get(\"iu\") !== floor.targetAdUnitPath) {\n return { url, applied: false, reason: \"ad_unit_mismatch\" };\n }\n const hashIndex = url.indexOf(\"#\");\n const beforeHash = hashIndex === -1 ? url : url.slice(0, hashIndex);\n const hash = hashIndex === -1 ? \"\" : url.slice(hashIndex);\n const queryIndex = beforeHash.indexOf(\"?\");\n const base = beforeHash.slice(0, queryIndex);\n const segments = beforeHash.slice(queryIndex + 1).split(\"&\");\n const existing = [];\n let insertAt = -1;\n const rest = [];\n for (const segment of segments) {\n const eq = segment.indexOf(\"=\");\n const rawKey = eq === -1 ? segment : segment.slice(0, eq);\n if (decodeQueryComponent(rawKey) === \"cust_params\") {\n if (insertAt === -1) insertAt = rest.length;\n const value = eq === -1 ? \"\" : decodeQueryComponent(segment.slice(eq + 1));\n if (value === void 0) {\n return { url, applied: false, reason: \"malformed_cust_params\" };\n }\n if (value) existing.push(value);\n continue;\n }\n rest.push(segment);\n }\n if (insertAt === -1) insertAt = rest.length;\n const merged = mergeCustParams(existing.join(\"&\"), floor.targetingKey, floor.floorCents);\n rest.splice(insertAt, 0, `cust_params=${encodeURIComponent(merged)}`);\n const query = rest.filter((segment) => segment !== \"\").join(\"&\");\n return { url: `${base}?${query}${hash}`, applied: true, reason: void 0 };\n}\nfunction copyConfig(config) {\n return {\n ...config,\n readyFloorCents: Array.isArray(config.readyFloorCents) ? config.readyFloorCents.slice() : [],\n allowedPositions: Array.isArray(config.allowedPositions) ? config.allowedPositions.slice() : []\n };\n}\nfunction mergeDefined(target, update) {\n const next = copyConfig(target);\n if (!update) return next;\n for (const key of Object.keys(update)) {\n const value = update[key];\n if (value !== void 0) next[key] = value;\n }\n return copyConfig(next);\n}\nvar AD_POSITIONS = [\"preroll\", \"midroll\", \"postroll\"];\nfunction finiteNumber(value) {\n return typeof value === \"number\" && isFinite(value) ? value : void 0;\n}\nfunction parseApiFloorLadder(raw) {\n if (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return void 0;\n const src = raw;\n const out = {};\n if (typeof src.enabled === \"boolean\") out.enabled = src.enabled;\n if (typeof src.targetingKey === \"string\") out.targetingKey = src.targetingKey;\n if (typeof src.targetAdUnitPath === \"string\") out.targetAdUnitPath = src.targetAdUnitPath;\n if (typeof src.configurationVersion === \"string\") out.configurationVersion = src.configurationVersion;\n if (typeof src.mode === \"string\") out.mode = src.mode;\n const min = finiteNumber(src.minFloorCents);\n const max = finiteNumber(src.maxFloorCents);\n const step = finiteNumber(src.stepCents);\n const selected = finiteNumber(src.selectedFloorCents);\n const fallback = finiteNumber(src.fallbackFloorCents);\n if (min !== void 0) out.minFloorCents = min;\n if (max !== void 0) out.maxFloorCents = max;\n if (step !== void 0) out.stepCents = step;\n if (selected !== void 0) out.selectedFloorCents = selected;\n if (fallback !== void 0) out.fallbackFloorCents = fallback;\n if (Array.isArray(src.readyFloorCents)) {\n out.readyFloorCents = src.readyFloorCents.filter(\n (cents) => finiteNumber(cents) !== void 0\n );\n }\n if (Array.isArray(src.allowedPositions)) {\n out.allowedPositions = src.allowedPositions.filter(\n (position) => AD_POSITIONS.indexOf(position) !== -1\n );\n }\n return out;\n}\nvar FloorLadderController = class {\n constructor(selector = fixedFloorSelector) {\n this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;\n this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);\n this.selector = selector;\n }\n isEnabled() {\n return this.config.enabled === true;\n }\n applyApiConfig(raw) {\n const parsed = parseApiFloorLadder(raw);\n this.config = mergeDefined(copyConfig(DISABLED_FLOOR_LADDER_CONFIG), parsed);\n this.bounds = Object.freeze({\n minCents: this.config.minFloorCents,\n maxCents: this.config.maxFloorCents,\n stepCents: this.config.stepCents\n });\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n reset() {\n this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);\n this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;\n }\n get() {\n return copyConfig(this.config);\n }\n getBounds() {\n return { ...this.bounds };\n }\n validate() {\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n setSelector(selector) {\n this.selector = selector;\n }\n snapshotFor(context) {\n return resolveOpportunityFloor(\n copyConfig(this.config),\n { ...context, bounds: this.bounds },\n this.selector\n );\n }\n};\n\n// src/sdk/hlsAdPlayer.ts\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/utils/browserCompat.ts\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS2 = true;\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS2 = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS2 = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS: supportsModernJS2,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction requiresMediaPipelineResetAfterAds() {\n const browser = detectBrowser();\n return browser.name === \"Samsung Tizen\" && (browser.tizenVersion ?? 0) >= 5;\n}\nfunction prefersProgressiveAdMedia() {\n return detectBrowser().isSmartTV;\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n overrides.pauseContentDuringAds = true;\n }\n return overrides;\n}\nfunction supportsModernJS() {\n try {\n return typeof Promise !== \"undefined\" && typeof Map !== \"undefined\" && typeof Set !== \"undefined\" && typeof Array.from !== \"undefined\" && typeof Object.assign !== \"undefined\" && typeof Array.prototype.forEach !== \"undefined\" && typeof String.prototype.includes !== \"undefined\";\n } catch (e) {\n return false;\n }\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n\n// src/utils/vastTrackingMacros.ts\nvar VAST_MACRO_PATTERN = /\\[([A-Z][A-Z0-9_]*)\\]/g;\nvar CACHEBUSTING_ALIASES = /\\[CACHEBUSTER\\]|\\[cachebuster\\]|\\[timestamp\\]|\\[random\\]|\\[INSERT_RANDOM_NUMBER\\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\\$\\{CACHEBUSTER\\}|\\$\\{CACHEBUSTING\\}|\\{cachebuster\\}|\\{random\\}/g;\nvar KNOWN_VAST_MACROS = /* @__PURE__ */ new Set([\n \"ADCATEGORIES\",\n \"ADCOUNT\",\n \"ADPLAYHEAD\",\n \"ADSERVINGID\",\n \"ADTYPE\",\n \"APIFRAMEWORKS\",\n \"APPBUNDLE\",\n \"ASSETURI\",\n \"BLOCKEDADCATEGORIES\",\n \"BREAKMAXADLENGTH\",\n \"BREAKMAXADS\",\n \"BREAKMAXDURATION\",\n \"BREAKMINADLENGTH\",\n \"BREAKPOSITION\",\n \"CACHEBUSTING\",\n \"CLICKPOS\",\n \"CLICKTYPE\",\n \"CLIENTUA\",\n \"CONTENTID\",\n \"CONTENTPLAYHEAD\",\n \"CONTENTURI\",\n \"DEVICEIP\",\n \"DEVICEUA\",\n \"DOMAIN\",\n \"ERRORCODE\",\n \"EXTENSIONS\",\n \"GDPRCONSENT\",\n \"IFA\",\n \"IFATYPE\",\n \"INVENTORYSTATE\",\n \"LATLONG\",\n \"LIMITADTRACKING\",\n \"MEDIAMIME\",\n \"MEDIAPLAYHEAD\",\n \"OMIDPARTNER\",\n \"PAGEURL\",\n \"PLACEMENTTYPE\",\n \"PLAYERCAPABILITIES\",\n \"PLAYERSIZE\",\n \"PLAYERSTATE\",\n \"PODSEQUENCE\",\n \"REASON\",\n \"REGULATIONS\",\n \"SERVERSIDE\",\n \"SERVERUA\",\n \"TIMESTAMP\",\n \"TRANSACTIONID\",\n \"UNIVERSALADID\",\n \"VASTVERSIONS\",\n \"VERIFICATIONVENDORS\"\n]);\nfunction generateCachebuster() {\n return String(Math.floor(Math.random() * 9e7) + 1e7);\n}\nfunction formatPlayhead(seconds) {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return void 0;\n }\n const total = Math.floor(seconds);\n const hh = String(Math.floor(total / 3600)).padStart(2, \"0\");\n const mm = String(Math.floor(total % 3600 / 60)).padStart(2, \"0\");\n const ss = String(total % 60).padStart(2, \"0\");\n const ms = String(Math.floor((seconds - total) * 1e3)).padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\nfunction resolveMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (key, value) => {\n if (value != null && value !== \"\") values.set(key, value);\n };\n const adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);\n set(\"ADPLAYHEAD\", adPlayhead);\n set(\"MEDIAPLAYHEAD\", adPlayhead);\n set(\"CONTENTPLAYHEAD\", formatPlayhead(ctx.contentPlayheadSeconds));\n set(\"ASSETURI\", ctx.assetUri);\n set(\"MEDIAMIME\", ctx.mediaMime);\n set(\"TIMESTAMP\", (/* @__PURE__ */ new Date()).toISOString());\n set(\"SERVERSIDE\", \"0\");\n if (ctx.errorCode != null && ctx.errorCode !== \"\") {\n set(\"ERRORCODE\", String(ctx.errorCode));\n }\n if (ctx.playerWidth != null && ctx.playerHeight != null) {\n set(\"PLAYERSIZE\", `${Math.round(ctx.playerWidth)},${Math.round(ctx.playerHeight)}`);\n }\n set(\"IFA\", ctx.deviceId);\n set(\"IFATYPE\", ctx.deviceIdType);\n if (ctx.limitAdTracking != null) {\n set(\"LIMITADTRACKING\", ctx.limitAdTracking ? \"1\" : \"0\");\n }\n set(\"PAGEURL\", ctx.pageUrl);\n if (ctx.pageUrl) {\n try {\n set(\"DOMAIN\", new URL(ctx.pageUrl).hostname);\n } catch {\n }\n }\n set(\"CLIENTUA\", ctx.clientUa);\n set(\"DEVICEUA\", ctx.clientUa);\n if (ctx.podSequence != null) {\n set(\"PODSEQUENCE\", String(ctx.podSequence));\n }\n set(\"ADSERVINGID\", ctx.adServingId);\n if (ctx.reason != null && ctx.reason !== \"\") {\n set(\"REASON\", String(ctx.reason));\n }\n return values;\n}\nfunction substituteVastTrackingMacros(url, ctx = {}) {\n if (!url) return url;\n const values = resolveMacroValues(ctx);\n return url.replace(CACHEBUSTING_ALIASES, () => generateCachebuster()).replace(VAST_MACRO_PATTERN, (match, name) => {\n if (name === \"CACHEBUSTING\") return generateCachebuster();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n return KNOWN_VAST_MACROS.has(name) ? \"\" : match;\n });\n}\n\n// src/player/OptimizedPodRequest.ts\nvar DEFAULT_REQUEST_SAFETY_MS = 1500;\nvar GAM_AD_OPPORTUNITY_DURATION_MS = 3e4;\nvar POD_PARAM_KEYS = [\"pmnd\", \"pmxd\", \"pmad\"];\nvar POSITIVE_INT = /^[1-9]\\d*$/;\nvar NON_NEGATIVE_INT = /^(0|[1-9]\\d*)$/;\nfunction nonNegativeInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0 ? Math.floor(value) : void 0;\n}\nfunction positiveInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 1 ? Math.floor(value) : void 0;\n}\nfunction resolveAdPodConfig(config) {\n const pod = config.adPodConfig ?? {};\n return {\n requestSafetyMs: nonNegativeInt(pod.requestSafetyMs) ?? DEFAULT_REQUEST_SAFETY_MS,\n minPodDurationMs: nonNegativeInt(pod.minPodDurationMs) ?? 0,\n maxAdsPerBreak: pod.maxAdsPerBreak === void 0 ? positiveInt(config.podMaxAds) : positiveInt(pod.maxAdsPerBreak),\n maxPodDurationMs: positiveInt(pod.maxPodDurationMs) ?? positiveInt(config.podMaxDurationMs),\n exactDuration: config.podExactDuration === true\n };\n}\nfunction measureBreakCapacity(timing, nowMonoMs) {\n const scheduled = timing.scheduledBreakDurationMs;\n if (scheduled == null || !(scheduled > 0) || timing.breakStartMonoMs == null) {\n return void 0;\n }\n const endMonoMs = timing.breakEndMonoMs ?? timing.breakStartMonoMs + scheduled;\n const untilEnd = Math.min(scheduled, endMonoMs - nowMonoMs);\n const unplayed = scheduled - Math.max(0, timing.playedDurationMs);\n return {\n scheduledBreakDurationMs: scheduled,\n elapsedBeforeGamRequestMs: Math.max(0, nowMonoMs - timing.breakStartMonoMs),\n remainingAtGamDispatchMs: Math.max(0, Math.min(untilEnd, unplayed))\n };\n}\nfunction resolvePodParams(input) {\n const { capacity, config } = input;\n let pmxd;\n let source;\n if (capacity) {\n pmxd = Math.floor(capacity.remainingAtGamDispatchMs - config.requestSafetyMs);\n source = \"break_remaining\";\n } else if (config.maxPodDurationMs != null) {\n pmxd = config.maxPodDurationMs;\n source = \"configured_cap\";\n } else if (input.tagMaxDurationMs != null) {\n pmxd = input.tagMaxDurationMs;\n source = \"tag_cap\";\n } else {\n return { kind: \"omit\" };\n }\n const minUsable = Math.max(1, Math.floor(input.minUsablePmxdMs));\n if (!Number.isFinite(pmxd) || pmxd < minUsable) {\n return {\n kind: \"abort\",\n reason: capacity ? \"insufficient_break_capacity\" : \"invalid_pod_cap\",\n pmxdCandidateMs: Number.isFinite(pmxd) ? pmxd : 0\n };\n }\n const pmnd = config.exactDuration ? pmxd : Math.min(config.minPodDurationMs, pmxd);\n return { kind: \"send\", params: { pmnd, pmxd, pmad: config.maxAdsPerBreak }, source };\n}\nfunction podRequestAborted(reason, message, diagnostics) {\n const error = new Error(`Optimized pod request not sent (${reason}): ${message}`);\n error.podRequestAborted = true;\n error.reason = reason;\n error.diagnostics = diagnostics;\n return error;\n}\nfunction isPodRequestAbortedError(error) {\n return !!error && error.podRequestAborted === true;\n}\nfunction firstPositiveIntParam(params, key) {\n for (const value of params.getAll(key)) {\n if (POSITIVE_INT.test(value.trim())) return Number(value.trim());\n }\n return void 0;\n}\nfunction isOptimizedPodUrl(url) {\n if (findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name))) return true;\n try {\n const params = new URL(url).searchParams;\n return POD_PARAM_KEYS.some((key) => params.has(key));\n } catch {\n return false;\n }\n}\nfunction finalizeGamRequestUrl(rawUrl, ctx, nowEpochMs = Date.now()) {\n const optimizedPod = isOptimizedPodUrl(rawUrl);\n const capacity = ctx.capacity;\n const base = {\n breakId: ctx.breakId,\n optimizedPod,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs\n };\n let decision = { kind: \"omit\" };\n if (optimizedPod) {\n let tagMaxDurationMs;\n try {\n tagMaxDurationMs = firstPositiveIntParam(new URL(rawUrl).searchParams, \"pmxd\");\n } catch {\n }\n decision = resolvePodParams({\n capacity,\n config: ctx.config,\n minUsablePmxdMs: ctx.minUsablePmxdMs,\n tagMaxDurationMs\n });\n if (decision.kind === \"abort\") {\n throw podRequestAborted(\n decision.reason,\n `pmxd would be ${decision.pmxdCandidateMs}ms (minimum ${ctx.minUsablePmxdMs}ms)`,\n base\n );\n }\n }\n const pod = decision.kind === \"send\" ? decision.params : void 0;\n const values = /* @__PURE__ */ new Map();\n if (pod) {\n values.set(\"PMND\", String(pod.pmnd));\n values.set(\"PMXD\", String(pod.pmxd));\n if (pod.pmad != null) values.set(\"PMAD\", String(pod.pmad));\n }\n const substituted = substituteScvpMacros(rawUrl, values);\n let finalUrl;\n try {\n const url = new URL(normalizeVastTagUrl(substituted.url));\n if (pod) {\n url.searchParams.set(\"pmnd\", String(pod.pmnd));\n url.searchParams.set(\"pmxd\", String(pod.pmxd));\n if (pod.pmad != null) url.searchParams.set(\"pmad\", String(pod.pmad));\n else url.searchParams.delete(\"pmad\");\n } else {\n for (const key of POD_PARAM_KEYS) url.searchParams.delete(key);\n }\n finalUrl = url.toString();\n } catch {\n throw podRequestAborted(\"invalid_url\", \"GAM request URL could not be parsed\", base);\n }\n const problems = validateGamRequestUrl(finalUrl, {\n optimizedPod: !!pod,\n remainingMs: decision.kind === \"send\" && decision.source === \"break_remaining\" ? capacity?.remainingAtGamDispatchMs : void 0\n });\n if (problems.length > 0) {\n throw podRequestAborted(\"invalid_url\", problems.join(\"; \"), base);\n }\n let givn = null;\n try {\n givn = new URL(finalUrl).searchParams.get(\"givn\");\n } catch {\n }\n return {\n url: finalUrl,\n diagnostics: {\n breakId: ctx.breakId,\n optimizedPod: !!pod,\n pmxdSource: decision.kind === \"send\" ? decision.source : void 0,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs,\n pmndSent: pod?.pmnd,\n pmxdSent: pod?.pmxd,\n pmadSent: pod?.pmad,\n palNoncePresent: !!givn,\n gamRequestDispatchTimestamp: new Date(nowEpochMs).toISOString(),\n strippedMacros: substituted.unresolved.filter((name) => !SCVP_POD_MACROS.has(name))\n }\n };\n}\nfunction validateGamRequestUrl(url, expect) {\n const problems = [];\n const leftover = findScvpMacroNames(url);\n if (leftover.length > 0) problems.push(`unresolved SCVP macros: ${leftover.join(\", \")}`);\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n return problems.concat(\"URL could not be parsed\");\n }\n for (const key of POD_PARAM_KEYS) {\n if (params.getAll(key).length > 1) problems.push(`duplicate ${key}`);\n }\n if (!expect.optimizedPod) {\n for (const key of POD_PARAM_KEYS) {\n if (params.has(key)) problems.push(`${key} present on a non-pod request`);\n }\n return problems;\n }\n const pmxd = params.get(\"pmxd\");\n const pmnd = params.get(\"pmnd\");\n const pmad = params.get(\"pmad\");\n if (pmxd == null || !POSITIVE_INT.test(pmxd)) problems.push(`pmxd must be a positive integer (got ${pmxd})`);\n if (pmnd == null || !NON_NEGATIVE_INT.test(pmnd)) problems.push(`pmnd must be a non-negative integer (got ${pmnd})`);\n if (pmxd != null && pmnd != null && Number(pmnd) > Number(pmxd)) problems.push(\"pmnd exceeds pmxd\");\n if (pmad != null && !POSITIVE_INT.test(pmad)) problems.push(`pmad must be a positive integer or absent (got ${pmad})`);\n if (expect.remainingMs != null && pmxd != null && Number(pmxd) > expect.remainingMs) {\n problems.push(`pmxd ${pmxd} exceeds remaining break ${expect.remainingMs}ms`);\n }\n return problems;\n}\nfunction computePodResponseDiagnostics(pmxdSent, vastAdCount, totalVastCreativeDurationMs) {\n const estimatedUnusedPodMs = Math.max(0, pmxdSent - totalVastCreativeDurationMs);\n return {\n vastAdCount,\n totalVastCreativeDurationMs,\n estimatedUnusedPodMs,\n estimatedUnmatchedCount: Math.floor(estimatedUnusedPodMs / GAM_AD_OPPORTUNITY_DURATION_MS)\n };\n}\n\n// src/sdk/hlsAdPlayer.ts\nvar LINEAR_TRACKING_EVENTS = [\n \"creativeView\",\n \"loaded\",\n \"start\",\n \"firstQuartile\",\n \"midpoint\",\n \"thirdQuartile\",\n \"complete\",\n \"mute\",\n \"unmute\",\n \"pause\",\n \"resume\",\n \"fullscreen\",\n \"exitFullscreen\",\n \"playerExpand\",\n \"playerCollapse\",\n \"notUsed\"\n];\nfunction textOf(el) {\n const value = el?.textContent?.trim();\n return value ? value : void 0;\n}\nfunction parseVastTime(value) {\n if (!value) return void 0;\n const parts = value.trim().split(\":\");\n if (parts.length !== 3) return void 0;\n const [h, m, s] = parts.map((p) => parseFloat(p));\n if (![h, m, s].every((n) => n !== void 0 && Number.isFinite(n))) {\n return void 0;\n }\n return h * 3600 + m * 60 + s;\n}\nfunction parseProgressOffset(offset) {\n if (!offset) return void 0;\n const trimmed = offset.trim();\n if (trimmed.endsWith(\"%\")) {\n const percent = parseFloat(trimmed);\n return Number.isFinite(percent) ? { offsetPercent: percent } : void 0;\n }\n const seconds = parseVastTime(trimmed);\n return seconds !== void 0 ? { offsetSeconds: seconds } : void 0;\n}\nvar MAX_VAST_WRAPPER_DEPTH = 5;\nvar VAST_REQUEST_TIMEOUT_MS = 5e3;\nvar BEACON_TIMEOUT_MS = 3e4;\nvar inFlightBeacons = /* @__PURE__ */ new Set();\nvar VAST_ERROR_MEDIA_DISPLAY = 405;\nvar VAST_ERROR_WRAPPER_TIMEOUT = 301;\nvar VAST_ERROR_WRAPPER_LIMIT = 302;\nvar VAST_ERROR_WRAPPER_NO_ADS = 303;\nvar VAST_ERROR_NO_SUPPORTED_MEDIA = 403;\nvar VERIFICATION_NOT_SUPPORTED_REASON = 2;\nvar VIEWABLE_MIN_VISIBLE_RATIO = 0.5;\nvar VIEWABLE_MIN_CONTINUOUS_S = 2;\nfunction toVastMediaErrorCode(error) {\n switch (error?.code) {\n case 1:\n return 400;\n case 2:\n return 401;\n case 4:\n return 403;\n default:\n return VAST_ERROR_MEDIA_DISPLAY;\n }\n}\nvar gamCredentialsMode = \"include\";\nfunction createHlsAdPlayer(contentVideo, options) {\n let adPlaying = false;\n let originalMutedState = false;\n let originalVolume = Math.max(0, Math.min(1, contentVideo.volume || 1));\n const listeners = /* @__PURE__ */ new Map();\n const mainHlsInstance = options?.mainHlsInstance;\n const AD_CONTAINER_PROP = \"__stormcloudAdContainer\";\n const AD_VIDEO_PROP = \"__stormcloudAdVideo\";\n const FRAME_COUNTER_RELIABLE_PROP = \"__stormcloudFrameCounterReliable\";\n const RVFC_RELIABLE_PROP = \"__stormcloudRvfcReliable\";\n let adVideoElement = contentVideo[AD_VIDEO_PROP] ?? void 0;\n let adHls;\n let adContainerEl = contentVideo[AD_CONTAINER_PROP] ?? void 0;\n let adEventHandlers = [];\n let containerHandlers = [];\n let currentAd;\n let currentAdMediaFile;\n let podAds = [];\n let podIndex = 0;\n const preloadedAds = /* @__PURE__ */ new Map();\n const preloadingAds = /* @__PURE__ */ new Map();\n let destroyed = false;\n let pendingTimeouts = [];\n const STALL_TIMEOUT_MS = 4e3;\n const STALL_CHECK_INTERVAL_MS = 1e3;\n const BLACKFRAME_MIN_PLAYBACK_S = 1.5;\n let stallWatchdogId;\n let lastAdProgressTime = 0;\n let lastAdProgressPosition = 0;\n let sawDecodedVideoFrame = false;\n let videoFrameCallbackHandle;\n let pendingPlayPromise;\n let currentVastTagUrl;\n let funnelContext = {};\n let mediaProbe;\n let lastPodAdElementCount = 0;\n let mediaCandidates = [];\n let mediaCandidateIndex = 0;\n let mediaStartTimerId;\n const MEDIA_START_TIMEOUT_MS = options?.mediaStartTimeoutMs ?? 8e3;\n const VAST_ERROR_MEDIA_TIMEOUT = 402;\n const pendingVastRequests = /* @__PURE__ */ new Set();\n let pendingRequestAbortReason;\n let forcedMuteByAutoplay = false;\n function createTrackingState() {\n return {\n impression: false,\n loaded: false,\n start: false,\n firstQuartile: false,\n midpoint: false,\n thirdQuartile: false,\n complete: false,\n viewabilitySettled: false,\n lastMuted: void 0,\n progressFired: /* @__PURE__ */ new Set()\n };\n }\n let trackingFired = createTrackingState();\n const resolvedAds = /* @__PURE__ */ new Set();\n let viewObserver;\n let visibleRatio = 0;\n let continuousVisibleS = 0;\n let lastViewSampleTime;\n let lastPlayerExpanded = false;\n let documentHandlers = [];\n function emit(event, payload) {\n const set = listeners.get(event);\n if (!set) return;\n for (const fn of Array.from(set)) {\n try {\n fn(payload);\n } catch (error) {\n console.warn(\n `[HlsAdPlayer] Error in event listener for ${event}:`,\n error\n );\n }\n }\n }\n const SENSITIVE_URL_PARAMS = /* @__PURE__ */ new Set([\n \"ppid\",\n \"rdid\",\n \"idtype\",\n \"is_lat\",\n \"ifa\",\n \"idfa\",\n \"aaid\",\n \"uid\",\n \"user_id\",\n \"userid\",\n \"device_id\",\n \"deviceid\",\n \"ip\",\n \"ua\",\n \"gdpr_consent\",\n \"us_privacy\",\n \"gpp\",\n \"addtl_consent\",\n \"cust_params\",\n \"email\"\n ]);\n function redactUrl(url) {\n if (!url) return url;\n try {\n const parsed = new URL(url);\n for (const key of Array.from(parsed.searchParams.keys())) {\n if (SENSITIVE_URL_PARAMS.has(key.toLowerCase())) {\n parsed.searchParams.set(key, \"REDACTED\");\n }\n }\n return parsed.toString();\n } catch {\n return url.split(\"?\")[0];\n }\n }\n function logFunnel(stage, extra = {}) {\n const payload = {\n stage,\n breakId: funnelContext.breakId,\n requestId: funnelContext.requestId,\n controllerId: funnelContext.controllerId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n adId: currentAd?.id,\n podIndex,\n podSize: podAds.length,\n vastUrl: redactUrl(currentVastTagUrl),\n mediaUrl: currentAdMediaFile?.url,\n mediaType: currentAdMediaFile?.type,\n muted: adVideoElement ? adVideoElement.muted : void 0,\n ...extra\n };\n console.log(`[HlsAdPlayer][FUNNEL] ${stage}`, payload);\n emit(\"ad_funnel\", payload);\n }\n function buildTrackingMacroContext(options2 = {}) {\n const { errorCode, reason } = options2;\n const ad = options2.ad ?? currentAd;\n const context = {\n adPlayheadSeconds: adVideoElement?.currentTime,\n contentPlayheadSeconds: contentVideo.currentTime,\n assetUri: currentAdMediaFile?.url,\n mediaMime: currentAdMediaFile?.type,\n playerWidth: adVideoElement?.clientWidth || adContainerEl?.clientWidth,\n playerHeight: adVideoElement?.clientHeight || adContainerEl?.clientHeight\n };\n if (errorCode != null) {\n context.errorCode = errorCode;\n }\n if (typeof navigator !== \"undefined\" && navigator.userAgent) {\n context.clientUa = navigator.userAgent;\n }\n if (typeof location !== \"undefined\" && location.href) {\n context.pageUrl = location.href;\n }\n if (podAds.length > 0) {\n context.podSequence = podIndex + 1;\n }\n if (ad?.adServingId) {\n context.adServingId = ad.adServingId;\n }\n if (reason != null) {\n context.reason = reason;\n }\n return context;\n }\n function fireTrackingPixels(urls, options2) {\n if (!urls || urls.length === 0) return;\n const macroContext = buildTrackingMacroContext(options2);\n urls.forEach((url) => {\n try {\n const trackingUrl = substituteVastTrackingMacros(url, macroContext);\n let trackingHost;\n try {\n trackingHost = new URL(trackingUrl).host;\n } catch {\n logFunnel(\"tracking_url_invalid\", { trackingUrl: redactUrl(trackingUrl) });\n return;\n }\n const unexpanded = trackingUrl.match(/\\[[A-Z_]+\\]/g);\n if (unexpanded) {\n logFunnel(\"tracking_url_unexpanded_macro\", {\n trackingHost,\n macros: Array.from(new Set(unexpanded))\n });\n }\n const img = new Image(1, 1);\n inFlightBeacons.add(img);\n let timeoutId;\n const release = (outcome) => {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n img.onload = null;\n img.onerror = null;\n inFlightBeacons.delete(img);\n console.log(\n `[HlsAdPlayer] Tracking pixel settled (${outcome}): ${trackingHost}`\n );\n if (outcome !== \"load\") {\n logFunnel(\"tracking_request_settled\", { reason: outcome, trackingHost });\n }\n };\n img.onload = () => release(\"load\");\n img.onerror = () => release(\"error\");\n timeoutId = setTimeout(\n () => release(\"timeout\"),\n BEACON_TIMEOUT_MS\n );\n img.src = trackingUrl;\n console.log(`[HlsAdPlayer] Fired tracking pixel: ${trackingHost}`);\n logFunnel(\"tracking_request_created\", {\n trackingHost,\n errorCode: options2?.errorCode\n });\n } catch (error) {\n console.warn(`[HlsAdPlayer] Error firing tracking pixel:`, error);\n }\n });\n }\n function getMainStreamQuality() {\n if (!mainHlsInstance || !mainHlsInstance.levels) {\n return null;\n }\n const currentLevel = mainHlsInstance.currentLevel;\n if (currentLevel === -1 || !mainHlsInstance.levels[currentLevel]) {\n const autoLevel = mainHlsInstance.loadLevel;\n if (autoLevel !== -1 && mainHlsInstance.levels[autoLevel]) {\n const level2 = mainHlsInstance.levels[autoLevel];\n return {\n width: level2.width || 1920,\n height: level2.height || 1080,\n bitrate: level2.bitrate || 5e6\n };\n }\n return null;\n }\n const level = mainHlsInstance.levels[currentLevel];\n return {\n width: level.width || 1920,\n height: level.height || 1080,\n bitrate: level.bitrate || 5e6\n };\n }\n function getMediaTargetQuality() {\n const mainQuality = getMainStreamQuality();\n const dpr = typeof window !== \"undefined\" && window.devicePixelRatio > 0 ? window.devicePixelRatio : 1;\n const containerWidth = (adContainerEl?.clientWidth || contentVideo.clientWidth) * dpr;\n const containerHeight = (adContainerEl?.clientHeight || contentVideo.clientHeight) * dpr;\n if (!mainQuality && !(containerWidth > 0 && containerHeight > 0)) {\n return null;\n }\n const base = mainQuality ?? {\n width: containerWidth,\n height: containerHeight,\n bitrate: 5e6\n };\n const width = containerWidth > 0 ? Math.min(base.width, containerWidth) : base.width;\n const height = containerHeight > 0 ? Math.min(base.height, containerHeight) : base.height;\n return { width, height, bitrate: base.bitrate };\n }\n function rankMediaCandidates(mediaFiles) {\n const probe = adVideoElement ?? document.createElement(\"video\");\n const pageIsHttps = typeof location !== \"undefined\" && location.protocol === \"https:\";\n const target = getMediaTargetQuality();\n const deprioritizeHls = prefersProgressiveAdMedia();\n const accepted = [];\n mediaFiles.forEach((file, index) => {\n const isHls = isHlsMediaFile(file);\n const mimeForProbe = isHls ? \"application/vnd.apple.mpegurl\" : file.type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(mimeForProbe);\n const playable = isHls ? import_hls.default.isSupported() || canPlay2 !== \"\" : canPlay2 !== \"\";\n const insecure = pageIsHttps && /^http:/i.test(file.url);\n const details = {\n index,\n candidateUrl: file.url,\n candidateType: file.type,\n width: file.width,\n height: file.height,\n bitrate: file.bitrate,\n canPlayType: canPlay2,\n hlsJs: isHls ? import_hls.default.isSupported() : void 0\n };\n if (!playable) {\n logFunnel(\"media_candidate\", { ...details, reason: \"rejected\", why: \"cannot_play_type\" });\n return;\n }\n let score = 0;\n if (target) {\n const resolutionDiff = Math.abs(file.width - target.width) + Math.abs(file.height - target.height);\n const bitrateDiff = Math.abs((file.bitrate || 5e3) * 1e3 - target.bitrate);\n score = resolutionDiff * 2 + bitrateDiff / 1e3;\n }\n const deprioritizedHls = deprioritizeHls && isHls;\n accepted.push({ file, score, insecure, deprioritizedHls });\n logFunnel(\"media_candidate\", {\n ...details,\n reason: \"accepted\",\n why: insecure ? \"insecure_http_deprioritized\" : deprioritizedHls ? \"hls_deprioritized_on_tv\" : \"playable\",\n score\n });\n });\n accepted.sort((a, b) => {\n if (a.insecure !== b.insecure) return a.insecure ? 1 : -1;\n if (a.deprioritizedHls !== b.deprioritizedHls) {\n return a.deprioritizedHls ? 1 : -1;\n }\n return a.score - b.score;\n });\n return accepted.map((entry) => entry.file);\n }\n function isHlsMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type === \"application/x-mpegurl\" || type === \"application/vnd.apple.mpegurl\" || type.includes(\"mpegurl\") || url.includes(\".m3u8\");\n }\n function isProgressiveMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type.startsWith(\"video/\") || url.endsWith(\".mp4\") || url.includes(\".mp4?\");\n }\n function isAudioMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = (mediaFile.url.toLowerCase().split(\"?\")[0] || \"\").trim();\n return type.startsWith(\"audio/\") || url.endsWith(\".mp3\") || url.endsWith(\".aac\") || url.endsWith(\".m4a\") || url.endsWith(\".ogg\") || url.endsWith(\".oga\") || url.endsWith(\".opus\") || url.endsWith(\".wav\") || url.endsWith(\".weba\");\n }\n function getMediaProbe() {\n if (adVideoElement) return adVideoElement;\n if (!mediaProbe && typeof document !== \"undefined\") {\n mediaProbe = document.createElement(\"video\");\n }\n return mediaProbe;\n }\n function evaluateMediaFile(mf) {\n const type = mf.getAttribute(\"type\") || \"\";\n const url = mf.textContent?.trim() || \"\";\n const delivery = mf.getAttribute(\"delivery\") || void 0;\n const codec = mf.getAttribute(\"codec\") || void 0;\n if (!url) {\n return { category: \"missing_media\", whyRejected: \"empty_url\", canPlayType: \"\" };\n }\n const apiFramework = (mf.getAttribute(\"apiFramework\") || \"\").toUpperCase();\n if (apiFramework === \"VPAID\") {\n return { category: \"vpaid\", whyRejected: \"vpaid_not_supported\", canPlayType: \"\" };\n }\n try {\n const protocol = new URL(url).protocol;\n if (protocol !== \"https:\" && protocol !== \"http:\") {\n return { category: \"invalid_url\", whyRejected: `protocol_${protocol}`, canPlayType: \"\" };\n }\n } catch {\n return { category: \"invalid_url\", whyRejected: \"unparseable_url\", canPlayType: \"\" };\n }\n const bitrateAttr = mf.getAttribute(\"bitrate\");\n const bitrateValue = bitrateAttr ? parseInt(bitrateAttr, 10) : void 0;\n const file = {\n url,\n type,\n width: parseInt(mf.getAttribute(\"width\") || \"1920\", 10),\n height: parseInt(mf.getAttribute(\"height\") || \"1080\", 10),\n bitrate: bitrateValue && bitrateValue > 0 ? bitrateValue : void 0,\n delivery,\n codec\n };\n if (isAudioMediaFile(file)) {\n return {\n category: \"audio_only\",\n whyRejected: type.toLowerCase().startsWith(\"audio/\") ? \"audio_mime\" : \"audio_extension\",\n canPlayType: \"\"\n };\n }\n const isHls = isHlsMediaFile(file);\n const hasExplicitDimensions = mf.getAttribute(\"width\") != null && mf.getAttribute(\"height\") != null;\n if (!isHls && hasExplicitDimensions && (file.width <= 1 || file.height <= 1)) {\n return { category: \"audio_only\", whyRejected: \"zero_dimensions\", canPlayType: \"\" };\n }\n const probe = getMediaProbe();\n if (isHls) {\n const nativeHls = probe?.canPlayType(\"application/vnd.apple.mpegurl\") ?? \"\";\n if (import_hls.default.isSupported()) {\n return { file, whyAccepted: \"hls_js\", canPlayType: nativeHls };\n }\n if (nativeHls !== \"\") {\n return { file, whyAccepted: \"native_hls\", canPlayType: nativeHls };\n }\n return { category: \"unsupported_hls\", whyRejected: \"no_hls_support\", canPlayType: nativeHls };\n }\n if (!isProgressiveMediaFile(file)) {\n return { category: \"unsupported_mime\", whyRejected: \"not_a_video_mime\", canPlayType: \"\" };\n }\n if (!probe) {\n return { file, whyAccepted: \"no_probe_available\", canPlayType: \"\" };\n }\n const baseType = type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(baseType);\n if (canPlay2 === \"\") {\n return { category: \"unsupported_mime\", whyRejected: \"canPlayType_empty\", canPlayType: canPlay2 };\n }\n if (codec) {\n const withCodec = probe.canPlayType(`${baseType}; codecs=\"${codec}\"`);\n if (withCodec === \"\") {\n return { category: \"unsupported_codec\", whyRejected: \"codec_canPlayType_empty\", canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${withCodec}`, canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${canPlay2}`, canPlayType: canPlay2 };\n }\n function collectVideoMediaFiles(linear, verbose, stats) {\n const mediaFileElements = linear.querySelectorAll(\n \":scope > MediaFiles > MediaFile\"\n );\n const mediaFiles = [];\n if (stats) stats.total += mediaFileElements.length;\n if (verbose) {\n console.log(\n `[HlsAdPlayer] Found ${mediaFileElements.length} MediaFile element(s) in VAST XML`\n );\n }\n mediaFileElements.forEach((mf, index) => {\n const result = evaluateMediaFile(mf);\n const url = mf.textContent?.trim() || \"\";\n const accepted = \"file\" in result;\n logFunnel(\"mediafile_evaluated\", {\n reason: accepted ? \"accepted\" : result.category,\n index,\n type: mf.getAttribute(\"type\") || \"\",\n delivery: mf.getAttribute(\"delivery\") || void 0,\n codec: mf.getAttribute(\"codec\") || void 0,\n apiFramework: mf.getAttribute(\"apiFramework\") || void 0,\n width: mf.getAttribute(\"width\"),\n height: mf.getAttribute(\"height\"),\n fileUrl: redactUrl(url),\n canPlayType: result.canPlayType,\n whyAccepted: accepted ? result.whyAccepted : void 0,\n whyRejected: accepted ? void 0 : result.whyRejected\n });\n if (\"file\" in result) {\n mediaFiles.push(result.file);\n return;\n }\n if (stats) {\n stats.categories[result.category] = (stats.categories[result.category] ?? 0) + 1;\n }\n if (result.category === \"audio_only\") {\n console.warn(\n `[HlsAdPlayer] MediaFile ${index} skipped (audio-only: ${result.whyRejected}, type=\"${mf.getAttribute(\"type\") || \"\"}\") \\u2014 audio-only ads are not played on video inventory`\n );\n }\n });\n return mediaFiles;\n }\n function createEmptyTrackingUrls() {\n const urls = {\n impression: [],\n clickTracking: [],\n error: [],\n viewable: [],\n notViewable: [],\n viewUndetermined: [],\n verificationNotExecuted: [],\n progress: []\n };\n for (const event of LINEAR_TRACKING_EVENTS) {\n urls[event] = [];\n }\n return urls;\n }\n function pushUrls(target, elements) {\n elements.forEach((el) => {\n const url = textOf(el);\n if (url) target.push(url);\n });\n }\n function collectLinearTracking(linear, into) {\n linear.querySelectorAll(\":scope > TrackingEvents > Tracking\").forEach((el) => {\n const event = el.getAttribute(\"event\");\n const url = textOf(el);\n if (!event || !url) return;\n if (event === \"progress\") {\n const offset = parseProgressOffset(el.getAttribute(\"offset\"));\n if (offset) into.progress.push({ url, ...offset });\n return;\n }\n if (LINEAR_TRACKING_EVENTS.indexOf(event) !== -1) {\n into[event].push(url);\n }\n });\n pushUrls(\n into.clickTracking,\n linear.querySelectorAll(\":scope > VideoClicks > ClickTracking\")\n );\n }\n function collectAdLevelTracking(adBody, into) {\n pushUrls(into.impression, adBody.querySelectorAll(\":scope > Impression\"));\n pushUrls(into.error, adBody.querySelectorAll(\":scope > Error\"));\n pushUrls(\n into.viewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > Viewable\")\n );\n pushUrls(\n into.notViewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > NotViewable\")\n );\n pushUrls(\n into.viewUndetermined,\n adBody.querySelectorAll(\":scope > ViewableImpression > ViewUndetermined\")\n );\n adBody.querySelectorAll(\n ':scope > AdVerifications > Verification, :scope > Extensions > Extension[type=\"AdVerifications\"] > AdVerifications > Verification'\n ).forEach((verification) => {\n pushUrls(\n into.verificationNotExecuted,\n verification.querySelectorAll(\n ':scope > TrackingEvents > Tracking[event=\"verificationNotExecuted\"]'\n )\n );\n });\n }\n function mergeTrackingUrls(target, source) {\n const targetLists = target;\n const sourceLists = source;\n for (const key of Object.keys(targetLists)) {\n const incoming = sourceLists[key];\n if (incoming && incoming.length > 0) {\n targetLists[key] = targetLists[key].concat(incoming);\n }\n }\n return target;\n }\n function parseXml(xmlString) {\n const xmlDoc = new DOMParser().parseFromString(xmlString, \"text/xml\");\n const parserError = xmlDoc.querySelector(\"parsererror\");\n if (parserError) {\n console.error(\n \"[HlsAdPlayer] XML parsing error (malformed VAST XML):\",\n parserError.textContent\n );\n return null;\n }\n return xmlDoc;\n }\n function getAdSequence(adElement) {\n const sequence = parseInt(adElement.getAttribute(\"sequence\") || \"\", 10);\n return Number.isFinite(sequence) ? sequence : void 0;\n }\n function emptyVastResult(root) {\n const errorUrls = [];\n pushUrls(errorUrls, root.querySelectorAll(\":scope > Error\"));\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_WRAPPER_NO_ADS };\n }\n function parseVastXml(xmlString) {\n try {\n const xmlDoc = parseXml(xmlString);\n if (!xmlDoc) return { type: \"empty\" };\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No Ad element found in VAST ${root.getAttribute(\"version\") ?? \"\"} response`\n );\n return emptyVastResult(root);\n }\n const ordered = [\n ...adElements.filter((el) => getAdSequence(el) === void 0),\n ...adElements.filter((el) => getAdSequence(el) !== void 0)\n ];\n let firstEmpty;\n for (const [index, adElement] of ordered.entries()) {\n const parsed = parseAdElement(adElement, true);\n if (parsed.type === \"empty\") {\n firstEmpty ?? (firstEmpty = parsed);\n continue;\n }\n if (index > 0) {\n logFunnel(\"vast_ad_fallback\", {\n usedAdIndex: index,\n adCount: ordered.length\n });\n }\n if (parsed.type === \"wrapper\") {\n console.log(\n `[HlsAdPlayer] VAST wrapper detected, following VASTAdTagURI: ${redactUrl(parsed.vastAdTagUri)}`\n );\n }\n return parsed;\n }\n return firstEmpty ?? emptyVastResult(root);\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing VAST XML:\", error);\n return { type: \"empty\" };\n }\n }\n function parseAdElement(adElement, verbose = false) {\n try {\n const wrapper = adElement.querySelector(\":scope > Wrapper\");\n if (wrapper) {\n const vastAdTagUri = textOf(\n wrapper.querySelector(\":scope > VASTAdTagURI\")\n );\n if (!vastAdTagUri) {\n console.warn(\"[HlsAdPlayer] <Wrapper> has no VASTAdTagURI\");\n return { type: \"empty\" };\n }\n const trackingUrls2 = createEmptyTrackingUrls();\n collectAdLevelTracking(wrapper, trackingUrls2);\n wrapper.querySelectorAll(\":scope > Creatives > Creative > Linear\").forEach((linear2) => collectLinearTracking(linear2, trackingUrls2));\n return {\n type: \"wrapper\",\n vastAdTagUri,\n trackingUrls: trackingUrls2,\n rules: {\n followAdditionalWrappers: wrapper.getAttribute(\"followAdditionalWrappers\") !== \"false\"\n }\n };\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) {\n console.warn(\"[HlsAdPlayer] <Ad> has neither <InLine> nor <Wrapper>\");\n return { type: \"empty\" };\n }\n const errorUrls = [];\n pushUrls(errorUrls, inLine.querySelectorAll(\":scope > Error\"));\n if (adElement.getAttribute(\"conditionalAd\") === \"true\") {\n console.warn(\"[HlsAdPlayer] Skipping conditional <Ad> (VPAID-only)\");\n logFunnel(\"vast_no_supported_media\", { reason: \"vpaid\", conditionalAd: true });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n let linear;\n let mediaFiles = [];\n const rejectStats = { total: 0, categories: {} };\n for (const candidate of Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear\")\n )) {\n const files = collectVideoMediaFiles(candidate, verbose, rejectStats);\n if (files.length > 0) {\n linear = candidate;\n mediaFiles = files;\n break;\n }\n }\n if (!linear) {\n console.warn(\"[HlsAdPlayer] No supported linear media files in <Ad>\");\n let reason = \"missing_media\";\n let top = 0;\n for (const category of Object.keys(rejectStats.categories)) {\n const count = rejectStats.categories[category] ?? 0;\n if (count > top) {\n top = count;\n reason = category;\n }\n }\n if (rejectStats.total > 0 && top === 0) reason = \"other\";\n logFunnel(\"vast_no_supported_media\", {\n reason,\n mediaFileCount: rejectStats.total,\n rejectedByCategory: rejectStats.categories\n });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n const trackingUrls = createEmptyTrackingUrls();\n collectAdLevelTracking(inLine, trackingUrls);\n collectLinearTracking(linear, trackingUrls);\n return {\n type: \"inline\",\n ad: {\n id: adElement.getAttribute(\"id\") || \"unknown\",\n title: textOf(inLine.querySelector(\":scope > AdTitle\")) || \"Ad\",\n duration: parseVastTime(textOf(linear.querySelector(\":scope > Duration\"))) ?? 30,\n mediaFiles,\n trackingUrls,\n clickThrough: textOf(\n linear.querySelector(\":scope > VideoClicks > ClickThrough\")\n ),\n adServingId: textOf(inLine.querySelector(\":scope > AdServingId\"))\n }\n };\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing <Ad> element:\", error);\n return { type: \"empty\" };\n }\n }\n async function fetchVastXml(vastTagUrl, credentials = \"include\", kind = \"gam\", finalizeRequestUrl) {\n if (destroyed) {\n throw new Error(\"VAST request skipped: ad player destroyed\");\n }\n const controller = typeof AbortController !== \"undefined\" ? new AbortController() : void 0;\n if (controller) pendingVastRequests.add(controller);\n const timeoutId = controller ? setTimeout(() => controller.abort(), VAST_REQUEST_TIMEOUT_MS) : void 0;\n const startedAt = Date.now();\n let attempt = 0;\n const resolveDispatchUrl = () => {\n if (kind === \"wrapper\") return vastTagUrl;\n if (finalizeRequestUrl) return finalizeRequestUrl(vastTagUrl, attempt);\n const { url, unresolved } = stripScvpMacros(vastTagUrl);\n if (unresolved.length > 0) {\n console.warn(\"[HlsAdPlayer] Removed unresolved SCVP macros before dispatch:\", unresolved.join(\", \"));\n }\n return url;\n };\n const requestVast = async (creds) => {\n attempt++;\n const pending = fetch(resolveDispatchUrl(), {\n mode: \"cors\",\n credentials: creds,\n headers: {\n \"Accept\": \"application/xml, text/xml, */*\"\n },\n referrerPolicy: \"no-referrer-when-downgrade\",\n ...controller ? { signal: controller.signal } : {}\n });\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_http_request_sent`, { attempt, credentials: creds });\n }\n const response = await pending;\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_response_received`, {\n attempt,\n httpStatus: response.status,\n ok: response.ok,\n elapsedMs: Date.now() - startedAt\n });\n }\n return response;\n };\n try {\n let response;\n try {\n response = await requestVast(credentials);\n } catch (error) {\n if (kind === \"gam\" && !controller?.signal.aborted && !isPodRequestAbortedError(error)) {\n gamCredentialsMode = credentials === \"include\" ? \"omit\" : \"include\";\n console.warn(\n `[HlsAdPlayer] GAM fetch failed with credentials=\"${credentials}\"; next GAM request will use credentials=\"${gamCredentialsMode}\":`,\n error\n );\n logFunnel(\"gam_credentials_mode_changed\", {\n from: credentials,\n to: gamCredentialsMode,\n errorMessage: error?.message\n });\n }\n throw error;\n }\n if (!response.ok) {\n throw new Error(\n `Failed to fetch VAST: HTTP ${response.status} ${response.statusText}`\n );\n }\n return await response.text();\n } catch (error) {\n if (controller?.signal.aborted) {\n if (pendingRequestAbortReason) {\n throw new Error(`${pendingRequestAbortReason}: ${vastTagUrl}`);\n }\n throw new Error(\n `VAST request timeout after ${VAST_REQUEST_TIMEOUT_MS}ms: ${vastTagUrl}`\n );\n }\n throw error;\n } finally {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n if (controller) pendingVastRequests.delete(controller);\n }\n }\n async function fetchAndParseVastAd(vastTagUrl, depth = 0, accumulatedTracking = createEmptyTrackingUrls(), rules = { followAdditionalWrappers: true }) {\n if (destroyed) return null;\n let vastXml;\n const fetchStartedAt = Date.now();\n try {\n vastXml = await fetchVastXml(\n vastTagUrl,\n depth === 0 ? \"include\" : \"omit\",\n depth === 0 ? \"gam\" : \"wrapper\"\n );\n } catch (error) {\n if (depth === 0) throw error;\n console.warn(\"[HlsAdPlayer] Wrapped VAST request failed:\", error);\n logFunnel(\"wrapper_fetch\", {\n reason: \"failure\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt,\n errorMessage: error?.message\n });\n if (!destroyed) {\n fireTrackingPixels(accumulatedTracking.error, {\n errorCode: VAST_ERROR_WRAPPER_TIMEOUT\n });\n }\n return null;\n }\n if (destroyed) return null;\n if (depth > 0) {\n logFunnel(\"wrapper_fetch\", {\n reason: \"success\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt\n });\n }\n console.log(`[HlsAdPlayer] VAST XML received (length=${vastXml.length})`);\n const parsed = parseVastXml(vastXml);\n if (parsed.type === \"empty\") {\n fireTrackingPixels(\n (parsed.errorUrls ?? []).concat(accumulatedTracking.error),\n { errorCode: parsed.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS }\n );\n return null;\n }\n if (parsed.type === \"wrapper\") {\n if (depth >= MAX_VAST_WRAPPER_DEPTH || !rules.followAdditionalWrappers) {\n console.warn(\n rules.followAdditionalWrappers ? `[HlsAdPlayer] VAST wrapper depth limit (${MAX_VAST_WRAPPER_DEPTH}) reached, aborting redirect chain` : '[HlsAdPlayer] Parent wrapper set followAdditionalWrappers=\"false\"; rejecting nested wrapper'\n );\n fireTrackingPixels(\n accumulatedTracking.error.concat(parsed.trackingUrls.error),\n { errorCode: VAST_ERROR_WRAPPER_LIMIT }\n );\n return null;\n }\n mergeTrackingUrls(accumulatedTracking, parsed.trackingUrls);\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n depth + 1,\n accumulatedTracking,\n parsed.rules\n );\n }\n mergeTrackingUrls(parsed.ad.trackingUrls, accumulatedTracking);\n logFunnel(\"inline_resolved\", { depth });\n return parsed.ad;\n }\n function isEdgeEmptySentinelAd(adElement) {\n if ((adElement.getAttribute(\"id\") || \"\").trim().toLowerCase() === \"empty\") {\n return true;\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) return false;\n if (/^no ad available$/i.test(textOf(inLine.querySelector(\":scope > AdTitle\")) ?? \"\")) {\n return true;\n }\n const durations = Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear > Duration\")\n ).map((el) => parseVastTime(textOf(el)));\n return durations.length > 0 && durations.every((seconds) => seconds === 0);\n }\n async function fetchAndParsePod(vastTagUrl, source = \"gam\", finalizeRequestUrl) {\n lastPodAdElementCount = 0;\n const isEdge = source === \"edge\";\n const vastXml = await fetchVastXml(\n vastTagUrl,\n isEdge ? \"omit\" : gamCredentialsMode,\n source,\n finalizeRequestUrl\n );\n if (destroyed) return [];\n console.log(\n `[HlsAdPlayer] Pod VAST XML received (length=${vastXml.length})`\n );\n const trimmedXml = vastXml.trim();\n if (trimmedXml.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Pod VAST response body is empty (no fill)\"\n );\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"empty_body\" });\n return [];\n }\n const xmlDoc = parseXml(vastXml);\n if (!xmlDoc) {\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"xml_parse_error\" });\n return [];\n }\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n logFunnel(\"vast_parsed\", {\n reason: adElements.length > 0 ? \"has_ads\" : \"no_ads\",\n vastVersion: root.getAttribute(\"version\") ?? void 0,\n adElementCount: adElements.length,\n inlineCount: adElements.filter((el) => el.querySelector(\":scope > InLine\")).length,\n wrapperCount: adElements.filter((el) => el.querySelector(\":scope > Wrapper\")).length\n });\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No <Ad> elements in VAST ${root.getAttribute(\"version\") ?? \"\"} pod response (no fill)`\n );\n const empty = emptyVastResult(root);\n if (empty.type === \"empty\" && empty.errorUrls?.length) {\n fireTrackingPixels(empty.errorUrls, {\n errorCode: empty.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS\n });\n }\n return [];\n }\n const resolveAd = async (adElement) => {\n const parsed = parseAdElement(adElement);\n if (parsed.type === \"inline\") {\n logFunnel(\"inline_resolved\", { depth: 0 });\n return parsed.ad;\n }\n if (parsed.type === \"wrapper\") {\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n 1,\n parsed.trackingUrls,\n parsed.rules\n );\n }\n if (parsed.errorUrls?.length) {\n fireTrackingPixels(parsed.errorUrls, {\n errorCode: parsed.errorCode ?? VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n }\n return null;\n };\n let candidates = adElements;\n if (isEdge) {\n candidates = adElements.filter((el) => !isEdgeEmptySentinelAd(el));\n if (candidates.length < adElements.length) {\n logFunnel(\"edge_empty_sentinel\", {\n sentinelCount: adElements.length - candidates.length,\n adElementCount: adElements.length\n });\n }\n }\n const podElements = candidates.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = candidates.filter((el) => getAdSequence(el) === void 0);\n const resolveAll = (elements) => Promise.all(elements.map((el) => resolveAd(el).catch(() => null)));\n const ads = [];\n if (podElements.length === 0) {\n for (const ad of await resolveAll(buffet)) {\n if (ad) ads.push(ad);\n }\n } else {\n for (let ad of await resolveAll(podElements)) {\n while (!ad && buffet.length > 0) {\n ad = await resolveAd(buffet.shift()).catch(() => null);\n }\n if (ad) ads.push(ad);\n }\n }\n console.log(\n `[HlsAdPlayer] Parsed ${ads.length} ad(s) from VAST ${root.getAttribute(\"version\") ?? \"\"} pod response`\n );\n lastPodAdElementCount = adElements.length;\n return isEdge ? ads.filter((ad) => ad.duration > 0) : ads;\n }\n function createAdVideoElement() {\n const video = document.createElement(\"video\");\n video.style.position = \"absolute\";\n video.style.left = \"0\";\n video.style.top = \"0\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.objectFit = \"contain\";\n video.style.backgroundColor = \"#000\";\n video.playsInline = true;\n video.muted = false;\n video.volume = 1;\n console.log(\n `[HlsAdPlayer] Created ad video element with volume ${video.volume}`\n );\n return video;\n }\n function setupAdEventListeners() {\n if (!adVideoElement || !currentAd) return;\n if (adEventHandlers.length > 0) return;\n const onTimeUpdate = () => {\n if (!currentAd || !adVideoElement) return;\n noteAdProgress();\n sampleViewability();\n const currentTime = adVideoElement.currentTime;\n if (trackingFired.start) {\n for (const event of currentAd.trackingUrls.progress) {\n if (trackingFired.progressFired.has(event)) continue;\n const threshold = event.offsetSeconds ?? (event.offsetPercent ?? 0) / 100 * currentAd.duration;\n if (currentTime >= threshold) {\n trackingFired.progressFired.add(event);\n fireTrackingPixels([event.url]);\n }\n }\n }\n if (!(currentAd.duration > 0)) return;\n const progress = currentTime / currentAd.duration;\n if (progress >= 0.25 && !trackingFired.firstQuartile) {\n trackingFired.firstQuartile = true;\n logFunnel(\"first_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.firstQuartile);\n }\n if (progress >= 0.5 && !trackingFired.midpoint) {\n trackingFired.midpoint = true;\n logFunnel(\"midpoint\");\n fireTrackingPixels(currentAd.trackingUrls.midpoint);\n }\n if (progress >= 0.75 && !trackingFired.thirdQuartile) {\n trackingFired.thirdQuartile = true;\n logFunnel(\"third_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.thirdQuartile);\n }\n };\n const onLoadedMetadata = () => {\n if (!adPlaying || !adVideoElement) return;\n const { videoWidth, videoHeight } = adVideoElement;\n if (videoWidth <= 1 || videoHeight <= 1) {\n console.warn(\n `[HlsAdPlayer] Ad creative has no usable video dimensions (${videoWidth}x${videoHeight}) - skipping this creative`\n );\n handleVideoDecodeFailure();\n }\n };\n const onCanPlay = () => {\n if (!currentAd || trackingFired.loaded) return;\n trackingFired.loaded = true;\n fireTrackingPixels(currentAd.trackingUrls.loaded);\n };\n const onPlaying = () => {\n startStallWatchdog();\n if (!currentAd || !adVideoElement) return;\n if (!trackingFired.impression) {\n trackingFired.impression = true;\n resolvedAds.add(currentAd);\n logFunnel(\"playing\", {\n mutedByAutoplay: forcedMuteByAutoplay,\n candidateIndex: mediaCandidateIndex\n });\n logFunnel(\"impression_fired\", {\n pixelCount: currentAd.trackingUrls.impression.length\n });\n if (currentAd.trackingUrls.impression.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Ad started but VAST contained no <Impression> URLs - GAM will not count it\"\n );\n }\n fireTrackingPixels(currentAd.trackingUrls.impression);\n fireTrackingPixels(currentAd.trackingUrls.creativeView);\n fireTrackingPixels(currentAd.trackingUrls.verificationNotExecuted, {\n reason: VERIFICATION_NOT_SUPPORTED_REASON\n });\n emit(\"ad_impression\", {\n adId: currentAd.id,\n index: podIndex,\n total: podAds.length || 1\n });\n }\n if (trackingFired.start) return;\n trackingFired.start = true;\n trackingFired.lastMuted = adVideoElement.muted || adVideoElement.volume === 0;\n fireTrackingPixels(currentAd.trackingUrls.start);\n console.log(\"[HlsAdPlayer] Ad started playing\");\n };\n const onEnded = () => {\n if (!currentAd || trackingFired.complete) return;\n sampleViewability();\n settleViewability();\n trackingFired.complete = true;\n logFunnel(\"complete\");\n fireTrackingPixels(currentAd.trackingUrls.complete);\n console.log(\"[HlsAdPlayer] Ad completed\");\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdComplete();\n };\n const onError = (e) => {\n if (!adPlaying) return;\n console.error(\"[HlsAdPlayer] Ad video error:\", e);\n const vastErrorCode = toVastMediaErrorCode(adVideoElement?.error);\n logFunnel(\"media_error\", {\n mediaErrorCode: adVideoElement?.error?.code,\n errorMessage: adVideoElement?.error?.message,\n networkState: adVideoElement?.networkState,\n readyState: adVideoElement?.readyState,\n currentSrc: adVideoElement?.currentSrc,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n };\n const onMediaDiagnostic = (event) => {\n if (!adPlaying || !adVideoElement || trackingFired.impression) return;\n if (!adVideoElement.currentSrc) return;\n logFunnel(\"media_event\", {\n reason: event.type,\n readyState: adVideoElement.readyState,\n networkState: adVideoElement.networkState,\n currentSrc: adVideoElement.currentSrc\n });\n };\n const onVolumeChange = () => {\n if (!currentAd || !adVideoElement) return;\n if (forcedMuteByAutoplay && !adVideoElement.muted) {\n const userActivation = navigator.userActivation;\n if (userActivation && !userActivation.isActive) {\n logFunnel(\"unexpected_unmute\", { paused: adVideoElement.paused });\n }\n forcedMuteByAutoplay = false;\n }\n const muted = adVideoElement.muted || adVideoElement.volume === 0;\n if (!trackingFired.start) {\n trackingFired.lastMuted = muted;\n return;\n }\n if (muted === trackingFired.lastMuted) return;\n trackingFired.lastMuted = muted;\n fireTrackingPixels(\n muted ? currentAd.trackingUrls.mute : currentAd.trackingUrls.unmute\n );\n };\n const isTrackablePlayback = () => adPlaying && !!currentAd && !!adVideoElement && trackingFired.start && !trackingFired.complete && !adVideoElement.ended;\n const onPause = () => {\n continuousVisibleS = 0;\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.pause);\n }\n };\n const onPlay = () => {\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.resume);\n }\n };\n adEventHandlers = [\n { type: \"timeupdate\", handler: onTimeUpdate },\n { type: \"loadedmetadata\", handler: onLoadedMetadata },\n { type: \"canplay\", handler: onCanPlay },\n { type: \"playing\", handler: onPlaying },\n { type: \"ended\", handler: onEnded },\n { type: \"error\", handler: onError },\n { type: \"volumechange\", handler: onVolumeChange },\n { type: \"pause\", handler: onPause },\n { type: \"play\", handler: onPlay },\n { type: \"stalled\", handler: onMediaDiagnostic },\n { type: \"suspend\", handler: onMediaDiagnostic },\n { type: \"abort\", handler: onMediaDiagnostic },\n { type: \"emptied\", handler: onMediaDiagnostic }\n ];\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.addEventListener(type, handler);\n }\n }\n function teardownAdEventListeners() {\n if (adVideoElement) {\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.removeEventListener(type, handler);\n }\n }\n adEventHandlers = [];\n }\n function handleAdClick() {\n if (!adPlaying || !currentAd) return;\n fireTrackingPixels(currentAd.trackingUrls.clickTracking);\n emit(\"ad_click\", { adId: currentAd.id, clickThrough: currentAd.clickThrough });\n if (currentAd.clickThrough) {\n try {\n window.open(currentAd.clickThrough, \"_blank\", \"noopener\");\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Failed to open ClickThrough URL:\", error);\n }\n }\n }\n function reportCurrentAdError(errorCode) {\n if (!currentAd) return;\n resolvedAds.add(currentAd);\n fireTrackingPixels(currentAd.trackingUrls.error, { errorCode });\n }\n function fireNotUsedForUnplayedAds() {\n for (const ad of podAds) {\n if (resolvedAds.has(ad)) continue;\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n function sampleViewability() {\n if (!currentAd || !adVideoElement || !viewObserver || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n const now = adVideoElement.currentTime;\n const inView = visibleRatio >= VIEWABLE_MIN_VISIBLE_RATIO && document.visibilityState === \"visible\" && !adVideoElement.paused;\n if (!inView) {\n continuousVisibleS = 0;\n } else if (lastViewSampleTime !== void 0 && now >= lastViewSampleTime) {\n continuousVisibleS += now - lastViewSampleTime;\n }\n lastViewSampleTime = now;\n if (continuousVisibleS >= VIEWABLE_MIN_CONTINUOUS_S) {\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(currentAd.trackingUrls.viewable);\n }\n }\n function settleViewability() {\n if (!currentAd || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(\n viewObserver ? currentAd.trackingUrls.notViewable : currentAd.trackingUrls.viewUndetermined\n );\n }\n function handleFullscreenChange() {\n if (!adPlaying || !currentAd || !adContainerEl || !trackingFired.start) return;\n const fullscreenEl = document.fullscreenElement ?? document.webkitFullscreenElement;\n const expanded = !!fullscreenEl && fullscreenEl.contains(adContainerEl);\n if (expanded === lastPlayerExpanded) return;\n lastPlayerExpanded = expanded;\n const urls = currentAd.trackingUrls;\n fireTrackingPixels(\n expanded ? urls.fullscreen.concat(urls.playerExpand) : urls.exitFullscreen.concat(urls.playerCollapse)\n );\n }\n function attachContainerHandlers() {\n if (!adContainerEl || containerHandlers.length > 0) return;\n const onClick = () => handleAdClick();\n const onInteraction = (event) => {\n if (adPlaying) emit(\"ad_interaction\", event);\n };\n containerHandlers = [\n { type: \"click\", handler: onClick },\n { type: \"mousedown\", handler: onInteraction },\n { type: \"touchstart\", handler: onInteraction }\n ];\n for (const { type, handler } of containerHandlers) {\n adContainerEl.addEventListener(type, handler);\n }\n const onFullscreenChange = () => handleFullscreenChange();\n documentHandlers = [\n { type: \"fullscreenchange\", handler: onFullscreenChange },\n { type: \"webkitfullscreenchange\", handler: onFullscreenChange }\n ];\n for (const { type, handler } of documentHandlers) {\n document.addEventListener(type, handler);\n }\n if (typeof IntersectionObserver !== \"undefined\") {\n viewObserver = new IntersectionObserver(\n (entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n visibleRatio = entry.isIntersecting ? entry.intersectionRatio : 0;\n }\n },\n { threshold: [0, 0.25, 0.5, 0.75, 1] }\n );\n viewObserver.observe(adContainerEl);\n }\n }\n function detachContainerHandlers() {\n if (adContainerEl) {\n for (const { type, handler } of containerHandlers) {\n adContainerEl.removeEventListener(type, handler);\n }\n }\n containerHandlers = [];\n for (const { type, handler } of documentHandlers) {\n document.removeEventListener(type, handler);\n }\n documentHandlers = [];\n viewObserver?.disconnect();\n viewObserver = void 0;\n }\n function setAdPlayingFlag(isPlaying) {\n if (isPlaying) {\n contentVideo.dataset.stormcloudAdPlaying = \"true\";\n } else {\n delete contentVideo.dataset.stormcloudAdPlaying;\n }\n }\n function resetAdTracking() {\n trackingFired = createTrackingState();\n continuousVisibleS = 0;\n lastViewSampleTime = void 0;\n }\n function isRvfcSupported(video) {\n return typeof video.requestVideoFrameCallback === \"function\";\n }\n function settlePendingPlay() {\n pendingPlayPromise = void 0;\n }\n function toVastPlayErrorCode(error) {\n return error?.name === \"NotSupportedError\" ? VAST_ERROR_NO_SUPPORTED_MEDIA : VAST_ERROR_MEDIA_DISPLAY;\n }\n function failAdPlayback(context, error) {\n const vastErrorCode = toVastPlayErrorCode(error);\n console.error(`[HlsAdPlayer] Error starting ${context}:`, error);\n logFunnel(\"play_failed\", {\n errorName: error?.name,\n errorMessage: error?.message,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n function startAdPlayback(context, isMutedRetry = false) {\n if (!adVideoElement) return;\n const computed = typeof getComputedStyle === \"function\" && adContainerEl ? getComputedStyle(adContainerEl) : void 0;\n logFunnel(isMutedRetry ? \"muted_retry\" : \"play_called\", {\n context,\n isConnected: adVideoElement.isConnected,\n clientWidth: adVideoElement.clientWidth,\n clientHeight: adVideoElement.clientHeight,\n containerDisplay: computed?.display,\n containerVisibility: computed?.visibility\n });\n const playPromise = adVideoElement.play();\n pendingPlayPromise = playPromise;\n playPromise.catch((error) => {\n if (pendingPlayPromise !== playPromise) {\n return;\n }\n logFunnel(\"play_rejected\", {\n context,\n errorName: error?.name,\n errorMessage: error?.message\n });\n if (!isMutedRetry && error?.name === \"NotAllowedError\" && adVideoElement && !adVideoElement.muted) {\n console.warn(\n `[HlsAdPlayer] Unmuted ${context} blocked by autoplay policy - retrying muted`\n );\n originalMutedState = true;\n forcedMuteByAutoplay = true;\n adVideoElement.muted = true;\n startAdPlayback(context, true);\n return;\n }\n failAdPlayback(context, error);\n }).finally(() => {\n if (pendingPlayPromise === playPromise) {\n pendingPlayPromise = void 0;\n }\n });\n }\n function prepareVideoElementForNewSource() {\n settlePendingPlay();\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n if (!adVideoElement) return;\n try {\n adVideoElement.pause();\n adVideoElement.removeAttribute(\"src\");\n adVideoElement.load();\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error preparing ad video for new source:\",\n error\n );\n }\n }\n function recreateAdVideoElement(reason) {\n console.log(`[HlsAdPlayer] Recreating ad video element (${reason})`);\n teardownAdEventListeners();\n prepareVideoElementForNewSource();\n if (adVideoElement) {\n try {\n adVideoElement.remove();\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error removing ad video element:\", error);\n }\n }\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n }\n function clearMediaStartTimer() {\n if (mediaStartTimerId !== void 0) {\n clearTimeout(mediaStartTimerId);\n mediaStartTimerId = void 0;\n }\n }\n function startMediaStartTimer() {\n clearMediaStartTimer();\n if (!(MEDIA_START_TIMEOUT_MS > 0)) return;\n const startedAt = Date.now();\n mediaStartTimerId = setTimeout(() => {\n mediaStartTimerId = void 0;\n if (!adPlaying || trackingFired.impression) return;\n console.warn(\n `[HlsAdPlayer] Ad media did not start playing within ${MEDIA_START_TIMEOUT_MS}ms`\n );\n logFunnel(\"play_resolved_but_never_started\", {\n timeoutMs: MEDIA_START_TIMEOUT_MS,\n elapsedMs: Date.now() - startedAt,\n readyState: adVideoElement?.readyState,\n networkState: adVideoElement?.networkState,\n currentSrc: adVideoElement?.currentSrc,\n paused: adVideoElement?.paused,\n vastErrorCode: VAST_ERROR_MEDIA_TIMEOUT\n });\n recoverFromAdFailure(VAST_ERROR_MEDIA_TIMEOUT);\n }, MEDIA_START_TIMEOUT_MS);\n }\n function resetVideoElementForNextSource() {\n clearStallWatchdog();\n const previousSourceUsedHlsJs = adHls !== void 0;\n if (requiresMediaPipelineResetAfterAds() || previousSourceUsedHlsJs) {\n recreateAdVideoElement(\n previousSourceUsedHlsJs ? \"after hls.js source\" : \"single-decoder platform\"\n );\n setupAdEventListeners();\n } else {\n prepareVideoElementForNewSource();\n }\n }\n function tryNextMediaCandidate() {\n if (!currentAd || trackingFired.impression) return false;\n if (mediaCandidateIndex >= mediaCandidates.length - 1) return false;\n const failedUrl = currentAdMediaFile?.url;\n mediaCandidateIndex++;\n const next = mediaCandidates[mediaCandidateIndex];\n if (!next) return false;\n logFunnel(\"media_fallback\", {\n failedUrl,\n nextUrl: next.url,\n nextType: next.type,\n candidateIndex: mediaCandidateIndex,\n candidateCount: mediaCandidates.length\n });\n resetVideoElementForNextSource();\n try {\n loadMediaCandidate(next);\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load fallback media file:\", error);\n return tryNextMediaCandidate();\n }\n }\n function recoverFromAdFailure(vastErrorCode) {\n clearMediaStartTimer();\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(vastErrorCode);\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) return;\n handleAdError();\n }\n function loadCurrentAdMedia() {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n mediaCandidates = rankMediaCandidates(currentAd.mediaFiles);\n mediaCandidateIndex = 0;\n const mediaFile = mediaCandidates[0];\n if (!mediaFile) {\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA,\n candidates: currentAd.mediaFiles.length\n });\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw new Error(\"No media file this browser can play\");\n }\n try {\n loadMediaCandidate(mediaFile);\n } catch (error) {\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw error;\n }\n }\n function loadMediaCandidate(mediaFile) {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n currentAdMediaFile = mediaFile;\n const isHlsAd = isHlsMediaFile(mediaFile);\n logFunnel(\"media_selected\", {\n width: mediaFile.width,\n height: mediaFile.height,\n bitrate: mediaFile.bitrate,\n candidateIndex: mediaCandidateIndex,\n candidates: mediaCandidates.length\n });\n console.log(\n `[HlsAdPlayer] Loading ${isHlsAd ? \"HLS\" : \"progressive\"} ad (pod ${podIndex + 1}/${podAds.length || 1}) from: ${mediaFile.url}`\n );\n startMediaStartTimer();\n if (isHlsAd && import_hls.default.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new import_hls.default({\n enableWorker: true,\n lowLatencyMode: false\n });\n logFunnel(\"media_load\", { pipeline: \"hls.js\" });\n adHls.loadSource(mediaFile.url);\n adHls.attachMedia(adVideoElement);\n adHls.on(import_hls.default.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(import_hls.default.Events.ERROR, (_event, data) => {\n console.error(\"[HlsAdPlayer] HLS error:\", data);\n if (data.fatal) {\n const vastErrorCode = data.type === import_hls.default.ErrorTypes.NETWORK_ERROR ? 401 : VAST_ERROR_MEDIA_DISPLAY;\n logFunnel(\"hls_fatal\", {\n reason: data.details,\n errorName: data.type,\n errorMessage: data.details,\n responseCode: data.response?.code,\n responseText: data.response?.text,\n fragUrl: data.frag?.url,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n });\n } else if (isHlsAd && adVideoElement.canPlayType(\"application/vnd.apple.mpegurl\")) {\n logFunnel(\"media_load\", { pipeline: \"native-hls\" });\n adVideoElement.src = mediaFile.url;\n startAdPlayback(\"native HLS ad playback\");\n } else if (!isHlsAd && isProgressiveMediaFile(mediaFile)) {\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n logFunnel(\"media_load\", { pipeline: \"progressive\" });\n adVideoElement.src = mediaFile.url;\n adVideoElement.load();\n startAdPlayback(\"progressive ad playback\");\n } else {\n clearMediaStartTimer();\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n throw new Error(`Unsupported ad media file type: ${mediaFile.type}`);\n }\n }\n function advanceToNextPodAd() {\n clearMediaStartTimer();\n while (podIndex < podAds.length - 1) {\n settleViewability();\n podIndex++;\n currentAd = podAds[podIndex];\n currentAdMediaFile = void 0;\n resetAdTracking();\n if (currentAd) {\n console.log(\n `[HlsAdPlayer] Advancing to next pod ad (${podIndex + 1}/${podAds.length}): ${currentAd.title}, duration: ${currentAd.duration}s`\n );\n }\n resetVideoElementForNextSource();\n try {\n loadCurrentAdMedia();\n emit(\"pod_ad_started\", { index: podIndex, total: podAds.length });\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load next pod ad:\", error);\n }\n }\n return false;\n }\n function clearStallWatchdog() {\n clearMediaStartTimer();\n if (stallWatchdogId != null) {\n clearInterval(stallWatchdogId);\n stallWatchdogId = void 0;\n }\n cancelVideoFrameProbe();\n }\n function noteAdProgress() {\n lastAdProgressTime = Date.now();\n if (adVideoElement) {\n lastAdProgressPosition = adVideoElement.currentTime;\n }\n }\n function handleAdStall() {\n console.warn(\n \"[HlsAdPlayer] Ad playback stalled (no progress) - recovering to avoid a blank frame\"\n );\n clearStallWatchdog();\n logFunnel(\"stall\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function getDecodedVideoFrameCount(video) {\n try {\n if (typeof video.getVideoPlaybackQuality === \"function\") {\n const quality = video.getVideoPlaybackQuality();\n if (quality && typeof quality.totalVideoFrames === \"number\") {\n return quality.totalVideoFrames;\n }\n }\n const legacyCount = video.webkitDecodedFrameCount;\n if (typeof legacyCount === \"number\") {\n return legacyCount;\n }\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Unable to read decoded video frame count:\",\n error\n );\n }\n return void 0;\n }\n function isFrameCounterReliable() {\n return contentVideo[FRAME_COUNTER_RELIABLE_PROP] === true;\n }\n function markFrameCounterReliable() {\n contentVideo[FRAME_COUNTER_RELIABLE_PROP] = true;\n }\n function isRvfcReliable() {\n return contentVideo[RVFC_RELIABLE_PROP] === true;\n }\n function markRvfcReliable() {\n contentVideo[RVFC_RELIABLE_PROP] = true;\n }\n function cancelVideoFrameProbe() {\n if (videoFrameCallbackHandle != null && adVideoElement && typeof adVideoElement.cancelVideoFrameCallback === \"function\") {\n try {\n adVideoElement.cancelVideoFrameCallback(\n videoFrameCallbackHandle\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error cancelling video frame callback:\",\n error\n );\n }\n }\n videoFrameCallbackHandle = void 0;\n }\n function startVideoFrameProbe() {\n cancelVideoFrameProbe();\n if (!adVideoElement) return;\n const rvfc = adVideoElement.requestVideoFrameCallback;\n if (typeof rvfc !== \"function\") return;\n const onPresentedFrame = () => {\n videoFrameCallbackHandle = void 0;\n if (!adPlaying) return;\n sawDecodedVideoFrame = true;\n markRvfcReliable();\n };\n try {\n videoFrameCallbackHandle = rvfc.call(\n adVideoElement,\n onPresentedFrame\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error requesting video frame callback:\",\n error\n );\n videoFrameCallbackHandle = void 0;\n }\n }\n function handleVideoDecodeFailure() {\n console.warn(\n \"[HlsAdPlayer] Ad audio is advancing but no video frames decoded (black screen) - skipping this creative\"\n );\n clearStallWatchdog();\n logFunnel(\"decode_failure\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function startStallWatchdog() {\n clearStallWatchdog();\n noteAdProgress();\n sawDecodedVideoFrame = false;\n startVideoFrameProbe();\n const blackFrameDetectionEnabled = !requiresMediaPipelineResetAfterAds();\n stallWatchdogId = window.setInterval(() => {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n if (blackFrameDetectionEnabled && !sawDecodedVideoFrame && !adVideoElement.paused) {\n const decodedFrames = getDecodedVideoFrameCount(adVideoElement);\n if (decodedFrames !== void 0 && decodedFrames > 0) {\n sawDecodedVideoFrame = true;\n markFrameCounterReliable();\n } else if (adVideoElement.currentTime >= BLACKFRAME_MIN_PLAYBACK_S) {\n const timeAdvancing = adVideoElement.currentTime > lastAdProgressPosition + 0.05;\n if (isRvfcSupported(adVideoElement) && timeAdvancing && isRvfcReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n if (decodedFrames === 0 && timeAdvancing && isFrameCounterReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n }\n }\n if (adVideoElement.currentTime > lastAdProgressPosition + 0.05) {\n noteAdProgress();\n return;\n }\n if (adVideoElement.paused) {\n noteAdProgress();\n return;\n }\n if (Date.now() - lastAdProgressTime >= STALL_TIMEOUT_MS) {\n handleAdStall();\n }\n }, STALL_CHECK_INTERVAL_MS);\n }\n function releaseAdDecoder() {\n prepareVideoElementForNewSource();\n if (adContainerEl) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n }\n function handleAdComplete() {\n console.log(\"[HlsAdPlayer] Handling ad completion\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode:\", error);\n });\n } else {\n console.log(\"[HlsAdPlayer] Content video already playing in live mode\");\n }\n }\n emit(\"content_resume\");\n }\n function handleAdError() {\n console.log(\"[HlsAdPlayer] Handling ad error\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n emit(\"ad_error\");\n }\n return {\n initialize() {\n console.log(\"[HlsAdPlayer] Initializing\");\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"30\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n contentVideo[AD_CONTAINER_PROP] = adContainerEl;\n attachContainerHandlers();\n },\n async requestAds(vastTagUrl, requestOptions) {\n const source = requestOptions?.source ?? \"gam\";\n console.log(`[HlsAdPlayer] Requesting ads (${source}):`, redactUrl(vastTagUrl));\n if (adPlaying) {\n console.warn(\n \"[HlsAdPlayer] Cannot request new ads while an ad is playing\"\n );\n return Promise.reject(new Error(\"Ad already playing\"));\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n currentVastTagUrl = vastTagUrl;\n pendingRequestAbortReason = void 0;\n logFunnel(\"request_sent\");\n try {\n let ads = [];\n if (preloadedAds.has(vastTagUrl)) {\n const preloaded = preloadedAds.get(vastTagUrl);\n preloadedAds.delete(vastTagUrl);\n if (preloaded) {\n ads = [preloaded];\n }\n console.log(\n \"[HlsAdPlayer] Using preloaded VAST response:\",\n vastTagUrl\n );\n } else {\n ads = await fetchAndParsePod(vastTagUrl, source, requestOptions?.finalizeRequestUrl);\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n if (!ads.length && pendingRequestAbortReason) {\n throw new Error(pendingRequestAbortReason);\n }\n if (!ads.length && lastPodAdElementCount > 0) {\n console.warn(\"[HlsAdPlayer] VAST response had ads but none were playable\");\n logFunnel(\"vast_fill_rejected\", { adElementCount: lastPodAdElementCount });\n emit(\"ad_error\");\n return Promise.reject(\n new Error(\"VAST fill rejected: no playable ad in response\")\n );\n }\n if (!ads.length) {\n console.warn(\"[HlsAdPlayer] No ads available from VAST response\");\n logFunnel(\"no_fill\");\n emit(\"ad_error\");\n return Promise.reject(new Error(\"No ads available from VAST response\"));\n }\n podAds = ads;\n podIndex = 0;\n currentAd = ads[0];\n currentAdMediaFile = void 0;\n logFunnel(\"vast_received\", {\n adCount: ads.length,\n durations: ads.map((ad) => ad.duration),\n impressionUrls: ads.map((ad) => ad.trackingUrls.impression.length)\n });\n ads.forEach((ad, index) => {\n if (ad.trackingUrls.impression.length === 0) {\n logFunnel(\"vast_missing_impression\", { adIndex: index, missingAdId: ad.id });\n }\n });\n console.log(\n `[HlsAdPlayer] Pod parsed: ${ads.length} ad(s), first=\"${currentAd?.title}\", duration=${currentAd?.duration}s`\n );\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error requesting ads:\", error);\n logFunnel(\"request_failed\", {\n errorMessage: error?.message\n });\n emit(\"ad_error\");\n return Promise.reject(error);\n }\n },\n async play() {\n if (!currentAd) {\n console.warn(\n \"[HlsAdPlayer] Cannot play: No ad loaded (no ads available)\"\n );\n return Promise.reject(new Error(\"No ad loaded\"));\n }\n console.log(\"[HlsAdPlayer] Starting ad playback\");\n try {\n if (!adVideoElement) {\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n }\n setupAdEventListeners();\n resetAdTracking();\n const contentVolume = contentVideo.volume;\n originalVolume = Math.max(\n 0,\n Math.min(1, contentVolume || originalVolume)\n );\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.pause();\n console.log(\"[HlsAdPlayer] Content paused (VOD mode)\");\n } else {\n console.log(\"[HlsAdPlayer] Content continues (Live mode)\");\n }\n console.log(\"[HlsAdPlayer] FORCE MUTING main video\");\n contentVideo.muted = true;\n adPlaying = true;\n setAdPlayingFlag(true);\n if (adVideoElement) {\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n console.log(\n `[HlsAdPlayer] Set ad video volume to ${adVideoElement.volume}, muted: ${adVideoElement.muted}, originalMutedState: ${originalMutedState}, contentVolume: ${contentVolume}`\n );\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n emit(\"content_pause\");\n try {\n loadCurrentAdMedia();\n } catch (loadError) {\n if (!(podIndex < podAds.length - 1 && advanceToNextPodAd())) {\n throw loadError;\n }\n }\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error playing ad:\", error);\n logFunnel(\"play_failed\", { errorMessage: error?.message });\n handleAdError();\n return Promise.reject(error);\n }\n },\n pause() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && !adVideoElement.paused) {\n adVideoElement.pause();\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error pausing ad:\", error);\n }\n },\n resume() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && adVideoElement.paused) {\n adVideoElement.play().catch(() => {\n });\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error resuming ad:\", error);\n }\n },\n async stop() {\n console.log(\"[HlsAdPlayer] Stopping ad\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n const previousMutedState = contentVideo.muted;\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n console.log(\n `[HlsAdPlayer] Restored mute state on stop: ${previousMutedState} -> ${originalMutedState}, volume: ${contentVideo.volume}`\n );\n releaseAdDecoder();\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback on stop\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode on stop:\", error);\n });\n }\n }\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n },\n destroy() {\n console.log(\"[HlsAdPlayer] Destroying\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n destroyed = true;\n pendingRequestAbortReason = \"Ad player destroyed\";\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n clearStallWatchdog();\n for (const timeoutId of pendingTimeouts) {\n clearTimeout(timeoutId);\n }\n pendingTimeouts = [];\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n teardownAdEventListeners();\n detachContainerHandlers();\n releaseAdDecoder();\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n listeners.clear();\n preloadedAds.clear();\n preloadingAds.clear();\n },\n isAdPlaying() {\n return adPlaying;\n },\n setFunnelContext(context) {\n funnelContext = { ...context };\n },\n abortPendingRequest(reason = \"VAST request aborted (timeout)\") {\n if (pendingVastRequests.size === 0) return;\n pendingRequestAbortReason = reason;\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n },\n resize(width, height) {\n console.log(`[HlsAdPlayer] Resizing to ${width}x${height}`);\n if (adContainerEl) {\n adContainerEl.style.width = `${width}px`;\n adContainerEl.style.height = `${height}px`;\n }\n if (adVideoElement) {\n adVideoElement.style.width = `${width}px`;\n adVideoElement.style.height = `${height}px`;\n }\n },\n on(event, listener) {\n if (!listeners.has(event)) listeners.set(event, /* @__PURE__ */ new Set());\n listeners.get(event).add(listener);\n },\n off(event, listener) {\n listeners.get(event)?.delete(listener);\n },\n updateOriginalMutedState(muted, volume) {\n const nextVolume = typeof volume === \"number\" && !Number.isNaN(volume) ? Math.max(0, Math.min(1, volume)) : originalVolume;\n console.log(\n `[HlsAdPlayer] updateOriginalMutedState called: { muted: ${originalMutedState} -> ${muted}, volume: ${originalVolume} -> ${nextVolume} }`\n );\n originalMutedState = muted;\n originalVolume = nextVolume;\n },\n getOriginalMutedState() {\n return originalMutedState;\n },\n getOriginalVolume() {\n return originalVolume;\n },\n setAdVolume(volume) {\n if (adVideoElement && adPlaying) {\n const clamped = Math.max(0, Math.min(1, volume));\n adVideoElement.volume = clamped;\n const userActivation = navigator.userActivation;\n if (clamped > 0 && forcedMuteByAutoplay && userActivation && !userActivation.isActive) {\n logFunnel(\"unmute_blocked_without_gesture\", { requestedVolume: clamped });\n return;\n }\n adVideoElement.muted = clamped === 0;\n }\n },\n getAdVolume() {\n if (adVideoElement && adPlaying) {\n return adVideoElement.volume;\n }\n return 1;\n },\n showPlaceholder() {\n contentVideo.style.opacity = \"0\";\n contentVideo.style.visibility = \"hidden\";\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"10\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n },\n hidePlaceholder() {\n if (adContainerEl && !adPlaying) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n if (!adPlaying) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n },\n getLoadedAdDuration() {\n return currentAd?.duration;\n },\n getLoadedAdId() {\n return currentAd?.id;\n },\n getPodAdCount() {\n return podAds.length;\n },\n getPodTotalDurationMs() {\n return podAds.reduce(\n (total, ad) => total + (ad.duration > 0 ? ad.duration * 1e3 : 0),\n 0\n );\n },\n limitPodToBudget(maxDurationMs, maxAds) {\n if (adPlaying) return podAds.length;\n const kept = [];\n const dropped = [];\n let totalMs = 0;\n for (const ad of podAds) {\n const durationMs = Math.round(ad.duration * 1e3);\n if (kept.length < maxAds && totalMs + durationMs <= maxDurationMs) {\n kept.push(ad);\n totalMs += durationMs;\n } else {\n dropped.push(ad);\n }\n }\n if (dropped.length > 0) {\n logFunnel(\"pod_trimmed_to_budget\", {\n keptCount: kept.length,\n droppedCount: dropped.length,\n keptDurationMs: totalMs,\n maxDurationMs,\n maxAds\n });\n for (const ad of dropped) {\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n podAds = kept;\n podIndex = 0;\n currentAd = kept[0];\n currentAdMediaFile = void 0;\n return kept.length;\n }\n };\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n let pendingNonce;\n return {\n generateNonce(options = {}) {\n const run = generate(options);\n pendingNonce = run;\n const settle = () => {\n if (pendingNonce === run) pendingNonce = void 0;\n };\n run.then(settle, settle);\n return run;\n },\n getCurrentNonce() {\n return currentNonce;\n },\n waitForNonce(maxWaitMs) {\n if (currentNonce) return Promise.resolve(currentNonce);\n const pending = pendingNonce;\n if (!pending || !(maxWaitMs > 0)) return Promise.resolve(\"\");\n return new Promise((resolve) => {\n const timer = setTimeout(() => resolve(currentNonce), maxWaitMs);\n pending.then(\n (nonce) => {\n clearTimeout(timer);\n resolve(nonce);\n },\n () => {\n clearTimeout(timer);\n resolve(\"\");\n }\n );\n });\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n pendingNonce = void 0;\n }\n };\n async function generate(options) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n }\n}\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\nfunction applyTrackingIngestConfig(overrides) {\n Object.assign(trackingIngestConfig, overrides);\n}\nfunction configureTrackingIngest(overrides) {\n applyTrackingIngestConfig(overrides);\n}\nfunction isTrackingIngestEnabled() {\n return trackingIngestConfig.enabled === true;\n}\nfunction normalizeIngestBaseUrl(baseUrl) {\n return baseUrl.replace(/\\/+$/, \"\");\n}\nfunction buildTrackingIngestUrl(channel) {\n const base = normalizeIngestBaseUrl(trackingIngestConfig.baseUrl);\n if (channel === \"impressions\") {\n return `${base}/impressions/ingest`;\n }\n return `${base}/metrics/ingest`;\n}\nasync function ingestPlayerTracking(licenseKey, channel, body) {\n if (!isTrackingIngestEnabled() || !licenseKey) {\n return false;\n }\n try {\n const response = await fetch(buildTrackingIngestUrl(channel), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `License-Key ${licenseKey}`\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest failed (${response.status}) for ${channel}`\n );\n return false;\n }\n return true;\n } catch (error) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest error for ${channel}:`,\n error\n );\n return false;\n }\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n const contentNetwork = config.contentNetwork?.trim();\n const contentChannel = config.channelName?.trim();\n const contentTitle = config.programTitle?.trim();\n if (contentNetwork) context.contentNetwork = contentNetwork;\n if (contentChannel) context.contentChannel = contentChannel;\n if (contentTitle) context.contentTitle = contentTitle;\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nfunction getCachedBrowserId() {\n return cachedBrowserId ?? void 0;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendAdDetectTracking(licenseKey, adDetectInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adDetect: true,\n captureAt: adDetectInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad detect tracking:\",\n error\n );\n }\n}\nasync function sendAdLoadedTracking(licenseKey, adLoadedInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adLoaded: true,\n captureAt: adLoadedInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad loaded tracking:\",\n error\n );\n }\n}\nasync function sendAdImpressionTracking(licenseKey, adImpressionInfo, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n captureAt: adImpressionInfo.timestamp\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n await ingestPlayerTracking(licenseKey, \"impressions\", {\n events: [\n {\n player_id: metricEvent.player_id,\n ad_played_count: 1,\n ad_url: adImpressionInfo.adUrl,\n capture_at: adImpressionInfo.timestamp,\n source: \"gam\",\n ...context.contentNetwork ? { content_network: context.contentNetwork } : {},\n ...context.contentChannel ? { content_channel: context.contentChannel } : {},\n ...context.contentTitle ? { content_title: context.contentTitle } : {}\n }\n ]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad impression tracking:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey, context = {}, flags = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const heartbeatData = await buildPlayerMetricEvent(context, flags);\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [heartbeatData]\n });\n } catch (error) {\n console.error(\"[StormcloudVideoPlayer] Error sending heartbeat:\", error);\n }\n}\n\n// src/utils/polyfills.ts\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n\n// src/player/Scte35Parser.ts\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction getDateRangeDurationSeconds(attrs) {\n return toNumber(attrs[\"DURATION\"]) ?? toNumber(attrs[\"PLANNED-DURATION\"]);\n}\nfunction isManifestBasedMarker(marker) {\n const raw = marker.raw;\n if (!raw) return false;\n if (raw.tag) {\n const tag = String(raw.tag);\n return tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-CUE-IN\") || tag.includes(\"EXT-X-DATERANGE\");\n }\n if (raw.id3) return false;\n if (raw.splice_command_type) return false;\n return false;\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n\n// src/player/Scte35CueManager.ts\nvar Scte35CueManager = class {\n constructor(debug, callbacks) {\n this.pendingScte35Cues = /* @__PURE__ */ new Map();\n this.recentScte35CueKeys = /* @__PURE__ */ new Map();\n this.recentScte35CueLimit = 200;\n this.tsScte35Pids = /* @__PURE__ */ new Set();\n this.pmtPids = /* @__PURE__ */ new Set();\n this.processedTsScte35Sections = /* @__PURE__ */ new Set();\n this.debug = debug;\n this.callbacks = callbacks;\n }\n get pendingScte35CueKey() {\n return this.pendingScte35CueKeyValue;\n }\n set pendingScte35CueKey(value) {\n this.pendingScte35CueKeyValue = value;\n }\n get activeScte35BreakKey() {\n return this.activeScte35BreakKeyValue;\n }\n set activeScte35BreakKey(value) {\n this.activeScte35BreakKeyValue = value;\n }\n get scheduledScte35BreakKey() {\n return this.scheduledScte35BreakKeyValue;\n }\n set scheduledScte35BreakKey(value) {\n this.scheduledScte35BreakKeyValue = value;\n }\n createScte35CueContext(source, readiness, frag) {\n const context = { source, readiness };\n if (typeof frag?.sn === \"number\") {\n context.fragmentSn = frag.sn;\n }\n const fragmentStartSec = getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n return context;\n }\n onScte35Cue(marker, context) {\n const cue = this.createScte35Cue(marker, context);\n const pendingKey = this.getPendingScte35CueKey(cue);\n if (context.readiness === \"early\") {\n this.pendingScte35Cues.set(pendingKey, cue);\n this.trimRecentScte35CueMaps();\n if (marker.type === \"start\") {\n this.callbacks.onEarlyStartCue(marker, context.fragmentSn, cue.key);\n }\n return;\n }\n if (marker.type === \"end\" && !this.shouldAcceptScte35EndCue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 end cue\", {\n key: cue.key,\n activeScte35BreakKey: this.activeScte35BreakKeyValue,\n inAdBreak: this.callbacks.isInAdBreak(),\n source: cue.source\n });\n }\n return;\n }\n if (marker.type === \"start\" && this.hasRecentlyHandledScte35Cue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring duplicate SCTE-35 start cue\", {\n key: cue.key,\n source: cue.source\n });\n }\n return;\n }\n this.pendingScte35Cues.delete(pendingKey);\n this.markScte35CueHandled(cue);\n this.callbacks.onPlaybackCue(marker, cue.key);\n }\n activatePendingScte35CuesForFragment(frag) {\n const fragmentSn = typeof frag?.sn === \"number\" ? frag.sn : void 0;\n if (fragmentSn === void 0) {\n return;\n }\n const matchingCues = Array.from(this.pendingScte35Cues.entries()).filter(\n ([, cue]) => cue.fragmentSn === fragmentSn\n );\n matchingCues.forEach(([pendingKey, cue]) => {\n this.pendingScte35Cues.delete(pendingKey);\n const context = {\n source: cue.source,\n readiness: \"playback\"\n };\n context.fragmentSn = fragmentSn;\n const fragmentStartSec = cue.fragmentStartSeconds ?? getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n this.onScte35Cue(cue.marker, context);\n });\n }\n createScte35Cue(marker, context) {\n const cue = {\n marker,\n source: context.source,\n readiness: context.readiness,\n key: this.getScte35CueKey(marker, context)\n };\n if (context.fragmentSn !== void 0) {\n cue.fragmentSn = context.fragmentSn;\n }\n if (context.fragmentStartSeconds !== void 0) {\n cue.fragmentStartSeconds = context.fragmentStartSeconds;\n }\n return cue;\n }\n getScte35CueKey(marker, context) {\n const raw = this.getScte35MarkerRaw(marker);\n const spliceEventId = this.toIdentityString(raw?.splice_event_id);\n if (spliceEventId) {\n return `splice:${spliceEventId}`;\n }\n const segmentationEventId = this.toIdentityString(raw?.segmentation_event_id);\n if (segmentationEventId) {\n return `segmentation:${segmentationEventId}`;\n }\n const daterangeId = this.toIdentityString(raw?.attrs?.ID);\n if (daterangeId) {\n return `daterange:${daterangeId}`;\n }\n const scteValue = this.toIdentityString(raw?.attrs?.[\"SCTE35-OUT\"]) || this.toIdentityString(raw?.attrs?.[\"SCTE35-IN\"]);\n if (scteValue) {\n return `daterange-scte:${scteValue}`;\n }\n if (typeof marker.ptsSeconds === \"number\" && Number.isFinite(marker.ptsSeconds)) {\n return `pts:${Math.round(marker.ptsSeconds * 2) / 2}`;\n }\n if (context.fragmentSn !== void 0) {\n return `fragment:${context.fragmentSn}`;\n }\n return `${context.source}:wallclock:${Math.floor(Date.now() / 1e3)}`;\n }\n getPendingScte35CueKey(cue) {\n return `${cue.marker.type}:${cue.key}:${cue.fragmentSn !== void 0 ? cue.fragmentSn : \"unknown\"}`;\n }\n getScte35MarkerRaw(marker) {\n return typeof marker.raw === \"object\" && marker.raw !== null ? marker.raw : {};\n }\n toIdentityString(value) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return String(value);\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value.trim();\n }\n return void 0;\n }\n isStrongScte35CueKey(key) {\n return !!(key && (key.startsWith(\"splice:\") || key.startsWith(\"segmentation:\") || key.startsWith(\"daterange:\") || key.startsWith(\"daterange-scte:\")));\n }\n hasRecentlyHandledScte35Cue(cue) {\n if (this.activeScte35BreakKeyValue === cue.key || this.scheduledScte35BreakKeyValue === cue.key) {\n return true;\n }\n const recentKey = `${cue.marker.type}:${cue.key}`;\n return this.recentScte35CueKeys.has(recentKey);\n }\n markScte35CueHandled(cue) {\n this.recentScte35CueKeys.set(`${cue.marker.type}:${cue.key}`, Date.now());\n this.trimRecentScte35CueMaps();\n }\n trimRecentScte35CueMaps() {\n while (this.recentScte35CueKeys.size > this.recentScte35CueLimit) {\n const firstKey = this.recentScte35CueKeys.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.recentScte35CueKeys.delete(firstKey);\n }\n while (this.pendingScte35Cues.size > this.recentScte35CueLimit) {\n const firstKey = this.pendingScte35Cues.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.pendingScte35Cues.delete(firstKey);\n }\n }\n shouldAcceptScte35EndCue(cue) {\n if (!this.callbacks.isInAdBreak()) {\n return false;\n }\n if (this.isStrongScte35CueKey(this.activeScte35BreakKeyValue) && this.isStrongScte35CueKey(cue.key) && this.activeScte35BreakKeyValue !== cue.key) {\n return false;\n }\n return true;\n }\n};\n\n// src/player/AdConfigManager.ts\nfunction withDeferredPodParams(rawUrl, deferNonce) {\n try {\n const url = new URL(rawUrl);\n url.searchParams.set(\"pmnd\", \"[SCVP-PMND]\");\n url.searchParams.set(\"pmxd\", \"[SCVP-PMXD]\");\n url.searchParams.set(\"pmad\", \"[SCVP-PMAD]\");\n if (deferNonce && !url.searchParams.get(\"givn\")) {\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", \"[SCVP-GIVN]\");\n }\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultEdgePodMaxAds = 6;\n this.palNonceDispatchWaitMs = 1500;\n this.config = config;\n this.video = video;\n }\n get viewCorrelator() {\n return getPageViewCorrelator();\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://edge.stormcloudhub.com/api/v1/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const apiEnableEdge = data.response?.enableEdgePodRequest;\n const apiEdgeUrl = data.response?.edgePodUrl;\n this.apiEnableEdgePodRequest = typeof apiEnableEdge === \"boolean\" ? apiEnableEdge : void 0;\n this.apiEdgePodUrl = typeof apiEdgeUrl === \"string\" ? apiEdgeUrl : void 0;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Edge pod settings from API:\", {\n enableEdgePodRequest: this.apiEnableEdgePodRequest,\n edgePodUrl: this.apiEdgePodUrl\n });\n }\n this.apiFloorLadder = data.response?.floorLadder;\n if (this.debug) {\n console.log(\n this.apiFloorLadder ? \"[StormcloudVideoPlayer] Floor ladder from API:\" : \"[StormcloudVideoPlayer] No floorLadder block in /ads/web response\",\n this.apiFloorLadder\n );\n }\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolveAdPodConfig() {\n return resolveAdPodConfig(this.config);\n }\n resolveEdgeMaxAds() {\n return this.resolveAdPodConfig().maxAdsPerBreak ?? (this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultEdgePodMaxAds);\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const macroContext = {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.sessionId,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals,\n palNonce: palNonce.getCurrentNonce() || void 0\n };\n const nonceReady = !!macroContext.palNonce;\n let finalUrl;\n if (hasScvpMacros(baseUrl)) {\n const deferred = new Set(SCVP_POD_MACROS);\n if (!nonceReady) deferred.add(\"GIVN\");\n const { url, unresolved } = applyScvpMacros(baseUrl, macroContext, deferred);\n if (unresolved.length > 0) {\n console.warn(\n \"[StormcloudVideoPlayer] Unresolved SCVP macros (removed from request):\",\n unresolved.join(\", \")\n );\n }\n finalUrl = ensureVideoAdType(url);\n } else {\n finalUrl = withDeferredPodParams(\n palNonce.injectNonce(ensureVideoAdType(applyVastMacros(baseUrl, macroContext))),\n !nonceReady\n );\n }\n console.log(\n `[StormcloudVideoPlayer] Prepared optimized-pod request URL (pod=${this.podCounter}; pmnd/pmxd/pmad resolved at dispatch):`,\n finalUrl\n );\n return finalUrl;\n }\n async completeDeferredRequestSignals(url, palNonce) {\n if (findScvpMacroNames(url).indexOf(\"GIVN\") === -1) return url;\n const nonce = palNonce.getCurrentNonce() || await palNonce.waitForNonce(this.palNonceDispatchWaitMs);\n if (!nonce) return url;\n return substituteScvpMacros(url, /* @__PURE__ */ new Map([[\"GIVN\", nonce]]), (name) => name !== \"GIVN\").url;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n\n// src/player/AdTimingService.ts\nfunction monotonicNow() {\n return typeof performance !== \"undefined\" && typeof performance.now === \"function\" ? performance.now() : Date.now();\n}\nvar AdTimingService = class {\n constructor(config, video, callbacks) {\n this.adRequestWatchdogToken = null;\n this.adFailsafeToken = null;\n this.ptsDriftEmaMs = 0;\n this.adBreakPlayedDurationMs = 0;\n this.adBreakEpoch = 0;\n this.adRequestTokenCounter = 0;\n this.activeAdRequestToken = null;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.totalAdRequestsInBreak = 0;\n this.maxTotalAdRequestsPerBreak = 10;\n this.lastAdRequestTime = 0;\n this.consecutiveFailures = 0;\n this.maxConsecutiveFailures = 5;\n this.minAdRequestIntervalMs = 3e3;\n this.backoffBaseMs = 1e3;\n this.maxBackoffMs = 15e3;\n this.defaultMinRemainingMsToStartAd = 4e3;\n this.failedVastUrls = /* @__PURE__ */ new Set();\n this.temporaryFailureUrls = /* @__PURE__ */ new Map();\n this.temporaryFailureCooldownMs = 3e4;\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillThreshold = 3;\n this.globalNoFillCooldownUntil = 0;\n this.globalNoFillBackoffBaseMs = 5e3;\n this.globalNoFillBackoffMaxMs = 6e4;\n this.globalLastGamRequestTime = 0;\n this.globalMinGamIntervalMs = 3e3;\n this.config = config;\n this.video = video;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n // --- Ad stop timer ---\n scheduleAdStopCountdown(remainingMs) {\n this.clearAdStopTimer();\n const ms = Math.max(0, Math.floor(remainingMs));\n if (ms === 0) {\n this.ensureAdStoppedByTimer();\n return;\n }\n this.adStopTimerId = window.setTimeout(() => {\n this.ensureAdStoppedByTimer();\n }, ms);\n }\n clearAdStopTimer() {\n if (this.adStopTimerId != null) {\n clearTimeout(this.adStopTimerId);\n this.adStopTimerId = void 0;\n }\n }\n ensureAdStoppedByTimer() {\n this.adStopTimerId = void 0;\n this.callbacks.onAdStopTimerFired();\n }\n // --- Ad start timer ---\n scheduleAdStartIn(delayMs, marker = { type: \"start\" }, cueKey) {\n this.clearAdStartTimer();\n const ms = Math.max(0, Math.floor(delayMs));\n if (ms === 0) {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n return;\n }\n this.adStartTimerId = window.setTimeout(() => {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n }, ms);\n }\n clearAdStartTimer() {\n if (this.adStartTimerId != null) {\n clearTimeout(this.adStartTimerId);\n this.adStartTimerId = void 0;\n }\n }\n // --- PTS drift ---\n updatePtsDrift(ptsSecondsSample) {\n const sampleMs = (this.video.currentTime - ptsSecondsSample) * 1e3;\n if (!Number.isFinite(sampleMs) || Math.abs(sampleMs) > 6e4) return;\n const alpha = 0.1;\n this.ptsDriftEmaMs = this.ptsDriftEmaMs * (1 - alpha) + sampleMs * alpha;\n }\n resolveScteBreakStartWallClockMs(marker) {\n const nowWallClockMs = Date.now();\n if (typeof marker.ptsSeconds !== \"number\") {\n return nowWallClockMs;\n }\n const nowMs = this.video.currentTime * 1e3;\n const estimatedCurrentPtsMs = nowMs - this.ptsDriftEmaMs;\n const deltaMs = marker.ptsSeconds * 1e3 - estimatedCurrentPtsMs;\n if (!Number.isFinite(deltaMs)) {\n return nowWallClockMs;\n }\n return nowWallClockMs + Math.floor(deltaMs);\n }\n // --- Duration boundary ---\n beginBreakTiming(startWallClockMs) {\n this.currentAdBreakStartWallClockMs = startWallClockMs;\n this.breakStartMonoMs = monotonicNow() + (startWallClockMs - Date.now());\n this.breakEndMonoMs = void 0;\n }\n markBreakEndedNow() {\n this.scteAdBreakEndWallClockMs = Date.now();\n this.breakEndMonoMs = monotonicNow();\n }\n setAdBreakDurationBoundary(durationMs) {\n this.expectedAdBreakDurationMs = durationMs;\n if (durationMs != null && this.currentAdBreakStartWallClockMs != null) {\n this.scteAdBreakEndWallClockMs = this.currentAdBreakStartWallClockMs + durationMs;\n } else {\n this.scteAdBreakEndWallClockMs = void 0;\n }\n this.breakEndMonoMs = durationMs != null && this.breakStartMonoMs != null ? this.breakStartMonoMs + durationMs : void 0;\n }\n getBreakTimingSnapshot() {\n return {\n scheduledBreakDurationMs: this.expectedAdBreakDurationMs,\n breakStartMonoMs: this.breakStartMonoMs,\n breakEndMonoMs: this.breakEndMonoMs,\n playedDurationMs: this.adBreakPlayedDurationMs\n };\n }\n scheduleAdStopAtBreakBoundary() {\n if (this.expectedAdBreakDurationMs == null) {\n return;\n }\n this.scheduleAdStopCountdown(this.getWallClockRemainingAdMs());\n }\n // --- Duration budget ---\n getWallClockRemainingAdMs() {\n const endWallClockMs = this.getAdBreakEndWallClockMs();\n if (endWallClockMs != null) {\n return Math.max(0, endWallClockMs - Date.now());\n }\n return 0;\n }\n getAdBreakEndWallClockMs() {\n if (this.scteAdBreakEndWallClockMs != null) {\n return this.scteAdBreakEndWallClockMs;\n }\n if (this.expectedAdBreakDurationMs == null || this.currentAdBreakStartWallClockMs == null) {\n return void 0;\n }\n return this.currentAdBreakStartWallClockMs + this.expectedAdBreakDurationMs;\n }\n getDurationBudgetRemainingMs() {\n if (this.expectedAdBreakDurationMs == null) {\n return 0;\n }\n return Math.max(0, this.expectedAdBreakDurationMs - this.adBreakPlayedDurationMs);\n }\n getLoadedAdDurationMs(adController) {\n const durationSec = adController.getLoadedAdDuration?.();\n if (durationSec == null || durationSec <= 0) {\n return 0;\n }\n return Math.round(durationSec * 1e3);\n }\n adFitsRemainingBudget(durationMs) {\n if (durationMs <= 0 || this.expectedAdBreakDurationMs == null) {\n return true;\n }\n return durationMs <= this.getDurationBudgetRemainingMs();\n }\n logAdDurationDecision(accepted, durationMs, adController) {\n if (!this.debug) {\n return;\n }\n const remainingBudget = this.getDurationBudgetRemainingMs();\n const adId = adController.getLoadedAdId?.() ?? \"unknown\";\n if (accepted) {\n console.log(\n `[AD-DURATION] Accepted ad id=${adId}, duration=${durationMs}ms, budget remaining after play=${Math.max(0, remainingBudget - durationMs)}ms`\n );\n } else {\n console.log(\n `[AD-DURATION] Rejected ad id=${adId}, duration=${durationMs}ms exceeds remaining budget=${remainingBudget}ms \\u2014 requesting another ad`\n );\n }\n }\n recordPlayedAdDuration(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n if (durationMs <= 0) {\n return;\n }\n this.adBreakPlayedDurationMs += durationMs;\n if (this.debug) {\n console.log(\n `[AD-DURATION] Played ${durationMs}ms \\u2014 total played=${this.adBreakPlayedDurationMs}ms / ${this.expectedAdBreakDurationMs ?? \"?\"}ms`\n );\n }\n }\n ensureLoadedAdFitsBudget(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n const fits = this.adFitsRemainingBudget(durationMs);\n this.logAdDurationDecision(fits, durationMs, adController);\n return fits;\n }\n rejectLoadedAdForDuration(adController) {\n try {\n adController.destroy();\n } catch {\n }\n }\n markAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n noteAdRequestSent() {\n this.totalAdRequestsInBreak++;\n this.lastAdRequestTime = Date.now();\n }\n notePodAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n getRemainingAdMs() {\n const wallClockRemaining = this.getWallClockRemainingAdMs();\n const budgetRemaining = this.getDurationBudgetRemainingMs();\n if (this.expectedAdBreakDurationMs == null) {\n return wallClockRemaining;\n }\n return Math.min(wallClockRemaining, budgetRemaining);\n }\n getMinRemainingMsToStartAd() {\n const configured = this.config.minRemainingMsToStartAd;\n if (typeof configured === \"number\" && configured >= 0) {\n return configured;\n }\n return this.defaultMinRemainingMsToStartAd;\n }\n hasTimeToStartAnotherAd() {\n const minRemaining = this.getMinRemainingMsToStartAd();\n return this.getWallClockRemainingAdMs() > minRemaining && this.getDurationBudgetRemainingMs() > minRemaining;\n }\n // --- Circuit breaker ---\n isTemporaryAdError(error) {\n const message = error?.message?.toLowerCase() || \"\";\n if (message.includes(\"no ads available\") || message.includes(\"no fill\") || message.includes(\"nofill\")) {\n return true;\n }\n if (message.includes(\"timeout\")) {\n return true;\n }\n if (message.includes(\"ad player destroyed\") || message.includes(\"aborted\")) {\n return true;\n }\n if (message.includes(\"rate limit\") || message.includes(\"too many requests\")) {\n return true;\n }\n if (message.includes(\"ad playback error\")) {\n return true;\n }\n return false;\n }\n isUrlInCooldown(vastTagUrl) {\n const failureTime = this.temporaryFailureUrls.get(vastTagUrl);\n if (failureTime == null) {\n return false;\n }\n const elapsed = Date.now() - failureTime;\n if (elapsed >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(vastTagUrl);\n return false;\n }\n return true;\n }\n cleanupTemporaryFailures() {\n const now = Date.now();\n for (const [url, timestamp] of this.temporaryFailureUrls) {\n if (now - timestamp >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(url);\n }\n }\n }\n isGamInCooldown() {\n return Date.now() < this.globalNoFillCooldownUntil;\n }\n recordGamNoFill() {\n this.globalConsecutiveNoFills++;\n if (this.globalConsecutiveNoFills >= this.globalNoFillThreshold) {\n const exponent = this.globalConsecutiveNoFills - this.globalNoFillThreshold;\n const backoff = Math.min(\n this.globalNoFillBackoffBaseMs * Math.pow(2, exponent),\n this.globalNoFillBackoffMaxMs\n );\n this.globalNoFillCooldownUntil = Date.now() + backoff;\n if (this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] GAM cooldown activated: ${backoff}ms (${this.globalConsecutiveNoFills} consecutive no-fills)`\n );\n }\n }\n }\n resetGamNoFillCounter() {\n if (this.globalConsecutiveNoFills > 0 && this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] Resetting no-fill counter (was ${this.globalConsecutiveNoFills})`\n );\n }\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillCooldownUntil = 0;\n }\n async enforceGlobalRateLimit() {\n const now = Date.now();\n const elapsed = now - this.globalLastGamRequestTime;\n if (elapsed < this.globalMinGamIntervalMs) {\n const waitMs = this.globalMinGamIntervalMs - elapsed;\n if (this.debug) {\n console.log(`[RATE-LIMIT] Waiting ${waitMs}ms before next GAM request`);\n }\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n this.globalLastGamRequestTime = Date.now();\n }\n // --- Watchdog ---\n startAdRequestWatchdog(token) {\n this.clearAdRequestWatchdog();\n const timeoutMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adRequestWatchdogToken = token;\n this.adRequestWatchdogId = window.setTimeout(() => {\n if (this.adRequestWatchdogToken !== token) {\n return;\n }\n this.adRequestWatchdogId = void 0;\n this.adRequestWatchdogToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_request_timeout\", { token, timeoutMs });\n this.callbacks.onWatchdogTimeout();\n }, timeoutMs);\n this.logAdState(\"ad_request_watchdog_started\", { token, timeoutMs });\n }\n clearAdRequestWatchdog() {\n if (this.adRequestWatchdogId != null) {\n clearTimeout(this.adRequestWatchdogId);\n this.adRequestWatchdogId = void 0;\n }\n if (this.adRequestWatchdogToken != null) {\n this.logAdState(\"ad_request_watchdog_cleared\", {\n token: this.adRequestWatchdogToken\n });\n this.adRequestWatchdogToken = null;\n }\n }\n // --- Failsafe ---\n startAdFailsafeTimer(token) {\n this.clearAdFailsafeTimer();\n const failsafeMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adFailsafeToken = token;\n this.adFailsafeTimerId = window.setTimeout(() => {\n if (this.adFailsafeToken !== token) {\n return;\n }\n this.adFailsafeTimerId = void 0;\n this.adFailsafeToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_failsafe_triggered\", {\n token,\n failsafeMs,\n videoPaused: this.video.paused\n });\n this.callbacks.onFailsafeTimeout();\n }, failsafeMs);\n this.logAdState(\"ad_failsafe_started\", { token, failsafeMs });\n }\n clearAdFailsafeTimer() {\n if (this.adFailsafeTimerId != null) {\n clearTimeout(this.adFailsafeTimerId);\n this.logAdState(\"ad_failsafe_cleared\", { token: this.adFailsafeToken });\n this.adFailsafeTimerId = void 0;\n }\n this.adFailsafeToken = null;\n }\n logAdState(event, extra = {}) {\n if (!this.debug) {\n return;\n }\n const { inAdBreak, showAds, adPlaying } = this.callbacks.getAdState();\n console.log(\"[StormcloudVideoPlayer][AdState]\", {\n event,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n showAds,\n adPlaying,\n inAdBreak,\n activeAdRequestToken: this.activeAdRequestToken,\n ...extra\n });\n }\n // --- Reset for ad break end ---\n resetForBreakEnd() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdRequestWatchdog();\n this.clearAdFailsafeTimer();\n this.activeAdRequestToken = null;\n this.expectedAdBreakDurationMs = void 0;\n this.currentAdBreakStartWallClockMs = void 0;\n this.scteAdBreakEndWallClockMs = void 0;\n this.breakStartMonoMs = void 0;\n this.breakEndMonoMs = void 0;\n this.adBreakPlayedDurationMs = 0;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.consecutiveFailures = 0;\n this.globalConsecutiveNoFills = 0;\n this.adBreakEpoch++;\n }\n destroy() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdFailsafeTimer();\n this.clearAdRequestWatchdog();\n }\n};\n\n// src/player/PlaceholderLayer.ts\nvar PlaceholderLayer = class {\n constructor(video, debug) {\n this.video = video;\n this.debug = debug;\n }\n ensureContainer() {\n if (this.container) {\n return;\n }\n const el = document.createElement(\"div\");\n el.style.position = \"absolute\";\n el.style.left = \"0\";\n el.style.top = \"0\";\n el.style.right = \"0\";\n el.style.bottom = \"0\";\n el.style.display = \"none\";\n el.style.alignItems = \"center\";\n el.style.justifyContent = \"center\";\n el.style.pointerEvents = \"none\";\n el.style.zIndex = \"5\";\n el.style.backgroundColor = \"#000\";\n el.style.transition = \"opacity 0.3s ease-in-out\";\n el.style.opacity = \"0\";\n if (!this.video.parentElement) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Video element has no parent for placeholder container\");\n }\n return;\n }\n this.video.parentElement.appendChild(el);\n this.container = el;\n }\n show() {\n this.ensureContainer();\n if (!this.container) {\n return;\n }\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video when showing placeholder\");\n }\n }\n const wasHidden = this.container.style.display === \"none\" || this.container.style.opacity === \"0\";\n if (wasHidden) {\n this.container.style.transition = \"none\";\n } else {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n this.container.style.backgroundColor = \"#000\";\n this.container.style.display = \"flex\";\n this.container.offsetHeight;\n this.container.style.opacity = \"1\";\n this.container.style.pointerEvents = \"auto\";\n if (wasHidden) {\n requestAnimationFrame(() => {\n if (this.container) {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n });\n }\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder layer (between content and ad layer)\");\n }\n }\n hide() {\n if (!this.container) {\n return;\n }\n this.container.style.opacity = \"0\";\n setTimeout(() => {\n if (this.container) {\n this.container.style.display = \"none\";\n this.container.style.pointerEvents = \"none\";\n this.container.style.backgroundColor = \"#000\";\n }\n }, 300);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder layer\");\n }\n }\n destroy() {\n if (this.container) {\n if (this.container.parentElement) {\n this.container.parentElement.removeChild(this.container);\n }\n this.container = void 0;\n }\n }\n};\n\n// src/player/HlsEngine.ts\nvar import_hls2 = __toESM(require(\"hls.js\"), 1);\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new import_hls2.default({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(import_hls2.default.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(import_hls2.default.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(import_hls2.default.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const isDateRange = tag.includes(\"EXT-X-DATERANGE\");\n const attrs = isDateRange ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = isDateRange ? getDateRangeDurationSeconds(attrs) : parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(import_hls2.default.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = getDateRangeDurationSeconds(attrs);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(import_hls2.default.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case import_hls2.default.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case import_hls2.default.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n\n// src/player/EdgePodRequest.ts\nvar EDGE_POD_MAX_ADS = 10;\nvar EDGE_POD_EXCEEDS_BUDGET = \"edge_pod_exceeds_budget\";\nvar LICENSE_KEY_PLACEHOLDER = /\\{licenseKey\\}|%7BlicenseKey%7D/gi;\nfunction resolveEdgePodBaseUrl(config) {\n if (config.enableEdgePodRequest !== true) return void 0;\n const raw = config.edgePodUrl?.trim();\n if (!raw) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only\"\n );\n return void 0;\n }\n const licenseKey = config.licenseKey?.trim();\n if (!licenseKey) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but licenseKey is missing; using GAM only\"\n );\n return void 0;\n }\n const encodedKey = encodeURIComponent(licenseKey);\n try {\n const hasPlaceholder = raw.search(LICENSE_KEY_PLACEHOLDER) !== -1;\n const url = new URL(hasPlaceholder ? raw.replace(LICENSE_KEY_PLACEHOLDER, encodedKey) : raw);\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`unsupported protocol ${url.protocol}`);\n }\n if (!hasPlaceholder) {\n const path = url.pathname.replace(/\\/+$/, \"\");\n url.pathname = /\\/[^/]+\\/pod$/.test(path) ? path.replace(/\\/[^/]+\\/pod$/, `/${encodedKey}/pod`) : `${path}/${encodedKey}/pod`;\n }\n return url.toString();\n } catch {\n console.warn(\"[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only\");\n return void 0;\n }\n}\nfunction resolveEdgePodRequestContext(config, extra = {}) {\n return {\n width: extra.width,\n height: extra.height,\n playerId: extra.playerId,\n contentNetwork: config.contentNetwork,\n contentChannel: config.channelName,\n contentTitle: config.programTitle\n };\n}\nfunction setOptionalParam(url, key, value) {\n const trimmed = value?.trim();\n if (trimmed) url.searchParams.set(key, trimmed);\n}\nfunction buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit, context = {}) {\n const url = new URL(baseUrl);\n const maxMs = Math.max(0, Math.floor(remainingMs));\n const maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));\n url.searchParams.set(\"pmxd\", String(maxMs));\n url.searchParams.set(\"pmad\", String(maxAds));\n url.searchParams.set(\"duration\", String(Math.floor(maxMs / 1e3)));\n url.searchParams.set(\"count\", String(maxAds));\n if (context.width != null && Number.isFinite(context.width) && context.width > 0) {\n url.searchParams.set(\"width\", String(Math.round(context.width)));\n }\n if (context.height != null && Number.isFinite(context.height) && context.height > 0) {\n url.searchParams.set(\"height\", String(Math.round(context.height)));\n }\n setOptionalParam(url, \"pid\", context.playerId);\n setOptionalParam(url, \"cn\", context.contentNetwork);\n setOptionalParam(url, \"cc\", context.contentChannel);\n setOptionalParam(url, \"ct\", context.contentTitle);\n return url.toString();\n}\nfunction classifyEdgeVastResponse(result) {\n if (result.error == null) {\n return result.podAdCount > 0 ? \"fill\" : \"no_fill\";\n }\n const message = result.error?.message ?? String(result.error);\n if (/no ads available|fill rejected|no media file|no ad loaded/i.test(message) || message.includes(EDGE_POD_EXCEEDS_BUDGET)) {\n return \"no_fill\";\n }\n return \"invalid\";\n}\nfunction describeEdgeUrl(url) {\n try {\n const parsed = new URL(url);\n return `${parsed.origin}${parsed.pathname}`;\n } catch {\n return url.split(\"?\")[0] ?? \"\";\n }\n}\n\n// src/player/PlayerControls.ts\nfunction getAdAudioVolume(adPlayer) {\n return adPlayer.getOriginalMutedState() ? 0 : adPlayer.getOriginalVolume();\n}\nfunction toggleMute(video, adPlayer, debug) {\n if (adPlayer.isAdPlaying()) {\n const newMutedState = !adPlayer.getOriginalMutedState();\n const restoreVolume = adPlayer.getOriginalVolume() || 1;\n adPlayer.updateOriginalMutedState(newMutedState, video.volume);\n adPlayer.setAdVolume(newMutedState ? 0 : restoreVolume);\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] Mute toggle during ad - immediately applied:\",\n newMutedState\n );\n }\n } else {\n video.muted = !video.muted;\n adPlayer.updateOriginalMutedState(video.muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Muted:\", video.muted);\n }\n }\n}\nfunction toggleFullscreen(video, debug) {\n return new Promise((resolve, reject) => {\n if (!document.fullscreenElement) {\n const container = video.parentElement;\n if (!container) {\n reject(new Error(\"No parent container found for fullscreen\"));\n return;\n }\n container.requestFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Entered fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\"[StormcloudVideoPlayer] Fullscreen error:\", err);\n }\n reject(err);\n });\n } else {\n document.exitFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Exited fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\n \"[StormcloudVideoPlayer] Exit fullscreen error:\",\n err\n );\n }\n reject(err);\n });\n }\n });\n}\nfunction isMuted(video, adPlayer) {\n if (adPlayer.isAdPlaying()) {\n return adPlayer.getOriginalMutedState();\n }\n return video.muted;\n}\nfunction setMuted(video, adPlayer, muted, debug) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying && muted === video.muted) {\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] setMuted reflective update during ad ignored\",\n { muted }\n );\n }\n return;\n }\n video.muted = muted;\n if (adPlaying) {\n adPlayer.updateOriginalMutedState(muted, video.volume);\n adPlayer.setAdVolume(muted ? 0 : 1);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted applied during ad\", {\n muted\n });\n }\n return;\n }\n adPlayer.updateOriginalMutedState(muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted called:\", muted);\n }\n}\nfunction setVolume(video, adPlayer, volume, debug) {\n const clampedVolume = Math.max(0, Math.min(1, volume));\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n adPlayer.setAdVolume(clampedVolume);\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume applied during ad\", {\n volume: clampedVolume\n });\n }\n } else {\n video.volume = clampedVolume;\n video.muted = clampedVolume === 0;\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume called:\", clampedVolume);\n }\n }\n}\nfunction getVolume(video, adPlayer) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n return adPlayer.getAdVolume();\n }\n return video.volume;\n}\nfunction isFullscreen() {\n return !!document.fullscreenElement;\n}\nfunction resizePlayer(video, adPlayer, debug) {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Resizing player\");\n }\n if (adPlayer && adPlayer.isAdPlaying()) {\n const width = video.clientWidth || 640;\n const height = video.clientHeight || 480;\n if (debug) {\n console.log(\n `[StormcloudVideoPlayer] Resizing ads manager to ${width}x${height}`\n );\n }\n adPlayer.resize(width, height);\n }\n}\n\n// src/player/AdBreakOrchestrator.ts\nvar REQUEST_FAILURE_STAGES = /* @__PURE__ */ new Set([\n \"no_fill\",\n \"vast_fill_rejected\",\n \"request_failed\",\n \"media_unsupported\",\n \"play_failed\",\n \"play_resolved_but_never_started\",\n \"hls_fatal\",\n \"media_error\",\n \"stall\",\n \"decode_failure\"\n]);\nvar AdBreakOrchestrator = class {\n constructor(host, timing, adConfig, cueManager, placeholder) {\n this.inAdBreak = false;\n this.showAds = false;\n this.isShowingPlaceholder = false;\n this.adDetectSentForCurrentBreak = false;\n this.slotState = \"IDLE\";\n this.unusableResponsesInBreak = 0;\n this.controllerGeneration = 0;\n this.requestDiagnostics = /* @__PURE__ */ new Map();\n this.breakFunnel = {};\n this.controllerCallInFlight = false;\n this.playbackStartedForCurrentRequest = false;\n this.opportunityEpoch = -1;\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.adPodQueue = [];\n this.defaultMinRemainingMsToRequestAd = 1e4;\n this.defaultMaxNoFillsPerBreak = 2;\n this.defaultLiveMaxNoFillsPerBreak = 1;\n this.breakDurationWaitMs = 300;\n this.pendingAdBreak = null;\n this.host = host;\n this.timing = timing;\n this.adConfig = adConfig;\n this.cueManager = cueManager;\n this.placeholder = placeholder;\n }\n get debug() {\n return !!this.host.config.debugAdTiming;\n }\n get analyticsContext() {\n return buildAnalyticsContext(this.host.config);\n }\n // ───────────────────────────────────────────────────────────────\n // IMA event listeners\n // ───────────────────────────────────────────────────────────────\n nextAdRequestUrl(baseVastUrl) {\n return this.host.generatePodVastUrl(baseVastUrl);\n }\n attachImaEventListeners() {\n const controller = this.host.getAdPlayer();\n const generation = this.controllerGeneration;\n const adPlayer = {\n on: (event, handler) => {\n controller.on(event, (payload) => {\n if (generation !== this.controllerGeneration) {\n this.logOrchestratorFunnel(\"stale_callback_ignored\", {\n event,\n staleControllerId: generation,\n currentControllerId: this.controllerGeneration\n });\n return;\n }\n handler(payload);\n });\n }\n };\n adPlayer.on(\"pod_ad_started\", (payload) => {\n this.timing.notePodAdStarted();\n if (this.debug) {\n console.log(\n `[POD] Playing pod ad ${payload?.index != null ? payload.index + 1 : \"?\"}/${payload?.total ?? \"?\"}`\n );\n }\n });\n adPlayer.on(\"ad_click\", () => {\n this.host.onAdClick();\n });\n adPlayer.on(\"ad_interaction\", (event) => {\n if (event) this.host.onAdInteraction(event);\n });\n adPlayer.on(\"ad_funnel\", (payload) => {\n if (!payload?.stage) return;\n const stage = payload.stage;\n this.countFunnelStage(stage);\n if (payload.reason) {\n this.countFunnelStage(`${stage}:${payload.reason}`);\n }\n if (stage === \"impression_fired\" && payload.pixelCount != null) {\n this.countFunnelStage(\"impression_urls\", payload.pixelCount);\n }\n if (payload.visibilityState === \"hidden\") {\n this.countFunnelStage(\"while_hidden\");\n }\n if (stage === \"gam_http_request_sent\") {\n if (payload.attempt === 1) {\n this.timing.noteAdRequestSent();\n } else {\n this.countFunnelStage(\"gam_http_request_retry\");\n }\n }\n this.recordRequestDiagnostic(payload);\n });\n adPlayer.on(\"ad_impression\", () => {\n this.timing.consecutiveFailures = 0;\n this.setSlotState(\"PLAYING\", \"impression\");\n if (!this.playbackStartedForCurrentRequest) {\n this.playbackStartedForCurrentRequest = true;\n this.timing.markAdStarted();\n }\n sendAdImpressionTracking(\n this.host.config.licenseKey,\n {\n source: \"hls\",\n adIndex: this.timing.currentAdIndex,\n ...this.currentVastUrl ? { adUrl: this.currentVastUrl } : {},\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n this.analyticsContext\n ).catch(() => {\n });\n });\n adPlayer.on(\"all_ads_completed\", () => {\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n const remaining = this.timing.getRemainingAdMs();\n this.timing.consecutiveFailures = 0;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] all_ads_completed event received - remaining=${remaining}ms`\n );\n }\n if (this.inAdBreak) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"all_ads_completed\");\n this.requestNextAd(\"all_ads_completed\");\n }\n });\n adPlayer.on(\"ad_error\", (errorPayload) => {\n if (this.controllerCallInFlight) {\n if (this.debug) {\n console.log(\"[AdBreak] ad_error during request/play; outcome reported by the caller\", errorPayload || \"\");\n }\n return;\n }\n let errorMessage = \"Ad error (no details)\";\n if (errorPayload) {\n const errorCode = errorPayload.code || errorPayload.errorCode || \"unknown\";\n const vastErrorCode = errorPayload.vastErrorCode;\n const message = errorPayload.message || errorPayload.errorMessage || \"Unknown error\";\n const cause = errorPayload.cause || errorPayload.innerError || errorPayload.error;\n errorMessage = `Ad error: AdError ${errorCode}: ${message}`;\n if (vastErrorCode && vastErrorCode !== \"N/A\" && vastErrorCode !== errorCode) {\n errorMessage += ` (VAST Error Code: ${vastErrorCode})`;\n }\n if (cause) {\n const causeMessage = typeof cause === \"string\" ? cause : cause.message || String(cause);\n errorMessage += `. Caused by: ${causeMessage}`;\n }\n }\n console.error(\"[AD-ERROR]\", errorMessage, errorPayload || \"\");\n this.handleAdFailure(\"ad_error\");\n });\n adPlayer.on(\"content_pause\", () => {\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = true;\n if (this.currentPodSource !== \"edge\") {\n this.timing.resetGamNoFillCounter();\n }\n if (this.inAdBreak && this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad break timer on content_pause (first ad starting)\");\n }\n }\n this.host.getAdPlayer().setAdVolume(getAdAudioVolume(this.host.getAdPlayer()));\n if (this.isShowingPlaceholder) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder - new ads starting\");\n }\n this.host.getAdPlayer().hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n });\n adPlayer.on(\"content_resume\", () => {\n if (!this.host.video.muted) {\n this.host.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on content_resume (ad ended, gap between ads)\");\n }\n }\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = false;\n if (!this.inAdBreak) {\n return;\n }\n this.timing.consecutiveFailures = 0;\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n if (this.debug) {\n console.log(\n `[AdBreak] content_resume: remaining=${this.timing.getRemainingAdMs()}ms`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"ad_complete\");\n this.requestNextAd(\"ad_complete\");\n });\n }\n recreateAdController(reason) {\n if (reason === \"new_request\" && (this.slotState === \"REQUESTING\" || this.slotState === \"READY\")) {\n console.warn(\"[AD-CONTROLLER] destroy during active request\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n }\n console.log(\"[AD-CONTROLLER] destroy\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n this.countFunnelStage(`controller_destroy:${reason}`);\n const shouldShowPlaceholder = this.inAdBreak && this.showAds;\n const adPlayer = this.host.getAdPlayer();\n if (shouldShowPlaceholder && adPlayer) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder before destroying old AdController\");\n }\n this.placeholder.show();\n adPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n const preservedMutedState = adPlayer.getOriginalMutedState();\n const preservedVolumeState = adPlayer.getOriginalVolume();\n this.playbackStartedForCurrentRequest = false;\n if (adPlayer) {\n try {\n adPlayer.destroy();\n this.host.video.muted = true;\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Error destroying old AdController:\", error);\n }\n }\n }\n const continueLiveStreamDuringAds = this.host.shouldContinueLiveStreamDuringAds();\n const newAdPlayer = this.host.createAdPlayer(continueLiveStreamDuringAds);\n this.host.setAdPlayer(newAdPlayer);\n this.controllerGeneration++;\n newAdPlayer.initialize();\n newAdPlayer.updateOriginalMutedState(preservedMutedState, preservedVolumeState);\n this.attachImaEventListeners();\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] create\", {\n controllerId: this.controllerGeneration,\n reason\n });\n }\n if (shouldShowPlaceholder) {\n this.placeholder.show();\n newAdPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n }\n clearPendingAdBreak() {\n if (this.prefetchTimerId != null) {\n clearTimeout(this.prefetchTimerId);\n this.prefetchTimerId = void 0;\n }\n this.pendingAdBreak = null;\n this.cueManager.pendingScte35CueKey = void 0;\n this.adConfig.podAssignedByPrefetch = false;\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break start\n // ───────────────────────────────────────────────────────────────\n isBreakActive() {\n return this.slotState !== \"IDLE\";\n }\n getSlotState() {\n return this.slotState;\n }\n beginVmapBreak(breakKey, position) {\n this.breakSource = \"vmap\";\n this.resetEdgeStateForBreak();\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.timing.totalAdRequestsInBreak = 0;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"vmap_break_start\");\n this.noteOpportunity(\"vmap\", breakKey, position);\n }\n async handleAdStart(marker) {\n if (this.slotState !== \"IDLE\") {\n this.logOrchestratorFunnel(\"duplicate_break_start\", {\n source: \"scte35\",\n state: this.slotState\n });\n return;\n }\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n const edgeConfigured = !!this.host.getEdgePodBaseUrl();\n if (!baseVastUrl && !edgeConfigured) {\n console.warn(\"[AdBreak] SCTE-35 break started but no direct VAST tag is configured\");\n this.clearPendingAdBreak();\n return;\n }\n let adBreakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs;\n this.timing.failedVastUrls.clear();\n this.timing.temporaryFailureUrls.clear();\n this.timing.consecutiveFailures = 0;\n this.isShowingPlaceholder = false;\n this.timing.totalAdRequestsInBreak = 0;\n this.breakSource = \"scte35\";\n this.followUpBaseVastUrl = baseVastUrl;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n this.setSlotState(\"NEEDS_NEXT_AD\", \"scte35_break_start\");\n if (this.adConfig.podAssignedByPrefetch) {\n this.adConfig.podAssignedByPrefetch = false;\n } else {\n this.adConfig.beginNewAdPod();\n }\n const currentMuted = this.host.video.muted;\n const currentVolume = this.host.video.volume;\n this.host.getAdPlayer().updateOriginalMutedState(currentMuted, currentVolume);\n this.inAdBreak = true;\n this.timing.adBreakPlayedDurationMs = 0;\n this.timing.currentAdIndex = 0;\n this.timing.totalAdsInBreak = 0;\n this.adPodQueue = [];\n this.showAds = false;\n if (this.timing.expectedAdBreakDurationMs == null && adBreakDurationMs != null) {\n this.timing.expectedAdBreakDurationMs = adBreakDurationMs;\n }\n this.noteOpportunity(\"scte35\", this.cueManager.activeScte35BreakKey, \"midroll\");\n const epoch = this.timing.adBreakEpoch;\n if (adBreakDurationMs == null) {\n adBreakDurationMs = await this.waitForBreakDuration(this.breakDurationWaitMs);\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n }\n if (this.debug) {\n const mode = this.host.config.isLiveStream ? \"LIVE\" : \"VOD\";\n console.log(\n `[AdBreak] ${mode} break start: target duration=${adBreakDurationMs != null ? `${adBreakDurationMs}ms` : \"unknown\"}`\n );\n }\n if (edgeConfigured) {\n const edgeUrl = this.canRequestEdge() ? this.prepareEdgePodRequest() : void 0;\n if (edgeUrl) {\n this.clearPendingAdBreak();\n const outcome = await this.runEdgePod(edgeUrl, \"edge_break_start\");\n this.continueAfterEdgeOutcome(outcome, epoch);\n return;\n }\n if (!this.edgeExhaustedForBreak) {\n this.markEdgeExhausted(\"not_eligible_at_break_start\", {\n isLive: this.isLiveBreak(),\n durationMs: this.timing.expectedAdBreakDurationMs\n });\n }\n }\n if (!baseVastUrl) {\n this.requestNextAd(\"no_gam_source\");\n return;\n }\n const podPlayed = await this.startOptimizedPod(baseVastUrl);\n if (!podPlayed && this.inAdBreak && epoch === this.timing.adBreakEpoch) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"initial_request_failed\");\n this.requestNextAd(\"initial_request_failed\");\n }\n }\n async waitForBreakDuration(maxWaitMs) {\n const deadline = Date.now() + maxWaitMs;\n while (this.timing.expectedAdBreakDurationMs == null && Date.now() < deadline) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n if (!this.inAdBreak) break;\n }\n const durationMs = this.timing.expectedAdBreakDurationMs;\n this.logOrchestratorFunnel(\"break_duration_wait\", {\n waitedForMs: maxWaitMs - Math.max(0, deadline - Date.now()),\n durationMs,\n resolved: durationMs != null\n });\n return durationMs;\n }\n // ───────────────────────────────────────────────────────────────\n // Optimized pod (single multi-ad request)\n // ───────────────────────────────────────────────────────────────\n async startOptimizedPod(baseVastUrl) {\n let podUrl;\n const prefetched = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0) {\n podUrl = this.pendingAdBreak.vastUrls[0];\n this.clearPendingAdBreak();\n } else {\n podUrl = this.host.generatePodVastUrl(baseVastUrl);\n }\n if (!podUrl) {\n return false;\n }\n this.noteVastUrlGenerated(podUrl, prefetched ? \"prefetch\" : \"break_start\");\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", \"initial_pod\");\n this.beginFunnelRequest(adPlayer, requestToken, \"initial_pod\");\n let requestUrl = this.applyOpportunityFloor(podUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return true;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return true;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => adPlayer.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, adPlayer);\n }\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return true;\n }\n const podCount = adPlayer.getPodAdCount?.() ?? 1;\n if (podCount < 1) {\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n this.recordRequestFailure(new Error(\"No ads available\"), podUrl);\n return false;\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n if (this.debug) {\n console.log(\n podCount === 1 ? \"[POD] Response contained a single ad; playing it and enabling pod top-up\" : `[POD] Optimized pod returned ${podCount} ads; playing pod in one controller`\n );\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: this.currentVastUrl ?? requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return true;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return true;\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return true;\n }\n if (this.debug) {\n console.warn(\"[POD] Optimized pod request/play failed:\", error);\n }\n if (this.handlePodRequestNotSent(error)) return false;\n this.recordRequestFailure(error, podUrl);\n return false;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Edge-first pods (live SCTE-35 only, GAM fallback)\n // ───────────────────────────────────────────────────────────────\n resetEdgeStateForBreak() {\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.currentPodSource = void 0;\n }\n isLiveBreak() {\n return this.host.isLiveStream() || this.host.config.isLiveStream === true;\n }\n canRequestEdge() {\n return this.breakSource === \"scte35\" && !this.edgeExhaustedForBreak && !!this.host.getEdgePodBaseUrl() && this.isLiveBreak() && this.timing.expectedAdBreakDurationMs != null && this.edgeRequestsInBreak < this.timing.maxTotalAdRequestsPerBreak;\n }\n markEdgeExhausted(reason, extra = {}) {\n this.edgeExhaustedForBreak = true;\n this.countFunnelStage(`edge_fallback:${reason}`);\n this.logOrchestratorFunnel(\"edge_exhausted\", {\n reason,\n edgeRequests: this.edgeRequestsInBreak,\n remainingMs: this.timing.getRemainingAdMs(),\n ...extra\n });\n }\n prepareEdgePodRequest() {\n const baseUrl = this.host.getEdgePodBaseUrl();\n if (!baseUrl) return void 0;\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n );\n if (remainingAds < 1) {\n this.markEdgeExhausted(\"ad_capacity_reached\", { adsInBreak: this.timing.totalAdsInBreak });\n return void 0;\n }\n if (remainingMs < this.getMinRemainingMsToRequestAd()) {\n this.markEdgeExhausted(\"insufficient_break_time\", { remainingMs });\n return void 0;\n }\n try {\n const playerId = getCachedBrowserId();\n return buildEdgePodUrl(\n baseUrl,\n remainingMs,\n remainingAds,\n resolveEdgePodRequestContext(this.host.config, {\n width: this.host.video.offsetWidth || this.host.video.clientWidth,\n height: this.host.video.offsetHeight || this.host.video.clientHeight,\n playerId\n })\n );\n } catch {\n this.markEdgeExhausted(\"invalid_edge_url\");\n return void 0;\n }\n }\n async runEdgePod(requestUrl, trigger) {\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"edge\";\n this.edgeRequestsInBreak++;\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(adPlayer, requestToken, trigger, \"edge\");\n this.currentVastUrl = requestUrl;\n const params = new URL(requestUrl).searchParams;\n this.logOrchestratorFunnel(\"edge_request_sent\", {\n trigger,\n attempt: this.edgeRequestsInBreak,\n endpoint: describeEdgeUrl(requestUrl),\n pmxd: params.get(\"pmxd\") ?? void 0,\n pmad: params.get(\"pmad\") ?? void 0\n });\n try {\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl, { source: \"edge\" }));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken, source: \"edge\" });\n return \"stale\";\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.max(\n 1,\n Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n )\n );\n const overrunAllowanceMs = Math.max(0, this.host.config.maxAdBreakExtensionMs ?? 0);\n const podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs + overrunAllowanceMs, remainingAds) : adPlayer.getPodAdCount?.() ?? 0;\n if (classifyEdgeVastResponse({ podAdCount: podCount }) !== \"fill\") {\n throw new Error(`${EDGE_POD_EXCEEDS_BUDGET}: no Edge ad fits ${remainingMs}ms`);\n }\n this.setSlotState(\"READY\", \"edge_vast_ready\");\n this.logOrchestratorFunnel(\"edge_fill\", {\n podAdCount: podCount,\n podDurationMs: adPlayer.getPodTotalDurationMs?.(),\n remainingMs,\n overrunAllowanceMs\n });\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return \"stale\";\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return \"fill\";\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n const errorMessage = error?.message;\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n source: \"edge\",\n errorMessage\n });\n return \"stale\";\n }\n const classification = classifyEdgeVastResponse({ podAdCount: 0, error });\n const diag = this.requestDiagnostics.get(requestToken);\n if (diag && !diag.failureReason) diag.failureReason = `edge_${classification}: ${errorMessage}`;\n this.markEdgeExhausted(`edge_${classification}`, { errorMessage });\n return \"fallback\";\n }\n }\n continueAfterEdgeOutcome(outcome, epoch) {\n if (outcome !== \"fallback\") return;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] No usable Edge pod; checking with GAM for the remaining break\");\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"edge_fallback\");\n this.requestNextAd(\"edge_fallback\");\n }\n // ───────────────────────────────────────────────────────────────\n // Next-ad scheduling (single flight)\n // ───────────────────────────────────────────────────────────────\n setSlotState(next, reason) {\n if (this.slotState === next) return;\n const previous = this.slotState;\n this.slotState = next;\n if (this.debug) {\n console.log(`[AdBreak][STATE] ${previous} -> ${next}`, {\n reason,\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n controllerId: this.controllerGeneration\n });\n }\n }\n isStale(epoch, generation) {\n return !this.inAdBreak || epoch !== this.timing.adBreakEpoch || generation !== this.controllerGeneration;\n }\n getMinRemainingMsToRequestAd() {\n const configured = this.host.config.minRemainingMsToRequestAd;\n const floor = this.timing.getMinRemainingMsToStartAd();\n if (typeof configured === \"number\" && configured >= 0) {\n return Math.max(configured, floor);\n }\n return Math.max(this.defaultMinRemainingMsToRequestAd, floor);\n }\n getMaxNoFillsPerBreak() {\n const configured = this.host.config.maxNoFillsPerBreak;\n if (typeof configured === \"number\" && configured > 0) return configured;\n return this.breakSource === \"scte35\" ? this.defaultLiveMaxNoFillsPerBreak : this.defaultMaxNoFillsPerBreak;\n }\n isBreakTimeBounded() {\n return this.breakSource === \"scte35\" || this.timing.expectedAdBreakDurationMs != null;\n }\n getStopRequestingReason(remainingMs) {\n if (this.breakSource === \"vmap\") {\n if (this.adPodQueue.length === 0) return \"vmap_queue_empty\";\n } else if (this.breakSource !== \"scte35\" || !this.followUpBaseVastUrl && !this.canRequestEdge()) {\n return \"no_follow_up_source\";\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n return \"max_consecutive_failures\";\n }\n if (this.unusableResponsesInBreak >= this.getMaxNoFillsPerBreak()) {\n return \"unusable_response_limit\";\n }\n if (this.timing.totalAdRequestsInBreak >= this.timing.maxTotalAdRequestsPerBreak) {\n return \"request_cap\";\n }\n if (!this.canRequestEdge() && this.timing.isGamInCooldown()) {\n return \"gam_cooldown\";\n }\n if (this.isBreakTimeBounded() && remainingMs < this.getMinRemainingMsToRequestAd()) {\n return \"insufficient_break_time\";\n }\n return void 0;\n }\n getNextRequestDelayMs() {\n const failures = this.timing.consecutiveFailures;\n const backoff = failures > 0 ? Math.min(this.timing.backoffBaseMs * Math.pow(2, failures), this.timing.maxBackoffMs) : 0;\n const minInterval = this.timing.minAdRequestIntervalMs + backoff;\n const sinceLast = Date.now() - this.timing.lastAdRequestTime;\n return Math.max(0, minInterval - sinceLast);\n }\n requestNextAd(trigger) {\n if (!this.inAdBreak) return;\n if (this.slotState !== \"NEEDS_NEXT_AD\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"slot_busy\"\n });\n return;\n }\n if (this.nextAdTimerId != null) {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_already_scheduled\"\n });\n return;\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const stopReason = this.getStopRequestingReason(remainingMs);\n if (stopReason) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: stopReason,\n remainingMs,\n requestsSent: this.timing.totalAdRequestsInBreak,\n unusableResponses: this.unusableResponsesInBreak,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n this.handleAdPodComplete(stopReason);\n return;\n }\n const waitMs = this.getNextRequestDelayMs();\n if (waitMs > 0 && this.isBreakTimeBounded() && remainingMs - waitMs < this.getMinRemainingMsToRequestAd()) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: \"insufficient_break_time_after_backoff\",\n remainingMs,\n waitMs\n });\n this.handleAdPodComplete(\"insufficient_break_time_after_backoff\");\n return;\n }\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: waitMs > 0 ? \"request_after_delay\" : \"request_now\",\n waitMs,\n remainingMs,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n if (waitMs > 0) {\n if (!this.isShowingPlaceholder) {\n this.isShowingPlaceholder = true;\n this.host.getAdPlayer().showPlaceholder();\n }\n const epoch = this.timing.adBreakEpoch;\n this.nextAdTimerId = window.setTimeout(() => {\n this.nextAdTimerId = void 0;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.requestNextAd(`${trigger}:after_delay`);\n }, waitMs);\n return;\n }\n void this.requestFollowUpAd(trigger);\n }\n async requestFollowUpAd(trigger) {\n if (this.canRequestEdge()) {\n const edgeUrl = this.prepareEdgePodRequest();\n if (!edgeUrl) {\n this.requestNextAd(`${trigger}:edge_unavailable`);\n return;\n }\n const epoch2 = this.timing.adBreakEpoch;\n const outcome = await this.runEdgePod(edgeUrl, `edge_${trigger}`);\n this.continueAfterEdgeOutcome(outcome, epoch2);\n return;\n }\n let url;\n if (this.breakSource === \"vmap\") {\n url = this.adPodQueue.shift();\n } else if (this.followUpBaseVastUrl) {\n url = this.nextAdRequestUrl(this.followUpBaseVastUrl);\n }\n if (!url) return;\n this.noteVastUrlGenerated(ensureVideoAdType(url), trigger);\n const epoch = this.timing.adBreakEpoch;\n try {\n await this.playSingleAd(url, trigger);\n } catch {\n this.continueAfterRequestFailure(epoch);\n }\n }\n continueAfterRequestFailure(epoch = this.timing.adBreakEpoch) {\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"request_failed\");\n this.requestNextAd(\"after_failure\");\n }\n cancelScheduledRequest() {\n if (this.nextAdTimerId != null) {\n clearTimeout(this.nextAdTimerId);\n this.nextAdTimerId = void 0;\n }\n }\n noteVastUrlGenerated(url, source) {\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n }\n const adType = params?.get(\"ad_type\") ?? void 0;\n this.logOrchestratorFunnel(\"vast_url_generated\", {\n requestId: void 0,\n source,\n pod: params?.get(\"pod\") ?? void 0,\n podParamsDeferredToDispatch: findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name)),\n adType\n });\n if (adType === \"audio\" || adType === \"audio_video\") {\n console.warn(\n `[AdBreak] VAST tag requests ad_type=${adType}; GAM may return audio-only creatives, which this video player rejects`\n );\n this.countFunnelStage(\"tag_allows_audio\");\n }\n }\n recordRequestFailure(error, vastTagUrl) {\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n const message = error?.message || \"\";\n let outcome;\n if (message.includes(\"ad_duration_exceeds_budget\")) {\n outcome = \"discarded_budget\";\n } else if (message.includes(\"VAST fill rejected\")) {\n outcome = \"fill_rejected\";\n } else if (/no ads available|no fill|nofill/i.test(message)) {\n outcome = \"no_fill\";\n } else if (/timeout/i.test(message)) {\n outcome = \"request_timeout\";\n } else if (/destroyed|aborted/i.test(message)) {\n outcome = \"request_aborted\";\n } else if (diag && (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired) {\n outcome = \"playback_failed\";\n } else {\n outcome = \"request_failed\";\n }\n this.timing.consecutiveFailures++;\n if (outcome === \"no_fill\" || outcome === \"fill_rejected\" || outcome === \"discarded_budget\") {\n this.unusableResponsesInBreak++;\n }\n if (outcome === \"no_fill\") {\n this.timing.recordGamNoFill();\n }\n if (diag && !diag.failureReason) {\n diag.failureReason = `${outcome}: ${message}`;\n }\n const failureKey = diag?.dispatchedUrl && findScvpMacroNames(vastTagUrl).some((name) => SCVP_POD_MACROS.has(name)) ? diag.dispatchedUrl : vastTagUrl;\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(failureKey, Date.now());\n } else if (outcome !== \"discarded_budget\") {\n this.timing.failedVastUrls.add(failureKey);\n }\n this.countFunnelStage(`request_outcome:${outcome}`);\n this.logOrchestratorFunnel(\"request_outcome\", {\n outcome,\n errorMessage: message,\n consecutiveFailures: this.timing.consecutiveFailures,\n unusableResponsesInBreak: this.unusableResponsesInBreak,\n vastAdCount: diag?.vastAdCount,\n impressionCount: diag?.impressionCount,\n ...this.requestFloorFields(diag)\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Per-request diagnostics\n // ───────────────────────────────────────────────────────────────\n recordRequestDiagnostic(payload) {\n const requestId = payload.requestId;\n if (typeof requestId !== \"number\") return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n switch (payload.stage) {\n case \"gam_http_request_sent\":\n diag.gamRequestSent++;\n this.logPodDispatch(diag);\n break;\n case \"edge_http_request_sent\":\n diag.edgeRequestSent++;\n break;\n case \"gam_response_received\":\n case \"edge_response_received\":\n diag.vastHttpStatus = payload.httpStatus;\n break;\n case \"vast_parsed\":\n diag.vastAdCount = payload.adElementCount;\n break;\n case \"wrapper_fetch\":\n case \"inline_resolved\":\n if (typeof payload.depth === \"number\") {\n diag.wrapperDepth = Math.max(diag.wrapperDepth, payload.depth);\n }\n if (payload.stage === \"inline_resolved\") diag.inlineResolved = true;\n break;\n case \"mediafile_evaluated\":\n diag.mediaCandidateCount++;\n if (payload.whyAccepted) diag.supportedMediaCount++;\n break;\n case \"playing\":\n diag.playStarted = true;\n break;\n case \"impression_fired\":\n diag.impressionFired = true;\n diag.impressionCount++;\n break;\n default:\n if (REQUEST_FAILURE_STAGES.has(payload.stage) && !diag.failureReason) {\n diag.failureReason = payload.reason ? `${payload.stage}:${payload.reason}` : payload.stage;\n }\n }\n }\n finalizeRequestDiagnostics(requestId, endReason) {\n if (requestId == null) return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n this.requestDiagnostics.delete(requestId);\n if (!diag.impressionFired && !diag.failureReason && endReason) {\n diag.failureReason = endReason;\n }\n const gamReturnedAdWithoutImpression = (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired;\n if (gamReturnedAdWithoutImpression) {\n this.countFunnelStage(\"gam_ad_without_impression\");\n }\n const { startedAt, dispatchedUrl: _dispatchedUrl, podDispatchLogged: _logged, ...fields } = diag;\n console.log(\"[AdBreak][REQUEST] summary\", {\n ...fields,\n durationMs: Date.now() - startedAt,\n gamReturnedAdWithoutImpression\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Single ad playback\n // ───────────────────────────────────────────────────────────────\n createGamDispatchFinalizer(requestToken) {\n const breakId = this.timing.adBreakEpoch;\n const config = this.adConfig.resolveAdPodConfig();\n const minUsablePmxdMs = this.timing.getMinRemainingMsToStartAd();\n return (url) => {\n const capacity = measureBreakCapacity(this.timing.getBreakTimingSnapshot(), monotonicNow());\n const diag = this.requestDiagnostics.get(requestToken);\n try {\n const result = finalizeGamRequestUrl(url, { breakId, capacity, config, minUsablePmxdMs });\n if (diag) {\n diag.pod = result.diagnostics;\n diag.dispatchedUrl = result.url;\n diag.podDispatchLogged = false;\n }\n this.currentVastUrl = result.url;\n return result.url;\n } catch (error) {\n if (diag && isPodRequestAbortedError(error)) {\n diag.failureReason = `pod_request_not_sent:${error.reason}`;\n }\n throw error;\n }\n };\n }\n logPodDispatch(diag) {\n if (!diag.pod || diag.podDispatchLogged) return;\n diag.podDispatchLogged = true;\n this.logOrchestratorFunnel(\n diag.pod.optimizedPod ? \"optimized_pod_request_dispatched\" : \"gam_request_dispatched\",\n { ...diag.pod }\n );\n }\n recordPodResponseDiagnostics(requestToken, adPlayer) {\n const diag = this.requestDiagnostics.get(requestToken);\n if (!diag?.pod || diag.pod.pmxdSent == null || diag.podResponse) return;\n if (diag.gamRequestSent === 0 && diag.vastHttpStatus == null) return;\n diag.podResponse = computePodResponseDiagnostics(\n diag.pod.pmxdSent,\n diag.vastAdCount ?? 0,\n adPlayer.getPodTotalDurationMs?.() ?? 0\n );\n this.logOrchestratorFunnel(\"optimized_pod_response\", {\n pmxdSent: diag.pod.pmxdSent,\n ...diag.podResponse\n });\n }\n handlePodRequestNotSent(error) {\n if (!isPodRequestAbortedError(error) || error.reason === \"invalid_url\") return false;\n const aborted = error;\n this.countFunnelStage(`request_outcome:pod_request_not_sent`);\n this.logOrchestratorFunnel(\"pod_request_not_sent\", {\n reason: aborted.reason,\n errorMessage: aborted.message,\n ...aborted.diagnostics\n });\n return true;\n }\n opportunityFloorFields(floor = this.opportunityFloor) {\n if (!floor) return {};\n return {\n floorStatus: floor.status,\n floorCents: floor.floorCents,\n floorSource: floor.source,\n floorReason: floor.reason,\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n };\n }\n requestFloorFields(diag) {\n if (!diag || diag.floorApplied === void 0) return {};\n return {\n floorApplied: diag.floorApplied,\n floorCents: diag.floorCents,\n floorSource: diag.floorSource,\n floorReason: diag.floorReason,\n floorConfigVersion: diag.floorConfigVersion\n };\n }\n applyOpportunityFloor(url) {\n const floor = this.opportunityFloor;\n if (!floor) return url;\n const result = applyFloorToVastUrl(url, floor);\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag) {\n diag.floorApplied = result.applied;\n if (result.applied && floor.floorCents != null) diag.floorCents = floor.floorCents;\n diag.floorSource = result.applied ? floor.source : \"none\";\n if (result.reason) diag.floorReason = result.reason;\n diag.floorConfigVersion = floor.configurationVersion;\n }\n if (floor.status === \"skipped\" && floor.reason === \"disabled\") {\n this.countFunnelStage(\"floor_skipped:disabled\");\n return result.url;\n }\n this.logOrchestratorFunnel(result.applied ? \"floor_applied\" : \"floor_skipped\", {\n reason: result.reason,\n floorCents: result.applied ? floor.floorCents : void 0,\n floorSource: result.applied ? floor.source : \"none\",\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n });\n if (!result.applied && result.reason) {\n this.countFunnelStage(`floor_skipped:${result.reason}`);\n }\n return result.url;\n }\n countFunnelStage(stage, amount = 1) {\n this.breakFunnel[stage] = (this.breakFunnel[stage] ?? 0) + amount;\n }\n logOrchestratorFunnel(stage, extra = {}) {\n this.countFunnelStage(stage);\n console.log(`[AdBreak][FUNNEL] ${stage}`, {\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n ...extra\n });\n }\n noteOpportunity(source, breakKey, position) {\n if (breakKey && breakKey === this.opportunityBreakKey && this.opportunityEpoch === this.timing.adBreakEpoch) {\n this.logOrchestratorFunnel(\"duplicate_break_start\", { source, breakKey });\n return;\n }\n this.opportunityBreakKey = breakKey;\n this.opportunityEpoch = this.timing.adBreakEpoch;\n try {\n this.opportunityFloor = this.host.getFloorSnapshot(position);\n } catch {\n this.opportunityFloor = void 0;\n }\n this.logOrchestratorFunnel(\"opportunity_created\", {\n source,\n breakKey,\n expectedDurationMs: this.timing.expectedAdBreakDurationMs,\n ...this.opportunityFloorFields()\n });\n }\n beginFunnelRequest(adPlayer, requestToken, trigger, source = \"gam\") {\n if (this.controllerCallInFlight) {\n this.logOrchestratorFunnel(\"duplicate_request_detected\", {\n newRequestId: requestToken\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId);\n this.currentRequestId = requestToken;\n this.requestStartedAt = Date.now();\n this.requestDiagnostics.set(requestToken, {\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration,\n trigger,\n source,\n gamRequestSent: 0,\n edgeRequestSent: 0,\n wrapperDepth: 0,\n inlineResolved: false,\n mediaCandidateCount: 0,\n supportedMediaCount: 0,\n playStarted: false,\n impressionFired: false,\n impressionCount: 0,\n startedAt: Date.now()\n });\n adPlayer.setFunnelContext?.({\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration\n });\n }\n isAdLoadingWithoutPlayback() {\n return this.host.getAdPlayer().isAdPlaying() && !this.playbackStartedForCurrentRequest;\n }\n noteStopBeforeStart(reason) {\n if (!this.isAdLoadingWithoutPlayback()) return;\n this.logOrchestratorFunnel(\"ad_stopped_before_start\", {\n reason,\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n }\n handleRequestWatchdogTimeout() {\n const adPlayer = this.host.getAdPlayer();\n if (this.controllerCallInFlight && adPlayer.abortPendingRequest) {\n this.logOrchestratorFunnel(\"request_aborted_timeout\", {\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n adPlayer.abortPendingRequest(\n \"VAST request aborted after request watchdog timeout\"\n );\n return;\n }\n this.handleAdFailure(\"request_watchdog_timeout\");\n }\n async callController(call) {\n this.controllerCallInFlight = true;\n try {\n await call();\n } finally {\n this.controllerCallInFlight = false;\n }\n }\n async playSingleAd(vastTagUrl, trigger = \"vmap\") {\n if (this.slotState === \"REQUESTING\" || this.slotState === \"READY\" || this.slotState === \"PLAYING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_in_flight\"\n });\n return;\n }\n if (this.timing.failedVastUrls.has(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping permanently-failed VAST URL:\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL permanently failed\");\n }\n if (this.timing.isUrlInCooldown(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping URL in cooldown (recent no-fill):\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL in cooldown after no-fill\");\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.warn(\"[AD-ERROR] Too many consecutive failures, not requesting more ads\");\n throw new Error(\"Too many consecutive failures\");\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) console.warn(\"[CIRCUIT-BREAKER] GAM in cooldown, skipping ad request\");\n throw new Error(\"GAM in cooldown\");\n }\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n const ap = this.host.getAdPlayer();\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\n let requestUrl = this.applyOpportunityFloor(ensureVideoAdType(vastTagUrl));\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => ap.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, ap);\n }\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return;\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: this.currentVastUrl ?? requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n if (!this.timing.ensureLoadedAdFitsBudget(ap)) {\n const adDurationS = ap.getLoadedAdDuration?.();\n const remainingMs = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n this.logOrchestratorFunnel(\"discarded_budget\", {\n adDurationMs: adDurationS != null ? adDurationS * 1e3 : void 0,\n remainingMs\n });\n throw new Error(\"ad_duration_exceeds_budget\");\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => ap.play());\n if (this.isStale(epoch, generation)) return;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n ap.setAdVolume(getAdAudioVolume(ap));\n this.timing.temporaryFailureUrls.delete(vastTagUrl);\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return;\n }\n if (this.debug) console.error(\"[AD-ERROR] Ad request failed:\", error?.message);\n if (this.handlePodRequestNotSent(error)) throw error;\n this.recordRequestFailure(error, vastTagUrl);\n if (error?.message === \"ad_duration_exceeds_budget\") {\n this.recreateAdController(\"discarded_budget\");\n }\n throw error;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break completion\n // ───────────────────────────────────────────────────────────────\n logBreakFunnel(endReason) {\n const funnel = this.breakFunnel;\n this.breakFunnel = {};\n if (Object.keys(funnel).length === 0) return;\n const count = (stage) => funnel[stage] ?? 0;\n const countPrefix = (prefix) => Object.keys(funnel).reduce(\n (total, stage) => stage.indexOf(prefix) === 0 ? total + (funnel[stage] ?? 0) : total,\n 0\n );\n const breakId = this.opportunityEpoch;\n const requestRetries = count(\"gam_http_request_retry\");\n const requests = count(\"gam_http_request_sent\") - requestRetries;\n if (requests > 0 && count(\"impression_fired\") === 0) {\n console.log(\"[AdBreak][FUNNEL] break_abandoned_before_start\", {\n breakId,\n requests,\n endReason\n });\n }\n console.log(\"[AdBreak][FUNNEL] Break summary\", {\n breakId,\n endReason,\n opportunities: count(\"opportunity_created\"),\n ...this.opportunityFloorFields(),\n floorAppliedRequests: count(\"floor_applied\"),\n floorSkippedRequests: count(\"floor_skipped\") + count(\"floor_skipped:disabled\"),\n vastUrlsGenerated: count(\"vast_url_generated\"),\n requests,\n requestRetries,\n gamResponses: count(\"gam_response_received\"),\n edgeRequests: count(\"edge_request_sent\"),\n edgeFills: count(\"edge_fill\"),\n edgeEmptySentinels: count(\"edge_empty_sentinel\"),\n edgeFallbacks: countPrefix(\"edge_fallback:\"),\n requestsSuppressed: count(\"request_suppressed\"),\n duplicates: count(\"duplicate_request_detected\") + count(\"duplicate_break_start\"),\n filled: count(\"vast_received\"),\n noFill: count(\"no_fill\"),\n fillRejected: count(\"vast_fill_rejected\"),\n gamAdWithoutImpression: count(\"gam_ad_without_impression\"),\n playbackFailedAfterFill: count(\"request_outcome:playback_failed\"),\n requestFailed: count(\"request_failed\"),\n requestAbortedTimeout: count(\"request_aborted_timeout\"),\n credentialsModeChanges: count(\"gam_credentials_mode_changed\"),\n wrapperFailures: count(\"wrapper_fetch:failure\"),\n noSupportedMedia: count(\"vast_no_supported_media\"),\n vpaidOnly: count(\"vast_no_supported_media:vpaid\"),\n audioOnly: count(\"vast_no_supported_media:audio_only\"),\n mediaFilesEvaluated: count(\"mediafile_evaluated\"),\n mediaFilesAccepted: count(\"mediafile_evaluated:accepted\"),\n controllerDestroys: countPrefix(\"controller_destroy:\"),\n staleCallbacks: count(\"stale_callback_ignored\") + count(\"stale_request_result_ignored\"),\n tagAllowsAudio: count(\"tag_allows_audio\"),\n missingImpression: count(\"vast_missing_impression\"),\n discardedBudget: count(\"discarded_budget\"),\n mediaCandidates: count(\"media_candidate:accepted\") + count(\"media_candidate:rejected\"),\n mediaRejected: count(\"media_candidate:rejected\"),\n mediaFallbacks: count(\"media_fallback\"),\n playCalled: count(\"play_called\"),\n playRejected: count(\"play_rejected\"),\n mutedRetry: count(\"muted_retry\"),\n startTimeouts: count(\"play_resolved_but_never_started\"),\n impressions: count(\"impression_fired\"),\n impressionUrls: count(\"impression_urls\"),\n trackingRequests: count(\"tracking_request_created\"),\n trackingNotLoaded: count(\"tracking_request_settled:error\") + count(\"tracking_request_settled:timeout\"),\n trackingUnexpandedMacros: count(\"tracking_url_unexpanded_macro\"),\n trackingInvalidUrls: count(\"tracking_url_invalid\"),\n vastAdFallbacks: count(\"vast_ad_fallback\"),\n mediaEvents: count(\"media_event\"),\n quartile25: count(\"first_quartile\"),\n quartile50: count(\"midpoint\"),\n quartile75: count(\"third_quartile\"),\n complete: count(\"complete\"),\n stoppedBeforeStart: count(\"stopped_before_start\"),\n stoppedBeforeStartByBreakEnd: count(\"ad_stopped_before_start\"),\n unexpectedUnmutes: count(\"unexpected_unmute\"),\n unmuteBlocked: count(\"unmute_blocked_without_gesture\"),\n visibilityHidden: count(\"while_hidden\"),\n playbackFailures: count(\"play_failed\") + count(\"media_error\") + count(\"hls_fatal\") + count(\"stall\") + count(\"decode_failure\") + count(\"media_unsupported\"),\n stages: funnel\n });\n }\n handleAdPodComplete(reason = \"unspecified\") {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad pod complete - cleaning up\", { reason });\n }\n const previousState = this.slotState;\n const alreadyEnded = previousState === \"IDLE\" && !this.inAdBreak;\n this.setSlotState(\"ENDING\", reason);\n this.cancelScheduledRequest();\n const adPlayer = this.host.getAdPlayer();\n if (previousState === \"REQUESTING\") {\n adPlayer.abortPendingRequest?.(`VAST request aborted: ad break ended (${reason})`);\n }\n if (!alreadyEnded) {\n console.log(\"[AD-CONTROLLER] stop\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: previousState,\n reason\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId, `break_ended:${reason}`);\n this.currentRequestId = void 0;\n const contentWasInterrupted = this.showAds || this.isShowingPlaceholder || (this.breakFunnel[\"play_called\"] ?? 0) > 0 || (this.breakFunnel[\"impression_fired\"] ?? 0) > 0;\n this.timing.resetForBreakEnd();\n this.placeholder.hide();\n this.clearPendingAdBreak();\n if (this.isShowingPlaceholder) {\n adPlayer.hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n this.inAdBreak = false;\n this.adDetectSentForCurrentBreak = false;\n this.cueManager.activeScte35BreakKey = void 0;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.adPodQueue = [];\n this.showAds = false;\n this.breakSource = void 0;\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n adPlayer.stop().catch(() => {\n });\n if (!alreadyEnded) this.logBreakFunnel(reason);\n this.opportunityFloor = void 0;\n this.setSlotState(\"IDLE\", \"break_complete\");\n const restoredMuted = this.host.getAdPlayer().getOriginalMutedState();\n const restoredVolume = this.host.getAdPlayer().getOriginalVolume();\n if (this.host.video.muted !== restoredMuted) {\n this.host.video.muted = restoredMuted;\n }\n if (Math.abs(this.host.video.volume - restoredVolume) > 0.01) {\n this.host.video.volume = restoredVolume;\n }\n this.host.video.style.visibility = \"visible\";\n this.host.video.style.opacity = \"1\";\n if (this.host.isLiveStream()) {\n if (this.host.requiresMediaPipelineResetAfterAds()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Live break end \\u2014 hard-reloading stream to reacquire decoder (single-decoder platform)\"\n );\n }\n this.host.reloadLiveStream();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n if (!contentWasInterrupted) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Live break end \\u2014 no ad was shown, leaving playback position unchanged\");\n }\n this.resumeContentPlayback();\n return;\n }\n const liveSyncPos = this.host.getLiveSyncPosition();\n if (liveSyncPos != null && liveSyncPos > this.host.video.currentTime) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live break end \\u2014 snapping to live edge: ${this.host.video.currentTime.toFixed(2)}s \\u2192 ${liveSyncPos.toFixed(2)}s`\n );\n }\n this.host.video.currentTime = liveSyncPos;\n this.host.restartHlsLoad(liveSyncPos);\n }\n this.resumeContentPlayback();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n this.resumeContentPlayback();\n }\n getBufferedAhead() {\n const video = this.host.video;\n const t = video.currentTime;\n const ranges = video.buffered;\n for (let i = 0; i < ranges.length; i++) {\n if (t >= ranges.start(i) - 0.5 && t <= ranges.end(i)) {\n return ranges.end(i) - t;\n }\n }\n return 0;\n }\n describeVideoState() {\n const v = this.host.video;\n const networkStates = [\"EMPTY\", \"IDLE\", \"LOADING\", \"NO_SOURCE\"];\n const readyStates = [\n \"HAVE_NOTHING\",\n \"HAVE_METADATA\",\n \"HAVE_CURRENT_DATA\",\n \"HAVE_FUTURE_DATA\",\n \"HAVE_ENOUGH_DATA\"\n ];\n const net = networkStates[v.networkState] ?? String(v.networkState);\n const ready = readyStates[v.readyState] ?? String(v.readyState);\n const err = v.error ? `code=${v.error.code}${v.error.message ? ` (${v.error.message})` : \"\"}` : \"none\";\n const ranges = [];\n for (let i = 0; i < v.buffered.length; i++) {\n ranges.push(`[${v.buffered.start(i).toFixed(2)}\\u2013${v.buffered.end(i).toFixed(2)}]`);\n }\n return `t=${v.currentTime.toFixed(2)}s paused=${v.paused} ended=${v.ended} seeking=${v.seeking} readyState=${ready} networkState=${net} error=${err} buffered=${ranges.length ? ranges.join(\",\") : \"none\"}`;\n }\n monitorLiveResumeStall(resumeBaseline) {\n const needsReset = this.host.requiresMediaPipelineResetAfterAds();\n const pollIntervalMs = 1e3;\n const graceMs = needsReset ? 8e3 : 5e3;\n const recoveryCooldownMs = needsReset ? 7e3 : 5e3;\n const maxRecoveries = 3;\n const maxMonitorMs = 45e3;\n const startTime = Date.now();\n let baseline = resumeBaseline;\n let recoveries = 0;\n let lastRecoveryAt = 0;\n const video = this.host.video;\n let listenersAttached = false;\n let onMediaEvent;\n const diagEvents = [\n \"loadstart\",\n \"loadedmetadata\",\n \"loadeddata\",\n \"canplay\",\n \"canplaythrough\",\n \"play\",\n \"playing\",\n \"pause\",\n \"waiting\",\n \"stalled\",\n \"suspend\",\n \"seeking\",\n \"seeked\",\n \"emptied\",\n \"error\",\n \"ended\"\n ];\n if (this.debug) {\n onMediaEvent = (e) => {\n const dt = ((Date.now() - startTime) / 1e3).toFixed(1);\n console.log(\n `[ResumeDiag] +${dt}s event=${e.type} \\u2014 ${this.describeVideoState()}`\n );\n };\n for (const name of diagEvents) {\n video.addEventListener(name, onMediaEvent);\n }\n listenersAttached = true;\n console.log(\n `[ResumeDiag] +0.0s monitor start \\u2014 ${this.describeVideoState()}`\n );\n }\n const cleanup = () => {\n if (listenersAttached && onMediaEvent) {\n for (const name of diagEvents) {\n video.removeEventListener(name, onMediaEvent);\n }\n listenersAttached = false;\n }\n };\n const poll = () => {\n if (this.inAdBreak) {\n cleanup();\n return;\n }\n const currentTime = video.currentTime;\n const advanced = currentTime > baseline + 0.5;\n const playing = !video.paused && video.readyState >= 3;\n if (advanced && playing) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live stream resumed successfully after ad break \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n const elapsed = Date.now() - startTime;\n const bufferedAhead = this.getBufferedAhead();\n const wedged = bufferedAhead < 0.5 && !advanced;\n if (elapsed >= maxMonitorMs) {\n if (this.debug && !advanced) {\n console.warn(\n `[StormcloudVideoPlayer] Live stream failed to resume after ${(maxMonitorMs / 1e3).toFixed(0)}s \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n const canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;\n if (canRecover) {\n recoveries++;\n lastRecoveryAt = Date.now();\n if (needsReset) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n } else if (recoveries === 1) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 calling recoverMediaError() (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.recoverMediaError();\n } else if (recoveries === 2) {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 restarting HLS load at ${reloadPos.toFixed(2)}s (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n if (liveSyncPos != null && liveSyncPos > currentTime) {\n video.currentTime = liveSyncPos;\n }\n this.host.restartHlsLoad(reloadPos);\n } else {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n }\n baseline = video.currentTime;\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n }\n window.setTimeout(poll, pollIntervalMs);\n };\n window.setTimeout(poll, pollIntervalMs);\n }\n resumeContentPlayback(attempt = 0) {\n const maxAttempts = 5;\n const video = this.host.video;\n if (!video.paused) {\n if (this.debug && attempt === 0) {\n console.log(\"[StormcloudVideoPlayer] Content video already playing after ads\");\n }\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Resuming content playback after ads (attempt ${attempt + 1}/${maxAttempts}, readyState=${video.readyState})`\n );\n }\n if (video.readyState < 3) {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] readyState never reached HAVE_FUTURE_DATA, forcing play()\"\n );\n }\n video.play()?.catch(() => {\n });\n return;\n }\n const onReady = () => {\n video.removeEventListener(\"canplay\", onReady);\n this.resumeContentPlayback(attempt + 1);\n };\n video.addEventListener(\"canplay\", onReady);\n const backoffMs = 500 * (attempt + 1);\n window.setTimeout(() => {\n video.removeEventListener(\"canplay\", onReady);\n if (video.paused) {\n this.resumeContentPlayback(attempt + 1);\n }\n }, backoffMs);\n return;\n }\n const playResult = video.play();\n if (playResult && typeof playResult.catch === \"function\") {\n playResult.catch((error) => {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to resume content playback after ads:\",\n error\n );\n }\n return;\n }\n const backoffMs = 250 * (attempt + 1);\n window.setTimeout(() => {\n this.resumeContentPlayback(attempt + 1);\n }, backoffMs);\n });\n }\n }\n handleAdFailure(reason = \"ad_failure\") {\n if (!this.inAdBreak) return;\n if (this.slotState === \"REQUESTING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"failure_deferred_to_request\", {\n reason,\n state: this.slotState\n });\n return;\n }\n if (this.currentPodSource === \"edge\") {\n this.markEdgeExhausted(\"edge_playback_failed\", { reason });\n } else {\n this.timing.consecutiveFailures++;\n }\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag && !diag.failureReason) diag.failureReason = reason;\n if (this.debug) {\n console.log(\n `[AdBreak] Ad failure (${reason}): remaining=${this.timing.getRemainingAdMs()}ms, consecutiveFailures=${this.timing.consecutiveFailures}`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", reason);\n this.requestNextAd(reason);\n }\n};\n\n// src/player/ContentHealthWatchdog.ts\nvar POLL_INTERVAL_MS = 2e3;\nvar STALL_THRESHOLD_MS = 12e3;\nvar POST_BREAK_GRACE_MS = 5e4;\nvar MAX_BREAK_SUPPRESSION_MS = 10 * 60 * 1e3;\nvar SELF_INFLICTED_PAUSE_WINDOW_MS = 5e3;\nvar HEALTHY_PLAYBACK_SECONDS = 5;\nvar MAX_NORMAL_ADVANCE_PER_TICK_S = 4;\nvar LIGHT_STEP_COOLDOWN_MS = 1e4;\nvar RELOAD_BASE_COOLDOWN_MS = 15e3;\nvar RELOAD_MAX_COOLDOWN_MS = 12e4;\nvar ContentHealthWatchdog = class {\n constructor(host) {\n this.host = host;\n this.armed = false;\n this.userPaused = false;\n this.wasInBreak = false;\n this.breakStartedAt = 0;\n this.stuckBreakLogged = false;\n this.graceUntil = 0;\n this.lastPosition = 0;\n this.lastProgressAt = 0;\n this.lastRealPlaybackAt = 0;\n this.healthySeconds = 0;\n this.step = 0;\n this.nextActionAt = 0;\n this.lastActionAt = 0;\n this.onPlaying = () => {\n if (this.host.isAdPlaying()) return;\n this.armed = true;\n this.userPaused = false;\n };\n this.onPause = () => {\n if (this.host.isBreakActive() || this.host.isAdPlaying() || Date.now() - this.lastActionAt < SELF_INFLICTED_PAUSE_WINDOW_MS) {\n return;\n }\n this.userPaused = true;\n };\n this.onPlay = () => {\n this.userPaused = false;\n };\n }\n start() {\n if (this.intervalId !== void 0) return;\n const video = this.host.video;\n video.addEventListener(\"playing\", this.onPlaying);\n video.addEventListener(\"pause\", this.onPause);\n video.addEventListener(\"play\", this.onPlay);\n this.resetProgress(Date.now());\n this.intervalId = window.setInterval(() => this.tick(), POLL_INTERVAL_MS);\n }\n stop() {\n if (this.intervalId !== void 0) {\n clearInterval(this.intervalId);\n this.intervalId = void 0;\n }\n const video = this.host.video;\n video.removeEventListener(\"playing\", this.onPlaying);\n video.removeEventListener(\"pause\", this.onPause);\n video.removeEventListener(\"play\", this.onPlay);\n this.armed = false;\n this.step = 0;\n }\n resetProgress(now) {\n this.lastPosition = this.host.video.currentTime;\n this.lastProgressAt = now;\n }\n tick() {\n const now = Date.now();\n const video = this.host.video;\n const hidden = typeof document !== \"undefined\" && document.visibilityState === \"hidden\";\n if (!this.armed || this.userPaused || hidden || video.ended || !this.host.isLiveStream() || !this.host.hasHlsInstance()) {\n this.resetProgress(now);\n return;\n }\n const breakActive = this.host.isBreakActive() || this.host.isAdPlaying();\n if (breakActive && !this.wasInBreak) {\n this.wasInBreak = true;\n this.breakStartedAt = now;\n this.stuckBreakLogged = false;\n }\n if (breakActive && now - this.breakStartedAt < MAX_BREAK_SUPPRESSION_MS) {\n this.resetProgress(now);\n return;\n }\n if (breakActive && !this.stuckBreakLogged) {\n this.stuckBreakLogged = true;\n console.warn(\n `[ContentWatchdog] Ad break state active for over ${MAX_BREAK_SUPPRESSION_MS / 6e4} min \\u2014 monitoring content anyway`\n );\n }\n if (!breakActive && this.wasInBreak) {\n this.wasInBreak = false;\n this.graceUntil = now + POST_BREAK_GRACE_MS;\n this.resetProgress(now);\n return;\n }\n const currentTime = video.currentTime;\n const delta = currentTime - this.lastPosition;\n this.lastPosition = currentTime;\n if (delta > 0.25 && delta <= MAX_NORMAL_ADVANCE_PER_TICK_S && !video.paused) {\n this.lastProgressAt = now;\n this.lastRealPlaybackAt = now;\n this.healthySeconds += delta;\n if (this.step > 0 && this.healthySeconds >= HEALTHY_PLAYBACK_SECONDS) {\n console.log(\n `[ContentWatchdog] Content playback recovered after ${this.step} recovery step(s)`\n );\n this.step = 0;\n this.nextActionAt = 0;\n }\n return;\n }\n if (now < this.graceUntil) {\n this.lastProgressAt = now;\n return;\n }\n if (now - this.lastProgressAt < STALL_THRESHOLD_MS || now < this.nextActionAt) {\n return;\n }\n this.recover(now);\n }\n recover(now) {\n const video = this.host.video;\n const state = `t=${video.currentTime.toFixed(2)} paused=${video.paused} readyState=${video.readyState} networkState=${video.networkState} error=${video.error ? video.error.code : \"none\"}`;\n const stalledForS = ((now - (this.lastRealPlaybackAt || this.lastProgressAt)) / 1e3).toFixed(0);\n const fullReloadOnly = this.host.requiresMediaPipelineResetAfterAds();\n const action = fullReloadOnly || this.step >= 2 ? \"reload\" : this.step === 0 ? \"recover_media_error\" : \"restart_load\";\n console.warn(\n `[ContentWatchdog] Content stalled for ${stalledForS}s \\u2014 ${action} (step ${this.step + 1}) \\u2014 ${state}`\n );\n this.lastActionAt = now;\n this.healthySeconds = 0;\n if (action === \"recover_media_error\") {\n this.host.recoverMediaError();\n this.nextActionAt = now + LIGHT_STEP_COOLDOWN_MS;\n } else if (action === \"restart_load\") {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const position = liveSyncPos != null && liveSyncPos > video.currentTime ? liveSyncPos : video.currentTime;\n if (position !== video.currentTime) {\n video.currentTime = position;\n }\n this.host.restartHlsLoad(position);\n this.nextActionAt = now + LIGHT_STEP_COOLDOWN_MS;\n } else {\n const reloadIndex = fullReloadOnly ? this.step : this.step - 2;\n const cooldown = Math.min(\n RELOAD_BASE_COOLDOWN_MS * Math.pow(2, reloadIndex),\n RELOAD_MAX_COOLDOWN_MS\n );\n this.host.reloadLiveStream();\n this.nextActionAt = now + cooldown;\n }\n this.step++;\n this.resetProgress(now);\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n }\n};\n\n// src/player/StormcloudVideoPlayer.ts\nvar StormcloudVideoPlayer = class {\n constructor(config) {\n this.attached = false;\n this.palPlaybackStarted = false;\n initializePolyfills();\n const browserOverrides = getBrowserConfigOverrides();\n this.config = { ...browserOverrides, ...config };\n this.video = config.videoElement;\n logBrowserInfo(config.debugAdTiming);\n this.floorLadder = new FloorLadderController();\n this.adPlayer = this.createAdPlayer(false);\n this.palNonce = createPalNonceManager();\n this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {\n onEarlyStartCue: (marker, fragmentSn, cueKey) => {\n this.startAdPrefetch(marker, fragmentSn, cueKey);\n },\n onPlaybackCue: (marker, cueKey) => {\n this.onScte35Marker(marker, cueKey);\n },\n isInAdBreak: () => this.adBreak.inAdBreak\n });\n this.adConfig = new AdConfigManager(this.config, this.video);\n this.timing = new AdTimingService(this.config, this.video, {\n onAdStopTimerFired: () => this.onAdStopTimerFired(),\n onAdStartTimerFired: (marker, cueKey) => {\n this.startScte35AdBreak(\n marker,\n cueKey,\n marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs\n );\n },\n onWatchdogTimeout: () => this.adBreak.handleRequestWatchdogTimeout(),\n onFailsafeTimeout: () => this.adBreak.handleAdFailure(\"failsafe_timeout\"),\n getAdState: () => ({\n inAdBreak: this.adBreak.inAdBreak,\n showAds: this.adBreak.showAds,\n adPlaying: this.adPlayer.isAdPlaying()\n })\n });\n this.placeholder = new PlaceholderLayer(this.video, !!this.config.debugAdTiming);\n this.hlsEngine = new HlsEngine(this.config, this.video, this.cueManager, this.timing, {\n onManifestParsed: async (isLive) => this.onManifestParsed(isLive),\n onScte35Cue: (marker, context) => this.cueManager.onScte35Cue(marker, context),\n activatePendingCuesForFragment: (frag) => this.cueManager.activatePendingScte35CuesForFragment(frag),\n onFatalDestroy: () => this.destroy(),\n isInAdBreak: () => this.adBreak.inAdBreak,\n hasPendingAdBreak: () => this.adBreak.pendingAdBreak !== null\n });\n this.adBreak = new AdBreakOrchestrator(\n {\n config: this.config,\n video: this.video,\n getAdPlayer: () => this.adPlayer,\n setAdPlayer: (p) => {\n this.adPlayer = p;\n },\n createAdPlayer: (c) => this.createAdPlayer(c),\n shouldContinueLiveStreamDuringAds: () => this.shouldContinueLiveStreamDuringAds(),\n isLiveStream: () => this.hlsEngine.isLiveStream,\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n generatePodVastUrl: (base) => this.generatePodVastUrl(base),\n completeGamRequestSignals: (url) => this.adConfig.completeDeferredRequestSignals(url, this.palNonce),\n getEdgePodBaseUrl: () => this.edgePodBaseUrl,\n getFloorSnapshot: (position) => this.floorLadder.isEnabled() ? this.floorLadder.snapshotFor({ position }) : void 0,\n onAdClick: () => this.palNonce.sendAdClick(),\n onAdInteraction: (event) => this.palNonce.sendAdTouch(event)\n },\n this.timing,\n this.adConfig,\n this.cueManager,\n this.placeholder\n );\n this.contentWatchdog = new ContentHealthWatchdog({\n video: this.video,\n isLiveStream: () => this.hlsEngine.isLiveStream,\n hasHlsInstance: () => !!this.hlsEngine.hls,\n isBreakActive: () => this.adBreak.inAdBreak || this.adBreak.isBreakActive(),\n isAdPlaying: () => this.adPlayer.isAdPlaying(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream()\n });\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n createAdPlayer(continueLiveStreamDuringAds) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Creating HLS ad player\");\n }\n return createHlsAdPlayer(this.video, {\n continueLiveStreamDuringAds,\n ...this.config.licenseKey ? { licenseKey: this.config.licenseKey } : {},\n ...this.hlsEngine?.hls ? { mainHlsInstance: this.hlsEngine.hls } : {},\n ...this.config.adMediaStartTimeoutMs != null ? { mediaStartTimeoutMs: this.config.adMediaStartTimeoutMs } : {}\n });\n }\n applyFloorLadderFromApi() {\n const raw = this.adConfig.apiFloorLadder;\n if (raw == null) {\n this.floorLadder.reset();\n return;\n }\n const report = this.floorLadder.applyApiConfig(raw);\n this.warnOnInvalidFloorLadder(report);\n if (this.debug) {\n console.log(\"[AdBreak][FLOOR] configuration applied from API\", {\n config: this.floorLadder.get(),\n bounds: this.floorLadder.getBounds(),\n validation: report\n });\n }\n }\n isAdFloorLadderEnabled() {\n return this.floorLadder.isEnabled();\n }\n applyEdgePodFromApi() {\n this.edgePodBaseUrl = resolveEdgePodBaseUrl({\n enableEdgePodRequest: this.adConfig.apiEnableEdgePodRequest,\n edgePodUrl: this.adConfig.apiEdgePodUrl,\n licenseKey: this.config.licenseKey\n });\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] edge pod base URL from API:\", this.edgePodBaseUrl ?? \"(disabled; GAM only)\");\n }\n }\n getEdgePodUrl() {\n return this.edgePodBaseUrl;\n }\n warnOnInvalidFloorLadder(report) {\n const config = this.floorLadder.get();\n if (report.ok || !config.enabled) return;\n console.warn(\"[AdBreak][FLOOR] configuration has issues; invalid floors will not be sent\", {\n errors: report.errors,\n configurationVersion: config.configurationVersion,\n bounds: this.floorLadder.getBounds()\n });\n }\n getAdFloorLadder() {\n return this.floorLadder.get();\n }\n getAdFloorBounds() {\n return this.floorLadder.getBounds();\n }\n setAdFloorSelector(selector) {\n this.floorLadder.setSelector(selector);\n }\n generatePodVastUrl(baseUrl) {\n return this.adConfig.generatePodVastUrl(\n baseUrl,\n this.adPlayer,\n this.palNonce,\n this.adBreak.inAdBreak\n );\n }\n // ───────────────────────────────────────────────────────────────\n // Lifecycle\n // ───────────────────────────────────────────────────────────────\n async load() {\n if (!this.attached) {\n this.attach();\n }\n try {\n await this.adConfig.fetchAdConfiguration();\n } catch (error) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to fetch ad configuration:\",\n error\n );\n }\n }\n this.applyFloorLadderFromApi();\n this.applyEdgePodFromApi();\n const palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;\n fetchConsentSignals().catch(() => ({})).then((signals) => {\n this.adConfig.consentSignals = signals;\n const muted = this.video.muted;\n return this.palNonce.generateNonce({\n videoWidth: this.video.offsetWidth || this.video.clientWidth || 640,\n videoHeight: this.video.offsetHeight || this.video.clientHeight || 480,\n adWillAutoPlay: !!this.config.autoplay,\n adWillPlayMuted: muted,\n playerVolume: muted ? 0 : this.video.volume,\n continuousPlayback: this.config.lowLatencyMode ?? false,\n ...palDescriptionUrl ? { descriptionUrl: palDescriptionUrl } : {},\n ...signals.storageAllowed != null ? { allowStorage: signals.storageAllowed } : {}\n });\n }).catch(() => {\n });\n this.adConfig.initializeTracking();\n if (this.hlsEngine.shouldUseNativeHls(() => this.getStreamType())) {\n await this.hlsEngine.setupNativeHls();\n const continueLiveStreamDuringAds = this.shouldContinueLiveStreamDuringAds();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Native HLS ad behavior:\", {\n isLive: this.hlsEngine.isLiveStream,\n continueLiveStreamDuringAds\n });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(continueLiveStreamDuringAds);\n this.adPlayer.initialize();\n return;\n }\n this.hlsEngine.setupHls();\n }\n async onManifestParsed(isLive) {\n if (this.hlsEngine.reloadingLiveStream) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Manifest re-parsed after hard reload \\u2014 skipping ad-player setup\");\n }\n return;\n }\n if (!this.adConfig.isVmapEnabled() && !isLive && this.adConfig.vmapBreaks.length === 0 && this.adConfig.apiVastTagUrl) {\n const prerollKey = \"synthetic-vod-preroll\";\n if (!this.adConfig.consumedVmapBreakIds.has(prerollKey)) {\n this.adConfig.vmapBreaks = [\n { id: prerollKey, startTimeMs: 0, vastTagUrl: this.adConfig.apiVastTagUrl }\n ];\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Injected synthetic VOD preroll from apiVastTagUrl\"\n );\n }\n }\n }\n if (this.debug) {\n const adBehavior = this.shouldContinueLiveStreamDuringAds() ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\"[StormcloudVideoPlayer] Stream type detected:\", {\n isLive,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n });\n }\n if (this.adBreak.isBreakActive()) {\n console.log(\"[AD-CONTROLLER] destroy skipped\", {\n reason: \"manifest_parsed_during_break\",\n state: this.adBreak.getSlotState()\n });\n return;\n }\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] destroy\", { reason: \"manifest_parsed\", state: \"IDLE\" });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(this.shouldContinueLiveStreamDuringAds());\n this.adPlayer.initialize();\n }\n attach() {\n if (this.attached) return;\n this.attached = true;\n this.video.autoplay = !!this.config.autoplay;\n this.video.muted = !!this.config.muted;\n this.adPlayer.initialize();\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.attachImaEventListeners();\n this.video.addEventListener(\"play\", () => {\n if (!this.palPlaybackStarted && !this.adPlayer.isAdPlaying()) {\n this.palPlaybackStarted = true;\n this.palNonce.sendPlaybackStart();\n }\n });\n this.endedHandler = () => {\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.onVideoEnded();\n };\n this.video.addEventListener(\"ended\", this.endedHandler);\n this.video.addEventListener(\"mousedown\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.video.addEventListener(\"touchstart\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.timeUpdateHandler = () => {\n this.onTimeUpdate(this.video.currentTime);\n };\n this.video.addEventListener(\"timeupdate\", this.timeUpdateHandler);\n this.emptiedHandler = () => {\n if (this.hlsEngine.nativeHlsMode && this.hlsEngine.videoSrcProtection && !this.adPlayer.isAdPlaying()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Video src was cleared, restoring:\",\n this.hlsEngine.videoSrcProtection\n );\n }\n const currentTime = this.video.currentTime;\n const wasPaused = this.video.paused;\n this.video.src = this.hlsEngine.videoSrcProtection;\n this.video.currentTime = currentTime;\n if (!wasPaused) {\n this.video.play().catch(() => {\n });\n }\n }\n };\n this.video.addEventListener(\"emptied\", this.emptiedHandler);\n if (this.config.contentStallWatchdog !== false) {\n this.contentWatchdog.start();\n }\n }\n shouldContinueLiveStreamDuringAds() {\n if (this.config.pauseContentDuringAds) {\n return false;\n }\n if (this.hlsEngine.isLiveStream) {\n return true;\n }\n const duration = this.video.duration;\n if (!Number.isFinite(duration) || duration === Infinity) {\n return true;\n }\n return false;\n }\n // ───────────────────────────────────────────────────────────────\n // SCTE-35 marker orchestration\n // ───────────────────────────────────────────────────────────────\n onScte35Marker(marker, cueKey) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 marker detected:\", {\n type: marker.type,\n ptsSeconds: marker.ptsSeconds,\n durationSeconds: marker.durationSeconds,\n currentTime: this.video.currentTime,\n raw: marker.raw,\n hasPendingAdBreak: !!this.adBreak.pendingAdBreak\n });\n }\n if (marker.type === \"start\") {\n if (this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n const newDurationMs = marker.durationSeconds * 1e3;\n if (this.timing.expectedAdBreakDurationMs == null || newDurationMs > this.timing.expectedAdBreakDurationMs) {\n this.timing.setAdBreakDurationBoundary(newDurationMs);\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Updated ad break duration from subsequent marker: ${newDurationMs}ms, remaining: ${this.timing.getWallClockRemainingAdMs()}ms`\n );\n }\n }\n }\n return;\n }\n if (!this.adBreak.adDetectSentForCurrentBreak) {\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n }\n const hasPrefetchedAds = this.adBreak.pendingAdBreak && this.adBreak.pendingAdBreak.vastUrls.length > 0;\n const durationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.adBreak.pendingAdBreak?.marker.durationSeconds != null ? this.adBreak.pendingAdBreak.marker.durationSeconds * 1e3 : void 0;\n const isManifest = isManifestBasedMarker(marker);\n const forceImmediate = this.config.immediateManifestAds ?? true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad start decision:\", {\n isManifestMarker: isManifest,\n forceImmediate,\n hasPts: typeof marker.ptsSeconds === \"number\",\n hasPrefetchedAds\n });\n }\n if (isManifest && forceImmediate) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Starting ad immediately (manifest-based)${hasPrefetchedAds ? \" with prefetched ads\" : \"\"}`\n );\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n } else if (typeof marker.ptsSeconds === \"number\") {\n const tol = this.config.driftToleranceMs ?? 1e3;\n const nowMs = this.video.currentTime * 1e3;\n const estCurrentPtsMs = nowMs - this.timing.ptsDriftEmaMs;\n const deltaMs = Math.floor(marker.ptsSeconds * 1e3 - estCurrentPtsMs);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] PTS-based timing calculation:\", {\n nowMs,\n estCurrentPtsMs,\n markerPtsMs: marker.ptsSeconds * 1e3,\n deltaMs,\n tolerance: tol\n });\n }\n if (deltaMs > tol) {\n if (this.debug) {\n console.log(`[StormcloudVideoPlayer] Scheduling ad start in ${deltaMs}ms`);\n }\n this.timing.expectedAdBreakDurationMs = durationMs;\n this.cueManager.scheduledScte35BreakKey = cueKey;\n this.timing.scheduleAdStartIn(deltaMs, marker, cueKey);\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (within tolerance)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (fallback)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n return;\n }\n if (marker.type === \"progress\" && this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n this.timing.setAdBreakDurationBoundary(marker.durationSeconds * 1e3);\n }\n this.timing.scheduleAdStopAtBreakBoundary();\n return;\n }\n if (marker.type === \"end\") {\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on SCTE end marker\");\n }\n }\n const remaining = this.timing.getRemainingAdMs();\n const adPlaying = this.adPlayer.isAdPlaying();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 end marker received:\", {\n remaining,\n adPlaying,\n adSlotState: this.adBreak.getSlotState(),\n activeAdRequest: this.timing.activeAdRequestToken !== null\n });\n }\n this.timing.markBreakEndedNow();\n this.timing.clearAdStartTimer();\n this.timing.clearAdStopTimer();\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"scte_end\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"scte_end\");\n return;\n }\n }\n startScte35AdBreak(marker, cueKey, durationMs) {\n if (this.adBreak.isBreakActive()) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 break start: a break is already active\", {\n state: this.adBreak.getSlotState(),\n cueKey\n });\n }\n return;\n }\n this.adBreak.inAdBreak = true;\n this.cueManager.activeScte35BreakKey = cueKey ?? this.cueManager.pendingScte35CueKey;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.timing.beginBreakTiming(this.timing.resolveScteBreakStartWallClockMs(marker));\n this.timing.setAdBreakDurationBoundary(durationMs);\n this.adBreak.handleAdStart(marker);\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n onAdStopTimerFired() {\n if (!this.adBreak.inAdBreak) return;\n const adPlaying = this.adPlayer.isAdPlaying();\n const checkIntervalMs = Math.max(\n 250,\n Math.floor(this.config.adBreakCheckIntervalMs ?? 1e3)\n );\n const maxExtensionMsConfig = this.config.maxAdBreakExtensionMs;\n const maxExtensionMs = typeof maxExtensionMsConfig === \"number\" && maxExtensionMsConfig > 0 ? maxExtensionMsConfig : 0;\n const endWallClockMs = this.timing.getAdBreakEndWallClockMs() ?? Date.now();\n const overrunMs = Math.max(0, Date.now() - endWallClockMs);\n const shouldExtendAdBreak = adPlaying && overrunMs < maxExtensionMs;\n if (shouldExtendAdBreak) {\n this.timing.scheduleAdStopCountdown(checkIntervalMs);\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Ad break boundary reached (overrun=${overrunMs}ms) - hard-stopping ads and resuming stream`\n );\n }\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"break_boundary\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"break_boundary\");\n }\n // ───────────────────────────────────────────────────────────────\n // Ad prefetch\n // ───────────────────────────────────────────────────────────────\n startAdPrefetch(marker, fragmentSn, cueKey) {\n if (this.adBreak.pendingAdBreak || this.adBreak.inAdBreak) return;\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n if (!baseVastUrl) {\n if (this.debug) console.warn(\"[StormcloudVideoPlayer] No VAST URL available for prefetch\");\n return;\n }\n this.adConfig.beginNewAdPod();\n this.adConfig.podAssignedByPrefetch = true;\n const generatedUrls = [this.generatePodVastUrl(baseVastUrl)];\n this.adBreak.pendingAdBreak = {\n marker,\n ...fragmentSn !== void 0 ? { detectedAtFragmentSn: fragmentSn } : {},\n vastUrls: generatedUrls,\n isFetching: false,\n fetchStartTime: Date.now()\n };\n this.cueManager.pendingScte35CueKey = cueKey;\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n if (fragmentSn !== void 0) detectPayload.detectedAtFragmentSn = fragmentSn;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n if (this.debug) {\n console.log(\"[PREFETCH] Pre-generated pod request URL for upcoming ad break\");\n }\n }\n // ───────────────────────────────────────────────────────────────\n // VMAP time-based ad breaks\n // ───────────────────────────────────────────────────────────────\n onTimeUpdate(currentTimeSec) {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const nowMs = currentTimeSec * 1e3;\n const breakToPlay = this.adConfig.findBreakForTime(nowMs);\n if (breakToPlay) {\n void this.handleVmapAdBreak(breakToPlay, nowMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad break failed gracefully:\", error);\n }\n });\n }\n }\n onVideoEnded() {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const durationMs = Number.isFinite(this.video.duration) ? Math.floor(this.video.duration * 1e3) : 0;\n const postroll = this.adConfig.vmapBreaks.find(\n (b) => b.startTimeMs === -1 && !this.adConfig.consumedVmapBreakIds.has(this.adConfig.getAdBreakKey(b))\n );\n if (postroll) {\n void this.handleVmapAdBreak(postroll, durationMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP post-roll failed gracefully:\", error);\n }\n });\n }\n }\n async handleVmapAdBreak(adBreak, nowMs) {\n const key = this.adConfig.getAdBreakKey(adBreak);\n if (this.adConfig.consumedVmapBreakIds.has(key)) return;\n const breakStartMs = this.adConfig.resolveBreakStartMs(adBreak);\n if (breakStartMs == null) return;\n const durationMs = adBreak.durationMs ?? 0;\n const endMs = breakStartMs + durationMs;\n const inWindow = durationMs > 0 ? nowMs >= breakStartMs && nowMs < endMs : nowMs >= breakStartMs;\n if (inWindow) {\n this.adConfig.consumedVmapBreakIds.add(key);\n const tags = this.adConfig.selectVastTagsForBreak(adBreak);\n if (!tags || tags.length === 0) return;\n const first = tags[0];\n const rest = tags.slice(1);\n this.adBreak.adPodQueue = rest;\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.showAds = true;\n this.adBreak.inAdBreak = true;\n this.timing.beginBreakTiming(Date.now());\n if (durationMs > 0) {\n this.timing.setAdBreakDurationBoundary(durationMs);\n }\n const position = adBreak.startTimeMs === 0 ? \"preroll\" : adBreak.startTimeMs < 0 ? \"postroll\" : \"midroll\";\n this.adBreak.beginVmapBreak(key, position);\n try {\n await this.adBreak.playSingleAd(first, \"vmap\");\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad request failed:\", error);\n }\n this.adBreak.continueAfterRequestFailure();\n }\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Public API\n // ───────────────────────────────────────────────────────────────\n getCurrentAdIndex() {\n return this.timing.currentAdIndex;\n }\n getTotalAdsInBreak() {\n return this.timing.totalAdsInBreak;\n }\n getAdRemainingMs() {\n return this.timing.getRemainingAdMs();\n }\n isAdPlaying() {\n return this.adBreak.inAdBreak && this.adPlayer.isAdPlaying();\n }\n isShowingAds() {\n return this.adBreak.showAds;\n }\n getStreamType() {\n const url = this.config.src.toLowerCase();\n if (url.includes(\".m3u8\") || url.includes(\"/hls/\") || url.includes(\"application/vnd.apple.mpegurl\")) {\n return \"hls\";\n }\n return \"other\";\n }\n shouldShowNativeControls() {\n const streamType = this.getStreamType();\n if (streamType === \"other\") {\n return !(this.config.showCustomControls ?? false);\n }\n return !!(this.config.allowNativeHls && !(this.config.showCustomControls ?? false));\n }\n isLive() {\n return this.hlsEngine.isLiveStream;\n }\n isLowLatencyStream() {\n return this.hlsEngine.isLowLatencyStream();\n }\n get videoElement() {\n return this.video;\n }\n toggleMute() {\n toggleMute(this.video, this.adPlayer, this.debug);\n }\n toggleFullscreen() {\n return toggleFullscreen(this.video, this.debug);\n }\n isMuted() {\n return isMuted(this.video, this.adPlayer);\n }\n setMuted(muted) {\n setMuted(this.video, this.adPlayer, muted, this.debug);\n }\n setVolume(volume) {\n setVolume(this.video, this.adPlayer, volume, this.debug);\n }\n getVolume() {\n return getVolume(this.video, this.adPlayer);\n }\n isFullscreen() {\n return isFullscreen();\n }\n resize() {\n resizePlayer(this.video, this.adPlayer, this.debug);\n }\n // ───────────────────────────────────────────────────────────────\n // Destroy\n // ───────────────────────────────────────────────────────────────\n destroy() {\n this.contentWatchdog.stop();\n this.adBreak.cancelScheduledRequest();\n this.timing.destroy();\n this.adBreak.clearPendingAdBreak();\n this.placeholder.destroy();\n 0;\n if (this.timeUpdateHandler) {\n this.video.removeEventListener(\"timeupdate\", this.timeUpdateHandler);\n delete this.timeUpdateHandler;\n }\n if (this.endedHandler) {\n this.video.removeEventListener(\"ended\", this.endedHandler);\n delete this.endedHandler;\n }\n if (this.emptiedHandler) {\n this.video.removeEventListener(\"emptied\", this.emptiedHandler);\n delete this.emptiedHandler;\n }\n this.adConfig.destroyTracking();\n this.hlsEngine.destroy();\n this.adPlayer?.destroy();\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.palNonce.reset();\n this.timing.consecutiveFailures = 0;\n }\n};\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_fa = require(\"react-icons/fa\");\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar ExpandIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 4H4v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 9V4h-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 20h5v-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 15v5h5\" })\n ]\n }\n);\nvar CompressIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 9h5V4\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 4v5h5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 15h-5v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 20v-5H4\" })\n ]\n }\n);\nvar CRITICAL_PROPS = [\n \"src\",\n \"allowNativeHls\",\n \"isLiveStream\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"lowLatencyMode\",\n \"driftToleranceMs\",\n \"ctvAdRequest\"\n];\nvar CONTROLS_HIDE_DELAY = 3e3;\nvar DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;\nvar StormcloudVideoPlayerComponent = import_react.default.memo(\n (props) => {\n const {\n src,\n autoplay,\n muted,\n lowLatencyMode,\n allowNativeHls,\n isLiveStream,\n driftToleranceMs,\n immediateManifestAds,\n debugAdTiming,\n showCustomControls,\n hideLoadingIndicator,\n onVolumeToggle,\n onFullscreenToggle,\n onControlClick,\n onReady,\n wrapperClassName,\n wrapperStyle,\n className,\n style,\n controls,\n playsInline,\n preload,\n poster,\n children,\n licenseKey,\n vastTagUrl,\n isVmap,\n vmapUrl,\n minSegmentsBeforePlay,\n ctvAdRequest,\n programTitle,\n channelName,\n contentNetwork,\n minRemainingMsToStartAd,\n minRemainingMsToRequestAd,\n maxNoFillsPerBreak,\n maxAdBreakExtensionMs,\n ...restVideoAttrs\n } = props;\n const videoRef = (0, import_react.useRef)(null);\n const playerRef = (0, import_react.useRef)(null);\n const bufferingTimeoutRef = (0, import_react.useRef)(null);\n const controlsTimerRef = (0, import_react.useRef)(null);\n const wrapperRef = (0, import_react.useRef)(null);\n const [adStatus, setAdStatus] = import_react.default.useState({ showAds: false, currentIndex: 0, totalAds: 0, remainingSeconds: 0 });\n const [shouldShowNativeControls, setShouldShowNativeControls] = import_react.default.useState(true);\n const [isMuted2, setIsMuted] = import_react.default.useState(false);\n const [isFullscreen2, setIsFullscreen] = import_react.default.useState(false);\n const [isPlaying, setIsPlaying] = import_react.default.useState(false);\n const [currentTime, setCurrentTime] = import_react.default.useState(0);\n const [duration, setDuration] = import_react.default.useState(0);\n const [volume, setVolume2] = import_react.default.useState(1);\n const [playbackRate, setPlaybackRate] = import_react.default.useState(1);\n const [showVolumeSlider, setShowVolumeSlider] = import_react.default.useState(false);\n const [showSpeedMenu, setShowSpeedMenu] = import_react.default.useState(false);\n const [isLoading, setIsLoading] = import_react.default.useState(true);\n const [isBuffering, setIsBuffering] = import_react.default.useState(false);\n const [showCenterPlay, setShowCenterPlay] = import_react.default.useState(false);\n const [showLicenseWarning, setShowLicenseWarning] = import_react.default.useState(false);\n const [controlsVisible, setControlsVisible] = import_react.default.useState(true);\n const [viewportWidth, setViewportWidth] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerWidth : 1920\n );\n const [isPortrait, setIsPortrait] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerHeight > window.innerWidth : false\n );\n const [playerAspectRatio, setPlayerAspectRatio] = import_react.default.useState(\n DEFAULT_PLAYER_ASPECT_RATIO\n );\n const getResponsiveScale = () => {\n if (viewportWidth < 480) return 0.7;\n if (viewportWidth < 768) return 0.8;\n if (viewportWidth < 1024) return 0.9;\n return 1;\n };\n const responsiveScale = getResponsiveScale();\n const resetControlsTimer = (0, import_react.useCallback)(() => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n setControlsVisible(true);\n controlsTimerRef.current = window.setTimeout(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, CONTROLS_HIDE_DELAY);\n }, [showVolumeSlider, showSpeedMenu]);\n const handleWrapperMouseMove = (0, import_react.useCallback)(() => {\n resetControlsTimer();\n }, [resetControlsTimer]);\n const handleWrapperMouseLeave = (0, import_react.useCallback)(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, [showVolumeSlider, showSpeedMenu]);\n const formatTime = (seconds) => {\n if (!isFinite(seconds)) return \"0:00:00\";\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor(seconds % 3600 / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${hours}:${minutes.toString().padStart(2, \"0\")}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n };\n const handlePlayPause = () => {\n if (videoRef.current) {\n if (videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n } else {\n videoRef.current.pause();\n setShowCenterPlay(true);\n }\n }\n resetControlsTimer();\n };\n const handleCenterPlayClick = () => {\n if (videoRef.current && videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n }\n };\n const handleTimelineSeek = (e) => {\n if (videoRef.current && duration > 0 && isFinite(duration)) {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickX = e.clientX - rect.left;\n const progress = Math.max(0, Math.min(1, clickX / rect.width));\n const newTime = progress * duration;\n if (isFinite(newTime) && newTime >= 0 && newTime <= duration) {\n videoRef.current.currentTime = newTime;\n }\n }\n resetControlsTimer();\n };\n const handleVolumeChange = (newVolume) => {\n if (playerRef.current && isFinite(newVolume)) {\n const clampedVolume = Math.max(0, Math.min(1, newVolume));\n playerRef.current.setVolume(clampedVolume);\n }\n };\n const handlePlaybackRateChange = (rate) => {\n if (videoRef.current && isFinite(rate) && rate > 0) {\n videoRef.current.playbackRate = rate;\n }\n setShowSpeedMenu(false);\n };\n const isHlsStream = src?.toLowerCase().includes(\".m3u8\") || src?.toLowerCase().includes(\"/hls/\");\n const isLiveUiMode = isLiveStream === true;\n const shouldShowEnhancedControls = showCustomControls && (isHlsStream ? !isLiveUiMode : true);\n const criticalPropsKey = (0, import_react.useMemo)(() => {\n return CRITICAL_PROPS.map((prop) => `${prop}:${props[prop]}`).join(\"|\");\n }, [\n src,\n allowNativeHls,\n isLiveStream,\n licenseKey,\n isVmap,\n vmapUrl,\n lowLatencyMode,\n driftToleranceMs\n ]);\n (0, import_react.useEffect)(() => {\n if (typeof window === \"undefined\") return;\n const el = videoRef.current;\n if (!el || !src) return;\n if (!licenseKey) {\n setShowLicenseWarning(true);\n setIsLoading(false);\n console.warn(\n \"StormcloudVideoPlayer: License key is required but not provided. Please set the licenseKey prop to use the player.\"\n );\n return;\n }\n setShowLicenseWarning(false);\n if (debugAdTiming) {\n console.log(\"[StormcloudUI] Initializing player, isLoading=true\");\n }\n if (playerRef.current) {\n try {\n playerRef.current.destroy();\n } catch {\n }\n playerRef.current = null;\n }\n const cfg = {\n src,\n videoElement: el\n };\n if (autoplay !== void 0) cfg.autoplay = autoplay;\n if (muted !== void 0) cfg.muted = muted;\n if (lowLatencyMode !== void 0) cfg.lowLatencyMode = lowLatencyMode;\n if (allowNativeHls !== void 0) cfg.allowNativeHls = allowNativeHls;\n if (isLiveStream !== void 0) cfg.isLiveStream = isLiveStream;\n if (driftToleranceMs !== void 0)\n cfg.driftToleranceMs = driftToleranceMs;\n if (immediateManifestAds !== void 0)\n cfg.immediateManifestAds = immediateManifestAds;\n if (debugAdTiming !== void 0) cfg.debugAdTiming = debugAdTiming;\n if (showCustomControls !== void 0)\n cfg.showCustomControls = showCustomControls;\n if (onVolumeToggle !== void 0) cfg.onVolumeToggle = onVolumeToggle;\n if (onFullscreenToggle !== void 0)\n cfg.onFullscreenToggle = onFullscreenToggle;\n if (onControlClick !== void 0) cfg.onControlClick = onControlClick;\n if (licenseKey !== void 0) cfg.licenseKey = licenseKey;\n if (vastTagUrl !== void 0) cfg.vastTagUrl = vastTagUrl;\n if (isVmap !== void 0) cfg.isVmap = isVmap;\n if (vmapUrl !== void 0) cfg.vmapUrl = vmapUrl;\n if (minSegmentsBeforePlay !== void 0)\n cfg.minSegmentsBeforePlay = minSegmentsBeforePlay;\n if (ctvAdRequest !== void 0) cfg.ctvAdRequest = ctvAdRequest;\n if (programTitle !== void 0) cfg.programTitle = programTitle;\n if (channelName !== void 0) cfg.channelName = channelName;\n if (contentNetwork !== void 0) cfg.contentNetwork = contentNetwork;\n if (minRemainingMsToStartAd !== void 0)\n cfg.minRemainingMsToStartAd = minRemainingMsToStartAd;\n if (minRemainingMsToRequestAd !== void 0)\n cfg.minRemainingMsToRequestAd = minRemainingMsToRequestAd;\n if (maxNoFillsPerBreak !== void 0)\n cfg.maxNoFillsPerBreak = maxNoFillsPerBreak;\n if (maxAdBreakExtensionMs !== void 0)\n cfg.maxAdBreakExtensionMs = maxAdBreakExtensionMs;\n const player = new StormcloudVideoPlayer(cfg);\n playerRef.current = player;\n player.load().then(() => {\n const showNative = player.shouldShowNativeControls();\n setShouldShowNativeControls(showNative);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Player loaded successfully, waiting for video ready\"\n );\n }\n onReady?.(player);\n }).catch((error) => {\n console.error(\n \"StormcloudVideoPlayer: Failed to load player:\",\n error\n );\n setIsLoading(false);\n onReady?.(player);\n });\n return () => {\n try {\n player.destroy();\n } catch {\n }\n playerRef.current = null;\n };\n }, [criticalPropsKey]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n try {\n if (autoplay !== void 0 && playerRef.current.videoElement) {\n playerRef.current.videoElement.autoplay = autoplay;\n }\n if (muted !== void 0 && !playerRef.current.isShowingAds()) {\n playerRef.current.setMuted(muted);\n }\n } catch (error) {\n console.warn(\"Failed to update player properties:\", error);\n }\n }, [autoplay, muted]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n const checkAdStatus = () => {\n if (playerRef.current) {\n const showAdsFromMethod = playerRef.current.isShowingAds();\n const showAdsFromAttribute = videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n const showAds = showAdsFromMethod || showAdsFromAttribute;\n const currentIndex = playerRef.current.getCurrentAdIndex();\n const totalAds = playerRef.current.getTotalAdsInBreak();\n const remainingMs = playerRef.current.getAdRemainingMs();\n const remainingSeconds = showAds ? Math.max(0, Math.ceil(remainingMs / 1e3)) : 0;\n setAdStatus((prev) => {\n if (prev.showAds !== showAds || prev.currentIndex !== currentIndex || prev.totalAds !== totalAds || prev.remainingSeconds !== remainingSeconds) {\n if (showAds && !prev.showAds) {\n setShowCenterPlay(false);\n }\n return { showAds, currentIndex, totalAds, remainingSeconds };\n }\n return prev;\n });\n }\n };\n const interval = setInterval(checkAdStatus, 50);\n return () => clearInterval(interval);\n }, []);\n (0, import_react.useEffect)(() => {\n if (typeof window === \"undefined\" || !playerRef.current) return;\n const handleResize = () => {\n if (playerRef.current && videoRef.current) {\n if (typeof playerRef.current.resize === \"function\") {\n playerRef.current.resize();\n }\n }\n setViewportWidth(window.innerWidth);\n setIsPortrait(window.innerHeight > window.innerWidth);\n };\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current || !videoRef.current) return;\n const updateStates = () => {\n if (playerRef.current && videoRef.current) {\n setIsMuted(playerRef.current.isMuted());\n setIsPlaying(!videoRef.current.paused);\n const currentTimeValue = videoRef.current.currentTime;\n setCurrentTime(isFinite(currentTimeValue) ? currentTimeValue : 0);\n const durationValue = videoRef.current.duration;\n setDuration(isFinite(durationValue) ? durationValue : 0);\n const volumeValue = playerRef.current.getVolume();\n setVolume2(\n isFinite(volumeValue) ? Math.max(0, Math.min(1, volumeValue)) : 1\n );\n const rateValue = videoRef.current.playbackRate;\n setPlaybackRate(\n isFinite(rateValue) && rateValue > 0 ? rateValue : 1\n );\n }\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n const interval = setInterval(updateStates, 200);\n const handleFullscreenChange = () => {\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n return () => {\n clearInterval(interval);\n document.removeEventListener(\n \"fullscreenchange\",\n handleFullscreenChange\n );\n };\n }, []);\n (0, import_react.useEffect)(() => {\n if (!videoRef.current) return;\n const handleLoadedMetadata = () => {\n const video2 = videoRef.current;\n if (video2) {\n if (video2.videoWidth > 0 && video2.videoHeight > 0) {\n setPlayerAspectRatio(video2.videoWidth / video2.videoHeight);\n }\n void video2.offsetHeight;\n }\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadedmetadata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadedData = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadeddata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadStart = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadstart, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleCanPlay = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplay, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleCanPlayThrough = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplaythrough, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleWaiting = () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n }\n bufferingTimeoutRef.current = window.setTimeout(() => {\n setIsBuffering(true);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video buffering detected (after 300ms delay), readyState:\",\n videoRef.current?.readyState,\n \"- showing spinner, isBuffering=true\"\n );\n }\n }, 300);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: waiting, readyState:\",\n videoRef.current?.readyState,\n \"- buffering delay started (300ms)\"\n );\n }\n };\n const handlePlaying = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n setShowCenterPlay(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: playing, readyState:\",\n videoRef.current?.readyState,\n \"- playback started, isLoading=false, isBuffering=false\"\n );\n }\n };\n const handlePause = () => {\n const isAdActive = playerRef.current?.isShowingAds() || videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n if (playerRef.current && !isAdActive) {\n setShowCenterPlay(true);\n } else {\n setShowCenterPlay(false);\n }\n };\n const handleEnded = () => {\n setShowCenterPlay(true);\n };\n const video = videoRef.current;\n video.addEventListener(\"loadstart\", handleLoadStart);\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.addEventListener(\"canplay\", handleCanPlay);\n video.addEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.addEventListener(\"waiting\", handleWaiting);\n video.addEventListener(\"playing\", handlePlaying);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n if (video.paused) {\n setShowCenterPlay(true);\n }\n return () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n video.removeEventListener(\"loadstart\", handleLoadStart);\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n video.removeEventListener(\"canplay\", handleCanPlay);\n video.removeEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.removeEventListener(\"waiting\", handleWaiting);\n video.removeEventListener(\"playing\", handlePlaying);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n };\n }, [debugAdTiming]);\n (0, import_react.useEffect)(() => {\n setPlayerAspectRatio(DEFAULT_PLAYER_ASPECT_RATIO);\n }, [src]);\n (0, import_react.useEffect)(() => {\n return () => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n };\n }, []);\n const progressPercent = duration > 0 ? currentTime / duration * 100 : 0;\n const VolumeIcon = isMuted2 || volume === 0 ? import_fa.FaVolumeMute : volume < 0.5 ? import_fa.FaVolumeDown : import_fa.FaVolumeUp;\n return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"style\", { children: `\n @keyframes sc-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n @keyframes sc-loading-glow {\n 0%, 100% { opacity: 0.85; transform: scale(1); }\n 50% { opacity: 1; transform: scale(1.05); }\n }\n @keyframes sc-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n }\n @keyframes sc-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .sc-wrapper:fullscreen,\n .sc-wrapper:has(*:fullscreen) {\n border-radius: 0 !important;\n box-shadow: none !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n z-index: 999999 !important;\n background: #000 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n .sc-ctrl-btn {\n background: none;\n border: none;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n padding: 8px;\n transition: background 0.15s ease, opacity 0.15s ease;\n opacity: 0.9;\n }\n .sc-ctrl-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n .sc-ctrl-btn:active {\n opacity: 0.7;\n }\n .sc-controls-bar {\n transition: opacity 0.35s ease, transform 0.35s ease;\n }\n .sc-progress-track:hover .sc-progress-thumb {\n transform: translate(-50%, -50%) scale(1) !important;\n }\n .sc-loading-hidden .sc-loading-indicator {\n display: none !important;\n }\n ` }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n ref: wrapperRef,\n className: `sc-wrapper ${wrapperClassName || \"\"}`,\n onMouseMove: handleWrapperMouseMove,\n onMouseLeave: handleWrapperMouseLeave,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: isFullscreen2 ? \"fixed\" : \"relative\",\n top: isFullscreen2 ? 0 : void 0,\n left: isFullscreen2 ? 0 : void 0,\n overflow: \"hidden\",\n width: isFullscreen2 ? \"100vw\" : \"100%\",\n height: isFullscreen2 ? \"100vh\" : \"auto\",\n minHeight: isFullscreen2 ? \"100vh\" : \"auto\",\n aspectRatio: isFullscreen2 ? void 0 : playerAspectRatio,\n maxWidth: isFullscreen2 ? \"100vw\" : \"100%\",\n maxHeight: isFullscreen2 ? \"100vh\" : \"none\",\n zIndex: isFullscreen2 ? 999999 : void 0,\n backgroundColor: \"#000\",\n borderRadius: isFullscreen2 ? 0 : void 0,\n boxShadow: isFullscreen2 ? \"none\" : void 0,\n ...wrapperStyle\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"video\",\n {\n ref: videoRef,\n className,\n style: {\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n maxWidth: \"100%\",\n maxHeight: isFullscreen2 ? \"100%\" : \"none\",\n objectFit: isFullscreen2 ? \"cover\" : \"contain\",\n backgroundColor: \"#000\",\n aspectRatio: isFullscreen2 ? \"unset\" : void 0,\n ...style\n },\n controls: shouldShowNativeControls && controls && !showCustomControls,\n playsInline,\n preload,\n poster,\n ...restVideoAttrs,\n children\n }\n ),\n (isLoading || isBuffering) && !hideLoadingIndicator && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-loading-indicator\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 20,\n width: `${Math.max(34, 38 * responsiveScale)}px`,\n height: `${Math.max(34, 38 * responsiveScale)}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n animation: \"sc-loading-glow 1.4s ease-in-out infinite\",\n filter: \"drop-shadow(0 6px 14px rgba(0, 0, 0, 0.55))\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n inset: 0,\n borderRadius: \"50%\",\n border: \"3px solid rgba(255, 255, 255, 0.25)\",\n borderTopColor: \"#ff0000\",\n borderRightColor: \"rgba(255, 255, 255, 0.85)\",\n animation: \"sc-spin 0.8s linear infinite\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: \"7px\",\n height: \"7px\",\n borderRadius: \"50%\",\n background: \"#ff0000\",\n boxShadow: \"0 0 10px rgba(255, 0, 0, 0.65)\"\n }\n }\n )\n ]\n }\n ),\n showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 25,\n background: \"rgba(220, 38, 38, 0.92)\",\n backdropFilter: \"blur(24px)\",\n color: \"white\",\n padding: \"28px 36px\",\n borderRadius: \"14px\",\n border: \"1px solid rgba(255, 255, 255, 0.15)\",\n boxShadow: \"0 24px 64px rgba(0, 0, 0, 0.5)\",\n textAlign: \"center\",\n maxWidth: \"400px\",\n margin: \"0 16px\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { fontSize: \"18px\", fontWeight: \"700\", marginBottom: \"10px\", letterSpacing: \"-0.02em\" }, children: \"License Key Required\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { fontSize: \"13px\", lineHeight: \"1.6\", color: \"rgba(255, 255, 255, 0.85)\" }, children: [\n \"Please provide a valid license key to use the Stormcloud Video Player.\",\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"br\", {}),\n \"Contact your administrator for licensing information.\"\n ] })\n ]\n }\n ),\n adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${12 * responsiveScale}px`,\n left: `${12 * responsiveScale}px`,\n zIndex: 50,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n pointerEvents: \"none\",\n animation: \"sc-fade-in 0.3s ease\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n background: \"rgba(234, 179, 8, 0.95)\",\n color: \"#111\",\n padding: `${4 * responsiveScale}px ${12 * responsiveScale}px`,\n borderRadius: \"6px\",\n fontSize: `${11 * responsiveScale}px`,\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n boxShadow: \"0 2px 12px rgba(234, 179, 8, 0.35)\"\n },\n children: `Ad ${Math.max(1, adStatus.currentIndex)}`\n }\n )\n }\n ),\n showCenterPlay && !isLoading && !isBuffering && !showLicenseWarning && !adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n onClick: handleCenterPlayClick,\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 15,\n cursor: \"pointer\",\n background: \"rgba(0, 0, 0, 0.55)\",\n backdropFilter: \"blur(8px)\",\n borderRadius: \"50%\",\n width: `${92 * responsiveScale}px`,\n height: `${92 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 0.2s ease, transform 0.2s ease\",\n animation: \"sc-fade-in 0.2s ease\"\n },\n onMouseEnter: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.72)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1.06)\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.55)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1)\";\n },\n title: \"Play\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n import_fa.FaPlay,\n {\n size: Math.max(24, 32 * responsiveScale),\n color: \"white\",\n style: { marginLeft: \"4px\" }\n }\n )\n }\n ),\n shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n background: \"linear-gradient(0deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.35) 60%, transparent 100%)\",\n padding: `${20 * responsiveScale}px ${12 * responsiveScale}px ${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible || adStatus.showAds ? 1 : 0,\n transform: controlsVisible || adStatus.showAds ? \"translateY(0)\" : \"translateY(6px)\",\n pointerEvents: controlsVisible || adStatus.showAds ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-progress-track\",\n style: {\n width: \"100%\",\n height: \"3px\",\n background: \"rgba(255, 255, 255, 0.2)\",\n borderRadius: \"1.5px\",\n marginBottom: `${8 * responsiveScale}px`,\n cursor: \"pointer\",\n position: \"relative\",\n transition: \"height 0.1s ease\"\n },\n onClick: handleTimelineSeek,\n onMouseEnter: (e) => {\n e.currentTarget.style.height = \"5px\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.height = \"3px\";\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"1.5px\",\n width: `${progressPercent}%`,\n transition: \"width 0.15s linear\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n className: \"sc-progress-thumb\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${progressPercent}%`,\n transform: \"translate(-50%, -50%) scale(0)\",\n width: \"13px\",\n height: \"13px\",\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 4px rgba(0, 0, 0, 0.3)\",\n transition: \"transform 0.1s ease, left 0.15s linear\"\n }\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"white\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: handlePlayPause,\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isPlaying ? \"Pause\" : \"Play\",\n children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPause, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPlay, { size: Math.max(14, 18 * responsiveScale), style: { marginLeft: \"2px\" } })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n paddingRight: `${6 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${8 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"Roboto, 'Segoe UI', Arial, sans-serif\",\n color: \"rgba(255, 255, 255, 0.9)\",\n display: viewportWidth < 480 ? \"none\" : \"block\",\n fontVariantNumeric: \"tabular-nums\",\n userSelect: \"none\",\n marginLeft: `${4 * responsiveScale}px`\n },\n children: [\n formatTime(currentTime),\n \" \",\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"span\", { style: { color: \"rgba(255,255,255,0.5)\" }, children: \"/\" }),\n \" \",\n formatTime(duration)\n ]\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { position: \"relative\", display: viewportWidth < 600 ? \"none\" : \"block\" }, children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n setShowSpeedMenu(!showSpeedMenu);\n resetControlsTimer();\n },\n style: {\n padding: `${6 * responsiveScale}px ${10 * responsiveScale}px`,\n borderRadius: `${6 * responsiveScale}px`,\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"'SF Mono', 'Cascadia Code', monospace\",\n fontWeight: \"600\",\n minHeight: `${32 * responsiveScale}px`\n },\n title: \"Playback Speed\",\n children: [\n playbackRate,\n \"x\"\n ]\n }\n ),\n showSpeedMenu && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n bottom: \"100%\",\n right: 0,\n marginBottom: \"8px\",\n background: \"rgba(0, 0, 0, 0.8)\",\n backdropFilter: \"blur(24px)\",\n WebkitBackdropFilter: \"blur(24px)\",\n borderRadius: \"10px\",\n border: \"1px solid rgba(255, 255, 255, 0.1)\",\n overflow: \"hidden\",\n minWidth: \"80px\",\n boxShadow: \"0 12px 40px rgba(0, 0, 0, 0.5)\",\n animation: \"sc-fade-in 0.15s ease\"\n },\n children: [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2].map((speed) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"button\",\n {\n onClick: () => handlePlaybackRateChange(speed),\n style: {\n display: \"block\",\n width: \"100%\",\n padding: `${8 * responsiveScale}px ${14 * responsiveScale}px`,\n background: playbackRate === speed ? \"rgba(255, 255, 255, 0.12)\" : \"transparent\",\n border: \"none\",\n color: playbackRate === speed ? \"#fff\" : \"rgba(255, 255, 255, 0.7)\",\n cursor: \"pointer\",\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Mono', monospace\",\n fontWeight: playbackRate === speed ? \"700\" : \"500\",\n textAlign: \"center\",\n transition: \"background 0.15s ease, color 0.15s ease\"\n },\n onMouseEnter: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"rgba(255, 255, 255, 0.08)\";\n e.target.style.color = \"#fff\";\n }\n },\n onMouseLeave: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"transparent\";\n e.target.style.color = \"rgba(255, 255, 255, 0.7)\";\n }\n },\n children: [\n speed,\n \"x\"\n ]\n },\n speed\n ))\n }\n )\n ] }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ]\n }\n )\n ]\n }\n ) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${10 * responsiveScale}px`,\n left: `${10 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transition: \"opacity 0.35s ease\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n background: \"#ff3b30\",\n animation: \"sc-pulse 1.5s ease-in-out infinite\",\n flexShrink: 0\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"span\",\n {\n style: {\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Pro Display', 'Segoe UI', Arial, sans-serif\",\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n color: \"#fff\",\n textShadow: \"0 1px 3px rgba(0,0,0,0.6)\",\n userSelect: \"none\"\n },\n children: \"LIVE\"\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: `${10 * responsiveScale}px`,\n right: `${10 * responsiveScale}px`,\n display: \"flex\",\n flexDirection: isPortrait ? \"column\" : \"row\",\n alignItems: isPortrait ? \"flex-end\" : \"center\",\n gap: `${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transform: controlsVisible ? \"translateY(0)\" : \"translateY(4px)\",\n pointerEvents: controlsVisible ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n background: \"rgba(0, 0, 0, 0.6)\",\n borderRadius: `${18 * responsiveScale}px`,\n padding: \"2px\",\n paddingRight: `${8 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${10 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`,\n background: \"rgba(0, 0, 0, 0.6)\"\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ] }),\n onControlClick && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n onClick: onControlClick,\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n cursor: \"pointer\"\n }\n }\n )\n ]\n }\n )\n ] });\n },\n (prevProps, nextProps) => {\n for (const prop of CRITICAL_PROPS) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const uiProps = [\n \"autoplay\",\n \"muted\",\n \"controls\",\n \"showCustomControls\",\n \"className\",\n \"style\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"playsInline\",\n \"preload\",\n \"poster\",\n \"children\"\n ];\n for (const prop of uiProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const callbackProps = [\n \"onReady\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n ];\n for (const prop of callbackProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n return true;\n }\n);\n\n// src/StormcloudPlayer.tsx\nvar import_react6 = __toESM(require(\"react\"), 1);\n\n// src/props.ts\nvar noop = () => {\n};\nvar defaultProps = {\n playing: false,\n loop: false,\n controls: true,\n volume: 1,\n muted: false,\n playbackRate: 1,\n width: \"100%\",\n height: \"auto\",\n style: {},\n progressInterval: 1e3,\n playsInline: false,\n autoplay: false,\n preload: \"metadata\",\n poster: \"\",\n className: \"\",\n wrapperClassName: \"\",\n wrapperStyle: {},\n allowNativeHls: false,\n lowLatencyMode: false,\n driftToleranceMs: 1e3,\n immediateManifestAds: true,\n debugAdTiming: false,\n showCustomControls: false,\n hideLoadingIndicator: false,\n licenseKey: \"\",\n isVmap: false,\n vmapUrl: \"\",\n adFailsafeTimeoutMs: 1e4,\n minSegmentsBeforePlay: 2,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onProgress: noop,\n onVolumeToggle: noop,\n onFullscreenToggle: noop,\n onControlClick: noop\n};\n\n// src/utils.ts\nvar import_react2 = require(\"react\");\nvar lazy = import_react2.lazy;\nvar omit = (object, keys) => {\n const result = { ...object };\n keys.forEach((key) => {\n delete result[key];\n });\n return result;\n};\nvar isMediaStream = (url) => {\n return typeof window !== \"undefined\" && window.MediaStream && url instanceof window.MediaStream;\n};\nvar supportsWebKitPresentationMode = () => {\n if (typeof window === \"undefined\") return false;\n const video = document.createElement(\"video\");\n return \"webkitSupportsPresentationMode\" in video;\n};\nvar randomString = () => {\n return Math.random().toString(36).substr(2, 9);\n};\nvar parseQuery = (url) => {\n const query = {};\n const queryString = url.split(\"?\")[1] || \"\";\n if (!queryString) return query;\n const manualParse = (qs) => {\n qs.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n try {\n query[decodeURIComponent(key)] = value ? decodeURIComponent(value.replace(/\\+/g, \" \")) : \"\";\n } catch (e) {\n query[key] = value || \"\";\n }\n }\n });\n };\n if (typeof URLSearchParams !== \"undefined\") {\n try {\n const params = new URLSearchParams(queryString);\n params.forEach((value, key) => {\n query[key] = value;\n });\n return query;\n } catch (e) {\n manualParse(queryString);\n }\n } else {\n manualParse(queryString);\n }\n return query;\n};\nvar merge = (target, ...sources) => {\n if (!sources.length) return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n merge(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return merge(target, ...sources);\n};\nvar isObject = (item) => {\n return item && typeof item === \"object\" && !Array.isArray(item);\n};\nvar IS_BROWSER = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar IS_SAFARI = IS_BROWSER && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\nvar SUPPORTS_HLS = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/vnd.apple.mpegurl\"));\n};\nvar SUPPORTS_DASH = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/dash+xml\"));\n};\n\n// src/patterns.ts\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_PATHS = /\\/hls\\//i;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv)($|\\?)/i;\nvar AUDIO_EXTENSIONS = /\\.(mp3|wav|ogg|aac|wma|flac|m4a)($|\\?)/i;\nvar canPlay = {\n hls: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return HLS_EXTENSIONS.test(url) || HLS_PATHS.test(url);\n },\n dash: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return DASH_EXTENSIONS.test(url);\n },\n video: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url);\n },\n audio: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return AUDIO_EXTENSIONS.test(url);\n },\n file: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url) || AUDIO_EXTENSIONS.test(url);\n }\n};\n\n// src/players/HlsPlayer.tsx\nvar import_react3 = require(\"react\");\nvar HlsPlayer = class extends import_react3.Component {\n constructor() {\n super(...arguments);\n this.player = null;\n this.mounted = false;\n this.load = async () => {\n if (!this.props.videoElement || !this.props.src) return;\n try {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n const config = {\n src: this.props.src,\n videoElement: this.props.videoElement\n };\n if (this.props.autoplay !== void 0)\n config.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) config.muted = this.props.muted;\n if (this.props.lowLatencyMode !== void 0)\n config.lowLatencyMode = this.props.lowLatencyMode;\n if (this.props.allowNativeHls !== void 0)\n config.allowNativeHls = this.props.allowNativeHls;\n if (this.props.isLiveStream !== void 0)\n config.isLiveStream = this.props.isLiveStream;\n if (this.props.driftToleranceMs !== void 0)\n config.driftToleranceMs = this.props.driftToleranceMs;\n if (this.props.immediateManifestAds !== void 0)\n config.immediateManifestAds = this.props.immediateManifestAds;\n if (this.props.debugAdTiming !== void 0)\n config.debugAdTiming = this.props.debugAdTiming;\n if (this.props.showCustomControls !== void 0)\n config.showCustomControls = this.props.showCustomControls;\n if (this.props.onVolumeToggle !== void 0)\n config.onVolumeToggle = this.props.onVolumeToggle;\n if (this.props.onFullscreenToggle !== void 0)\n config.onFullscreenToggle = this.props.onFullscreenToggle;\n if (this.props.onControlClick !== void 0)\n config.onControlClick = this.props.onControlClick;\n if (this.props.licenseKey !== void 0)\n config.licenseKey = this.props.licenseKey;\n if (this.props.adFailsafeTimeoutMs !== void 0)\n config.adFailsafeTimeoutMs = this.props.adFailsafeTimeoutMs;\n if (this.props.minSegmentsBeforePlay !== void 0)\n config.minSegmentsBeforePlay = this.props.minSegmentsBeforePlay;\n if (this.props.ctvAdRequest !== void 0)\n config.ctvAdRequest = this.props.ctvAdRequest;\n if (this.props.vastTagUrl !== void 0)\n config.vastTagUrl = this.props.vastTagUrl;\n if (this.props.isVmap !== void 0) config.isVmap = this.props.isVmap;\n if (this.props.vmapUrl !== void 0) config.vmapUrl = this.props.vmapUrl;\n if (this.props.minRemainingMsToRequestAd !== void 0)\n config.minRemainingMsToRequestAd = this.props.minRemainingMsToRequestAd;\n if (this.props.maxNoFillsPerBreak !== void 0)\n config.maxNoFillsPerBreak = this.props.maxNoFillsPerBreak;\n if (this.props.maxAdBreakExtensionMs !== void 0)\n config.maxAdBreakExtensionMs = this.props.maxAdBreakExtensionMs;\n this.player = new StormcloudVideoPlayer(config);\n this.props.onMount?.(this);\n await this.player.load();\n if (this.mounted) {\n this.props.onReady?.();\n }\n } catch (error) {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n }\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[HlsPlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n this.props.onPlay?.();\n } else {\n console.warn(\"[HlsPlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n this.props.onPause?.();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"player\") return this.player;\n if (key === \"video\") return this.props.videoElement;\n if (key === \"hls\" && this.player) return this.player.hls;\n return null;\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nHlsPlayer.displayName = \"HlsPlayer\";\nHlsPlayer.canPlay = canPlay.hls;\n\n// src/players/FilePlayer.tsx\nvar import_react4 = require(\"react\");\nvar FilePlayer = class extends import_react4.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n\n// src/players/index.ts\nvar players = [\n {\n key: \"hls\",\n name: \"HLS Player\",\n canPlay: canPlay.hls,\n lazyPlayer: lazy(() => Promise.resolve({ default: HlsPlayer }))\n },\n {\n key: \"file\",\n name: \"File Player\",\n canPlay: canPlay.file,\n canEnablePIP: (url) => {\n return canPlay.file(url) && (document.pictureInPictureEnabled || typeof document.webkitSupportsPresentationMode === \"function\");\n },\n lazyPlayer: lazy(() => Promise.resolve({ default: FilePlayer }))\n }\n];\nvar players_default = players;\n\n// src/Player.tsx\nvar import_react5 = __toESM(require(\"react\"), 1);\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends import_react5.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.isReady = false;\n this.isPlaying = false;\n this.isLoading = true;\n this.loadOnReady = null;\n this.startOnPlay = true;\n this.seekOnPlay = null;\n this.onDurationCalled = false;\n this.handlePlayerMount = (player) => {\n if (this.player) {\n this.progress();\n return;\n }\n this.player = player;\n this.player.load(this.props.src);\n this.progress();\n };\n this.getInternalPlayer = (key) => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.progress = () => {\n if (this.props.src && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0;\n const loadedSeconds = this.getSecondsLoaded();\n const duration = this.getDuration();\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration,\n loaded: 0,\n loadedSeconds: 0\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress?.(progress);\n }\n this.prevPlayed = progress.playedSeconds;\n this.prevLoaded = progress.loadedSeconds;\n }\n }\n this.progressTimeout = window.setTimeout(\n this.progress,\n this.props.progressInterval || 1e3\n );\n };\n this.handleReady = () => {\n if (!this.mounted) return;\n this.isReady = true;\n this.isLoading = false;\n const { onReady, playing, volume, muted } = this.props;\n onReady();\n if (!muted && volume !== null) {\n this.player.setVolume(volume);\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true);\n this.loadOnReady = null;\n } else if (playing) {\n this.player.play();\n }\n this.handleDurationCheck();\n };\n this.handlePlay = () => {\n this.isPlaying = true;\n this.isLoading = false;\n const { onStart, onPlay, playbackRate } = this.props;\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate);\n }\n onStart?.();\n this.startOnPlay = false;\n }\n onPlay?.();\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay);\n this.seekOnPlay = null;\n }\n this.handleDurationCheck();\n };\n this.handlePause = (e) => {\n this.isPlaying = false;\n if (!this.isLoading) {\n this.props.onPause?.(e);\n }\n };\n this.handleEnded = () => {\n const { activePlayer, loop, onEnded } = this.props;\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0);\n }\n if (!loop) {\n this.isPlaying = false;\n onEnded?.();\n }\n };\n this.handleError = (...args) => {\n this.isLoading = false;\n this.props.onError?.(args[0], args[1], args[2], args[3]);\n };\n this.handleDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout);\n const duration = this.getDuration();\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration?.(duration);\n this.onDurationCalled = true;\n }\n } else {\n this.durationCheckTimeout = window.setTimeout(\n this.handleDurationCheck,\n 100\n );\n }\n };\n this.handleLoaded = () => {\n this.isLoading = false;\n };\n }\n componentDidMount() {\n this.mounted = true;\n }\n componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (!this.player) return;\n const { src, playing, volume, muted, playbackRate, loop, activePlayer } = this.props;\n if (prevProps.src !== src) {\n if (this.isLoading && !activePlayer.forceLoad && !isMediaStream(src)) {\n console.warn(\n `StormcloudPlayer: the attempt to load ${src} is being deferred until the player has loaded`\n );\n this.loadOnReady = src || null;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(src, this.isReady);\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (volume !== null) {\n setTimeout(() => this.player.setVolume(volume));\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n seekTo(amount, type, keepPlaying) {\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(() => {\n this.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n return;\n }\n const isFraction = !type ? amount > 0 && amount < 1 : type === \"fraction\";\n if (isFraction) {\n const duration = this.player.getDuration();\n if (!duration) {\n console.warn(\n \"StormcloudPlayer: could not seek using fraction \\u2013 duration not yet available\"\n );\n return;\n }\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n this.player.seekTo(amount, keepPlaying);\n }\n render() {\n const Player2 = this.props.activePlayer;\n if (!Player2) {\n return null;\n }\n return import_react5.default.createElement(Player2, {\n ...this.props,\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n });\n }\n};\nPlayer.displayName = \"Player\";\nPlayer.defaultProps = defaultProps;\n\n// src/StormcloudPlayer.tsx\nvar IS_BROWSER2 = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL2 = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar UniversalSuspense = IS_BROWSER2 || IS_GLOBAL2 ? import_react6.Suspense : () => null;\nvar SUPPORTED_PROPS = [\n \"src\",\n \"playing\",\n \"loop\",\n \"controls\",\n \"volume\",\n \"muted\",\n \"playbackRate\",\n \"width\",\n \"height\",\n \"style\",\n \"progressInterval\",\n \"playsInline\",\n \"autoplay\",\n \"preload\",\n \"poster\",\n \"className\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"allowNativeHls\",\n \"lowLatencyMode\",\n \"isLiveStream\",\n \"driftToleranceMs\",\n \"immediateManifestAds\",\n \"debugAdTiming\",\n \"showCustomControls\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"vastTagUrl\",\n \"adFailsafeTimeoutMs\",\n \"minSegmentsBeforePlay\",\n \"ctvAdRequest\",\n \"minRemainingMsToRequestAd\",\n \"maxNoFillsPerBreak\",\n \"maxAdBreakExtensionMs\",\n \"onReady\",\n \"onStart\",\n \"onPlay\",\n \"onPause\",\n \"onBuffer\",\n \"onBufferEnd\",\n \"onEnded\",\n \"onError\",\n \"onDuration\",\n \"onSeek\",\n \"onProgress\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n];\nvar customPlayers = [];\nvar createStormcloudPlayer = (playerList, fallback) => {\n var _a;\n return _a = class extends import_react6.Component {\n constructor() {\n super(...arguments);\n this.state = {\n showPreview: false\n };\n this.references = {\n wrapper: (wrapper) => {\n this.wrapper = wrapper;\n },\n player: (player) => {\n this.player = player;\n }\n };\n this.getActivePlayer = (src) => {\n if (!src) return null;\n for (const player of [...customPlayers, ...playerList]) {\n if (player.canPlay(src)) {\n return player;\n }\n }\n if (fallback) {\n return fallback;\n }\n return null;\n };\n this.getAttributes = (src) => {\n return omit(this.props, SUPPORTED_PROPS);\n };\n this.handleReady = () => {\n this.props.onReady?.(this);\n };\n this.seekTo = (fraction, type, keepPlaying) => {\n if (!this.player) return null;\n this.player.seekTo(fraction, type, keepPlaying);\n };\n this.getCurrentTime = () => {\n if (!this.player) return null;\n return this.player.getCurrentTime();\n };\n this.getSecondsLoaded = () => {\n if (!this.player) return null;\n return this.player.getSecondsLoaded();\n };\n this.getDuration = () => {\n if (!this.player) return null;\n return this.player.getDuration();\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.renderActivePlayer = (src) => {\n if (!src) return null;\n const activePlayer = this.getActivePlayer(src);\n if (!activePlayer) return null;\n return import_react6.default.createElement(Player, {\n ...this.props,\n key: activePlayer.key,\n ref: this.references.player,\n activePlayer: activePlayer.lazyPlayer || activePlayer,\n onReady: this.handleReady\n });\n };\n }\n render() {\n const {\n src,\n style,\n width,\n height,\n fallback: fallbackElement,\n wrapper: Wrapper\n } = this.props;\n const attributes = this.getAttributes(src);\n const wrapperRef = typeof Wrapper === \"string\" ? this.references.wrapper : void 0;\n return import_react6.default.createElement(\n Wrapper,\n {\n ref: wrapperRef,\n style: { ...style, width, height },\n ...attributes\n },\n import_react6.default.createElement(\n UniversalSuspense,\n { fallback: fallbackElement },\n this.renderActivePlayer(src)\n )\n );\n }\n }, _a.displayName = \"StormcloudPlayer\", _a.defaultProps = {\n ...defaultProps,\n fallback: null,\n wrapper: \"div\"\n }, _a.addCustomPlayer = (player) => {\n customPlayers.push(player);\n }, _a.removeCustomPlayers = () => {\n customPlayers.length = 0;\n }, _a.canPlay = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canPlay(src)) {\n return true;\n }\n }\n return false;\n }, _a.canEnablePIP = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canEnablePIP && Player2.canEnablePIP(src)) {\n return true;\n }\n }\n return false;\n }, _a;\n};\nvar StormcloudPlayer = createStormcloudPlayer(\n players_default,\n players_default[players_default.length - 1]\n);\nvar StormcloudPlayer_default = StormcloudPlayer;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_REQUEST_SAFETY_MS,\n DEFAULT_TRACKING_INGEST_CONFIG,\n DISABLED_FLOOR_LADDER_CONFIG,\n GAM_AD_OPPORTUNITY_DURATION_MS,\n IS_BROWSER,\n IS_GLOBAL,\n IS_IOS,\n IS_SAFARI,\n SUPPORTS_DASH,\n SUPPORTS_HLS,\n StormcloudPlayer,\n StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig,\n buildAnalyticsContext,\n canPlay,\n configureTrackingIngest,\n createHlsAdPlayer,\n createPalNonceManager,\n createStormcloudPlayer,\n detectBrowser,\n fixedFloorSelector,\n generateFloorLevels,\n getBrowserConfigOverrides,\n getBrowserID,\n getClientInfo,\n ingestPlayerTracking,\n initializePolyfills,\n isMediaStream,\n isTrackingIngestEnabled,\n lazy,\n logBrowserInfo,\n merge,\n omit,\n parseApiFloorLadder,\n parseQuery,\n players,\n randomString,\n requiresMediaPipelineResetAfterAds,\n resolveFloorLadderBounds,\n sendAdDetectTracking,\n sendAdImpressionTracking,\n sendAdLoadedTracking,\n sendHeartbeat,\n sendInitialTracking,\n supportsFeature,\n supportsModernJS,\n supportsWebKitPresentationMode,\n trackingIngestConfig,\n validateFloorCents,\n validateFloorLadderConfig\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\index.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","index_exports","DEFAULT_FLOOR_LADDER_BOUNDS","DEFAULT_REQUEST_SAFETY_MS","DEFAULT_TRACKING_INGEST_CONFIG","DISABLED_FLOOR_LADDER_CONFIG","GAM_AD_OPPORTUNITY_DURATION_MS","IS_BROWSER","IS_GLOBAL","IS_IOS","IS_SAFARI","SUPPORTS_DASH","SUPPORTS_HLS","StormcloudPlayer","StormcloudPlayer_default","StormcloudVideoPlayer","StormcloudVideoPlayerComponent","applyTrackingIngestConfig","buildAnalyticsContext","canPlay","configureTrackingIngest","createHlsAdPlayer","createPalNonceManager","createStormcloudPlayer","default","detectBrowser","fixedFloorSelector","generateFloorLevels","getBrowserConfigOverrides","getBrowserID","getClientInfo","ingestPlayerTracking","initializePolyfills","isMediaStream","isTrackingIngestEnabled","lazy","logBrowserInfo","merge","omit","parseApiFloorLadder","parseQuery","players","players_default","randomString","requiresMediaPipelineResetAfterAds","resolveFloorLadderBounds","sendAdDetectTracking","sendAdImpressionTracking","sendAdLoadedTracking","sendHeartbeat","sendInitialTracking","supportsFeature","supportsModernJS","supportsWebKitPresentationMode","trackingIngestConfig","validateFloorCents","validateFloorLadderConfig","module","exports","import_react","require","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","Set","resolveVastEnvironmentSignals","isCtv","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","bridgeDeviceId","validDeviceId","deviceId","realDeviceId","readStoredDeviceId","deviceIdType","readStoredString","inferDeviceIdType","platformLat","limitAdTracking","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","sessionId","getOrCreateCtvSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","navigator","ua","userAgent","maxTouchPoints","test","window","keys","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","source","normalized","safeCall","Number","isInteger","trimmed","trim","parseInt","toLowerCase","replace","fn","thisArg","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","has","resolveNativeDeviceId","includeStored","isMacroPlaceholder","isZeroedAdId","storageKey","existing","readPersistentId","writePersistentId","id","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","document","prefix","encodeURIComponent","parts","cookie","split","part","entry","startsWith","decodeURIComponent","slice","length","bytes","crypto","randomUUID","Uint8Array","getRandomValues","seed","Date","now","Math","floor","performanceNow","i","random","hex","toString","padStart","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","result","normalizeBoolean","getItem","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","pattern","getValue","ctx","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","String","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","location","pathname","search","expandInlineMacroPlaceholders","baseUrl","url","applyDeviceIdentityParams","params","runtimeId","tagRdid","tagLat","latValue","set","delete","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","forEach","_value","push","includes","suffix","normalizeVastTagUrl","raw","URL","anValue","searchParams","orphanFragments","reconstructed","join","_match","val","GAM_AD_HOSTS","ensureVideoAdType","rawUrl","hostname","SCVP_MACRO_DETECT","SCVP_MACRO_PATTERN","SCVP_WHOLE_VALUE_PATTERN","NESTED_QUERY_PARAM_KEYS","SCVP_POD_MACROS","hasScvpMacros","safeDecode","findScvpMacroNames","names","text","pass","_m","bracketName","parenName","add","toUpperCase","decoded","Array","resolveScvpMacroValues","values","Map","str","toFlag","palNonce","programTitle","channelName","pod","streamCorrelator","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","keepNone","substituteScvpParams","unresolved","keep","nested","out","replaceMacro","match","whole","resolved","inner","URLSearchParams","map","k","v","substituteScvpMacros","replaced","entries","append","applyScvpMacros","deferred","stripScvpMacros","applyVastMacros","expandedUrl","replaceCorrelatorFallback","existingUrl","pageUrl","adTest","staleKeys","correlatorRegex","sep","fetchConsentSignals","timeoutMs","signals","Promise","resolve","tasks","tcfApi","__tcfapi","settled","tcData","success","eventStatus","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","setTimeout","uspApi","__uspapi","data","uspString","then","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","minCents","maxCents","levels","cents","overrides","config","bounds","ok","reason","gamLevels","configLevels","indexOf","ready","isArray","errors","check","selected","select","context","floorCents","resolveOpportunityFloor","selector","base","position","skipped","status","positions","decodeQueryComponent","mergeCustParams","kept","pair","applyFloorToVastUrl","applied","parsed","hashIndex","beforeHash","hash","queryIndex","segments","insertAt","rest","segment","eq","rawKey","merged","splice","query","copyConfig","mergeDefined","update","next","finiteNumber","isFinite","src","min","max","step","AD_POSITIONS","FloorLadderController","isEnabled","applyApiConfig","reset","getBounds","validate","setSelector","snapshotFor","getChromeVersion","getPlatform","userAgentData","platform","version","majorVersion","isLegacyTV","supportsModernJS2","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","getWebKitVersion","isSmartTV","browser","prefersProgressiveAdMedia","allowNativeHls","pauseContentDuringAds","assign","e","debug","log","feature","formatPlayhead","fetch","subtle","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","seconds","total","mm","ss","ms","hh","resolveMacroValues","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","toISOString","errorCode","playerWidth","playerHeight","round","clientUa","podSequence","adServingId","substituteVastTrackingMacros","POD_PARAM_KEYS","POSITIVE_INT","NON_NEGATIVE_INT","positiveInt","resolveAdPodConfig","nonNegativeInt","adPodConfig","requestSafetyMs","minPodDurationMs","maxAdsPerBreak","maxPodDurationMs","podMaxAds","podMaxDurationMs","timing","scheduled","scheduledBreakDurationMs","untilEnd","unplayed","resolvePodParams","endMonoMs","input","nowMonoMs","pmnd","pmxd","breakEndMonoMs","breakStartMonoMs","playedDurationMs","elapsedBeforeGamRequestMs","remainingAtGamDispatchMs","capacity","tagMaxDurationMs","kind","minUsable","minUsablePmxdMs","pmxdCandidateMs","exactDuration","podRequestAborted","error","Error","message","diagnostics","isPodRequestAbortedError","firstPositiveIntParam","getAll","isOptimizedPodUrl","some","finalUrl","optimizedPod","safetyReserveMs","problems","validateGamRequestUrl","finalizeGamRequestUrl","breakId","scteBreakDurationMs","decision","pmad","substituted","pmxdSource","pmndSent","pmxdSent","pmadSent","palNoncePresent","givn","gamRequestDispatchTimestamp","nowEpochMs","strippedMacros","expect","leftover","concat","remainingMs","computePodResponseDiagnostics","vastAdCount","totalVastCreativeDurationMs","estimatedUnusedPodMs","estimatedUnmatchedCount","LINEAR_TRACKING_EVENTS","textOf","el","textContent","parseVastTime","h","m","p","parseFloat","s","every","n","parseProgressOffset","offset","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","VAST_REQUEST_TIMEOUT_MS","BEACON_TIMEOUT_MS","inFlightBeacons","VAST_ERROR_MEDIA_DISPLAY","VAST_ERROR_WRAPPER_TIMEOUT","VAST_ERROR_WRAPPER_LIMIT","VAST_ERROR_WRAPPER_NO_ADS","VAST_ERROR_NO_SUPPORTED_MEDIA","VERIFICATION_NOT_SUPPORTED_REASON","VIEWABLE_MIN_VISIBLE_RATIO","VIEWABLE_MIN_CONTINUOUS_S","toVastMediaErrorCode","gamCredentialsMode","contentVideo","options","adPlaying","originalMutedState","originalVolume","volume","listeners","mainHlsInstance","AD_CONTAINER_PROP","AD_VIDEO_PROP","FRAME_COUNTER_RELIABLE_PROP","RVFC_RELIABLE_PROP","adVideoElement","adHls","adContainerEl","adEventHandlers","containerHandlers","currentAd","currentAdMediaFile","podAds","podIndex","preloadedAds","preloadingAds","destroyed","pendingTimeouts","STALL_TIMEOUT_MS","STALL_CHECK_INTERVAL_MS","BLACKFRAME_MIN_PLAYBACK_S","stallWatchdogId","lastAdProgressTime","lastAdProgressPosition","sawDecodedVideoFrame","videoFrameCallbackHandle","pendingPlayPromise","currentVastTagUrl","funnelContext","mediaProbe","lastPodAdElementCount","mediaCandidates","mediaCandidateIndex","mediaStartTimerId","MEDIA_START_TIMEOUT_MS","mediaStartTimeoutMs","VAST_ERROR_MEDIA_TIMEOUT","pendingVastRequests","pendingRequestAbortReason","forcedMuteByAutoplay","createTrackingState","impression","loaded","start","firstQuartile","midpoint","thirdQuartile","complete","viewabilitySettled","lastMuted","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastViewSampleTime","lastPlayerExpanded","documentHandlers","emit","event","payload","SENSITIVE_URL_PARAMS","redactUrl","logFunnel","stage","extra","requestId","controllerId","visibilityState","adId","podSize","vastUrl","mediaUrl","mediaType","type","muted","buildTrackingMacroContext","options2","ad","currentTime","clientWidth","clientHeight","href","fireTrackingPixels","urls","macroContext","trackingUrl","trackingHost","host","unexpanded","macros","img","Image","release","outcome","timeoutId","clearTimeout","onload","onerror","warn","getMainStreamQuality","currentLevel","autoLevel","loadLevel","level2","width","height","bitrate","level","getMediaTargetQuality","mainQuality","dpr","devicePixelRatio","containerWidth","containerHeight","rankMediaCandidates","mediaFiles","probe","createElement","pageIsHttps","protocol","deprioritizeHls","accepted","file","index","isHls","isHlsMediaFile","mimeForProbe","canPlay2","canPlayType","playable","import_hls","isSupported","insecure","details","candidateUrl","candidateType","hlsJs","why","score","resolutionDiff","abs","bitrateDiff","deprioritizedHls","sort","b","a","mediaFile","isProgressiveMediaFile","getMediaProbe","isAudioMediaFile","evaluateMediaFile","mf","getAttribute","delivery","codec","category","whyRejected","apiFramework","bitrateAttr","bitrateValue","hasExplicitDimensions","nativeHls","whyAccepted","baseType","withCodec","collectVideoMediaFiles","mediaFileElements","linear","verbose","querySelectorAll","stats","fileUrl","categories","createEmptyTrackingUrls","clickTracking","viewable","notViewable","viewUndetermined","verificationNotExecuted","progress","pushUrls","elements","collectLinearTracking","into","collectAdLevelTracking","adBody","verification","mergeTrackingUrls","targetLists","sourceLists","incoming","parserError","parseXml","xmlString","xmlDoc","DOMParser","parseFromString","getAdSequence","adElement","sequence","errorUrls","root","parseVastXml","documentElement","adElements","emptyVastResult","ordered","firstEmpty","parseAdElement","usedAdIndex","vastAdTagUri","wrapper","querySelector","trackingUrls2","linear2","trackingUrls","rules","followAdditionalWrappers","inLine","conditionalAd","rejectStats","candidate","files","top","count","mediaFileCount","rejectedByCategory","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","finalizeRequestUrl","controller","startedAt","attempt","resolveDispatchUrl","requestVast","response","AbortController","abort","creds","pending","headers","referrerPolicy","signal","httpStatus","elapsedMs","aborted","errorMessage","statusText","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fetchStartedAt","wrapperUrl","isEdgeEmptySentinelAd","durations","fetchAndParsePod","isEdge","trimmedXml","empty","resolveAd","candidates","podElements","buffet","resolveAll","ads","adElementCount","vastVersion","inlineCount","sentinelCount","catch","video","shift","createAdVideoElement","style","left","objectFit","backgroundColor","playsInline","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onPlaying","onCanPlay","startStallWatchdog","mutedByAutoplay","candidateIndex","pixelCount","settleViewability","advanceToNextPodAd","handleAdComplete","vastErrorCode","mediaErrorCode","networkState","code","onMediaDiagnostic","recoverFromAdFailure","currentSrc","readyState","onVolumeChange","userActivation","isActive","paused","mute","unmute","ended","onPause","isTrackablePlayback","pause","resume","handler","onEnded","onError","onPlay","addEventListener","teardownAdEventListeners","removeEventListener","handleAdClick","open","reportCurrentAdError","fireNotUsedForUnplayedAds","notUsed","inView","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","contains","fullscreen","playerExpand","exitFullscreen","playerCollapse","attachContainerHandlers","onClick","onInteraction","onFullscreenChange","IntersectionObserver","isIntersecting","intersectionRatio","observe","detachContainerHandlers","disconnect","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","requestVideoFrameCallback","settlePendingPlay","toVastPlayErrorCode","failAdPlayback","startAdPlayback","isMutedRetry","computed","getComputedStyle","isConnected","containerDisplay","display","containerVisibility","visibility","playPromise","play","errorName","finally","prepareVideoElementForNewSource","destroy","removeAttribute","load","recreateAdVideoElement","remove","appendChild","clearMediaStartTimer","startMediaStartTimer","resetVideoElementForNextSource","clearStallWatchdog","previousSourceUsedHlsJs","tryNextMediaCandidate","failedUrl","nextUrl","nextType","candidateCount","loadMediaCandidate","handleAdError","loadCurrentAdMedia","isHlsAd","enableWorker","lowLatencyMode","pipeline","loadSource","attachMedia","on","Events","MANIFEST_PARSED","ERROR","_event","fatal","ErrorTypes","NETWORK_ERROR","responseCode","responseText","fragUrl","frag","clearInterval","cancelVideoFrameProbe","handleAdStall","getDecodedVideoFrameCount","getVideoPlaybackQuality","quality","totalVideoFrames","legacyCount","webkitDecodedFrameCount","isFrameCounterReliable","markFrameCounterReliable","isRvfcReliable","markRvfcReliable","cancelVideoFrameCallback","startVideoFrameProbe","rvfc","onPresentedFrame","blackFrameDetectionEnabled","setInterval","decodedFrames","timeAdvancing","releaseAdDecoder","pointerEvents","setAdPlayingFlag","continueLiveStreamDuringAds","opacity","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","requestOptions","preloaded","reject","adCount","impressionUrls","adIndex","missingAdId","contentVolume","loadError","stop","previousMutedState","clear","off","requestedVolume","isAdPlaying","setFunnelContext","abortPendingRequest","size","resize","listener","updateOriginalMutedState","nextVolume","isNaN","getOriginalMutedState","getOriginalVolume","setAdVolume","clamped","showPlaceholder","hidePlaceholder","getLoadedAdDuration","getLoadedAdId","getPodAdCount","getPodTotalDurationMs","limitPodToBudget","maxDurationMs","maxAds","dropped","totalMs","durationMs","keptCount","droppedCount","keptDurationMs","PRIVATE_HOST_PATTERNS","isLocalDevHost","toDevSafeUrl","cleanPath","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","currentNonce","pendingNonce","generateNonce","run","generate","settle","getCurrentNonce","waitForNonce","maxWaitMs","timer","nonce","injectNonce","sendPlaybackStart","currentNonceManager","sendPlaybackEnd","sendAdClick","sendAdTouch","loader","request","manager","NonceRequest","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","JSON","stringify","loadNonceManager","getNonce","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","licenseKey","body","method","Authorization","cachedBrowserId","contentNetwork","contentChannel","contentTitle","hlsUrl","debugAdTiming","isLiveStream","screen","vendor","memory","hardwareConcurrency","deviceMemory","availWidth","availHeight","orientation","pixelDepth","deviceType","brand","os","model","isAndroid","isWebView","isWebApp","webosMatch","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","substring","domain","path","origin","screenInfo","language","languages","cookieEnabled","doNotTrack","referrer","sha256Hex","encodedData","utf8","buffer","hashBuffer","char","fallbackHash","timestamp","digest","TextEncoder","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getCachedBrowserId","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","inputStreamType","input_stream_type","metricEvent","events","adDetectInfo","adLoadedInfo","adImpressionInfo","ad_played_count","ad_url","adUrl","content_network","content_channel","content_title","hls_url","heartbeatData","URLSearchParamsPolyfill","init","parseQueryString","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","polyfillObjectAssign","sources","TypeError","nextSource","nextKey","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","pos","polyfillStringEndsWith","polyfillStringIncludes","polyfillURLSearchParams","parseCueOutDuration","num","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","toNumber","getDateRangeDurationSeconds","isManifestBasedMarker","marker","id3","splice_command_type","decodeId3ValueToText","decoder","decode","fromCharCode","getFragmentStartSeconds","startPTS","parseScte35FromId3","cueOutMatch","arg","dur","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","bin","parseScte35Binary","normalizeFragmentPayload","ArrayBuffer","isView","view","byteOffset","byteLength","detectTsPacketFormat","packetSizes","packetSize","tsPayloadOffset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","programNumber","pid","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","firstKey","addScte35SectionMarker","markers","appendScte35Bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","parseScte35FromTsPackets","packetInfo","sectionAssemblers","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","readBits","bytePosition","high","r","BitReader","bytePos","bitPos","numBits","remainingInByte","toRead","currentByte","mask","bits","skipBits","readSpliceTime","ptsAdjustmentTicks","timeSpecifiedFlag","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","descriptor","parseScte35SegmentationDescriptor","identifier","segmentationEventId","cancelIndicator","programSegmentationFlag","segmentationDurationFlag","componentCount","durationTicks","segmentationUpidLength","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorTag","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","spliceEventId","commandBodyStart","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","activeScte35BreakKey","processedTsScte35Sections","createScte35CueContext","splice_event_id","segmentation_event_id","Scte35CueManager","callbacks","pendingScte35Cues","recentScte35CueKeys","recentScte35CueLimit","pendingScte35CueKeyValue","activeScte35BreakKeyValue","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","readiness","sn","fragmentSn","fragmentStartSec","fragmentStartSeconds","onScte35Cue","cue","createScte35Cue","pendingKey","trimRecentScte35CueMaps","onEarlyStartCue","shouldAcceptScte35EndCue","inAdBreak","isInAdBreak","hasRecentlyHandledScte35Cue","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","getPendingScte35CueKey","isStrongScte35CueKey","recentKey","withDeferredPodParams","deferNonce","podAssignedByPrefetch","AdConfigManager","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","lastHeartbeatTime","defaultEdgePodMaxAds","palNonceDispatchWaitMs","viewCorrelator","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","apiUrl","apiEnableEdge","apiEdgeUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","json","enableEdgePodRequest","apiEnableEdgePodRequest","edgePodUrl","apiEdgePodUrl","apiFloorLadder","floorLadder","ima","vast","cue_tones","number_ads","apiNumberAds","vmapXml","parseVmapToBreaks","doc","VMAP_NS","adBreakNodes","getElementsByTagNameNS","getElementsByTagName","localName","node","timeOffsetRaw","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","aStart","bStart","timeOffset","hms","hours","minutes","millis","ratio","durationSec","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","tol","driftToleranceMs","breakStartMs","findBreakForTime","selectVastTagsForBreak","beginNewAdPod","resolveEdgeMaxAds","getPalDescriptionUrl","generatePodVastUrl","adPlayer","envSignals","ctvAdRequest","autoplay","nonceReady","completeDeferredRequestSignals","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","monotonicNow","AdTimingService","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","minAdRequestIntervalMs","backoffBaseMs","adRequestTokenCounter","activeAdRequestToken","currentAdIndex","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","lastAdRequestTime","consecutiveFailures","maxConsecutiveFailures","maxBackoffMs","defaultMinRemainingMsToStartAd","failedVastUrls","temporaryFailureUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalNoFillThreshold","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","beginBreakTiming","startWallClockMs","currentAdBreakStartWallClockMs","markBreakEndedNow","scteAdBreakEndWallClockMs","setAdBreakDurationBoundary","expectedAdBreakDurationMs","getBreakTimingSnapshot","scheduleAdStopAtBreakBoundary","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","adFitsRemainingBudget","logAdDurationDecision","remainingBudget","recordPlayedAdDuration","ensureLoadedAdFitsBudget","fits","rejectLoadedAdForDuration","markAdStarted","noteAdRequestSent","notePodAdStarted","getRemainingAdMs","wallClockRemaining","budgetRemaining","getMinRemainingMsToStartAd","configured","minRemainingMsToStartAd","hasTimeToStartAnotherAd","minRemaining","isTemporaryAdError","isUrlInCooldown","failureTime","cleanupTemporaryFailures","isGamInCooldown","recordGamNoFill","exponent","backoff","pow","resetGamNoFillCounter","enforceGlobalRateLimit","waitMs","startAdRequestWatchdog","token","clearAdRequestWatchdog","adFailsafeTimeoutMs","adRequestWatchdogId","logAdState","onWatchdogTimeout","startAdFailsafeTimer","failsafeMs","adFailsafeTimerId","videoPaused","onFailsafeTimeout","clearAdFailsafeTimer","getAdState","showAds","resetForBreakEnd","PlaceholderLayer","ensureContainer","transition","show","wasHidden","offsetHeight","requestAnimationFrame","hide","removeChild","import_hls2","HlsEngine","cueManager","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","shouldUseNativeHls","getStreamType","canNative","setupNativeHls","adBehavior","isLive","setupHls","hls","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","MEDIA_ATTACHED","_","_data","minSegments","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","hasPendingAdBreak","fragments","fragmentsToScan","tagList","idx","isDateRange","earlyDetection","FRAG_BUFFERED","err","FRAG_PARSING_METADATA","id3Tags","samples","pts","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","FRAG_DECRYPTED","activatePendingCuesForFragment","prog","startLoad","MEDIA_ERROR","recoverMediaError","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","targetDuration","partList","targetduration","hasParts","hasPartTarget","hasPartHoldBack","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","recreateDelayMs","EDGE_POD_MAX_ADS","EDGE_POD_EXCEEDS_BUDGET","LICENSE_KEY_PLACEHOLDER","resolveEdgePodBaseUrl","encodedKey","hasPlaceholder","resolveEdgePodRequestContext","setOptionalParam","buildEdgePodUrl","remainingAdLimit","maxMs","classifyEdgeVastResponse","podAdCount","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setMuted","setVolume","clampedVolume","getAdVolume","isFullscreen","resizePlayer","REQUEST_FAILURE_STAGES","AdBreakOrchestrator","adConfig","placeholder","isShowingPlaceholder","adDetectSentForCurrentBreak","slotState","unusableResponsesInBreak","controllerGeneration","breakFunnel","controllerCallInFlight","playbackStartedForCurrentRequest","opportunityEpoch","edgeExhaustedForBreak","edgeRequestsInBreak","adPodQueue","defaultMinRemainingMsToRequestAd","defaultMaxNoFillsPerBreak","pendingAdBreak","defaultLiveMaxNoFillsPerBreak","breakDurationWaitMs","analyticsContext","nextAdRequestUrl","baseVastUrl","attachImaEventListeners","getAdPlayer","generation","logOrchestratorFunnel","staleControllerId","currentControllerId","onAdClick","onAdInteraction","countFunnelStage","setSlotState","requestNextAd","recreateAdController","currentRequestId","state","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","clearPendingAdBreak","prefetchTimerId","pendingScte35CueKey","isBreakActive","getSlotState","beginVmapBreak","breakSource","resetEdgeStateForBreak","followUpBaseVastUrl","noteOpportunity","breakKey","handleAdStart","edgeConfigured","adBreakDurationMs","currentMuted","currentVolume","epoch","edgeUrl","podPlayed","getEdgePodBaseUrl","canRequestEdge","prepareEdgePodRequest","runEdgePod","continueAfterEdgeOutcome","markEdgeExhausted","isLiveBreak","startOptimizedPod","waitForBreakDuration","deadline","waitedForMs","prefetched","requestToken","requestUrl","podCount","podUrl","vastUrls","noteVastUrlGenerated","currentPodSource","beginFunnelRequest","applyOpportunityFloor","currentVastUrl","isStale","completeGamRequestSignals","createGamDispatchFinalizer","callController","handlePodRequestNotSent","recordRequestFailure","getMinRemainingMsToRequestAd","remainingAds","offsetWidth","trigger","overrunAllowanceMs","classification","diag","endpoint","describeEdgeUrl","maxAdBreakExtensionMs","podDurationMs","requestDiagnostics","failureReason","previous","minRemainingMsToRequestAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","getNextRequestDelayMs","failures","minInterval","sinceLast","nextAdTimerId","stopReason","requestsSent","unusableResponses","handleAdPodComplete","requestFollowUpAd","epoch2","playSingleAd","continueAfterRequestFailure","cancelScheduledRequest","adType","podParamsDeferredToDispatch","impressionFired","failureKey","dispatchedUrl","impressionCount","requestFloorFields","recordRequestDiagnostic","gamRequestSent","logPodDispatch","edgeRequestSent","vastHttpStatus","wrapperDepth","inlineResolved","mediaCandidateCount","supportedMediaCount","playStarted","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","_dispatchedUrl","podDispatchLogged","_logged","fields","measureBreakCapacity","recordPodResponseDiagnostics","podResponse","opportunityFloorFields","opportunityFloor","floorStatus","floorSource","floorReason","floorSelector","adPosition","floorApplied","floorConfigVersion","amount","opportunityBreakKey","getFloorSnapshot","expectedDurationMs","newRequestId","requestStartedAt","isAdLoadingWithoutPlayback","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","handleAdFailure","ap","adDurationS","adDurationMs","logBreakFunnel","funnel","countPrefix","reduce","requestRetries","requests","opportunities","floorAppliedRequests","floorSkippedRequests","vastUrlsGenerated","gamResponses","edgeRequests","edgeFills","edgeEmptySentinels","edgeFallbacks","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","requestFailed","credentialsModeChanges","wrapperFailures","vpaidOnly","audioOnly","mediaFilesEvaluated","mediaFilesAccepted","controllerDestroys","staleCallbacks","tagAllowsAudio","missingImpression","discardedBudget","mediaRejected","mediaFallbacks","playCalled","playRejected","mutedRetry","startTimeouts","impressions","trackingRequests","trackingNotLoaded","trackingUnexpandedMacros","trackingInvalidUrls","vastAdFallbacks","mediaEvents","quartile25","quartile50","quartile75","stoppedBeforeStart","stoppedBeforeStartByBreakEnd","unexpectedUnmutes","unmuteBlocked","visibilityHidden","playbackFailures","stages","previousState","alreadyEnded","contentWasInterrupted","restoredMuted","restoredVolume","monitorLiveResumeStall","resumeContentPlayback","liveSyncPos","toFixed","restartHlsLoad","getBufferedAhead","ranges","buffered","networkStates","readyStates","net","seeking","resumeBaseline","needsReset","pollIntervalMs","graceMs","recoveryCooldownMs","maxRecoveries","maxMonitorMs","startTime","baseline","recoveries","lastRecoveryAt","listenersAttached","onMediaEvent","diagEvents","dt","describeVideoState"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n DEFAULT_FLOOR_LADDER_BOUNDS: () => DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_REQUEST_SAFETY_MS: () => DEFAULT_REQUEST_SAFETY_MS,\n DEFAULT_TRACKING_INGEST_CONFIG: () => DEFAULT_TRACKING_INGEST_CONFIG,\n DISABLED_FLOOR_LADDER_CONFIG: () => DISABLED_FLOOR_LADDER_CONFIG,\n GAM_AD_OPPORTUNITY_DURATION_MS: () => GAM_AD_OPPORTUNITY_DURATION_MS,\n IS_BROWSER: () => IS_BROWSER,\n IS_GLOBAL: () => IS_GLOBAL,\n IS_IOS: () => IS_IOS,\n IS_SAFARI: () => IS_SAFARI,\n SUPPORTS_DASH: () => SUPPORTS_DASH,\n SUPPORTS_HLS: () => SUPPORTS_HLS,\n StormcloudPlayer: () => StormcloudPlayer_default,\n StormcloudVideoPlayer: () => StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent: () => StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig: () => applyTrackingIngestConfig,\n buildAnalyticsContext: () => buildAnalyticsContext,\n canPlay: () => canPlay,\n configureTrackingIngest: () => configureTrackingIngest,\n createHlsAdPlayer: () => createHlsAdPlayer,\n createPalNonceManager: () => createPalNonceManager,\n createStormcloudPlayer: () => createStormcloudPlayer,\n default: () => StormcloudVideoPlayerComponent,\n detectBrowser: () => detectBrowser,\n fixedFloorSelector: () => fixedFloorSelector,\n generateFloorLevels: () => generateFloorLevels,\n getBrowserConfigOverrides: () => getBrowserConfigOverrides,\n getBrowserID: () => getBrowserID,\n getClientInfo: () => getClientInfo,\n ingestPlayerTracking: () => ingestPlayerTracking,\n initializePolyfills: () => initializePolyfills,\n isMediaStream: () => isMediaStream,\n isTrackingIngestEnabled: () => isTrackingIngestEnabled,\n lazy: () => lazy,\n logBrowserInfo: () => logBrowserInfo,\n merge: () => merge,\n omit: () => omit,\n parseApiFloorLadder: () => parseApiFloorLadder,\n parseQuery: () => parseQuery,\n players: () => players_default,\n randomString: () => randomString,\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds,\n resolveFloorLadderBounds: () => resolveFloorLadderBounds,\n sendAdDetectTracking: () => sendAdDetectTracking,\n sendAdImpressionTracking: () => sendAdImpressionTracking,\n sendAdLoadedTracking: () => sendAdLoadedTracking,\n sendHeartbeat: () => sendHeartbeat,\n sendInitialTracking: () => sendInitialTracking,\n supportsFeature: () => supportsFeature,\n supportsModernJS: () => supportsModernJS,\n supportsWebKitPresentationMode: () => supportsWebKitPresentationMode,\n trackingIngestConfig: () => trackingIngestConfig,\n validateFloorCents: () => validateFloorCents,\n validateFloorLadderConfig: () => validateFloorLadderConfig\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_react = __toESM(require(\"react\"), 1);\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const bridgeDeviceId = validDeviceId(bridgeSignals.deviceId);\n const realDeviceId = bridgeDeviceId || (isCtv ? validDeviceId(readStoredDeviceId()) : void 0) || validDeviceId(platformDevice.deviceId);\n let deviceId = realDeviceId;\n let deviceIdType = (bridgeDeviceId ? bridgeSignals.deviceIdType : void 0) || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeDeviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking();\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n return {\n isCtv: false,\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction validDeviceId(value) {\n return value && !isMacroPlaceholder(value) ? value : void 0;\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nvar pageViewCorrelator;\nfunction getPageViewCorrelator() {\n const key = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n if (!pageViewCorrelator || pageViewCorrelator.key !== key) {\n pageViewCorrelator = { key, value: generateCorrelator() };\n }\n return pageViewCorrelator.value;\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nvar GAM_AD_HOSTS = /* @__PURE__ */ new Set([\n \"pubads.g.doubleclick.net\",\n \"securepubads.g.doubleclick.net\"\n]);\nfunction ensureVideoAdType(rawUrl) {\n try {\n const url = new URL(rawUrl);\n if (!GAM_AD_HOSTS.has(url.hostname)) return rawUrl;\n if (url.searchParams.has(\"ad_type\")) return rawUrl;\n url.searchParams.set(\"ad_type\", \"video\");\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nvar SCVP_MACRO_DETECT = /\\[SCVP-|%5BSCVP-|\\(SCVP-|%28SCVP-/i;\nvar SCVP_MACRO_PATTERN = /\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\)/gi;\nvar SCVP_WHOLE_VALUE_PATTERN = /^\\s*(?:\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\))\\s*$/i;\nvar NESTED_QUERY_PARAM_KEYS = /* @__PURE__ */ new Set([\"cust_params\"]);\nvar SCVP_POD_MACROS = /* @__PURE__ */ new Set([\"PMND\", \"PMXD\", \"PMAD\"]);\nfunction hasScvpMacros(url) {\n return !!url && SCVP_MACRO_DETECT.test(url);\n}\nfunction safeDecode(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return value;\n }\n}\nfunction findScvpMacroNames(url) {\n if (!url) return [];\n const names = /* @__PURE__ */ new Set();\n let text = url;\n for (let pass = 0; pass < 3; pass++) {\n text.replace(SCVP_MACRO_PATTERN, (_m, bracketName, parenName) => {\n names.add(String(bracketName || parenName).toUpperCase());\n return \"\";\n });\n const decoded = safeDecode(text);\n if (decoded === text) break;\n text = decoded;\n }\n return Array.from(names);\n}\nfunction resolveScvpMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (name, value) => {\n if (value == null) return;\n const str = String(value).trim();\n if (str) values.set(name, str);\n };\n const toFlag = (value) => value == null ? void 0 : value ? \"1\" : \"0\";\n const deviceId = ctx.deviceId?.trim();\n const deviceIdType = deviceId ? ctx.deviceIdType?.trim() || inferDeviceIdType() : void 0;\n if (deviceId && deviceIdType) {\n set(\"RDID\", deviceId);\n set(\"IDTYPE\", deviceIdType);\n set(\"IS-LAT\", toFlag(ctx.limitAdTracking) ?? \"0\");\n }\n set(\"SID\", ctx.sessionId);\n set(\"DTH\", ctx.deviceTypeHint);\n set(\"GIVN\", ctx.palNonce);\n set(\"CT-TI\", ctx.programTitle);\n set(\"CT-CH\", ctx.channelName);\n set(\"POD\", ctx.pod);\n set(\"CORRELATOR\", ctx.correlator);\n set(\"SCOR\", ctx.streamCorrelator);\n set(\"VPMUTE\", toFlag(ctx.adWillPlayMuted));\n if (ctx.adWillAutoPlay != null) {\n set(\"VPA\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n set(\"GDPR\", ctx.consent?.gdpr);\n set(\"GDPR-CONSENT\", ctx.consent?.gdprConsent);\n set(\"US-PRIVACY\", ctx.consent?.usPrivacy);\n return values;\n}\nvar keepNone = () => false;\nfunction substituteScvpParams(params, values, unresolved, keep, nested) {\n const out = [];\n const replaceMacro = (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return value;\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n };\n params.forEach((value, key) => {\n const whole = value.match(SCVP_WHOLE_VALUE_PATTERN);\n if (whole) {\n const name = String(whole[1] || whole[2]).toUpperCase();\n const resolved = values.get(name);\n if (resolved != null) {\n out.push([key, resolved]);\n } else if (keep(name)) {\n out.push([key, value]);\n } else {\n unresolved.add(name);\n }\n return;\n }\n if (!SCVP_MACRO_DETECT.test(value)) {\n out.push([key, value]);\n return;\n }\n if (!nested && NESTED_QUERY_PARAM_KEYS.has(key)) {\n const inner = substituteScvpParams(new URLSearchParams(value), values, unresolved, keep, true);\n if (inner.length > 0) {\n out.push([\n key,\n inner.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join(\"&\")\n ]);\n }\n return;\n }\n out.push([key, value.replace(SCVP_MACRO_PATTERN, replaceMacro)]);\n });\n return out;\n}\nfunction substituteScvpMacros(baseUrl, values, keep = keepNone) {\n const unresolved = /* @__PURE__ */ new Set();\n let url;\n try {\n url = new URL(normalizeVastTagUrl(baseUrl));\n } catch {\n const replaced = baseUrl.replace(\n SCVP_MACRO_PATTERN,\n (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n }\n );\n return { url: replaced, unresolved: Array.from(unresolved) };\n }\n const entries = substituteScvpParams(url.searchParams, values, unresolved, keep, false);\n const search = new URLSearchParams();\n for (const [key, value] of entries) search.append(key, value);\n url.search = search.toString();\n return { url: url.toString(), unresolved: Array.from(unresolved) };\n}\nfunction applyScvpMacros(baseUrl, ctx, deferred = /* @__PURE__ */ new Set()) {\n return substituteScvpMacros(baseUrl, resolveScvpMacroValues(ctx), (name) => deferred.has(name));\n}\nfunction stripScvpMacros(url) {\n if (findScvpMacroNames(url).length === 0) return { url, unresolved: [] };\n return substituteScvpMacros(url, /* @__PURE__ */ new Map());\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n } else {\n params.set(\"unviewed_position_start\", \"1\");\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\nfunction fetchConsentSignals(timeoutMs = 1500) {\n const signals = {};\n if (typeof window === \"undefined\") {\n return Promise.resolve(signals);\n }\n const tasks = [];\n const tcfApi = window.__tcfapi;\n if (typeof tcfApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n let settled = false;\n try {\n tcfApi(\"addEventListener\", 2, (tcData, success) => {\n if (settled) return;\n if (success && tcData && (tcData.eventStatus === \"tcloaded\" || tcData.eventStatus === \"useractioncomplete\")) {\n settled = true;\n signals.gdpr = tcData.gdprApplies ? \"1\" : \"0\";\n signals.storageAllowed = tcData.gdprApplies ? tcData.purpose?.consents?.[1] === true : true;\n if (typeof tcData.tcString === \"string\" && tcData.tcString) {\n signals.gdprConsent = tcData.tcString;\n }\n try {\n tcfApi(\"removeEventListener\", 2, () => {\n }, tcData.listenerId);\n } catch {\n }\n resolve();\n }\n });\n } catch {\n resolve();\n }\n setTimeout(() => {\n if (!settled) {\n settled = true;\n resolve();\n }\n }, timeoutMs);\n })\n );\n }\n const uspApi = window.__uspapi;\n if (typeof uspApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n try {\n uspApi(\"getUSPData\", 1, (data, success) => {\n if (success && typeof data?.uspString === \"string\" && data.uspString) {\n signals.usPrivacy = data.uspString;\n }\n resolve();\n });\n } catch {\n resolve();\n }\n setTimeout(resolve, timeoutMs);\n })\n );\n }\n if (tasks.length === 0) {\n return Promise.resolve(signals);\n }\n return Promise.all(tasks).then(() => signals);\n}\n\n// src/player/FloorLadder.ts\nvar DISABLED_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"\",\n minFloorCents: 0,\n maxFloorCents: 0,\n stepCents: 0,\n selectedFloorCents: 0,\n fallbackFloorCents: 0,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [],\n targetAdUnitPath: \"\",\n configurationVersion: \"\"\n});\nvar DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({\n minCents: 25,\n maxCents: 300,\n stepCents: 25\n});\nfunction isInteger(value) {\n return typeof value === \"number\" && Number.isInteger(value);\n}\nfunction generateFloorLevels(minCents, maxCents, stepCents) {\n if (!isInteger(minCents) || !isInteger(maxCents) || !isInteger(stepCents)) return [];\n if (stepCents <= 0 || minCents <= 0 || maxCents < minCents) return [];\n const levels = [];\n for (let cents = minCents; cents <= maxCents; cents += stepCents) {\n levels.push(cents);\n }\n return levels;\n}\nfunction resolveFloorLadderBounds(overrides = {}) {\n return {\n minCents: overrides.minCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.minCents,\n maxCents: overrides.maxCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.maxCents,\n stepCents: overrides.stepCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.stepCents\n };\n}\nfunction validateFloorCents(value, config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n if (!isInteger(value)) return { ok: false, reason: \"not_integer\" };\n if (!(value >= bounds.minCents && value <= bounds.maxCents) || !(value >= config.minFloorCents && value <= config.maxFloorCents)) {\n return { ok: false, reason: \"out_of_range\" };\n }\n const gamLevels = generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents);\n const configLevels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents);\n if (gamLevels.indexOf(value) === -1 || configLevels.indexOf(value) === -1) {\n return { ok: false, reason: \"not_step_multiple\" };\n }\n const ready = Array.isArray(config.readyFloorCents) ? config.readyFloorCents : [];\n if (ready.indexOf(value) === -1) return { ok: false, reason: \"not_ready\" };\n return { ok: true };\n}\nfunction validateFloorLadderConfig(config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n const errors = [];\n if (generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents).length === 0) {\n errors.push(\"invalid_gam_bounds\");\n }\n const levels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents).filter((cents) => validateFloorCents(cents, { ...config, readyFloorCents: [cents] }, bounds).ok);\n if (levels.length === 0) errors.push(\"invalid_level_bounds\");\n if (config.minFloorCents < bounds.minCents || config.maxFloorCents > bounds.maxCents) {\n errors.push(\"level_bounds_outside_gam_ladder\");\n }\n if (!config.targetingKey) errors.push(\"missing_targeting_key\");\n if (config.mode !== \"fixed\") errors.push(`unsupported_mode:${String(config.mode)}`);\n if (!Array.isArray(config.readyFloorCents)) {\n errors.push(\"ready_floor_cents_not_array\");\n } else {\n for (const cents of config.readyFloorCents) {\n const check = validateFloorCents(cents, config, bounds);\n if (!check.ok) errors.push(`ready_floor_invalid:${String(cents)}:${check.reason}`);\n }\n }\n const selected = validateFloorCents(config.selectedFloorCents, config, bounds);\n if (!selected.ok) errors.push(`selected_floor_invalid:${selected.reason}`);\n const fallback = validateFloorCents(config.fallbackFloorCents, config, bounds);\n if (!fallback.ok) errors.push(`fallback_floor_invalid:${fallback.reason}`);\n return { ok: errors.length === 0, levels, errors };\n}\nvar fixedFloorSelector = {\n name: \"fixed\",\n select(config, context) {\n if (config.mode !== \"fixed\") return { source: \"none\", reason: \"unsupported_mode\" };\n const selected = validateFloorCents(config.selectedFloorCents, config, context.bounds);\n if (selected.ok) return { floorCents: config.selectedFloorCents, source: \"selected\" };\n const fallback = validateFloorCents(config.fallbackFloorCents, config, context.bounds);\n if (fallback.ok) {\n return {\n floorCents: config.fallbackFloorCents,\n source: \"fallback\",\n reason: `selected_${selected.reason}`\n };\n }\n return {\n source: \"none\",\n reason: `no_valid_floor:selected_${selected.reason}:fallback_${fallback.reason}`\n };\n }\n};\nfunction resolveOpportunityFloor(config, context, selector = fixedFloorSelector) {\n const base = {\n selector: selector.name,\n position: context.position,\n configurationVersion: String(config.configurationVersion ?? \"\"),\n targetingKey: config.targetingKey,\n targetAdUnitPath: config.targetAdUnitPath\n };\n const skipped = (reason, source = \"none\") => Object.freeze({ ...base, status: \"skipped\", floorCents: void 0, source, reason });\n if (!config.enabled) return skipped(\"disabled\");\n const positions = Array.isArray(config.allowedPositions) ? config.allowedPositions : [];\n if (positions.indexOf(context.position) === -1) return skipped(\"position_not_allowed\");\n if (!config.targetingKey) return skipped(\"missing_targeting_key\");\n if (!config.targetAdUnitPath) return skipped(\"missing_target_ad_unit\");\n let result;\n try {\n result = selector.select(config, context);\n } catch {\n return skipped(\"selector_error\");\n }\n if (result.floorCents == null) return skipped(result.reason ?? \"no_valid_floor\", result.source);\n const check = validateFloorCents(result.floorCents, config, context.bounds);\n if (!check.ok) return skipped(`selector_floor_${check.reason}`);\n return Object.freeze({\n ...base,\n status: \"armed\",\n floorCents: result.floorCents,\n source: result.source,\n reason: result.reason\n });\n}\nfunction decodeQueryComponent(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return void 0;\n }\n}\nfunction mergeCustParams(decoded, key, cents) {\n const prefix = `${key}=`;\n const kept = decoded.split(\"&\").filter((pair) => pair !== \"\" && pair !== key && pair.indexOf(prefix) !== 0);\n kept.push(`${prefix}${cents}`);\n return kept.join(\"&\");\n}\nfunction applyFloorToVastUrl(url, floor) {\n if (floor.status !== \"armed\" || floor.floorCents == null) {\n return { url, applied: false, reason: floor.reason };\n }\n let parsed;\n try {\n parsed = new URL(url);\n } catch {\n return { url, applied: false, reason: \"invalid_url\" };\n }\n if (!GAM_AD_HOSTS.has(parsed.hostname)) {\n return { url, applied: false, reason: \"not_gam_host\" };\n }\n if (parsed.searchParams.get(\"iu\") !== floor.targetAdUnitPath) {\n return { url, applied: false, reason: \"ad_unit_mismatch\" };\n }\n const hashIndex = url.indexOf(\"#\");\n const beforeHash = hashIndex === -1 ? url : url.slice(0, hashIndex);\n const hash = hashIndex === -1 ? \"\" : url.slice(hashIndex);\n const queryIndex = beforeHash.indexOf(\"?\");\n const base = beforeHash.slice(0, queryIndex);\n const segments = beforeHash.slice(queryIndex + 1).split(\"&\");\n const existing = [];\n let insertAt = -1;\n const rest = [];\n for (const segment of segments) {\n const eq = segment.indexOf(\"=\");\n const rawKey = eq === -1 ? segment : segment.slice(0, eq);\n if (decodeQueryComponent(rawKey) === \"cust_params\") {\n if (insertAt === -1) insertAt = rest.length;\n const value = eq === -1 ? \"\" : decodeQueryComponent(segment.slice(eq + 1));\n if (value === void 0) {\n return { url, applied: false, reason: \"malformed_cust_params\" };\n }\n if (value) existing.push(value);\n continue;\n }\n rest.push(segment);\n }\n if (insertAt === -1) insertAt = rest.length;\n const merged = mergeCustParams(existing.join(\"&\"), floor.targetingKey, floor.floorCents);\n rest.splice(insertAt, 0, `cust_params=${encodeURIComponent(merged)}`);\n const query = rest.filter((segment) => segment !== \"\").join(\"&\");\n return { url: `${base}?${query}${hash}`, applied: true, reason: void 0 };\n}\nfunction copyConfig(config) {\n return {\n ...config,\n readyFloorCents: Array.isArray(config.readyFloorCents) ? config.readyFloorCents.slice() : [],\n allowedPositions: Array.isArray(config.allowedPositions) ? config.allowedPositions.slice() : []\n };\n}\nfunction mergeDefined(target, update) {\n const next = copyConfig(target);\n if (!update) return next;\n for (const key of Object.keys(update)) {\n const value = update[key];\n if (value !== void 0) next[key] = value;\n }\n return copyConfig(next);\n}\nvar AD_POSITIONS = [\"preroll\", \"midroll\", \"postroll\"];\nfunction finiteNumber(value) {\n return typeof value === \"number\" && isFinite(value) ? value : void 0;\n}\nfunction parseApiFloorLadder(raw) {\n if (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return void 0;\n const src = raw;\n const out = {};\n if (typeof src.enabled === \"boolean\") out.enabled = src.enabled;\n if (typeof src.targetingKey === \"string\") out.targetingKey = src.targetingKey;\n if (typeof src.targetAdUnitPath === \"string\") out.targetAdUnitPath = src.targetAdUnitPath;\n if (typeof src.configurationVersion === \"string\") out.configurationVersion = src.configurationVersion;\n if (typeof src.mode === \"string\") out.mode = src.mode;\n const min = finiteNumber(src.minFloorCents);\n const max = finiteNumber(src.maxFloorCents);\n const step = finiteNumber(src.stepCents);\n const selected = finiteNumber(src.selectedFloorCents);\n const fallback = finiteNumber(src.fallbackFloorCents);\n if (min !== void 0) out.minFloorCents = min;\n if (max !== void 0) out.maxFloorCents = max;\n if (step !== void 0) out.stepCents = step;\n if (selected !== void 0) out.selectedFloorCents = selected;\n if (fallback !== void 0) out.fallbackFloorCents = fallback;\n if (Array.isArray(src.readyFloorCents)) {\n out.readyFloorCents = src.readyFloorCents.filter(\n (cents) => finiteNumber(cents) !== void 0\n );\n }\n if (Array.isArray(src.allowedPositions)) {\n out.allowedPositions = src.allowedPositions.filter(\n (position) => AD_POSITIONS.indexOf(position) !== -1\n );\n }\n return out;\n}\nvar FloorLadderController = class {\n constructor(selector = fixedFloorSelector) {\n this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;\n this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);\n this.selector = selector;\n }\n isEnabled() {\n return this.config.enabled === true;\n }\n applyApiConfig(raw) {\n const parsed = parseApiFloorLadder(raw);\n this.config = mergeDefined(copyConfig(DISABLED_FLOOR_LADDER_CONFIG), parsed);\n this.bounds = Object.freeze({\n minCents: this.config.minFloorCents,\n maxCents: this.config.maxFloorCents,\n stepCents: this.config.stepCents\n });\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n reset() {\n this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);\n this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;\n }\n get() {\n return copyConfig(this.config);\n }\n getBounds() {\n return { ...this.bounds };\n }\n validate() {\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n setSelector(selector) {\n this.selector = selector;\n }\n snapshotFor(context) {\n return resolveOpportunityFloor(\n copyConfig(this.config),\n { ...context, bounds: this.bounds },\n this.selector\n );\n }\n};\n\n// src/sdk/hlsAdPlayer.ts\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/utils/browserCompat.ts\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS2 = true;\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS2 = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS2 = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS: supportsModernJS2,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction requiresMediaPipelineResetAfterAds() {\n const browser = detectBrowser();\n return browser.name === \"Samsung Tizen\" && (browser.tizenVersion ?? 0) >= 5;\n}\nfunction prefersProgressiveAdMedia() {\n return detectBrowser().isSmartTV;\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n overrides.pauseContentDuringAds = true;\n }\n return overrides;\n}\nfunction supportsModernJS() {\n try {\n return typeof Promise !== \"undefined\" && typeof Map !== \"undefined\" && typeof Set !== \"undefined\" && typeof Array.from !== \"undefined\" && typeof Object.assign !== \"undefined\" && typeof Array.prototype.forEach !== \"undefined\" && typeof String.prototype.includes !== \"undefined\";\n } catch (e) {\n return false;\n }\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n\n// src/utils/vastTrackingMacros.ts\nvar VAST_MACRO_PATTERN = /\\[([A-Z][A-Z0-9_]*)\\]/g;\nvar CACHEBUSTING_ALIASES = /\\[CACHEBUSTER\\]|\\[cachebuster\\]|\\[timestamp\\]|\\[random\\]|\\[INSERT_RANDOM_NUMBER\\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\\$\\{CACHEBUSTER\\}|\\$\\{CACHEBUSTING\\}|\\{cachebuster\\}|\\{random\\}/g;\nvar KNOWN_VAST_MACROS = /* @__PURE__ */ new Set([\n \"ADCATEGORIES\",\n \"ADCOUNT\",\n \"ADPLAYHEAD\",\n \"ADSERVINGID\",\n \"ADTYPE\",\n \"APIFRAMEWORKS\",\n \"APPBUNDLE\",\n \"ASSETURI\",\n \"BLOCKEDADCATEGORIES\",\n \"BREAKMAXADLENGTH\",\n \"BREAKMAXADS\",\n \"BREAKMAXDURATION\",\n \"BREAKMINADLENGTH\",\n \"BREAKPOSITION\",\n \"CACHEBUSTING\",\n \"CLICKPOS\",\n \"CLICKTYPE\",\n \"CLIENTUA\",\n \"CONTENTID\",\n \"CONTENTPLAYHEAD\",\n \"CONTENTURI\",\n \"DEVICEIP\",\n \"DEVICEUA\",\n \"DOMAIN\",\n \"ERRORCODE\",\n \"EXTENSIONS\",\n \"GDPRCONSENT\",\n \"IFA\",\n \"IFATYPE\",\n \"INVENTORYSTATE\",\n \"LATLONG\",\n \"LIMITADTRACKING\",\n \"MEDIAMIME\",\n \"MEDIAPLAYHEAD\",\n \"OMIDPARTNER\",\n \"PAGEURL\",\n \"PLACEMENTTYPE\",\n \"PLAYERCAPABILITIES\",\n \"PLAYERSIZE\",\n \"PLAYERSTATE\",\n \"PODSEQUENCE\",\n \"REASON\",\n \"REGULATIONS\",\n \"SERVERSIDE\",\n \"SERVERUA\",\n \"TIMESTAMP\",\n \"TRANSACTIONID\",\n \"UNIVERSALADID\",\n \"VASTVERSIONS\",\n \"VERIFICATIONVENDORS\"\n]);\nfunction generateCachebuster() {\n return String(Math.floor(Math.random() * 9e7) + 1e7);\n}\nfunction formatPlayhead(seconds) {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return void 0;\n }\n const total = Math.floor(seconds);\n const hh = String(Math.floor(total / 3600)).padStart(2, \"0\");\n const mm = String(Math.floor(total % 3600 / 60)).padStart(2, \"0\");\n const ss = String(total % 60).padStart(2, \"0\");\n const ms = String(Math.floor((seconds - total) * 1e3)).padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\nfunction resolveMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (key, value) => {\n if (value != null && value !== \"\") values.set(key, value);\n };\n const adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);\n set(\"ADPLAYHEAD\", adPlayhead);\n set(\"MEDIAPLAYHEAD\", adPlayhead);\n set(\"CONTENTPLAYHEAD\", formatPlayhead(ctx.contentPlayheadSeconds));\n set(\"ASSETURI\", ctx.assetUri);\n set(\"MEDIAMIME\", ctx.mediaMime);\n set(\"TIMESTAMP\", (/* @__PURE__ */ new Date()).toISOString());\n set(\"SERVERSIDE\", \"0\");\n if (ctx.errorCode != null && ctx.errorCode !== \"\") {\n set(\"ERRORCODE\", String(ctx.errorCode));\n }\n if (ctx.playerWidth != null && ctx.playerHeight != null) {\n set(\"PLAYERSIZE\", `${Math.round(ctx.playerWidth)},${Math.round(ctx.playerHeight)}`);\n }\n set(\"IFA\", ctx.deviceId);\n set(\"IFATYPE\", ctx.deviceIdType);\n if (ctx.limitAdTracking != null) {\n set(\"LIMITADTRACKING\", ctx.limitAdTracking ? \"1\" : \"0\");\n }\n set(\"PAGEURL\", ctx.pageUrl);\n if (ctx.pageUrl) {\n try {\n set(\"DOMAIN\", new URL(ctx.pageUrl).hostname);\n } catch {\n }\n }\n set(\"CLIENTUA\", ctx.clientUa);\n set(\"DEVICEUA\", ctx.clientUa);\n if (ctx.podSequence != null) {\n set(\"PODSEQUENCE\", String(ctx.podSequence));\n }\n set(\"ADSERVINGID\", ctx.adServingId);\n if (ctx.reason != null && ctx.reason !== \"\") {\n set(\"REASON\", String(ctx.reason));\n }\n return values;\n}\nfunction substituteVastTrackingMacros(url, ctx = {}) {\n if (!url) return url;\n const values = resolveMacroValues(ctx);\n return url.replace(CACHEBUSTING_ALIASES, () => generateCachebuster()).replace(VAST_MACRO_PATTERN, (match, name) => {\n if (name === \"CACHEBUSTING\") return generateCachebuster();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n return KNOWN_VAST_MACROS.has(name) ? \"\" : match;\n });\n}\n\n// src/player/OptimizedPodRequest.ts\nvar DEFAULT_REQUEST_SAFETY_MS = 1500;\nvar GAM_AD_OPPORTUNITY_DURATION_MS = 3e4;\nvar POD_PARAM_KEYS = [\"pmnd\", \"pmxd\", \"pmad\"];\nvar POSITIVE_INT = /^[1-9]\\d*$/;\nvar NON_NEGATIVE_INT = /^(0|[1-9]\\d*)$/;\nfunction nonNegativeInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0 ? Math.floor(value) : void 0;\n}\nfunction positiveInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 1 ? Math.floor(value) : void 0;\n}\nfunction resolveAdPodConfig(config) {\n const pod = config.adPodConfig ?? {};\n return {\n requestSafetyMs: nonNegativeInt(pod.requestSafetyMs) ?? DEFAULT_REQUEST_SAFETY_MS,\n minPodDurationMs: nonNegativeInt(pod.minPodDurationMs) ?? 0,\n maxAdsPerBreak: pod.maxAdsPerBreak === void 0 ? positiveInt(config.podMaxAds) : positiveInt(pod.maxAdsPerBreak),\n maxPodDurationMs: positiveInt(pod.maxPodDurationMs) ?? positiveInt(config.podMaxDurationMs),\n exactDuration: config.podExactDuration === true\n };\n}\nfunction measureBreakCapacity(timing, nowMonoMs) {\n const scheduled = timing.scheduledBreakDurationMs;\n if (scheduled == null || !(scheduled > 0) || timing.breakStartMonoMs == null) {\n return void 0;\n }\n const endMonoMs = timing.breakEndMonoMs ?? timing.breakStartMonoMs + scheduled;\n const untilEnd = Math.min(scheduled, endMonoMs - nowMonoMs);\n const unplayed = scheduled - Math.max(0, timing.playedDurationMs);\n return {\n scheduledBreakDurationMs: scheduled,\n elapsedBeforeGamRequestMs: Math.max(0, nowMonoMs - timing.breakStartMonoMs),\n remainingAtGamDispatchMs: Math.max(0, Math.min(untilEnd, unplayed))\n };\n}\nfunction resolvePodParams(input) {\n const { capacity, config } = input;\n let pmxd;\n let source;\n if (capacity) {\n pmxd = Math.floor(capacity.remainingAtGamDispatchMs - config.requestSafetyMs);\n source = \"break_remaining\";\n } else if (config.maxPodDurationMs != null) {\n pmxd = config.maxPodDurationMs;\n source = \"configured_cap\";\n } else if (input.tagMaxDurationMs != null) {\n pmxd = input.tagMaxDurationMs;\n source = \"tag_cap\";\n } else {\n return { kind: \"omit\" };\n }\n const minUsable = Math.max(1, Math.floor(input.minUsablePmxdMs));\n if (!Number.isFinite(pmxd) || pmxd < minUsable) {\n return {\n kind: \"abort\",\n reason: capacity ? \"insufficient_break_capacity\" : \"invalid_pod_cap\",\n pmxdCandidateMs: Number.isFinite(pmxd) ? pmxd : 0\n };\n }\n const pmnd = config.exactDuration ? pmxd : Math.min(config.minPodDurationMs, pmxd);\n return { kind: \"send\", params: { pmnd, pmxd, pmad: config.maxAdsPerBreak }, source };\n}\nfunction podRequestAborted(reason, message, diagnostics) {\n const error = new Error(`Optimized pod request not sent (${reason}): ${message}`);\n error.podRequestAborted = true;\n error.reason = reason;\n error.diagnostics = diagnostics;\n return error;\n}\nfunction isPodRequestAbortedError(error) {\n return !!error && error.podRequestAborted === true;\n}\nfunction firstPositiveIntParam(params, key) {\n for (const value of params.getAll(key)) {\n if (POSITIVE_INT.test(value.trim())) return Number(value.trim());\n }\n return void 0;\n}\nfunction isOptimizedPodUrl(url) {\n if (findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name))) return true;\n try {\n const params = new URL(url).searchParams;\n return POD_PARAM_KEYS.some((key) => params.has(key));\n } catch {\n return false;\n }\n}\nfunction finalizeGamRequestUrl(rawUrl, ctx, nowEpochMs = Date.now()) {\n const optimizedPod = isOptimizedPodUrl(rawUrl);\n const capacity = ctx.capacity;\n const base = {\n breakId: ctx.breakId,\n optimizedPod,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs\n };\n let decision = { kind: \"omit\" };\n if (optimizedPod) {\n let tagMaxDurationMs;\n try {\n tagMaxDurationMs = firstPositiveIntParam(new URL(rawUrl).searchParams, \"pmxd\");\n } catch {\n }\n decision = resolvePodParams({\n capacity,\n config: ctx.config,\n minUsablePmxdMs: ctx.minUsablePmxdMs,\n tagMaxDurationMs\n });\n if (decision.kind === \"abort\") {\n throw podRequestAborted(\n decision.reason,\n `pmxd would be ${decision.pmxdCandidateMs}ms (minimum ${ctx.minUsablePmxdMs}ms)`,\n base\n );\n }\n }\n const pod = decision.kind === \"send\" ? decision.params : void 0;\n const values = /* @__PURE__ */ new Map();\n if (pod) {\n values.set(\"PMND\", String(pod.pmnd));\n values.set(\"PMXD\", String(pod.pmxd));\n if (pod.pmad != null) values.set(\"PMAD\", String(pod.pmad));\n }\n const substituted = substituteScvpMacros(rawUrl, values);\n let finalUrl;\n try {\n const url = new URL(normalizeVastTagUrl(substituted.url));\n if (pod) {\n url.searchParams.set(\"pmnd\", String(pod.pmnd));\n url.searchParams.set(\"pmxd\", String(pod.pmxd));\n if (pod.pmad != null) url.searchParams.set(\"pmad\", String(pod.pmad));\n else url.searchParams.delete(\"pmad\");\n } else {\n for (const key of POD_PARAM_KEYS) url.searchParams.delete(key);\n }\n finalUrl = url.toString();\n } catch {\n throw podRequestAborted(\"invalid_url\", \"GAM request URL could not be parsed\", base);\n }\n const problems = validateGamRequestUrl(finalUrl, {\n optimizedPod: !!pod,\n remainingMs: decision.kind === \"send\" && decision.source === \"break_remaining\" ? capacity?.remainingAtGamDispatchMs : void 0\n });\n if (problems.length > 0) {\n throw podRequestAborted(\"invalid_url\", problems.join(\"; \"), base);\n }\n let givn = null;\n try {\n givn = new URL(finalUrl).searchParams.get(\"givn\");\n } catch {\n }\n return {\n url: finalUrl,\n diagnostics: {\n breakId: ctx.breakId,\n optimizedPod: !!pod,\n pmxdSource: decision.kind === \"send\" ? decision.source : void 0,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs,\n pmndSent: pod?.pmnd,\n pmxdSent: pod?.pmxd,\n pmadSent: pod?.pmad,\n palNoncePresent: !!givn,\n gamRequestDispatchTimestamp: new Date(nowEpochMs).toISOString(),\n strippedMacros: substituted.unresolved.filter((name) => !SCVP_POD_MACROS.has(name))\n }\n };\n}\nfunction validateGamRequestUrl(url, expect) {\n const problems = [];\n const leftover = findScvpMacroNames(url);\n if (leftover.length > 0) problems.push(`unresolved SCVP macros: ${leftover.join(\", \")}`);\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n return problems.concat(\"URL could not be parsed\");\n }\n for (const key of POD_PARAM_KEYS) {\n if (params.getAll(key).length > 1) problems.push(`duplicate ${key}`);\n }\n if (!expect.optimizedPod) {\n for (const key of POD_PARAM_KEYS) {\n if (params.has(key)) problems.push(`${key} present on a non-pod request`);\n }\n return problems;\n }\n const pmxd = params.get(\"pmxd\");\n const pmnd = params.get(\"pmnd\");\n const pmad = params.get(\"pmad\");\n if (pmxd == null || !POSITIVE_INT.test(pmxd)) problems.push(`pmxd must be a positive integer (got ${pmxd})`);\n if (pmnd == null || !NON_NEGATIVE_INT.test(pmnd)) problems.push(`pmnd must be a non-negative integer (got ${pmnd})`);\n if (pmxd != null && pmnd != null && Number(pmnd) > Number(pmxd)) problems.push(\"pmnd exceeds pmxd\");\n if (pmad != null && !POSITIVE_INT.test(pmad)) problems.push(`pmad must be a positive integer or absent (got ${pmad})`);\n if (expect.remainingMs != null && pmxd != null && Number(pmxd) > expect.remainingMs) {\n problems.push(`pmxd ${pmxd} exceeds remaining break ${expect.remainingMs}ms`);\n }\n return problems;\n}\nfunction computePodResponseDiagnostics(pmxdSent, vastAdCount, totalVastCreativeDurationMs) {\n const estimatedUnusedPodMs = Math.max(0, pmxdSent - totalVastCreativeDurationMs);\n return {\n vastAdCount,\n totalVastCreativeDurationMs,\n estimatedUnusedPodMs,\n estimatedUnmatchedCount: Math.floor(estimatedUnusedPodMs / GAM_AD_OPPORTUNITY_DURATION_MS)\n };\n}\n\n// src/sdk/hlsAdPlayer.ts\nvar LINEAR_TRACKING_EVENTS = [\n \"creativeView\",\n \"loaded\",\n \"start\",\n \"firstQuartile\",\n \"midpoint\",\n \"thirdQuartile\",\n \"complete\",\n \"mute\",\n \"unmute\",\n \"pause\",\n \"resume\",\n \"fullscreen\",\n \"exitFullscreen\",\n \"playerExpand\",\n \"playerCollapse\",\n \"notUsed\"\n];\nfunction textOf(el) {\n const value = el?.textContent?.trim();\n return value ? value : void 0;\n}\nfunction parseVastTime(value) {\n if (!value) return void 0;\n const parts = value.trim().split(\":\");\n if (parts.length !== 3) return void 0;\n const [h, m, s] = parts.map((p) => parseFloat(p));\n if (![h, m, s].every((n) => n !== void 0 && Number.isFinite(n))) {\n return void 0;\n }\n return h * 3600 + m * 60 + s;\n}\nfunction parseProgressOffset(offset) {\n if (!offset) return void 0;\n const trimmed = offset.trim();\n if (trimmed.endsWith(\"%\")) {\n const percent = parseFloat(trimmed);\n return Number.isFinite(percent) ? { offsetPercent: percent } : void 0;\n }\n const seconds = parseVastTime(trimmed);\n return seconds !== void 0 ? { offsetSeconds: seconds } : void 0;\n}\nvar MAX_VAST_WRAPPER_DEPTH = 5;\nvar VAST_REQUEST_TIMEOUT_MS = 5e3;\nvar BEACON_TIMEOUT_MS = 3e4;\nvar inFlightBeacons = /* @__PURE__ */ new Set();\nvar VAST_ERROR_MEDIA_DISPLAY = 405;\nvar VAST_ERROR_WRAPPER_TIMEOUT = 301;\nvar VAST_ERROR_WRAPPER_LIMIT = 302;\nvar VAST_ERROR_WRAPPER_NO_ADS = 303;\nvar VAST_ERROR_NO_SUPPORTED_MEDIA = 403;\nvar VERIFICATION_NOT_SUPPORTED_REASON = 2;\nvar VIEWABLE_MIN_VISIBLE_RATIO = 0.5;\nvar VIEWABLE_MIN_CONTINUOUS_S = 2;\nfunction toVastMediaErrorCode(error) {\n switch (error?.code) {\n case 1:\n return 400;\n case 2:\n return 401;\n case 4:\n return 403;\n default:\n return VAST_ERROR_MEDIA_DISPLAY;\n }\n}\nvar gamCredentialsMode = \"include\";\nfunction createHlsAdPlayer(contentVideo, options) {\n let adPlaying = false;\n let originalMutedState = false;\n let originalVolume = Math.max(0, Math.min(1, contentVideo.volume || 1));\n const listeners = /* @__PURE__ */ new Map();\n const mainHlsInstance = options?.mainHlsInstance;\n const AD_CONTAINER_PROP = \"__stormcloudAdContainer\";\n const AD_VIDEO_PROP = \"__stormcloudAdVideo\";\n const FRAME_COUNTER_RELIABLE_PROP = \"__stormcloudFrameCounterReliable\";\n const RVFC_RELIABLE_PROP = \"__stormcloudRvfcReliable\";\n let adVideoElement = contentVideo[AD_VIDEO_PROP] ?? void 0;\n let adHls;\n let adContainerEl = contentVideo[AD_CONTAINER_PROP] ?? void 0;\n let adEventHandlers = [];\n let containerHandlers = [];\n let currentAd;\n let currentAdMediaFile;\n let podAds = [];\n let podIndex = 0;\n const preloadedAds = /* @__PURE__ */ new Map();\n const preloadingAds = /* @__PURE__ */ new Map();\n let destroyed = false;\n let pendingTimeouts = [];\n const STALL_TIMEOUT_MS = 4e3;\n const STALL_CHECK_INTERVAL_MS = 1e3;\n const BLACKFRAME_MIN_PLAYBACK_S = 1.5;\n let stallWatchdogId;\n let lastAdProgressTime = 0;\n let lastAdProgressPosition = 0;\n let sawDecodedVideoFrame = false;\n let videoFrameCallbackHandle;\n let pendingPlayPromise;\n let currentVastTagUrl;\n let funnelContext = {};\n let mediaProbe;\n let lastPodAdElementCount = 0;\n let mediaCandidates = [];\n let mediaCandidateIndex = 0;\n let mediaStartTimerId;\n const MEDIA_START_TIMEOUT_MS = options?.mediaStartTimeoutMs ?? 8e3;\n const VAST_ERROR_MEDIA_TIMEOUT = 402;\n const pendingVastRequests = /* @__PURE__ */ new Set();\n let pendingRequestAbortReason;\n let forcedMuteByAutoplay = false;\n function createTrackingState() {\n return {\n impression: false,\n loaded: false,\n start: false,\n firstQuartile: false,\n midpoint: false,\n thirdQuartile: false,\n complete: false,\n viewabilitySettled: false,\n lastMuted: void 0,\n progressFired: /* @__PURE__ */ new Set()\n };\n }\n let trackingFired = createTrackingState();\n const resolvedAds = /* @__PURE__ */ new Set();\n let viewObserver;\n let visibleRatio = 0;\n let continuousVisibleS = 0;\n let lastViewSampleTime;\n let lastPlayerExpanded = false;\n let documentHandlers = [];\n function emit(event, payload) {\n const set = listeners.get(event);\n if (!set) return;\n for (const fn of Array.from(set)) {\n try {\n fn(payload);\n } catch (error) {\n console.warn(\n `[HlsAdPlayer] Error in event listener for ${event}:`,\n error\n );\n }\n }\n }\n const SENSITIVE_URL_PARAMS = /* @__PURE__ */ new Set([\n \"ppid\",\n \"rdid\",\n \"idtype\",\n \"is_lat\",\n \"ifa\",\n \"idfa\",\n \"aaid\",\n \"uid\",\n \"user_id\",\n \"userid\",\n \"device_id\",\n \"deviceid\",\n \"ip\",\n \"ua\",\n \"gdpr_consent\",\n \"us_privacy\",\n \"gpp\",\n \"addtl_consent\",\n \"cust_params\",\n \"email\"\n ]);\n function redactUrl(url) {\n if (!url) return url;\n try {\n const parsed = new URL(url);\n for (const key of Array.from(parsed.searchParams.keys())) {\n if (SENSITIVE_URL_PARAMS.has(key.toLowerCase())) {\n parsed.searchParams.set(key, \"REDACTED\");\n }\n }\n return parsed.toString();\n } catch {\n return url.split(\"?\")[0];\n }\n }\n function logFunnel(stage, extra = {}) {\n const payload = {\n stage,\n breakId: funnelContext.breakId,\n requestId: funnelContext.requestId,\n controllerId: funnelContext.controllerId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n adId: currentAd?.id,\n podIndex,\n podSize: podAds.length,\n vastUrl: redactUrl(currentVastTagUrl),\n mediaUrl: currentAdMediaFile?.url,\n mediaType: currentAdMediaFile?.type,\n muted: adVideoElement ? adVideoElement.muted : void 0,\n ...extra\n };\n console.log(`[HlsAdPlayer][FUNNEL] ${stage}`, payload);\n emit(\"ad_funnel\", payload);\n }\n function buildTrackingMacroContext(options2 = {}) {\n const { errorCode, reason } = options2;\n const ad = options2.ad ?? currentAd;\n const context = {\n adPlayheadSeconds: adVideoElement?.currentTime,\n contentPlayheadSeconds: contentVideo.currentTime,\n assetUri: currentAdMediaFile?.url,\n mediaMime: currentAdMediaFile?.type,\n playerWidth: adVideoElement?.clientWidth || adContainerEl?.clientWidth,\n playerHeight: adVideoElement?.clientHeight || adContainerEl?.clientHeight\n };\n if (errorCode != null) {\n context.errorCode = errorCode;\n }\n if (typeof navigator !== \"undefined\" && navigator.userAgent) {\n context.clientUa = navigator.userAgent;\n }\n if (typeof location !== \"undefined\" && location.href) {\n context.pageUrl = location.href;\n }\n if (podAds.length > 0) {\n context.podSequence = podIndex + 1;\n }\n if (ad?.adServingId) {\n context.adServingId = ad.adServingId;\n }\n if (reason != null) {\n context.reason = reason;\n }\n return context;\n }\n function fireTrackingPixels(urls, options2) {\n if (!urls || urls.length === 0) return;\n const macroContext = buildTrackingMacroContext(options2);\n urls.forEach((url) => {\n try {\n const trackingUrl = substituteVastTrackingMacros(url, macroContext);\n let trackingHost;\n try {\n trackingHost = new URL(trackingUrl).host;\n } catch {\n logFunnel(\"tracking_url_invalid\", { trackingUrl: redactUrl(trackingUrl) });\n return;\n }\n const unexpanded = trackingUrl.match(/\\[[A-Z_]+\\]/g);\n if (unexpanded) {\n logFunnel(\"tracking_url_unexpanded_macro\", {\n trackingHost,\n macros: Array.from(new Set(unexpanded))\n });\n }\n const img = new Image(1, 1);\n inFlightBeacons.add(img);\n let timeoutId;\n const release = (outcome) => {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n img.onload = null;\n img.onerror = null;\n inFlightBeacons.delete(img);\n console.log(\n `[HlsAdPlayer] Tracking pixel settled (${outcome}): ${trackingHost}`\n );\n if (outcome !== \"load\") {\n logFunnel(\"tracking_request_settled\", { reason: outcome, trackingHost });\n }\n };\n img.onload = () => release(\"load\");\n img.onerror = () => release(\"error\");\n timeoutId = setTimeout(\n () => release(\"timeout\"),\n BEACON_TIMEOUT_MS\n );\n img.src = trackingUrl;\n console.log(`[HlsAdPlayer] Fired tracking pixel: ${trackingHost}`);\n logFunnel(\"tracking_request_created\", {\n trackingHost,\n errorCode: options2?.errorCode\n });\n } catch (error) {\n console.warn(`[HlsAdPlayer] Error firing tracking pixel:`, error);\n }\n });\n }\n function getMainStreamQuality() {\n if (!mainHlsInstance || !mainHlsInstance.levels) {\n return null;\n }\n const currentLevel = mainHlsInstance.currentLevel;\n if (currentLevel === -1 || !mainHlsInstance.levels[currentLevel]) {\n const autoLevel = mainHlsInstance.loadLevel;\n if (autoLevel !== -1 && mainHlsInstance.levels[autoLevel]) {\n const level2 = mainHlsInstance.levels[autoLevel];\n return {\n width: level2.width || 1920,\n height: level2.height || 1080,\n bitrate: level2.bitrate || 5e6\n };\n }\n return null;\n }\n const level = mainHlsInstance.levels[currentLevel];\n return {\n width: level.width || 1920,\n height: level.height || 1080,\n bitrate: level.bitrate || 5e6\n };\n }\n function getMediaTargetQuality() {\n const mainQuality = getMainStreamQuality();\n const dpr = typeof window !== \"undefined\" && window.devicePixelRatio > 0 ? window.devicePixelRatio : 1;\n const containerWidth = (adContainerEl?.clientWidth || contentVideo.clientWidth) * dpr;\n const containerHeight = (adContainerEl?.clientHeight || contentVideo.clientHeight) * dpr;\n if (!mainQuality && !(containerWidth > 0 && containerHeight > 0)) {\n return null;\n }\n const base = mainQuality ?? {\n width: containerWidth,\n height: containerHeight,\n bitrate: 5e6\n };\n const width = containerWidth > 0 ? Math.min(base.width, containerWidth) : base.width;\n const height = containerHeight > 0 ? Math.min(base.height, containerHeight) : base.height;\n return { width, height, bitrate: base.bitrate };\n }\n function rankMediaCandidates(mediaFiles) {\n const probe = adVideoElement ?? document.createElement(\"video\");\n const pageIsHttps = typeof location !== \"undefined\" && location.protocol === \"https:\";\n const target = getMediaTargetQuality();\n const deprioritizeHls = prefersProgressiveAdMedia();\n const accepted = [];\n mediaFiles.forEach((file, index) => {\n const isHls = isHlsMediaFile(file);\n const mimeForProbe = isHls ? \"application/vnd.apple.mpegurl\" : file.type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(mimeForProbe);\n const playable = isHls ? import_hls.default.isSupported() || canPlay2 !== \"\" : canPlay2 !== \"\";\n const insecure = pageIsHttps && /^http:/i.test(file.url);\n const details = {\n index,\n candidateUrl: file.url,\n candidateType: file.type,\n width: file.width,\n height: file.height,\n bitrate: file.bitrate,\n canPlayType: canPlay2,\n hlsJs: isHls ? import_hls.default.isSupported() : void 0\n };\n if (!playable) {\n logFunnel(\"media_candidate\", { ...details, reason: \"rejected\", why: \"cannot_play_type\" });\n return;\n }\n let score = 0;\n if (target) {\n const resolutionDiff = Math.abs(file.width - target.width) + Math.abs(file.height - target.height);\n const bitrateDiff = Math.abs((file.bitrate || 5e3) * 1e3 - target.bitrate);\n score = resolutionDiff * 2 + bitrateDiff / 1e3;\n }\n const deprioritizedHls = deprioritizeHls && isHls;\n accepted.push({ file, score, insecure, deprioritizedHls });\n logFunnel(\"media_candidate\", {\n ...details,\n reason: \"accepted\",\n why: insecure ? \"insecure_http_deprioritized\" : deprioritizedHls ? \"hls_deprioritized_on_tv\" : \"playable\",\n score\n });\n });\n accepted.sort((a, b) => {\n if (a.insecure !== b.insecure) return a.insecure ? 1 : -1;\n if (a.deprioritizedHls !== b.deprioritizedHls) {\n return a.deprioritizedHls ? 1 : -1;\n }\n return a.score - b.score;\n });\n return accepted.map((entry) => entry.file);\n }\n function isHlsMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type === \"application/x-mpegurl\" || type === \"application/vnd.apple.mpegurl\" || type.includes(\"mpegurl\") || url.includes(\".m3u8\");\n }\n function isProgressiveMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type.startsWith(\"video/\") || url.endsWith(\".mp4\") || url.includes(\".mp4?\");\n }\n function isAudioMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = (mediaFile.url.toLowerCase().split(\"?\")[0] || \"\").trim();\n return type.startsWith(\"audio/\") || url.endsWith(\".mp3\") || url.endsWith(\".aac\") || url.endsWith(\".m4a\") || url.endsWith(\".ogg\") || url.endsWith(\".oga\") || url.endsWith(\".opus\") || url.endsWith(\".wav\") || url.endsWith(\".weba\");\n }\n function getMediaProbe() {\n if (adVideoElement) return adVideoElement;\n if (!mediaProbe && typeof document !== \"undefined\") {\n mediaProbe = document.createElement(\"video\");\n }\n return mediaProbe;\n }\n function evaluateMediaFile(mf) {\n const type = mf.getAttribute(\"type\") || \"\";\n const url = mf.textContent?.trim() || \"\";\n const delivery = mf.getAttribute(\"delivery\") || void 0;\n const codec = mf.getAttribute(\"codec\") || void 0;\n if (!url) {\n return { category: \"missing_media\", whyRejected: \"empty_url\", canPlayType: \"\" };\n }\n const apiFramework = (mf.getAttribute(\"apiFramework\") || \"\").toUpperCase();\n if (apiFramework === \"VPAID\") {\n return { category: \"vpaid\", whyRejected: \"vpaid_not_supported\", canPlayType: \"\" };\n }\n try {\n const protocol = new URL(url).protocol;\n if (protocol !== \"https:\" && protocol !== \"http:\") {\n return { category: \"invalid_url\", whyRejected: `protocol_${protocol}`, canPlayType: \"\" };\n }\n } catch {\n return { category: \"invalid_url\", whyRejected: \"unparseable_url\", canPlayType: \"\" };\n }\n const bitrateAttr = mf.getAttribute(\"bitrate\");\n const bitrateValue = bitrateAttr ? parseInt(bitrateAttr, 10) : void 0;\n const file = {\n url,\n type,\n width: parseInt(mf.getAttribute(\"width\") || \"1920\", 10),\n height: parseInt(mf.getAttribute(\"height\") || \"1080\", 10),\n bitrate: bitrateValue && bitrateValue > 0 ? bitrateValue : void 0,\n delivery,\n codec\n };\n if (isAudioMediaFile(file)) {\n return {\n category: \"audio_only\",\n whyRejected: type.toLowerCase().startsWith(\"audio/\") ? \"audio_mime\" : \"audio_extension\",\n canPlayType: \"\"\n };\n }\n const isHls = isHlsMediaFile(file);\n const hasExplicitDimensions = mf.getAttribute(\"width\") != null && mf.getAttribute(\"height\") != null;\n if (!isHls && hasExplicitDimensions && (file.width <= 1 || file.height <= 1)) {\n return { category: \"audio_only\", whyRejected: \"zero_dimensions\", canPlayType: \"\" };\n }\n const probe = getMediaProbe();\n if (isHls) {\n const nativeHls = probe?.canPlayType(\"application/vnd.apple.mpegurl\") ?? \"\";\n if (import_hls.default.isSupported()) {\n return { file, whyAccepted: \"hls_js\", canPlayType: nativeHls };\n }\n if (nativeHls !== \"\") {\n return { file, whyAccepted: \"native_hls\", canPlayType: nativeHls };\n }\n return { category: \"unsupported_hls\", whyRejected: \"no_hls_support\", canPlayType: nativeHls };\n }\n if (!isProgressiveMediaFile(file)) {\n return { category: \"unsupported_mime\", whyRejected: \"not_a_video_mime\", canPlayType: \"\" };\n }\n if (!probe) {\n return { file, whyAccepted: \"no_probe_available\", canPlayType: \"\" };\n }\n const baseType = type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(baseType);\n if (canPlay2 === \"\") {\n return { category: \"unsupported_mime\", whyRejected: \"canPlayType_empty\", canPlayType: canPlay2 };\n }\n if (codec) {\n const withCodec = probe.canPlayType(`${baseType}; codecs=\"${codec}\"`);\n if (withCodec === \"\") {\n return { category: \"unsupported_codec\", whyRejected: \"codec_canPlayType_empty\", canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${withCodec}`, canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${canPlay2}`, canPlayType: canPlay2 };\n }\n function collectVideoMediaFiles(linear, verbose, stats) {\n const mediaFileElements = linear.querySelectorAll(\n \":scope > MediaFiles > MediaFile\"\n );\n const mediaFiles = [];\n if (stats) stats.total += mediaFileElements.length;\n if (verbose) {\n console.log(\n `[HlsAdPlayer] Found ${mediaFileElements.length} MediaFile element(s) in VAST XML`\n );\n }\n mediaFileElements.forEach((mf, index) => {\n const result = evaluateMediaFile(mf);\n const url = mf.textContent?.trim() || \"\";\n const accepted = \"file\" in result;\n logFunnel(\"mediafile_evaluated\", {\n reason: accepted ? \"accepted\" : result.category,\n index,\n type: mf.getAttribute(\"type\") || \"\",\n delivery: mf.getAttribute(\"delivery\") || void 0,\n codec: mf.getAttribute(\"codec\") || void 0,\n apiFramework: mf.getAttribute(\"apiFramework\") || void 0,\n width: mf.getAttribute(\"width\"),\n height: mf.getAttribute(\"height\"),\n fileUrl: redactUrl(url),\n canPlayType: result.canPlayType,\n whyAccepted: accepted ? result.whyAccepted : void 0,\n whyRejected: accepted ? void 0 : result.whyRejected\n });\n if (\"file\" in result) {\n mediaFiles.push(result.file);\n return;\n }\n if (stats) {\n stats.categories[result.category] = (stats.categories[result.category] ?? 0) + 1;\n }\n if (result.category === \"audio_only\") {\n console.warn(\n `[HlsAdPlayer] MediaFile ${index} skipped (audio-only: ${result.whyRejected}, type=\"${mf.getAttribute(\"type\") || \"\"}\") \\u2014 audio-only ads are not played on video inventory`\n );\n }\n });\n return mediaFiles;\n }\n function createEmptyTrackingUrls() {\n const urls = {\n impression: [],\n clickTracking: [],\n error: [],\n viewable: [],\n notViewable: [],\n viewUndetermined: [],\n verificationNotExecuted: [],\n progress: []\n };\n for (const event of LINEAR_TRACKING_EVENTS) {\n urls[event] = [];\n }\n return urls;\n }\n function pushUrls(target, elements) {\n elements.forEach((el) => {\n const url = textOf(el);\n if (url) target.push(url);\n });\n }\n function collectLinearTracking(linear, into) {\n linear.querySelectorAll(\":scope > TrackingEvents > Tracking\").forEach((el) => {\n const event = el.getAttribute(\"event\");\n const url = textOf(el);\n if (!event || !url) return;\n if (event === \"progress\") {\n const offset = parseProgressOffset(el.getAttribute(\"offset\"));\n if (offset) into.progress.push({ url, ...offset });\n return;\n }\n if (LINEAR_TRACKING_EVENTS.indexOf(event) !== -1) {\n into[event].push(url);\n }\n });\n pushUrls(\n into.clickTracking,\n linear.querySelectorAll(\":scope > VideoClicks > ClickTracking\")\n );\n }\n function collectAdLevelTracking(adBody, into) {\n pushUrls(into.impression, adBody.querySelectorAll(\":scope > Impression\"));\n pushUrls(into.error, adBody.querySelectorAll(\":scope > Error\"));\n pushUrls(\n into.viewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > Viewable\")\n );\n pushUrls(\n into.notViewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > NotViewable\")\n );\n pushUrls(\n into.viewUndetermined,\n adBody.querySelectorAll(\":scope > ViewableImpression > ViewUndetermined\")\n );\n adBody.querySelectorAll(\n ':scope > AdVerifications > Verification, :scope > Extensions > Extension[type=\"AdVerifications\"] > AdVerifications > Verification'\n ).forEach((verification) => {\n pushUrls(\n into.verificationNotExecuted,\n verification.querySelectorAll(\n ':scope > TrackingEvents > Tracking[event=\"verificationNotExecuted\"]'\n )\n );\n });\n }\n function mergeTrackingUrls(target, source) {\n const targetLists = target;\n const sourceLists = source;\n for (const key of Object.keys(targetLists)) {\n const incoming = sourceLists[key];\n if (incoming && incoming.length > 0) {\n targetLists[key] = targetLists[key].concat(incoming);\n }\n }\n return target;\n }\n function parseXml(xmlString) {\n const xmlDoc = new DOMParser().parseFromString(xmlString, \"text/xml\");\n const parserError = xmlDoc.querySelector(\"parsererror\");\n if (parserError) {\n console.error(\n \"[HlsAdPlayer] XML parsing error (malformed VAST XML):\",\n parserError.textContent\n );\n return null;\n }\n return xmlDoc;\n }\n function getAdSequence(adElement) {\n const sequence = parseInt(adElement.getAttribute(\"sequence\") || \"\", 10);\n return Number.isFinite(sequence) ? sequence : void 0;\n }\n function emptyVastResult(root) {\n const errorUrls = [];\n pushUrls(errorUrls, root.querySelectorAll(\":scope > Error\"));\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_WRAPPER_NO_ADS };\n }\n function parseVastXml(xmlString) {\n try {\n const xmlDoc = parseXml(xmlString);\n if (!xmlDoc) return { type: \"empty\" };\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No Ad element found in VAST ${root.getAttribute(\"version\") ?? \"\"} response`\n );\n return emptyVastResult(root);\n }\n const ordered = [\n ...adElements.filter((el) => getAdSequence(el) === void 0),\n ...adElements.filter((el) => getAdSequence(el) !== void 0)\n ];\n let firstEmpty;\n for (const [index, adElement] of ordered.entries()) {\n const parsed = parseAdElement(adElement, true);\n if (parsed.type === \"empty\") {\n firstEmpty ?? (firstEmpty = parsed);\n continue;\n }\n if (index > 0) {\n logFunnel(\"vast_ad_fallback\", {\n usedAdIndex: index,\n adCount: ordered.length\n });\n }\n if (parsed.type === \"wrapper\") {\n console.log(\n `[HlsAdPlayer] VAST wrapper detected, following VASTAdTagURI: ${redactUrl(parsed.vastAdTagUri)}`\n );\n }\n return parsed;\n }\n return firstEmpty ?? emptyVastResult(root);\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing VAST XML:\", error);\n return { type: \"empty\" };\n }\n }\n function parseAdElement(adElement, verbose = false) {\n try {\n const wrapper = adElement.querySelector(\":scope > Wrapper\");\n if (wrapper) {\n const vastAdTagUri = textOf(\n wrapper.querySelector(\":scope > VASTAdTagURI\")\n );\n if (!vastAdTagUri) {\n console.warn(\"[HlsAdPlayer] <Wrapper> has no VASTAdTagURI\");\n return { type: \"empty\" };\n }\n const trackingUrls2 = createEmptyTrackingUrls();\n collectAdLevelTracking(wrapper, trackingUrls2);\n wrapper.querySelectorAll(\":scope > Creatives > Creative > Linear\").forEach((linear2) => collectLinearTracking(linear2, trackingUrls2));\n return {\n type: \"wrapper\",\n vastAdTagUri,\n trackingUrls: trackingUrls2,\n rules: {\n followAdditionalWrappers: wrapper.getAttribute(\"followAdditionalWrappers\") !== \"false\"\n }\n };\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) {\n console.warn(\"[HlsAdPlayer] <Ad> has neither <InLine> nor <Wrapper>\");\n return { type: \"empty\" };\n }\n const errorUrls = [];\n pushUrls(errorUrls, inLine.querySelectorAll(\":scope > Error\"));\n if (adElement.getAttribute(\"conditionalAd\") === \"true\") {\n console.warn(\"[HlsAdPlayer] Skipping conditional <Ad> (VPAID-only)\");\n logFunnel(\"vast_no_supported_media\", { reason: \"vpaid\", conditionalAd: true });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n let linear;\n let mediaFiles = [];\n const rejectStats = { total: 0, categories: {} };\n for (const candidate of Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear\")\n )) {\n const files = collectVideoMediaFiles(candidate, verbose, rejectStats);\n if (files.length > 0) {\n linear = candidate;\n mediaFiles = files;\n break;\n }\n }\n if (!linear) {\n console.warn(\"[HlsAdPlayer] No supported linear media files in <Ad>\");\n let reason = \"missing_media\";\n let top = 0;\n for (const category of Object.keys(rejectStats.categories)) {\n const count = rejectStats.categories[category] ?? 0;\n if (count > top) {\n top = count;\n reason = category;\n }\n }\n if (rejectStats.total > 0 && top === 0) reason = \"other\";\n logFunnel(\"vast_no_supported_media\", {\n reason,\n mediaFileCount: rejectStats.total,\n rejectedByCategory: rejectStats.categories\n });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n const trackingUrls = createEmptyTrackingUrls();\n collectAdLevelTracking(inLine, trackingUrls);\n collectLinearTracking(linear, trackingUrls);\n return {\n type: \"inline\",\n ad: {\n id: adElement.getAttribute(\"id\") || \"unknown\",\n title: textOf(inLine.querySelector(\":scope > AdTitle\")) || \"Ad\",\n duration: parseVastTime(textOf(linear.querySelector(\":scope > Duration\"))) ?? 30,\n mediaFiles,\n trackingUrls,\n clickThrough: textOf(\n linear.querySelector(\":scope > VideoClicks > ClickThrough\")\n ),\n adServingId: textOf(inLine.querySelector(\":scope > AdServingId\"))\n }\n };\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing <Ad> element:\", error);\n return { type: \"empty\" };\n }\n }\n async function fetchVastXml(vastTagUrl, credentials = \"include\", kind = \"gam\", finalizeRequestUrl) {\n if (destroyed) {\n throw new Error(\"VAST request skipped: ad player destroyed\");\n }\n const controller = typeof AbortController !== \"undefined\" ? new AbortController() : void 0;\n if (controller) pendingVastRequests.add(controller);\n const timeoutId = controller ? setTimeout(() => controller.abort(), VAST_REQUEST_TIMEOUT_MS) : void 0;\n const startedAt = Date.now();\n let attempt = 0;\n const resolveDispatchUrl = () => {\n if (kind === \"wrapper\") return vastTagUrl;\n if (finalizeRequestUrl) return finalizeRequestUrl(vastTagUrl, attempt);\n const { url, unresolved } = stripScvpMacros(vastTagUrl);\n if (unresolved.length > 0) {\n console.warn(\"[HlsAdPlayer] Removed unresolved SCVP macros before dispatch:\", unresolved.join(\", \"));\n }\n return url;\n };\n const requestVast = async (creds) => {\n attempt++;\n const pending = fetch(resolveDispatchUrl(), {\n mode: \"cors\",\n credentials: creds,\n headers: {\n \"Accept\": \"application/xml, text/xml, */*\"\n },\n referrerPolicy: \"no-referrer-when-downgrade\",\n ...controller ? { signal: controller.signal } : {}\n });\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_http_request_sent`, { attempt, credentials: creds });\n }\n const response = await pending;\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_response_received`, {\n attempt,\n httpStatus: response.status,\n ok: response.ok,\n elapsedMs: Date.now() - startedAt\n });\n }\n return response;\n };\n try {\n let response;\n try {\n response = await requestVast(credentials);\n } catch (error) {\n if (kind === \"gam\" && !controller?.signal.aborted && !isPodRequestAbortedError(error)) {\n gamCredentialsMode = credentials === \"include\" ? \"omit\" : \"include\";\n console.warn(\n `[HlsAdPlayer] GAM fetch failed with credentials=\"${credentials}\"; next GAM request will use credentials=\"${gamCredentialsMode}\":`,\n error\n );\n logFunnel(\"gam_credentials_mode_changed\", {\n from: credentials,\n to: gamCredentialsMode,\n errorMessage: error?.message\n });\n }\n throw error;\n }\n if (!response.ok) {\n throw new Error(\n `Failed to fetch VAST: HTTP ${response.status} ${response.statusText}`\n );\n }\n return await response.text();\n } catch (error) {\n if (controller?.signal.aborted) {\n if (pendingRequestAbortReason) {\n throw new Error(`${pendingRequestAbortReason}: ${vastTagUrl}`);\n }\n throw new Error(\n `VAST request timeout after ${VAST_REQUEST_TIMEOUT_MS}ms: ${vastTagUrl}`\n );\n }\n throw error;\n } finally {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n if (controller) pendingVastRequests.delete(controller);\n }\n }\n async function fetchAndParseVastAd(vastTagUrl, depth = 0, accumulatedTracking = createEmptyTrackingUrls(), rules = { followAdditionalWrappers: true }) {\n if (destroyed) return null;\n let vastXml;\n const fetchStartedAt = Date.now();\n try {\n vastXml = await fetchVastXml(\n vastTagUrl,\n depth === 0 ? \"include\" : \"omit\",\n depth === 0 ? \"gam\" : \"wrapper\"\n );\n } catch (error) {\n if (depth === 0) throw error;\n console.warn(\"[HlsAdPlayer] Wrapped VAST request failed:\", error);\n logFunnel(\"wrapper_fetch\", {\n reason: \"failure\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt,\n errorMessage: error?.message\n });\n if (!destroyed) {\n fireTrackingPixels(accumulatedTracking.error, {\n errorCode: VAST_ERROR_WRAPPER_TIMEOUT\n });\n }\n return null;\n }\n if (destroyed) return null;\n if (depth > 0) {\n logFunnel(\"wrapper_fetch\", {\n reason: \"success\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt\n });\n }\n console.log(`[HlsAdPlayer] VAST XML received (length=${vastXml.length})`);\n const parsed = parseVastXml(vastXml);\n if (parsed.type === \"empty\") {\n fireTrackingPixels(\n (parsed.errorUrls ?? []).concat(accumulatedTracking.error),\n { errorCode: parsed.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS }\n );\n return null;\n }\n if (parsed.type === \"wrapper\") {\n if (depth >= MAX_VAST_WRAPPER_DEPTH || !rules.followAdditionalWrappers) {\n console.warn(\n rules.followAdditionalWrappers ? `[HlsAdPlayer] VAST wrapper depth limit (${MAX_VAST_WRAPPER_DEPTH}) reached, aborting redirect chain` : '[HlsAdPlayer] Parent wrapper set followAdditionalWrappers=\"false\"; rejecting nested wrapper'\n );\n fireTrackingPixels(\n accumulatedTracking.error.concat(parsed.trackingUrls.error),\n { errorCode: VAST_ERROR_WRAPPER_LIMIT }\n );\n return null;\n }\n mergeTrackingUrls(accumulatedTracking, parsed.trackingUrls);\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n depth + 1,\n accumulatedTracking,\n parsed.rules\n );\n }\n mergeTrackingUrls(parsed.ad.trackingUrls, accumulatedTracking);\n logFunnel(\"inline_resolved\", { depth });\n return parsed.ad;\n }\n function isEdgeEmptySentinelAd(adElement) {\n if ((adElement.getAttribute(\"id\") || \"\").trim().toLowerCase() === \"empty\") {\n return true;\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) return false;\n if (/^no ad available$/i.test(textOf(inLine.querySelector(\":scope > AdTitle\")) ?? \"\")) {\n return true;\n }\n const durations = Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear > Duration\")\n ).map((el) => parseVastTime(textOf(el)));\n return durations.length > 0 && durations.every((seconds) => seconds === 0);\n }\n async function fetchAndParsePod(vastTagUrl, source = \"gam\", finalizeRequestUrl) {\n lastPodAdElementCount = 0;\n const isEdge = source === \"edge\";\n const vastXml = await fetchVastXml(\n vastTagUrl,\n isEdge ? \"omit\" : gamCredentialsMode,\n source,\n finalizeRequestUrl\n );\n if (destroyed) return [];\n console.log(\n `[HlsAdPlayer] Pod VAST XML received (length=${vastXml.length})`\n );\n const trimmedXml = vastXml.trim();\n if (trimmedXml.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Pod VAST response body is empty (no fill)\"\n );\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"empty_body\" });\n return [];\n }\n const xmlDoc = parseXml(vastXml);\n if (!xmlDoc) {\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"xml_parse_error\" });\n return [];\n }\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n logFunnel(\"vast_parsed\", {\n reason: adElements.length > 0 ? \"has_ads\" : \"no_ads\",\n vastVersion: root.getAttribute(\"version\") ?? void 0,\n adElementCount: adElements.length,\n inlineCount: adElements.filter((el) => el.querySelector(\":scope > InLine\")).length,\n wrapperCount: adElements.filter((el) => el.querySelector(\":scope > Wrapper\")).length\n });\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No <Ad> elements in VAST ${root.getAttribute(\"version\") ?? \"\"} pod response (no fill)`\n );\n const empty = emptyVastResult(root);\n if (empty.type === \"empty\" && empty.errorUrls?.length) {\n fireTrackingPixels(empty.errorUrls, {\n errorCode: empty.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS\n });\n }\n return [];\n }\n const resolveAd = async (adElement) => {\n const parsed = parseAdElement(adElement);\n if (parsed.type === \"inline\") {\n logFunnel(\"inline_resolved\", { depth: 0 });\n return parsed.ad;\n }\n if (parsed.type === \"wrapper\") {\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n 1,\n parsed.trackingUrls,\n parsed.rules\n );\n }\n if (parsed.errorUrls?.length) {\n fireTrackingPixels(parsed.errorUrls, {\n errorCode: parsed.errorCode ?? VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n }\n return null;\n };\n let candidates = adElements;\n if (isEdge) {\n candidates = adElements.filter((el) => !isEdgeEmptySentinelAd(el));\n if (candidates.length < adElements.length) {\n logFunnel(\"edge_empty_sentinel\", {\n sentinelCount: adElements.length - candidates.length,\n adElementCount: adElements.length\n });\n }\n }\n const podElements = candidates.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = candidates.filter((el) => getAdSequence(el) === void 0);\n const resolveAll = (elements) => Promise.all(elements.map((el) => resolveAd(el).catch(() => null)));\n const ads = [];\n if (podElements.length === 0) {\n for (const ad of await resolveAll(buffet)) {\n if (ad) ads.push(ad);\n }\n } else {\n for (let ad of await resolveAll(podElements)) {\n while (!ad && buffet.length > 0) {\n ad = await resolveAd(buffet.shift()).catch(() => null);\n }\n if (ad) ads.push(ad);\n }\n }\n console.log(\n `[HlsAdPlayer] Parsed ${ads.length} ad(s) from VAST ${root.getAttribute(\"version\") ?? \"\"} pod response`\n );\n lastPodAdElementCount = adElements.length;\n return isEdge ? ads.filter((ad) => ad.duration > 0) : ads;\n }\n function createAdVideoElement() {\n const video = document.createElement(\"video\");\n video.style.position = \"absolute\";\n video.style.left = \"0\";\n video.style.top = \"0\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.objectFit = \"contain\";\n video.style.backgroundColor = \"#000\";\n video.playsInline = true;\n video.muted = false;\n video.volume = 1;\n console.log(\n `[HlsAdPlayer] Created ad video element with volume ${video.volume}`\n );\n return video;\n }\n function setupAdEventListeners() {\n if (!adVideoElement || !currentAd) return;\n if (adEventHandlers.length > 0) return;\n const onTimeUpdate = () => {\n if (!currentAd || !adVideoElement) return;\n noteAdProgress();\n sampleViewability();\n const currentTime = adVideoElement.currentTime;\n if (trackingFired.start) {\n for (const event of currentAd.trackingUrls.progress) {\n if (trackingFired.progressFired.has(event)) continue;\n const threshold = event.offsetSeconds ?? (event.offsetPercent ?? 0) / 100 * currentAd.duration;\n if (currentTime >= threshold) {\n trackingFired.progressFired.add(event);\n fireTrackingPixels([event.url]);\n }\n }\n }\n if (!(currentAd.duration > 0)) return;\n const progress = currentTime / currentAd.duration;\n if (progress >= 0.25 && !trackingFired.firstQuartile) {\n trackingFired.firstQuartile = true;\n logFunnel(\"first_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.firstQuartile);\n }\n if (progress >= 0.5 && !trackingFired.midpoint) {\n trackingFired.midpoint = true;\n logFunnel(\"midpoint\");\n fireTrackingPixels(currentAd.trackingUrls.midpoint);\n }\n if (progress >= 0.75 && !trackingFired.thirdQuartile) {\n trackingFired.thirdQuartile = true;\n logFunnel(\"third_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.thirdQuartile);\n }\n };\n const onLoadedMetadata = () => {\n if (!adPlaying || !adVideoElement) return;\n const { videoWidth, videoHeight } = adVideoElement;\n if (videoWidth <= 1 || videoHeight <= 1) {\n console.warn(\n `[HlsAdPlayer] Ad creative has no usable video dimensions (${videoWidth}x${videoHeight}) - skipping this creative`\n );\n handleVideoDecodeFailure();\n }\n };\n const onCanPlay = () => {\n if (!currentAd || trackingFired.loaded) return;\n trackingFired.loaded = true;\n fireTrackingPixels(currentAd.trackingUrls.loaded);\n };\n const onPlaying = () => {\n startStallWatchdog();\n if (!currentAd || !adVideoElement) return;\n if (!trackingFired.impression) {\n trackingFired.impression = true;\n resolvedAds.add(currentAd);\n logFunnel(\"playing\", {\n mutedByAutoplay: forcedMuteByAutoplay,\n candidateIndex: mediaCandidateIndex\n });\n logFunnel(\"impression_fired\", {\n pixelCount: currentAd.trackingUrls.impression.length\n });\n if (currentAd.trackingUrls.impression.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Ad started but VAST contained no <Impression> URLs - GAM will not count it\"\n );\n }\n fireTrackingPixels(currentAd.trackingUrls.impression);\n fireTrackingPixels(currentAd.trackingUrls.creativeView);\n fireTrackingPixels(currentAd.trackingUrls.verificationNotExecuted, {\n reason: VERIFICATION_NOT_SUPPORTED_REASON\n });\n emit(\"ad_impression\", {\n adId: currentAd.id,\n index: podIndex,\n total: podAds.length || 1\n });\n }\n if (trackingFired.start) return;\n trackingFired.start = true;\n trackingFired.lastMuted = adVideoElement.muted || adVideoElement.volume === 0;\n fireTrackingPixels(currentAd.trackingUrls.start);\n console.log(\"[HlsAdPlayer] Ad started playing\");\n };\n const onEnded = () => {\n if (!currentAd || trackingFired.complete) return;\n sampleViewability();\n settleViewability();\n trackingFired.complete = true;\n logFunnel(\"complete\");\n fireTrackingPixels(currentAd.trackingUrls.complete);\n console.log(\"[HlsAdPlayer] Ad completed\");\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdComplete();\n };\n const onError = (e) => {\n if (!adPlaying) return;\n console.error(\"[HlsAdPlayer] Ad video error:\", e);\n const vastErrorCode = toVastMediaErrorCode(adVideoElement?.error);\n logFunnel(\"media_error\", {\n mediaErrorCode: adVideoElement?.error?.code,\n errorMessage: adVideoElement?.error?.message,\n networkState: adVideoElement?.networkState,\n readyState: adVideoElement?.readyState,\n currentSrc: adVideoElement?.currentSrc,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n };\n const onMediaDiagnostic = (event) => {\n if (!adPlaying || !adVideoElement || trackingFired.impression) return;\n if (!adVideoElement.currentSrc) return;\n logFunnel(\"media_event\", {\n reason: event.type,\n readyState: adVideoElement.readyState,\n networkState: adVideoElement.networkState,\n currentSrc: adVideoElement.currentSrc\n });\n };\n const onVolumeChange = () => {\n if (!currentAd || !adVideoElement) return;\n if (forcedMuteByAutoplay && !adVideoElement.muted) {\n const userActivation = navigator.userActivation;\n if (userActivation && !userActivation.isActive) {\n logFunnel(\"unexpected_unmute\", { paused: adVideoElement.paused });\n }\n forcedMuteByAutoplay = false;\n }\n const muted = adVideoElement.muted || adVideoElement.volume === 0;\n if (!trackingFired.start) {\n trackingFired.lastMuted = muted;\n return;\n }\n if (muted === trackingFired.lastMuted) return;\n trackingFired.lastMuted = muted;\n fireTrackingPixels(\n muted ? currentAd.trackingUrls.mute : currentAd.trackingUrls.unmute\n );\n };\n const isTrackablePlayback = () => adPlaying && !!currentAd && !!adVideoElement && trackingFired.start && !trackingFired.complete && !adVideoElement.ended;\n const onPause = () => {\n continuousVisibleS = 0;\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.pause);\n }\n };\n const onPlay = () => {\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.resume);\n }\n };\n adEventHandlers = [\n { type: \"timeupdate\", handler: onTimeUpdate },\n { type: \"loadedmetadata\", handler: onLoadedMetadata },\n { type: \"canplay\", handler: onCanPlay },\n { type: \"playing\", handler: onPlaying },\n { type: \"ended\", handler: onEnded },\n { type: \"error\", handler: onError },\n { type: \"volumechange\", handler: onVolumeChange },\n { type: \"pause\", handler: onPause },\n { type: \"play\", handler: onPlay },\n { type: \"stalled\", handler: onMediaDiagnostic },\n { type: \"suspend\", handler: onMediaDiagnostic },\n { type: \"abort\", handler: onMediaDiagnostic },\n { type: \"emptied\", handler: onMediaDiagnostic }\n ];\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.addEventListener(type, handler);\n }\n }\n function teardownAdEventListeners() {\n if (adVideoElement) {\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.removeEventListener(type, handler);\n }\n }\n adEventHandlers = [];\n }\n function handleAdClick() {\n if (!adPlaying || !currentAd) return;\n fireTrackingPixels(currentAd.trackingUrls.clickTracking);\n emit(\"ad_click\", { adId: currentAd.id, clickThrough: currentAd.clickThrough });\n if (currentAd.clickThrough) {\n try {\n window.open(currentAd.clickThrough, \"_blank\", \"noopener\");\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Failed to open ClickThrough URL:\", error);\n }\n }\n }\n function reportCurrentAdError(errorCode) {\n if (!currentAd) return;\n resolvedAds.add(currentAd);\n fireTrackingPixels(currentAd.trackingUrls.error, { errorCode });\n }\n function fireNotUsedForUnplayedAds() {\n for (const ad of podAds) {\n if (resolvedAds.has(ad)) continue;\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n function sampleViewability() {\n if (!currentAd || !adVideoElement || !viewObserver || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n const now = adVideoElement.currentTime;\n const inView = visibleRatio >= VIEWABLE_MIN_VISIBLE_RATIO && document.visibilityState === \"visible\" && !adVideoElement.paused;\n if (!inView) {\n continuousVisibleS = 0;\n } else if (lastViewSampleTime !== void 0 && now >= lastViewSampleTime) {\n continuousVisibleS += now - lastViewSampleTime;\n }\n lastViewSampleTime = now;\n if (continuousVisibleS >= VIEWABLE_MIN_CONTINUOUS_S) {\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(currentAd.trackingUrls.viewable);\n }\n }\n function settleViewability() {\n if (!currentAd || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(\n viewObserver ? currentAd.trackingUrls.notViewable : currentAd.trackingUrls.viewUndetermined\n );\n }\n function handleFullscreenChange() {\n if (!adPlaying || !currentAd || !adContainerEl || !trackingFired.start) return;\n const fullscreenEl = document.fullscreenElement ?? document.webkitFullscreenElement;\n const expanded = !!fullscreenEl && fullscreenEl.contains(adContainerEl);\n if (expanded === lastPlayerExpanded) return;\n lastPlayerExpanded = expanded;\n const urls = currentAd.trackingUrls;\n fireTrackingPixels(\n expanded ? urls.fullscreen.concat(urls.playerExpand) : urls.exitFullscreen.concat(urls.playerCollapse)\n );\n }\n function attachContainerHandlers() {\n if (!adContainerEl || containerHandlers.length > 0) return;\n const onClick = () => handleAdClick();\n const onInteraction = (event) => {\n if (adPlaying) emit(\"ad_interaction\", event);\n };\n containerHandlers = [\n { type: \"click\", handler: onClick },\n { type: \"mousedown\", handler: onInteraction },\n { type: \"touchstart\", handler: onInteraction }\n ];\n for (const { type, handler } of containerHandlers) {\n adContainerEl.addEventListener(type, handler);\n }\n const onFullscreenChange = () => handleFullscreenChange();\n documentHandlers = [\n { type: \"fullscreenchange\", handler: onFullscreenChange },\n { type: \"webkitfullscreenchange\", handler: onFullscreenChange }\n ];\n for (const { type, handler } of documentHandlers) {\n document.addEventListener(type, handler);\n }\n if (typeof IntersectionObserver !== \"undefined\") {\n viewObserver = new IntersectionObserver(\n (entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n visibleRatio = entry.isIntersecting ? entry.intersectionRatio : 0;\n }\n },\n { threshold: [0, 0.25, 0.5, 0.75, 1] }\n );\n viewObserver.observe(adContainerEl);\n }\n }\n function detachContainerHandlers() {\n if (adContainerEl) {\n for (const { type, handler } of containerHandlers) {\n adContainerEl.removeEventListener(type, handler);\n }\n }\n containerHandlers = [];\n for (const { type, handler } of documentHandlers) {\n document.removeEventListener(type, handler);\n }\n documentHandlers = [];\n viewObserver?.disconnect();\n viewObserver = void 0;\n }\n function setAdPlayingFlag(isPlaying) {\n if (isPlaying) {\n contentVideo.dataset.stormcloudAdPlaying = \"true\";\n } else {\n delete contentVideo.dataset.stormcloudAdPlaying;\n }\n }\n function resetAdTracking() {\n trackingFired = createTrackingState();\n continuousVisibleS = 0;\n lastViewSampleTime = void 0;\n }\n function isRvfcSupported(video) {\n return typeof video.requestVideoFrameCallback === \"function\";\n }\n function settlePendingPlay() {\n pendingPlayPromise = void 0;\n }\n function toVastPlayErrorCode(error) {\n return error?.name === \"NotSupportedError\" ? VAST_ERROR_NO_SUPPORTED_MEDIA : VAST_ERROR_MEDIA_DISPLAY;\n }\n function failAdPlayback(context, error) {\n const vastErrorCode = toVastPlayErrorCode(error);\n console.error(`[HlsAdPlayer] Error starting ${context}:`, error);\n logFunnel(\"play_failed\", {\n errorName: error?.name,\n errorMessage: error?.message,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n function startAdPlayback(context, isMutedRetry = false) {\n if (!adVideoElement) return;\n const computed = typeof getComputedStyle === \"function\" && adContainerEl ? getComputedStyle(adContainerEl) : void 0;\n logFunnel(isMutedRetry ? \"muted_retry\" : \"play_called\", {\n context,\n isConnected: adVideoElement.isConnected,\n clientWidth: adVideoElement.clientWidth,\n clientHeight: adVideoElement.clientHeight,\n containerDisplay: computed?.display,\n containerVisibility: computed?.visibility\n });\n const playPromise = adVideoElement.play();\n pendingPlayPromise = playPromise;\n playPromise.catch((error) => {\n if (pendingPlayPromise !== playPromise) {\n return;\n }\n logFunnel(\"play_rejected\", {\n context,\n errorName: error?.name,\n errorMessage: error?.message\n });\n if (!isMutedRetry && error?.name === \"NotAllowedError\" && adVideoElement && !adVideoElement.muted) {\n console.warn(\n `[HlsAdPlayer] Unmuted ${context} blocked by autoplay policy - retrying muted`\n );\n originalMutedState = true;\n forcedMuteByAutoplay = true;\n adVideoElement.muted = true;\n startAdPlayback(context, true);\n return;\n }\n failAdPlayback(context, error);\n }).finally(() => {\n if (pendingPlayPromise === playPromise) {\n pendingPlayPromise = void 0;\n }\n });\n }\n function prepareVideoElementForNewSource() {\n settlePendingPlay();\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n if (!adVideoElement) return;\n try {\n adVideoElement.pause();\n adVideoElement.removeAttribute(\"src\");\n adVideoElement.load();\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error preparing ad video for new source:\",\n error\n );\n }\n }\n function recreateAdVideoElement(reason) {\n console.log(`[HlsAdPlayer] Recreating ad video element (${reason})`);\n teardownAdEventListeners();\n prepareVideoElementForNewSource();\n if (adVideoElement) {\n try {\n adVideoElement.remove();\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error removing ad video element:\", error);\n }\n }\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n }\n function clearMediaStartTimer() {\n if (mediaStartTimerId !== void 0) {\n clearTimeout(mediaStartTimerId);\n mediaStartTimerId = void 0;\n }\n }\n function startMediaStartTimer() {\n clearMediaStartTimer();\n if (!(MEDIA_START_TIMEOUT_MS > 0)) return;\n const startedAt = Date.now();\n mediaStartTimerId = setTimeout(() => {\n mediaStartTimerId = void 0;\n if (!adPlaying || trackingFired.impression) return;\n console.warn(\n `[HlsAdPlayer] Ad media did not start playing within ${MEDIA_START_TIMEOUT_MS}ms`\n );\n logFunnel(\"play_resolved_but_never_started\", {\n timeoutMs: MEDIA_START_TIMEOUT_MS,\n elapsedMs: Date.now() - startedAt,\n readyState: adVideoElement?.readyState,\n networkState: adVideoElement?.networkState,\n currentSrc: adVideoElement?.currentSrc,\n paused: adVideoElement?.paused,\n vastErrorCode: VAST_ERROR_MEDIA_TIMEOUT\n });\n recoverFromAdFailure(VAST_ERROR_MEDIA_TIMEOUT);\n }, MEDIA_START_TIMEOUT_MS);\n }\n function resetVideoElementForNextSource() {\n clearStallWatchdog();\n const previousSourceUsedHlsJs = adHls !== void 0;\n if (requiresMediaPipelineResetAfterAds() || previousSourceUsedHlsJs) {\n recreateAdVideoElement(\n previousSourceUsedHlsJs ? \"after hls.js source\" : \"single-decoder platform\"\n );\n setupAdEventListeners();\n } else {\n prepareVideoElementForNewSource();\n }\n }\n function tryNextMediaCandidate() {\n if (!currentAd || trackingFired.impression) return false;\n if (mediaCandidateIndex >= mediaCandidates.length - 1) return false;\n const failedUrl = currentAdMediaFile?.url;\n mediaCandidateIndex++;\n const next = mediaCandidates[mediaCandidateIndex];\n if (!next) return false;\n logFunnel(\"media_fallback\", {\n failedUrl,\n nextUrl: next.url,\n nextType: next.type,\n candidateIndex: mediaCandidateIndex,\n candidateCount: mediaCandidates.length\n });\n resetVideoElementForNextSource();\n try {\n loadMediaCandidate(next);\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load fallback media file:\", error);\n return tryNextMediaCandidate();\n }\n }\n function recoverFromAdFailure(vastErrorCode) {\n clearMediaStartTimer();\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(vastErrorCode);\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) return;\n handleAdError();\n }\n function loadCurrentAdMedia() {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n mediaCandidates = rankMediaCandidates(currentAd.mediaFiles);\n mediaCandidateIndex = 0;\n const mediaFile = mediaCandidates[0];\n if (!mediaFile) {\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA,\n candidates: currentAd.mediaFiles.length\n });\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw new Error(\"No media file this browser can play\");\n }\n try {\n loadMediaCandidate(mediaFile);\n } catch (error) {\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw error;\n }\n }\n function loadMediaCandidate(mediaFile) {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n currentAdMediaFile = mediaFile;\n const isHlsAd = isHlsMediaFile(mediaFile);\n logFunnel(\"media_selected\", {\n width: mediaFile.width,\n height: mediaFile.height,\n bitrate: mediaFile.bitrate,\n candidateIndex: mediaCandidateIndex,\n candidates: mediaCandidates.length\n });\n console.log(\n `[HlsAdPlayer] Loading ${isHlsAd ? \"HLS\" : \"progressive\"} ad (pod ${podIndex + 1}/${podAds.length || 1}) from: ${mediaFile.url}`\n );\n startMediaStartTimer();\n if (isHlsAd && import_hls.default.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new import_hls.default({\n enableWorker: true,\n lowLatencyMode: false\n });\n logFunnel(\"media_load\", { pipeline: \"hls.js\" });\n adHls.loadSource(mediaFile.url);\n adHls.attachMedia(adVideoElement);\n adHls.on(import_hls.default.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(import_hls.default.Events.ERROR, (_event, data) => {\n console.error(\"[HlsAdPlayer] HLS error:\", data);\n if (data.fatal) {\n const vastErrorCode = data.type === import_hls.default.ErrorTypes.NETWORK_ERROR ? 401 : VAST_ERROR_MEDIA_DISPLAY;\n logFunnel(\"hls_fatal\", {\n reason: data.details,\n errorName: data.type,\n errorMessage: data.details,\n responseCode: data.response?.code,\n responseText: data.response?.text,\n fragUrl: data.frag?.url,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n });\n } else if (isHlsAd && adVideoElement.canPlayType(\"application/vnd.apple.mpegurl\")) {\n logFunnel(\"media_load\", { pipeline: \"native-hls\" });\n adVideoElement.src = mediaFile.url;\n startAdPlayback(\"native HLS ad playback\");\n } else if (!isHlsAd && isProgressiveMediaFile(mediaFile)) {\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n logFunnel(\"media_load\", { pipeline: \"progressive\" });\n adVideoElement.src = mediaFile.url;\n adVideoElement.load();\n startAdPlayback(\"progressive ad playback\");\n } else {\n clearMediaStartTimer();\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n throw new Error(`Unsupported ad media file type: ${mediaFile.type}`);\n }\n }\n function advanceToNextPodAd() {\n clearMediaStartTimer();\n while (podIndex < podAds.length - 1) {\n settleViewability();\n podIndex++;\n currentAd = podAds[podIndex];\n currentAdMediaFile = void 0;\n resetAdTracking();\n if (currentAd) {\n console.log(\n `[HlsAdPlayer] Advancing to next pod ad (${podIndex + 1}/${podAds.length}): ${currentAd.title}, duration: ${currentAd.duration}s`\n );\n }\n resetVideoElementForNextSource();\n try {\n loadCurrentAdMedia();\n emit(\"pod_ad_started\", { index: podIndex, total: podAds.length });\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load next pod ad:\", error);\n }\n }\n return false;\n }\n function clearStallWatchdog() {\n clearMediaStartTimer();\n if (stallWatchdogId != null) {\n clearInterval(stallWatchdogId);\n stallWatchdogId = void 0;\n }\n cancelVideoFrameProbe();\n }\n function noteAdProgress() {\n lastAdProgressTime = Date.now();\n if (adVideoElement) {\n lastAdProgressPosition = adVideoElement.currentTime;\n }\n }\n function handleAdStall() {\n console.warn(\n \"[HlsAdPlayer] Ad playback stalled (no progress) - recovering to avoid a blank frame\"\n );\n clearStallWatchdog();\n logFunnel(\"stall\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function getDecodedVideoFrameCount(video) {\n try {\n if (typeof video.getVideoPlaybackQuality === \"function\") {\n const quality = video.getVideoPlaybackQuality();\n if (quality && typeof quality.totalVideoFrames === \"number\") {\n return quality.totalVideoFrames;\n }\n }\n const legacyCount = video.webkitDecodedFrameCount;\n if (typeof legacyCount === \"number\") {\n return legacyCount;\n }\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Unable to read decoded video frame count:\",\n error\n );\n }\n return void 0;\n }\n function isFrameCounterReliable() {\n return contentVideo[FRAME_COUNTER_RELIABLE_PROP] === true;\n }\n function markFrameCounterReliable() {\n contentVideo[FRAME_COUNTER_RELIABLE_PROP] = true;\n }\n function isRvfcReliable() {\n return contentVideo[RVFC_RELIABLE_PROP] === true;\n }\n function markRvfcReliable() {\n contentVideo[RVFC_RELIABLE_PROP] = true;\n }\n function cancelVideoFrameProbe() {\n if (videoFrameCallbackHandle != null && adVideoElement && typeof adVideoElement.cancelVideoFrameCallback === \"function\") {\n try {\n adVideoElement.cancelVideoFrameCallback(\n videoFrameCallbackHandle\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error cancelling video frame callback:\",\n error\n );\n }\n }\n videoFrameCallbackHandle = void 0;\n }\n function startVideoFrameProbe() {\n cancelVideoFrameProbe();\n if (!adVideoElement) return;\n const rvfc = adVideoElement.requestVideoFrameCallback;\n if (typeof rvfc !== \"function\") return;\n const onPresentedFrame = () => {\n videoFrameCallbackHandle = void 0;\n if (!adPlaying) return;\n sawDecodedVideoFrame = true;\n markRvfcReliable();\n };\n try {\n videoFrameCallbackHandle = rvfc.call(\n adVideoElement,\n onPresentedFrame\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error requesting video frame callback:\",\n error\n );\n videoFrameCallbackHandle = void 0;\n }\n }\n function handleVideoDecodeFailure() {\n console.warn(\n \"[HlsAdPlayer] Ad audio is advancing but no video frames decoded (black screen) - skipping this creative\"\n );\n clearStallWatchdog();\n logFunnel(\"decode_failure\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function startStallWatchdog() {\n clearStallWatchdog();\n noteAdProgress();\n sawDecodedVideoFrame = false;\n startVideoFrameProbe();\n const blackFrameDetectionEnabled = !requiresMediaPipelineResetAfterAds();\n stallWatchdogId = window.setInterval(() => {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n if (blackFrameDetectionEnabled && !sawDecodedVideoFrame && !adVideoElement.paused) {\n const decodedFrames = getDecodedVideoFrameCount(adVideoElement);\n if (decodedFrames !== void 0 && decodedFrames > 0) {\n sawDecodedVideoFrame = true;\n markFrameCounterReliable();\n } else if (adVideoElement.currentTime >= BLACKFRAME_MIN_PLAYBACK_S) {\n const timeAdvancing = adVideoElement.currentTime > lastAdProgressPosition + 0.05;\n if (isRvfcSupported(adVideoElement) && timeAdvancing && isRvfcReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n if (decodedFrames === 0 && timeAdvancing && isFrameCounterReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n }\n }\n if (adVideoElement.currentTime > lastAdProgressPosition + 0.05) {\n noteAdProgress();\n return;\n }\n if (adVideoElement.paused) {\n noteAdProgress();\n return;\n }\n if (Date.now() - lastAdProgressTime >= STALL_TIMEOUT_MS) {\n handleAdStall();\n }\n }, STALL_CHECK_INTERVAL_MS);\n }\n function releaseAdDecoder() {\n prepareVideoElementForNewSource();\n if (adContainerEl) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n }\n function handleAdComplete() {\n console.log(\"[HlsAdPlayer] Handling ad completion\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode:\", error);\n });\n } else {\n console.log(\"[HlsAdPlayer] Content video already playing in live mode\");\n }\n }\n emit(\"content_resume\");\n }\n function handleAdError() {\n console.log(\"[HlsAdPlayer] Handling ad error\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n emit(\"ad_error\");\n }\n return {\n initialize() {\n console.log(\"[HlsAdPlayer] Initializing\");\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"30\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n contentVideo[AD_CONTAINER_PROP] = adContainerEl;\n attachContainerHandlers();\n },\n async requestAds(vastTagUrl, requestOptions) {\n const source = requestOptions?.source ?? \"gam\";\n console.log(`[HlsAdPlayer] Requesting ads (${source}):`, redactUrl(vastTagUrl));\n if (adPlaying) {\n console.warn(\n \"[HlsAdPlayer] Cannot request new ads while an ad is playing\"\n );\n return Promise.reject(new Error(\"Ad already playing\"));\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n currentVastTagUrl = vastTagUrl;\n pendingRequestAbortReason = void 0;\n logFunnel(\"request_sent\");\n try {\n let ads = [];\n if (preloadedAds.has(vastTagUrl)) {\n const preloaded = preloadedAds.get(vastTagUrl);\n preloadedAds.delete(vastTagUrl);\n if (preloaded) {\n ads = [preloaded];\n }\n console.log(\n \"[HlsAdPlayer] Using preloaded VAST response:\",\n vastTagUrl\n );\n } else {\n ads = await fetchAndParsePod(vastTagUrl, source, requestOptions?.finalizeRequestUrl);\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n if (!ads.length && pendingRequestAbortReason) {\n throw new Error(pendingRequestAbortReason);\n }\n if (!ads.length && lastPodAdElementCount > 0) {\n console.warn(\"[HlsAdPlayer] VAST response had ads but none were playable\");\n logFunnel(\"vast_fill_rejected\", { adElementCount: lastPodAdElementCount });\n emit(\"ad_error\");\n return Promise.reject(\n new Error(\"VAST fill rejected: no playable ad in response\")\n );\n }\n if (!ads.length) {\n console.warn(\"[HlsAdPlayer] No ads available from VAST response\");\n logFunnel(\"no_fill\");\n emit(\"ad_error\");\n return Promise.reject(new Error(\"No ads available from VAST response\"));\n }\n podAds = ads;\n podIndex = 0;\n currentAd = ads[0];\n currentAdMediaFile = void 0;\n logFunnel(\"vast_received\", {\n adCount: ads.length,\n durations: ads.map((ad) => ad.duration),\n impressionUrls: ads.map((ad) => ad.trackingUrls.impression.length)\n });\n ads.forEach((ad, index) => {\n if (ad.trackingUrls.impression.length === 0) {\n logFunnel(\"vast_missing_impression\", { adIndex: index, missingAdId: ad.id });\n }\n });\n console.log(\n `[HlsAdPlayer] Pod parsed: ${ads.length} ad(s), first=\"${currentAd?.title}\", duration=${currentAd?.duration}s`\n );\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error requesting ads:\", error);\n logFunnel(\"request_failed\", {\n errorMessage: error?.message\n });\n emit(\"ad_error\");\n return Promise.reject(error);\n }\n },\n async play() {\n if (!currentAd) {\n console.warn(\n \"[HlsAdPlayer] Cannot play: No ad loaded (no ads available)\"\n );\n return Promise.reject(new Error(\"No ad loaded\"));\n }\n console.log(\"[HlsAdPlayer] Starting ad playback\");\n try {\n if (!adVideoElement) {\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n }\n setupAdEventListeners();\n resetAdTracking();\n const contentVolume = contentVideo.volume;\n originalVolume = Math.max(\n 0,\n Math.min(1, contentVolume || originalVolume)\n );\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.pause();\n console.log(\"[HlsAdPlayer] Content paused (VOD mode)\");\n } else {\n console.log(\"[HlsAdPlayer] Content continues (Live mode)\");\n }\n console.log(\"[HlsAdPlayer] FORCE MUTING main video\");\n contentVideo.muted = true;\n adPlaying = true;\n setAdPlayingFlag(true);\n if (adVideoElement) {\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n console.log(\n `[HlsAdPlayer] Set ad video volume to ${adVideoElement.volume}, muted: ${adVideoElement.muted}, originalMutedState: ${originalMutedState}, contentVolume: ${contentVolume}`\n );\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n emit(\"content_pause\");\n try {\n loadCurrentAdMedia();\n } catch (loadError) {\n if (!(podIndex < podAds.length - 1 && advanceToNextPodAd())) {\n throw loadError;\n }\n }\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error playing ad:\", error);\n logFunnel(\"play_failed\", { errorMessage: error?.message });\n handleAdError();\n return Promise.reject(error);\n }\n },\n pause() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && !adVideoElement.paused) {\n adVideoElement.pause();\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error pausing ad:\", error);\n }\n },\n resume() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && adVideoElement.paused) {\n adVideoElement.play().catch(() => {\n });\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error resuming ad:\", error);\n }\n },\n async stop() {\n console.log(\"[HlsAdPlayer] Stopping ad\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n const previousMutedState = contentVideo.muted;\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n console.log(\n `[HlsAdPlayer] Restored mute state on stop: ${previousMutedState} -> ${originalMutedState}, volume: ${contentVideo.volume}`\n );\n releaseAdDecoder();\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback on stop\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode on stop:\", error);\n });\n }\n }\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n },\n destroy() {\n console.log(\"[HlsAdPlayer] Destroying\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n destroyed = true;\n pendingRequestAbortReason = \"Ad player destroyed\";\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n clearStallWatchdog();\n for (const timeoutId of pendingTimeouts) {\n clearTimeout(timeoutId);\n }\n pendingTimeouts = [];\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n teardownAdEventListeners();\n detachContainerHandlers();\n releaseAdDecoder();\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n listeners.clear();\n preloadedAds.clear();\n preloadingAds.clear();\n },\n isAdPlaying() {\n return adPlaying;\n },\n setFunnelContext(context) {\n funnelContext = { ...context };\n },\n abortPendingRequest(reason = \"VAST request aborted (timeout)\") {\n if (pendingVastRequests.size === 0) return;\n pendingRequestAbortReason = reason;\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n },\n resize(width, height) {\n console.log(`[HlsAdPlayer] Resizing to ${width}x${height}`);\n if (adContainerEl) {\n adContainerEl.style.width = `${width}px`;\n adContainerEl.style.height = `${height}px`;\n }\n if (adVideoElement) {\n adVideoElement.style.width = `${width}px`;\n adVideoElement.style.height = `${height}px`;\n }\n },\n on(event, listener) {\n if (!listeners.has(event)) listeners.set(event, /* @__PURE__ */ new Set());\n listeners.get(event).add(listener);\n },\n off(event, listener) {\n listeners.get(event)?.delete(listener);\n },\n updateOriginalMutedState(muted, volume) {\n const nextVolume = typeof volume === \"number\" && !Number.isNaN(volume) ? Math.max(0, Math.min(1, volume)) : originalVolume;\n console.log(\n `[HlsAdPlayer] updateOriginalMutedState called: { muted: ${originalMutedState} -> ${muted}, volume: ${originalVolume} -> ${nextVolume} }`\n );\n originalMutedState = muted;\n originalVolume = nextVolume;\n },\n getOriginalMutedState() {\n return originalMutedState;\n },\n getOriginalVolume() {\n return originalVolume;\n },\n setAdVolume(volume) {\n if (adVideoElement && adPlaying) {\n const clamped = Math.max(0, Math.min(1, volume));\n adVideoElement.volume = clamped;\n const userActivation = navigator.userActivation;\n if (clamped > 0 && forcedMuteByAutoplay && userActivation && !userActivation.isActive) {\n logFunnel(\"unmute_blocked_without_gesture\", { requestedVolume: clamped });\n return;\n }\n adVideoElement.muted = clamped === 0;\n }\n },\n getAdVolume() {\n if (adVideoElement && adPlaying) {\n return adVideoElement.volume;\n }\n return 1;\n },\n showPlaceholder() {\n contentVideo.style.opacity = \"0\";\n contentVideo.style.visibility = \"hidden\";\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"10\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n },\n hidePlaceholder() {\n if (adContainerEl && !adPlaying) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n if (!adPlaying) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n },\n getLoadedAdDuration() {\n return currentAd?.duration;\n },\n getLoadedAdId() {\n return currentAd?.id;\n },\n getPodAdCount() {\n return podAds.length;\n },\n getPodTotalDurationMs() {\n return podAds.reduce(\n (total, ad) => total + (ad.duration > 0 ? ad.duration * 1e3 : 0),\n 0\n );\n },\n limitPodToBudget(maxDurationMs, maxAds) {\n if (adPlaying) return podAds.length;\n const kept = [];\n const dropped = [];\n let totalMs = 0;\n for (const ad of podAds) {\n const durationMs = Math.round(ad.duration * 1e3);\n if (kept.length < maxAds && totalMs + durationMs <= maxDurationMs) {\n kept.push(ad);\n totalMs += durationMs;\n } else {\n dropped.push(ad);\n }\n }\n if (dropped.length > 0) {\n logFunnel(\"pod_trimmed_to_budget\", {\n keptCount: kept.length,\n droppedCount: dropped.length,\n keptDurationMs: totalMs,\n maxDurationMs,\n maxAds\n });\n for (const ad of dropped) {\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n podAds = kept;\n podIndex = 0;\n currentAd = kept[0];\n currentAdMediaFile = void 0;\n return kept.length;\n }\n };\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n let pendingNonce;\n return {\n generateNonce(options = {}) {\n const run = generate(options);\n pendingNonce = run;\n const settle = () => {\n if (pendingNonce === run) pendingNonce = void 0;\n };\n run.then(settle, settle);\n return run;\n },\n getCurrentNonce() {\n return currentNonce;\n },\n waitForNonce(maxWaitMs) {\n if (currentNonce) return Promise.resolve(currentNonce);\n const pending = pendingNonce;\n if (!pending || !(maxWaitMs > 0)) return Promise.resolve(\"\");\n return new Promise((resolve) => {\n const timer = setTimeout(() => resolve(currentNonce), maxWaitMs);\n pending.then(\n (nonce) => {\n clearTimeout(timer);\n resolve(nonce);\n },\n () => {\n clearTimeout(timer);\n resolve(\"\");\n }\n );\n });\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n pendingNonce = void 0;\n }\n };\n async function generate(options) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n }\n}\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\nfunction applyTrackingIngestConfig(overrides) {\n Object.assign(trackingIngestConfig, overrides);\n}\nfunction configureTrackingIngest(overrides) {\n applyTrackingIngestConfig(overrides);\n}\nfunction isTrackingIngestEnabled() {\n return trackingIngestConfig.enabled === true;\n}\nfunction normalizeIngestBaseUrl(baseUrl) {\n return baseUrl.replace(/\\/+$/, \"\");\n}\nfunction buildTrackingIngestUrl(channel) {\n const base = normalizeIngestBaseUrl(trackingIngestConfig.baseUrl);\n if (channel === \"impressions\") {\n return `${base}/impressions/ingest`;\n }\n return `${base}/metrics/ingest`;\n}\nasync function ingestPlayerTracking(licenseKey, channel, body) {\n if (!isTrackingIngestEnabled() || !licenseKey) {\n return false;\n }\n try {\n const response = await fetch(buildTrackingIngestUrl(channel), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `License-Key ${licenseKey}`\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest failed (${response.status}) for ${channel}`\n );\n return false;\n }\n return true;\n } catch (error) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest error for ${channel}:`,\n error\n );\n return false;\n }\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n const contentNetwork = config.contentNetwork?.trim();\n const contentChannel = config.channelName?.trim();\n const contentTitle = config.programTitle?.trim();\n const hlsUrl = config.src?.trim();\n if (contentNetwork) context.contentNetwork = contentNetwork;\n if (contentChannel) context.contentChannel = contentChannel;\n if (contentTitle) context.contentTitle = contentTitle;\n if (hlsUrl) context.hlsUrl = hlsUrl;\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nfunction getCachedBrowserId() {\n return cachedBrowserId ?? void 0;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendAdDetectTracking(licenseKey, adDetectInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adDetect: true,\n captureAt: adDetectInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad detect tracking:\",\n error\n );\n }\n}\nasync function sendAdLoadedTracking(licenseKey, adLoadedInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adLoaded: true,\n captureAt: adLoadedInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad loaded tracking:\",\n error\n );\n }\n}\nasync function sendAdImpressionTracking(licenseKey, adImpressionInfo, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n captureAt: adImpressionInfo.timestamp\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n await ingestPlayerTracking(licenseKey, \"impressions\", {\n events: [\n {\n player_id: metricEvent.player_id,\n ad_played_count: 1,\n ad_url: adImpressionInfo.adUrl,\n capture_at: adImpressionInfo.timestamp,\n source: \"gam\",\n ...context.contentNetwork ? { content_network: context.contentNetwork } : {},\n ...context.contentChannel ? { content_channel: context.contentChannel } : {},\n ...context.contentTitle ? { content_title: context.contentTitle } : {},\n ...context.hlsUrl ? { hls_url: context.hlsUrl } : {}\n }\n ]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad impression tracking:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey, context = {}, flags = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const heartbeatData = await buildPlayerMetricEvent(context, flags);\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [heartbeatData]\n });\n } catch (error) {\n console.error(\"[StormcloudVideoPlayer] Error sending heartbeat:\", error);\n }\n}\n\n// src/utils/polyfills.ts\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n\n// src/player/Scte35Parser.ts\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction getDateRangeDurationSeconds(attrs) {\n return toNumber(attrs[\"DURATION\"]) ?? toNumber(attrs[\"PLANNED-DURATION\"]);\n}\nfunction isManifestBasedMarker(marker) {\n const raw = marker.raw;\n if (!raw) return false;\n if (raw.tag) {\n const tag = String(raw.tag);\n return tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-CUE-IN\") || tag.includes(\"EXT-X-DATERANGE\");\n }\n if (raw.id3) return false;\n if (raw.splice_command_type) return false;\n return false;\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n\n// src/player/Scte35CueManager.ts\nvar Scte35CueManager = class {\n constructor(debug, callbacks) {\n this.pendingScte35Cues = /* @__PURE__ */ new Map();\n this.recentScte35CueKeys = /* @__PURE__ */ new Map();\n this.recentScte35CueLimit = 200;\n this.tsScte35Pids = /* @__PURE__ */ new Set();\n this.pmtPids = /* @__PURE__ */ new Set();\n this.processedTsScte35Sections = /* @__PURE__ */ new Set();\n this.debug = debug;\n this.callbacks = callbacks;\n }\n get pendingScte35CueKey() {\n return this.pendingScte35CueKeyValue;\n }\n set pendingScte35CueKey(value) {\n this.pendingScte35CueKeyValue = value;\n }\n get activeScte35BreakKey() {\n return this.activeScte35BreakKeyValue;\n }\n set activeScte35BreakKey(value) {\n this.activeScte35BreakKeyValue = value;\n }\n get scheduledScte35BreakKey() {\n return this.scheduledScte35BreakKeyValue;\n }\n set scheduledScte35BreakKey(value) {\n this.scheduledScte35BreakKeyValue = value;\n }\n createScte35CueContext(source, readiness, frag) {\n const context = { source, readiness };\n if (typeof frag?.sn === \"number\") {\n context.fragmentSn = frag.sn;\n }\n const fragmentStartSec = getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n return context;\n }\n onScte35Cue(marker, context) {\n const cue = this.createScte35Cue(marker, context);\n const pendingKey = this.getPendingScte35CueKey(cue);\n if (context.readiness === \"early\") {\n this.pendingScte35Cues.set(pendingKey, cue);\n this.trimRecentScte35CueMaps();\n if (marker.type === \"start\") {\n this.callbacks.onEarlyStartCue(marker, context.fragmentSn, cue.key);\n }\n return;\n }\n if (marker.type === \"end\" && !this.shouldAcceptScte35EndCue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 end cue\", {\n key: cue.key,\n activeScte35BreakKey: this.activeScte35BreakKeyValue,\n inAdBreak: this.callbacks.isInAdBreak(),\n source: cue.source\n });\n }\n return;\n }\n if (marker.type === \"start\" && this.hasRecentlyHandledScte35Cue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring duplicate SCTE-35 start cue\", {\n key: cue.key,\n source: cue.source\n });\n }\n return;\n }\n this.pendingScte35Cues.delete(pendingKey);\n this.markScte35CueHandled(cue);\n this.callbacks.onPlaybackCue(marker, cue.key);\n }\n activatePendingScte35CuesForFragment(frag) {\n const fragmentSn = typeof frag?.sn === \"number\" ? frag.sn : void 0;\n if (fragmentSn === void 0) {\n return;\n }\n const matchingCues = Array.from(this.pendingScte35Cues.entries()).filter(\n ([, cue]) => cue.fragmentSn === fragmentSn\n );\n matchingCues.forEach(([pendingKey, cue]) => {\n this.pendingScte35Cues.delete(pendingKey);\n const context = {\n source: cue.source,\n readiness: \"playback\"\n };\n context.fragmentSn = fragmentSn;\n const fragmentStartSec = cue.fragmentStartSeconds ?? getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n this.onScte35Cue(cue.marker, context);\n });\n }\n createScte35Cue(marker, context) {\n const cue = {\n marker,\n source: context.source,\n readiness: context.readiness,\n key: this.getScte35CueKey(marker, context)\n };\n if (context.fragmentSn !== void 0) {\n cue.fragmentSn = context.fragmentSn;\n }\n if (context.fragmentStartSeconds !== void 0) {\n cue.fragmentStartSeconds = context.fragmentStartSeconds;\n }\n return cue;\n }\n getScte35CueKey(marker, context) {\n const raw = this.getScte35MarkerRaw(marker);\n const spliceEventId = this.toIdentityString(raw?.splice_event_id);\n if (spliceEventId) {\n return `splice:${spliceEventId}`;\n }\n const segmentationEventId = this.toIdentityString(raw?.segmentation_event_id);\n if (segmentationEventId) {\n return `segmentation:${segmentationEventId}`;\n }\n const daterangeId = this.toIdentityString(raw?.attrs?.ID);\n if (daterangeId) {\n return `daterange:${daterangeId}`;\n }\n const scteValue = this.toIdentityString(raw?.attrs?.[\"SCTE35-OUT\"]) || this.toIdentityString(raw?.attrs?.[\"SCTE35-IN\"]);\n if (scteValue) {\n return `daterange-scte:${scteValue}`;\n }\n if (typeof marker.ptsSeconds === \"number\" && Number.isFinite(marker.ptsSeconds)) {\n return `pts:${Math.round(marker.ptsSeconds * 2) / 2}`;\n }\n if (context.fragmentSn !== void 0) {\n return `fragment:${context.fragmentSn}`;\n }\n return `${context.source}:wallclock:${Math.floor(Date.now() / 1e3)}`;\n }\n getPendingScte35CueKey(cue) {\n return `${cue.marker.type}:${cue.key}:${cue.fragmentSn !== void 0 ? cue.fragmentSn : \"unknown\"}`;\n }\n getScte35MarkerRaw(marker) {\n return typeof marker.raw === \"object\" && marker.raw !== null ? marker.raw : {};\n }\n toIdentityString(value) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return String(value);\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value.trim();\n }\n return void 0;\n }\n isStrongScte35CueKey(key) {\n return !!(key && (key.startsWith(\"splice:\") || key.startsWith(\"segmentation:\") || key.startsWith(\"daterange:\") || key.startsWith(\"daterange-scte:\")));\n }\n hasRecentlyHandledScte35Cue(cue) {\n if (this.activeScte35BreakKeyValue === cue.key || this.scheduledScte35BreakKeyValue === cue.key) {\n return true;\n }\n const recentKey = `${cue.marker.type}:${cue.key}`;\n return this.recentScte35CueKeys.has(recentKey);\n }\n markScte35CueHandled(cue) {\n this.recentScte35CueKeys.set(`${cue.marker.type}:${cue.key}`, Date.now());\n this.trimRecentScte35CueMaps();\n }\n trimRecentScte35CueMaps() {\n while (this.recentScte35CueKeys.size > this.recentScte35CueLimit) {\n const firstKey = this.recentScte35CueKeys.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.recentScte35CueKeys.delete(firstKey);\n }\n while (this.pendingScte35Cues.size > this.recentScte35CueLimit) {\n const firstKey = this.pendingScte35Cues.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.pendingScte35Cues.delete(firstKey);\n }\n }\n shouldAcceptScte35EndCue(cue) {\n if (!this.callbacks.isInAdBreak()) {\n return false;\n }\n if (this.isStrongScte35CueKey(this.activeScte35BreakKeyValue) && this.isStrongScte35CueKey(cue.key) && this.activeScte35BreakKeyValue !== cue.key) {\n return false;\n }\n return true;\n }\n};\n\n// src/player/AdConfigManager.ts\nfunction withDeferredPodParams(rawUrl, deferNonce) {\n try {\n const url = new URL(rawUrl);\n url.searchParams.set(\"pmnd\", \"[SCVP-PMND]\");\n url.searchParams.set(\"pmxd\", \"[SCVP-PMXD]\");\n url.searchParams.set(\"pmad\", \"[SCVP-PMAD]\");\n if (deferNonce && !url.searchParams.get(\"givn\")) {\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", \"[SCVP-GIVN]\");\n }\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultEdgePodMaxAds = 6;\n this.palNonceDispatchWaitMs = 1500;\n this.config = config;\n this.video = video;\n }\n get viewCorrelator() {\n return getPageViewCorrelator();\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://edge.stormcloudhub.com/api/v1/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const apiEnableEdge = data.response?.enableEdgePodRequest;\n const apiEdgeUrl = data.response?.edgePodUrl;\n this.apiEnableEdgePodRequest = typeof apiEnableEdge === \"boolean\" ? apiEnableEdge : void 0;\n this.apiEdgePodUrl = typeof apiEdgeUrl === \"string\" ? apiEdgeUrl : void 0;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Edge pod settings from API:\", {\n enableEdgePodRequest: this.apiEnableEdgePodRequest,\n edgePodUrl: this.apiEdgePodUrl\n });\n }\n this.apiFloorLadder = data.response?.floorLadder;\n if (this.debug) {\n console.log(\n this.apiFloorLadder ? \"[StormcloudVideoPlayer] Floor ladder from API:\" : \"[StormcloudVideoPlayer] No floorLadder block in /ads/web response\",\n this.apiFloorLadder\n );\n }\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolveAdPodConfig() {\n return resolveAdPodConfig(this.config);\n }\n resolveEdgeMaxAds() {\n return this.resolveAdPodConfig().maxAdsPerBreak ?? (this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultEdgePodMaxAds);\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const macroContext = {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.sessionId,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals,\n palNonce: palNonce.getCurrentNonce() || void 0\n };\n const nonceReady = !!macroContext.palNonce;\n let finalUrl;\n if (hasScvpMacros(baseUrl)) {\n const deferred = new Set(SCVP_POD_MACROS);\n if (!nonceReady) deferred.add(\"GIVN\");\n const { url, unresolved } = applyScvpMacros(baseUrl, macroContext, deferred);\n if (unresolved.length > 0) {\n console.warn(\n \"[StormcloudVideoPlayer] Unresolved SCVP macros (removed from request):\",\n unresolved.join(\", \")\n );\n }\n finalUrl = ensureVideoAdType(url);\n } else {\n finalUrl = withDeferredPodParams(\n palNonce.injectNonce(ensureVideoAdType(applyVastMacros(baseUrl, macroContext))),\n !nonceReady\n );\n }\n console.log(\n `[StormcloudVideoPlayer] Prepared optimized-pod request URL (pod=${this.podCounter}; pmnd/pmxd/pmad resolved at dispatch):`,\n finalUrl\n );\n return finalUrl;\n }\n async completeDeferredRequestSignals(url, palNonce) {\n if (findScvpMacroNames(url).indexOf(\"GIVN\") === -1) return url;\n const nonce = palNonce.getCurrentNonce() || await palNonce.waitForNonce(this.palNonceDispatchWaitMs);\n if (!nonce) return url;\n return substituteScvpMacros(url, /* @__PURE__ */ new Map([[\"GIVN\", nonce]]), (name) => name !== \"GIVN\").url;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n\n// src/player/AdTimingService.ts\nfunction monotonicNow() {\n return typeof performance !== \"undefined\" && typeof performance.now === \"function\" ? performance.now() : Date.now();\n}\nvar AdTimingService = class {\n constructor(config, video, callbacks) {\n this.adRequestWatchdogToken = null;\n this.adFailsafeToken = null;\n this.ptsDriftEmaMs = 0;\n this.adBreakPlayedDurationMs = 0;\n this.adBreakEpoch = 0;\n this.adRequestTokenCounter = 0;\n this.activeAdRequestToken = null;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.totalAdRequestsInBreak = 0;\n this.maxTotalAdRequestsPerBreak = 10;\n this.lastAdRequestTime = 0;\n this.consecutiveFailures = 0;\n this.maxConsecutiveFailures = 5;\n this.minAdRequestIntervalMs = 3e3;\n this.backoffBaseMs = 1e3;\n this.maxBackoffMs = 15e3;\n this.defaultMinRemainingMsToStartAd = 4e3;\n this.failedVastUrls = /* @__PURE__ */ new Set();\n this.temporaryFailureUrls = /* @__PURE__ */ new Map();\n this.temporaryFailureCooldownMs = 3e4;\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillThreshold = 3;\n this.globalNoFillCooldownUntil = 0;\n this.globalNoFillBackoffBaseMs = 5e3;\n this.globalNoFillBackoffMaxMs = 6e4;\n this.globalLastGamRequestTime = 0;\n this.globalMinGamIntervalMs = 3e3;\n this.config = config;\n this.video = video;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n // --- Ad stop timer ---\n scheduleAdStopCountdown(remainingMs) {\n this.clearAdStopTimer();\n const ms = Math.max(0, Math.floor(remainingMs));\n if (ms === 0) {\n this.ensureAdStoppedByTimer();\n return;\n }\n this.adStopTimerId = window.setTimeout(() => {\n this.ensureAdStoppedByTimer();\n }, ms);\n }\n clearAdStopTimer() {\n if (this.adStopTimerId != null) {\n clearTimeout(this.adStopTimerId);\n this.adStopTimerId = void 0;\n }\n }\n ensureAdStoppedByTimer() {\n this.adStopTimerId = void 0;\n this.callbacks.onAdStopTimerFired();\n }\n // --- Ad start timer ---\n scheduleAdStartIn(delayMs, marker = { type: \"start\" }, cueKey) {\n this.clearAdStartTimer();\n const ms = Math.max(0, Math.floor(delayMs));\n if (ms === 0) {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n return;\n }\n this.adStartTimerId = window.setTimeout(() => {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n }, ms);\n }\n clearAdStartTimer() {\n if (this.adStartTimerId != null) {\n clearTimeout(this.adStartTimerId);\n this.adStartTimerId = void 0;\n }\n }\n // --- PTS drift ---\n updatePtsDrift(ptsSecondsSample) {\n const sampleMs = (this.video.currentTime - ptsSecondsSample) * 1e3;\n if (!Number.isFinite(sampleMs) || Math.abs(sampleMs) > 6e4) return;\n const alpha = 0.1;\n this.ptsDriftEmaMs = this.ptsDriftEmaMs * (1 - alpha) + sampleMs * alpha;\n }\n resolveScteBreakStartWallClockMs(marker) {\n const nowWallClockMs = Date.now();\n if (typeof marker.ptsSeconds !== \"number\") {\n return nowWallClockMs;\n }\n const nowMs = this.video.currentTime * 1e3;\n const estimatedCurrentPtsMs = nowMs - this.ptsDriftEmaMs;\n const deltaMs = marker.ptsSeconds * 1e3 - estimatedCurrentPtsMs;\n if (!Number.isFinite(deltaMs)) {\n return nowWallClockMs;\n }\n return nowWallClockMs + Math.floor(deltaMs);\n }\n // --- Duration boundary ---\n beginBreakTiming(startWallClockMs) {\n this.currentAdBreakStartWallClockMs = startWallClockMs;\n this.breakStartMonoMs = monotonicNow() + (startWallClockMs - Date.now());\n this.breakEndMonoMs = void 0;\n }\n markBreakEndedNow() {\n this.scteAdBreakEndWallClockMs = Date.now();\n this.breakEndMonoMs = monotonicNow();\n }\n setAdBreakDurationBoundary(durationMs) {\n this.expectedAdBreakDurationMs = durationMs;\n if (durationMs != null && this.currentAdBreakStartWallClockMs != null) {\n this.scteAdBreakEndWallClockMs = this.currentAdBreakStartWallClockMs + durationMs;\n } else {\n this.scteAdBreakEndWallClockMs = void 0;\n }\n this.breakEndMonoMs = durationMs != null && this.breakStartMonoMs != null ? this.breakStartMonoMs + durationMs : void 0;\n }\n getBreakTimingSnapshot() {\n return {\n scheduledBreakDurationMs: this.expectedAdBreakDurationMs,\n breakStartMonoMs: this.breakStartMonoMs,\n breakEndMonoMs: this.breakEndMonoMs,\n playedDurationMs: this.adBreakPlayedDurationMs\n };\n }\n scheduleAdStopAtBreakBoundary() {\n if (this.expectedAdBreakDurationMs == null) {\n return;\n }\n this.scheduleAdStopCountdown(this.getWallClockRemainingAdMs());\n }\n // --- Duration budget ---\n getWallClockRemainingAdMs() {\n const endWallClockMs = this.getAdBreakEndWallClockMs();\n if (endWallClockMs != null) {\n return Math.max(0, endWallClockMs - Date.now());\n }\n return 0;\n }\n getAdBreakEndWallClockMs() {\n if (this.scteAdBreakEndWallClockMs != null) {\n return this.scteAdBreakEndWallClockMs;\n }\n if (this.expectedAdBreakDurationMs == null || this.currentAdBreakStartWallClockMs == null) {\n return void 0;\n }\n return this.currentAdBreakStartWallClockMs + this.expectedAdBreakDurationMs;\n }\n getDurationBudgetRemainingMs() {\n if (this.expectedAdBreakDurationMs == null) {\n return 0;\n }\n return Math.max(0, this.expectedAdBreakDurationMs - this.adBreakPlayedDurationMs);\n }\n getLoadedAdDurationMs(adController) {\n const durationSec = adController.getLoadedAdDuration?.();\n if (durationSec == null || durationSec <= 0) {\n return 0;\n }\n return Math.round(durationSec * 1e3);\n }\n adFitsRemainingBudget(durationMs) {\n if (durationMs <= 0 || this.expectedAdBreakDurationMs == null) {\n return true;\n }\n return durationMs <= this.getDurationBudgetRemainingMs();\n }\n logAdDurationDecision(accepted, durationMs, adController) {\n if (!this.debug) {\n return;\n }\n const remainingBudget = this.getDurationBudgetRemainingMs();\n const adId = adController.getLoadedAdId?.() ?? \"unknown\";\n if (accepted) {\n console.log(\n `[AD-DURATION] Accepted ad id=${adId}, duration=${durationMs}ms, budget remaining after play=${Math.max(0, remainingBudget - durationMs)}ms`\n );\n } else {\n console.log(\n `[AD-DURATION] Rejected ad id=${adId}, duration=${durationMs}ms exceeds remaining budget=${remainingBudget}ms \\u2014 requesting another ad`\n );\n }\n }\n recordPlayedAdDuration(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n if (durationMs <= 0) {\n return;\n }\n this.adBreakPlayedDurationMs += durationMs;\n if (this.debug) {\n console.log(\n `[AD-DURATION] Played ${durationMs}ms \\u2014 total played=${this.adBreakPlayedDurationMs}ms / ${this.expectedAdBreakDurationMs ?? \"?\"}ms`\n );\n }\n }\n ensureLoadedAdFitsBudget(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n const fits = this.adFitsRemainingBudget(durationMs);\n this.logAdDurationDecision(fits, durationMs, adController);\n return fits;\n }\n rejectLoadedAdForDuration(adController) {\n try {\n adController.destroy();\n } catch {\n }\n }\n markAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n noteAdRequestSent() {\n this.totalAdRequestsInBreak++;\n this.lastAdRequestTime = Date.now();\n }\n notePodAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n getRemainingAdMs() {\n const wallClockRemaining = this.getWallClockRemainingAdMs();\n const budgetRemaining = this.getDurationBudgetRemainingMs();\n if (this.expectedAdBreakDurationMs == null) {\n return wallClockRemaining;\n }\n return Math.min(wallClockRemaining, budgetRemaining);\n }\n getMinRemainingMsToStartAd() {\n const configured = this.config.minRemainingMsToStartAd;\n if (typeof configured === \"number\" && configured >= 0) {\n return configured;\n }\n return this.defaultMinRemainingMsToStartAd;\n }\n hasTimeToStartAnotherAd() {\n const minRemaining = this.getMinRemainingMsToStartAd();\n return this.getWallClockRemainingAdMs() > minRemaining && this.getDurationBudgetRemainingMs() > minRemaining;\n }\n // --- Circuit breaker ---\n isTemporaryAdError(error) {\n const message = error?.message?.toLowerCase() || \"\";\n if (message.includes(\"no ads available\") || message.includes(\"no fill\") || message.includes(\"nofill\")) {\n return true;\n }\n if (message.includes(\"timeout\")) {\n return true;\n }\n if (message.includes(\"ad player destroyed\") || message.includes(\"aborted\")) {\n return true;\n }\n if (message.includes(\"rate limit\") || message.includes(\"too many requests\")) {\n return true;\n }\n if (message.includes(\"ad playback error\")) {\n return true;\n }\n return false;\n }\n isUrlInCooldown(vastTagUrl) {\n const failureTime = this.temporaryFailureUrls.get(vastTagUrl);\n if (failureTime == null) {\n return false;\n }\n const elapsed = Date.now() - failureTime;\n if (elapsed >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(vastTagUrl);\n return false;\n }\n return true;\n }\n cleanupTemporaryFailures() {\n const now = Date.now();\n for (const [url, timestamp] of this.temporaryFailureUrls) {\n if (now - timestamp >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(url);\n }\n }\n }\n isGamInCooldown() {\n return Date.now() < this.globalNoFillCooldownUntil;\n }\n recordGamNoFill() {\n this.globalConsecutiveNoFills++;\n if (this.globalConsecutiveNoFills >= this.globalNoFillThreshold) {\n const exponent = this.globalConsecutiveNoFills - this.globalNoFillThreshold;\n const backoff = Math.min(\n this.globalNoFillBackoffBaseMs * Math.pow(2, exponent),\n this.globalNoFillBackoffMaxMs\n );\n this.globalNoFillCooldownUntil = Date.now() + backoff;\n if (this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] GAM cooldown activated: ${backoff}ms (${this.globalConsecutiveNoFills} consecutive no-fills)`\n );\n }\n }\n }\n resetGamNoFillCounter() {\n if (this.globalConsecutiveNoFills > 0 && this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] Resetting no-fill counter (was ${this.globalConsecutiveNoFills})`\n );\n }\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillCooldownUntil = 0;\n }\n async enforceGlobalRateLimit() {\n const now = Date.now();\n const elapsed = now - this.globalLastGamRequestTime;\n if (elapsed < this.globalMinGamIntervalMs) {\n const waitMs = this.globalMinGamIntervalMs - elapsed;\n if (this.debug) {\n console.log(`[RATE-LIMIT] Waiting ${waitMs}ms before next GAM request`);\n }\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n this.globalLastGamRequestTime = Date.now();\n }\n // --- Watchdog ---\n startAdRequestWatchdog(token) {\n this.clearAdRequestWatchdog();\n const timeoutMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adRequestWatchdogToken = token;\n this.adRequestWatchdogId = window.setTimeout(() => {\n if (this.adRequestWatchdogToken !== token) {\n return;\n }\n this.adRequestWatchdogId = void 0;\n this.adRequestWatchdogToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_request_timeout\", { token, timeoutMs });\n this.callbacks.onWatchdogTimeout();\n }, timeoutMs);\n this.logAdState(\"ad_request_watchdog_started\", { token, timeoutMs });\n }\n clearAdRequestWatchdog() {\n if (this.adRequestWatchdogId != null) {\n clearTimeout(this.adRequestWatchdogId);\n this.adRequestWatchdogId = void 0;\n }\n if (this.adRequestWatchdogToken != null) {\n this.logAdState(\"ad_request_watchdog_cleared\", {\n token: this.adRequestWatchdogToken\n });\n this.adRequestWatchdogToken = null;\n }\n }\n // --- Failsafe ---\n startAdFailsafeTimer(token) {\n this.clearAdFailsafeTimer();\n const failsafeMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adFailsafeToken = token;\n this.adFailsafeTimerId = window.setTimeout(() => {\n if (this.adFailsafeToken !== token) {\n return;\n }\n this.adFailsafeTimerId = void 0;\n this.adFailsafeToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_failsafe_triggered\", {\n token,\n failsafeMs,\n videoPaused: this.video.paused\n });\n this.callbacks.onFailsafeTimeout();\n }, failsafeMs);\n this.logAdState(\"ad_failsafe_started\", { token, failsafeMs });\n }\n clearAdFailsafeTimer() {\n if (this.adFailsafeTimerId != null) {\n clearTimeout(this.adFailsafeTimerId);\n this.logAdState(\"ad_failsafe_cleared\", { token: this.adFailsafeToken });\n this.adFailsafeTimerId = void 0;\n }\n this.adFailsafeToken = null;\n }\n logAdState(event, extra = {}) {\n if (!this.debug) {\n return;\n }\n const { inAdBreak, showAds, adPlaying } = this.callbacks.getAdState();\n console.log(\"[StormcloudVideoPlayer][AdState]\", {\n event,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n showAds,\n adPlaying,\n inAdBreak,\n activeAdRequestToken: this.activeAdRequestToken,\n ...extra\n });\n }\n // --- Reset for ad break end ---\n resetForBreakEnd() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdRequestWatchdog();\n this.clearAdFailsafeTimer();\n this.activeAdRequestToken = null;\n this.expectedAdBreakDurationMs = void 0;\n this.currentAdBreakStartWallClockMs = void 0;\n this.scteAdBreakEndWallClockMs = void 0;\n this.breakStartMonoMs = void 0;\n this.breakEndMonoMs = void 0;\n this.adBreakPlayedDurationMs = 0;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.consecutiveFailures = 0;\n this.globalConsecutiveNoFills = 0;\n this.adBreakEpoch++;\n }\n destroy() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdFailsafeTimer();\n this.clearAdRequestWatchdog();\n }\n};\n\n// src/player/PlaceholderLayer.ts\nvar PlaceholderLayer = class {\n constructor(video, debug) {\n this.video = video;\n this.debug = debug;\n }\n ensureContainer() {\n if (this.container) {\n return;\n }\n const el = document.createElement(\"div\");\n el.style.position = \"absolute\";\n el.style.left = \"0\";\n el.style.top = \"0\";\n el.style.right = \"0\";\n el.style.bottom = \"0\";\n el.style.display = \"none\";\n el.style.alignItems = \"center\";\n el.style.justifyContent = \"center\";\n el.style.pointerEvents = \"none\";\n el.style.zIndex = \"5\";\n el.style.backgroundColor = \"#000\";\n el.style.transition = \"opacity 0.3s ease-in-out\";\n el.style.opacity = \"0\";\n if (!this.video.parentElement) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Video element has no parent for placeholder container\");\n }\n return;\n }\n this.video.parentElement.appendChild(el);\n this.container = el;\n }\n show() {\n this.ensureContainer();\n if (!this.container) {\n return;\n }\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video when showing placeholder\");\n }\n }\n const wasHidden = this.container.style.display === \"none\" || this.container.style.opacity === \"0\";\n if (wasHidden) {\n this.container.style.transition = \"none\";\n } else {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n this.container.style.backgroundColor = \"#000\";\n this.container.style.display = \"flex\";\n this.container.offsetHeight;\n this.container.style.opacity = \"1\";\n this.container.style.pointerEvents = \"auto\";\n if (wasHidden) {\n requestAnimationFrame(() => {\n if (this.container) {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n });\n }\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder layer (between content and ad layer)\");\n }\n }\n hide() {\n if (!this.container) {\n return;\n }\n this.container.style.opacity = \"0\";\n setTimeout(() => {\n if (this.container) {\n this.container.style.display = \"none\";\n this.container.style.pointerEvents = \"none\";\n this.container.style.backgroundColor = \"#000\";\n }\n }, 300);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder layer\");\n }\n }\n destroy() {\n if (this.container) {\n if (this.container.parentElement) {\n this.container.parentElement.removeChild(this.container);\n }\n this.container = void 0;\n }\n }\n};\n\n// src/player/HlsEngine.ts\nvar import_hls2 = __toESM(require(\"hls.js\"), 1);\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new import_hls2.default({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(import_hls2.default.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(import_hls2.default.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(import_hls2.default.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const isDateRange = tag.includes(\"EXT-X-DATERANGE\");\n const attrs = isDateRange ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = isDateRange ? getDateRangeDurationSeconds(attrs) : parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(import_hls2.default.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = getDateRangeDurationSeconds(attrs);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(import_hls2.default.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case import_hls2.default.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case import_hls2.default.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n\n// src/player/EdgePodRequest.ts\nvar EDGE_POD_MAX_ADS = 10;\nvar EDGE_POD_EXCEEDS_BUDGET = \"edge_pod_exceeds_budget\";\nvar LICENSE_KEY_PLACEHOLDER = /\\{licenseKey\\}|%7BlicenseKey%7D/gi;\nfunction resolveEdgePodBaseUrl(config) {\n if (config.enableEdgePodRequest !== true) return void 0;\n const raw = config.edgePodUrl?.trim();\n if (!raw) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only\"\n );\n return void 0;\n }\n const licenseKey = config.licenseKey?.trim();\n if (!licenseKey) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but licenseKey is missing; using GAM only\"\n );\n return void 0;\n }\n const encodedKey = encodeURIComponent(licenseKey);\n try {\n const hasPlaceholder = raw.search(LICENSE_KEY_PLACEHOLDER) !== -1;\n const url = new URL(hasPlaceholder ? raw.replace(LICENSE_KEY_PLACEHOLDER, encodedKey) : raw);\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`unsupported protocol ${url.protocol}`);\n }\n if (!hasPlaceholder) {\n const path = url.pathname.replace(/\\/+$/, \"\");\n url.pathname = /\\/[^/]+\\/pod$/.test(path) ? path.replace(/\\/[^/]+\\/pod$/, `/${encodedKey}/pod`) : `${path}/${encodedKey}/pod`;\n }\n return url.toString();\n } catch {\n console.warn(\"[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only\");\n return void 0;\n }\n}\nfunction resolveEdgePodRequestContext(config, extra = {}) {\n return {\n width: extra.width,\n height: extra.height,\n playerId: extra.playerId,\n contentNetwork: config.contentNetwork,\n contentChannel: config.channelName,\n contentTitle: config.programTitle\n };\n}\nfunction setOptionalParam(url, key, value) {\n const trimmed = value?.trim();\n if (trimmed) url.searchParams.set(key, trimmed);\n}\nfunction buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit, context = {}) {\n const url = new URL(baseUrl);\n const maxMs = Math.max(0, Math.floor(remainingMs));\n const maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));\n url.searchParams.set(\"pmxd\", String(maxMs));\n url.searchParams.set(\"pmad\", String(maxAds));\n url.searchParams.set(\"duration\", String(Math.floor(maxMs / 1e3)));\n url.searchParams.set(\"count\", String(maxAds));\n if (context.width != null && Number.isFinite(context.width) && context.width > 0) {\n url.searchParams.set(\"width\", String(Math.round(context.width)));\n }\n if (context.height != null && Number.isFinite(context.height) && context.height > 0) {\n url.searchParams.set(\"height\", String(Math.round(context.height)));\n }\n setOptionalParam(url, \"pid\", context.playerId);\n setOptionalParam(url, \"cn\", context.contentNetwork);\n setOptionalParam(url, \"cc\", context.contentChannel);\n setOptionalParam(url, \"ct\", context.contentTitle);\n return url.toString();\n}\nfunction classifyEdgeVastResponse(result) {\n if (result.error == null) {\n return result.podAdCount > 0 ? \"fill\" : \"no_fill\";\n }\n const message = result.error?.message ?? String(result.error);\n if (/no ads available|fill rejected|no media file|no ad loaded/i.test(message) || message.includes(EDGE_POD_EXCEEDS_BUDGET)) {\n return \"no_fill\";\n }\n return \"invalid\";\n}\nfunction describeEdgeUrl(url) {\n try {\n const parsed = new URL(url);\n return `${parsed.origin}${parsed.pathname}`;\n } catch {\n return url.split(\"?\")[0] ?? \"\";\n }\n}\n\n// src/player/PlayerControls.ts\nfunction getAdAudioVolume(adPlayer) {\n return adPlayer.getOriginalMutedState() ? 0 : adPlayer.getOriginalVolume();\n}\nfunction toggleMute(video, adPlayer, debug) {\n if (adPlayer.isAdPlaying()) {\n const newMutedState = !adPlayer.getOriginalMutedState();\n const restoreVolume = adPlayer.getOriginalVolume() || 1;\n adPlayer.updateOriginalMutedState(newMutedState, video.volume);\n adPlayer.setAdVolume(newMutedState ? 0 : restoreVolume);\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] Mute toggle during ad - immediately applied:\",\n newMutedState\n );\n }\n } else {\n video.muted = !video.muted;\n adPlayer.updateOriginalMutedState(video.muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Muted:\", video.muted);\n }\n }\n}\nfunction toggleFullscreen(video, debug) {\n return new Promise((resolve, reject) => {\n if (!document.fullscreenElement) {\n const container = video.parentElement;\n if (!container) {\n reject(new Error(\"No parent container found for fullscreen\"));\n return;\n }\n container.requestFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Entered fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\"[StormcloudVideoPlayer] Fullscreen error:\", err);\n }\n reject(err);\n });\n } else {\n document.exitFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Exited fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\n \"[StormcloudVideoPlayer] Exit fullscreen error:\",\n err\n );\n }\n reject(err);\n });\n }\n });\n}\nfunction isMuted(video, adPlayer) {\n if (adPlayer.isAdPlaying()) {\n return adPlayer.getOriginalMutedState();\n }\n return video.muted;\n}\nfunction setMuted(video, adPlayer, muted, debug) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying && muted === video.muted) {\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] setMuted reflective update during ad ignored\",\n { muted }\n );\n }\n return;\n }\n video.muted = muted;\n if (adPlaying) {\n adPlayer.updateOriginalMutedState(muted, video.volume);\n adPlayer.setAdVolume(muted ? 0 : 1);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted applied during ad\", {\n muted\n });\n }\n return;\n }\n adPlayer.updateOriginalMutedState(muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted called:\", muted);\n }\n}\nfunction setVolume(video, adPlayer, volume, debug) {\n const clampedVolume = Math.max(0, Math.min(1, volume));\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n adPlayer.setAdVolume(clampedVolume);\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume applied during ad\", {\n volume: clampedVolume\n });\n }\n } else {\n video.volume = clampedVolume;\n video.muted = clampedVolume === 0;\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume called:\", clampedVolume);\n }\n }\n}\nfunction getVolume(video, adPlayer) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n return adPlayer.getAdVolume();\n }\n return video.volume;\n}\nfunction isFullscreen() {\n return !!document.fullscreenElement;\n}\nfunction resizePlayer(video, adPlayer, debug) {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Resizing player\");\n }\n if (adPlayer && adPlayer.isAdPlaying()) {\n const width = video.clientWidth || 640;\n const height = video.clientHeight || 480;\n if (debug) {\n console.log(\n `[StormcloudVideoPlayer] Resizing ads manager to ${width}x${height}`\n );\n }\n adPlayer.resize(width, height);\n }\n}\n\n// src/player/AdBreakOrchestrator.ts\nvar REQUEST_FAILURE_STAGES = /* @__PURE__ */ new Set([\n \"no_fill\",\n \"vast_fill_rejected\",\n \"request_failed\",\n \"media_unsupported\",\n \"play_failed\",\n \"play_resolved_but_never_started\",\n \"hls_fatal\",\n \"media_error\",\n \"stall\",\n \"decode_failure\"\n]);\nvar AdBreakOrchestrator = class {\n constructor(host, timing, adConfig, cueManager, placeholder) {\n this.inAdBreak = false;\n this.showAds = false;\n this.isShowingPlaceholder = false;\n this.adDetectSentForCurrentBreak = false;\n this.slotState = \"IDLE\";\n this.unusableResponsesInBreak = 0;\n this.controllerGeneration = 0;\n this.requestDiagnostics = /* @__PURE__ */ new Map();\n this.breakFunnel = {};\n this.controllerCallInFlight = false;\n this.playbackStartedForCurrentRequest = false;\n this.opportunityEpoch = -1;\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.adPodQueue = [];\n this.defaultMinRemainingMsToRequestAd = 1e4;\n this.defaultMaxNoFillsPerBreak = 2;\n this.defaultLiveMaxNoFillsPerBreak = 1;\n this.breakDurationWaitMs = 300;\n this.pendingAdBreak = null;\n this.host = host;\n this.timing = timing;\n this.adConfig = adConfig;\n this.cueManager = cueManager;\n this.placeholder = placeholder;\n }\n get debug() {\n return !!this.host.config.debugAdTiming;\n }\n get analyticsContext() {\n return buildAnalyticsContext(this.host.config);\n }\n // ───────────────────────────────────────────────────────────────\n // IMA event listeners\n // ───────────────────────────────────────────────────────────────\n nextAdRequestUrl(baseVastUrl) {\n return this.host.generatePodVastUrl(baseVastUrl);\n }\n attachImaEventListeners() {\n const controller = this.host.getAdPlayer();\n const generation = this.controllerGeneration;\n const adPlayer = {\n on: (event, handler) => {\n controller.on(event, (payload) => {\n if (generation !== this.controllerGeneration) {\n this.logOrchestratorFunnel(\"stale_callback_ignored\", {\n event,\n staleControllerId: generation,\n currentControllerId: this.controllerGeneration\n });\n return;\n }\n handler(payload);\n });\n }\n };\n adPlayer.on(\"pod_ad_started\", (payload) => {\n this.timing.notePodAdStarted();\n if (this.debug) {\n console.log(\n `[POD] Playing pod ad ${payload?.index != null ? payload.index + 1 : \"?\"}/${payload?.total ?? \"?\"}`\n );\n }\n });\n adPlayer.on(\"ad_click\", () => {\n this.host.onAdClick();\n });\n adPlayer.on(\"ad_interaction\", (event) => {\n if (event) this.host.onAdInteraction(event);\n });\n adPlayer.on(\"ad_funnel\", (payload) => {\n if (!payload?.stage) return;\n const stage = payload.stage;\n this.countFunnelStage(stage);\n if (payload.reason) {\n this.countFunnelStage(`${stage}:${payload.reason}`);\n }\n if (stage === \"impression_fired\" && payload.pixelCount != null) {\n this.countFunnelStage(\"impression_urls\", payload.pixelCount);\n }\n if (payload.visibilityState === \"hidden\") {\n this.countFunnelStage(\"while_hidden\");\n }\n if (stage === \"gam_http_request_sent\") {\n if (payload.attempt === 1) {\n this.timing.noteAdRequestSent();\n } else {\n this.countFunnelStage(\"gam_http_request_retry\");\n }\n }\n this.recordRequestDiagnostic(payload);\n });\n adPlayer.on(\"ad_impression\", () => {\n this.timing.consecutiveFailures = 0;\n this.setSlotState(\"PLAYING\", \"impression\");\n if (!this.playbackStartedForCurrentRequest) {\n this.playbackStartedForCurrentRequest = true;\n this.timing.markAdStarted();\n }\n sendAdImpressionTracking(\n this.host.config.licenseKey,\n {\n source: \"hls\",\n adIndex: this.timing.currentAdIndex,\n ...this.currentVastUrl ? { adUrl: this.currentVastUrl } : {},\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n this.analyticsContext\n ).catch(() => {\n });\n });\n adPlayer.on(\"all_ads_completed\", () => {\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n const remaining = this.timing.getRemainingAdMs();\n this.timing.consecutiveFailures = 0;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] all_ads_completed event received - remaining=${remaining}ms`\n );\n }\n if (this.inAdBreak) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"all_ads_completed\");\n this.requestNextAd(\"all_ads_completed\");\n }\n });\n adPlayer.on(\"ad_error\", (errorPayload) => {\n if (this.controllerCallInFlight) {\n if (this.debug) {\n console.log(\"[AdBreak] ad_error during request/play; outcome reported by the caller\", errorPayload || \"\");\n }\n return;\n }\n let errorMessage = \"Ad error (no details)\";\n if (errorPayload) {\n const errorCode = errorPayload.code || errorPayload.errorCode || \"unknown\";\n const vastErrorCode = errorPayload.vastErrorCode;\n const message = errorPayload.message || errorPayload.errorMessage || \"Unknown error\";\n const cause = errorPayload.cause || errorPayload.innerError || errorPayload.error;\n errorMessage = `Ad error: AdError ${errorCode}: ${message}`;\n if (vastErrorCode && vastErrorCode !== \"N/A\" && vastErrorCode !== errorCode) {\n errorMessage += ` (VAST Error Code: ${vastErrorCode})`;\n }\n if (cause) {\n const causeMessage = typeof cause === \"string\" ? cause : cause.message || String(cause);\n errorMessage += `. Caused by: ${causeMessage}`;\n }\n }\n console.error(\"[AD-ERROR]\", errorMessage, errorPayload || \"\");\n this.handleAdFailure(\"ad_error\");\n });\n adPlayer.on(\"content_pause\", () => {\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = true;\n if (this.currentPodSource !== \"edge\") {\n this.timing.resetGamNoFillCounter();\n }\n if (this.inAdBreak && this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad break timer on content_pause (first ad starting)\");\n }\n }\n this.host.getAdPlayer().setAdVolume(getAdAudioVolume(this.host.getAdPlayer()));\n if (this.isShowingPlaceholder) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder - new ads starting\");\n }\n this.host.getAdPlayer().hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n });\n adPlayer.on(\"content_resume\", () => {\n if (!this.host.video.muted) {\n this.host.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on content_resume (ad ended, gap between ads)\");\n }\n }\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = false;\n if (!this.inAdBreak) {\n return;\n }\n this.timing.consecutiveFailures = 0;\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n if (this.debug) {\n console.log(\n `[AdBreak] content_resume: remaining=${this.timing.getRemainingAdMs()}ms`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"ad_complete\");\n this.requestNextAd(\"ad_complete\");\n });\n }\n recreateAdController(reason) {\n if (reason === \"new_request\" && (this.slotState === \"REQUESTING\" || this.slotState === \"READY\")) {\n console.warn(\"[AD-CONTROLLER] destroy during active request\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n }\n console.log(\"[AD-CONTROLLER] destroy\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n this.countFunnelStage(`controller_destroy:${reason}`);\n const shouldShowPlaceholder = this.inAdBreak && this.showAds;\n const adPlayer = this.host.getAdPlayer();\n if (shouldShowPlaceholder && adPlayer) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder before destroying old AdController\");\n }\n this.placeholder.show();\n adPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n const preservedMutedState = adPlayer.getOriginalMutedState();\n const preservedVolumeState = adPlayer.getOriginalVolume();\n this.playbackStartedForCurrentRequest = false;\n if (adPlayer) {\n try {\n adPlayer.destroy();\n this.host.video.muted = true;\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Error destroying old AdController:\", error);\n }\n }\n }\n const continueLiveStreamDuringAds = this.host.shouldContinueLiveStreamDuringAds();\n const newAdPlayer = this.host.createAdPlayer(continueLiveStreamDuringAds);\n this.host.setAdPlayer(newAdPlayer);\n this.controllerGeneration++;\n newAdPlayer.initialize();\n newAdPlayer.updateOriginalMutedState(preservedMutedState, preservedVolumeState);\n this.attachImaEventListeners();\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] create\", {\n controllerId: this.controllerGeneration,\n reason\n });\n }\n if (shouldShowPlaceholder) {\n this.placeholder.show();\n newAdPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n }\n clearPendingAdBreak() {\n if (this.prefetchTimerId != null) {\n clearTimeout(this.prefetchTimerId);\n this.prefetchTimerId = void 0;\n }\n this.pendingAdBreak = null;\n this.cueManager.pendingScte35CueKey = void 0;\n this.adConfig.podAssignedByPrefetch = false;\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break start\n // ───────────────────────────────────────────────────────────────\n isBreakActive() {\n return this.slotState !== \"IDLE\";\n }\n getSlotState() {\n return this.slotState;\n }\n beginVmapBreak(breakKey, position) {\n this.breakSource = \"vmap\";\n this.resetEdgeStateForBreak();\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.timing.totalAdRequestsInBreak = 0;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"vmap_break_start\");\n this.noteOpportunity(\"vmap\", breakKey, position);\n }\n async handleAdStart(marker) {\n if (this.slotState !== \"IDLE\") {\n this.logOrchestratorFunnel(\"duplicate_break_start\", {\n source: \"scte35\",\n state: this.slotState\n });\n return;\n }\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n const edgeConfigured = !!this.host.getEdgePodBaseUrl();\n if (!baseVastUrl && !edgeConfigured) {\n console.warn(\"[AdBreak] SCTE-35 break started but no direct VAST tag is configured\");\n this.clearPendingAdBreak();\n return;\n }\n let adBreakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs;\n this.timing.failedVastUrls.clear();\n this.timing.temporaryFailureUrls.clear();\n this.timing.consecutiveFailures = 0;\n this.isShowingPlaceholder = false;\n this.timing.totalAdRequestsInBreak = 0;\n this.breakSource = \"scte35\";\n this.followUpBaseVastUrl = baseVastUrl;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n this.setSlotState(\"NEEDS_NEXT_AD\", \"scte35_break_start\");\n if (this.adConfig.podAssignedByPrefetch) {\n this.adConfig.podAssignedByPrefetch = false;\n } else {\n this.adConfig.beginNewAdPod();\n }\n const currentMuted = this.host.video.muted;\n const currentVolume = this.host.video.volume;\n this.host.getAdPlayer().updateOriginalMutedState(currentMuted, currentVolume);\n this.inAdBreak = true;\n this.timing.adBreakPlayedDurationMs = 0;\n this.timing.currentAdIndex = 0;\n this.timing.totalAdsInBreak = 0;\n this.adPodQueue = [];\n this.showAds = false;\n if (this.timing.expectedAdBreakDurationMs == null && adBreakDurationMs != null) {\n this.timing.expectedAdBreakDurationMs = adBreakDurationMs;\n }\n this.noteOpportunity(\"scte35\", this.cueManager.activeScte35BreakKey, \"midroll\");\n const epoch = this.timing.adBreakEpoch;\n if (adBreakDurationMs == null) {\n adBreakDurationMs = await this.waitForBreakDuration(this.breakDurationWaitMs);\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n }\n if (this.debug) {\n const mode = this.host.config.isLiveStream ? \"LIVE\" : \"VOD\";\n console.log(\n `[AdBreak] ${mode} break start: target duration=${adBreakDurationMs != null ? `${adBreakDurationMs}ms` : \"unknown\"}`\n );\n }\n if (edgeConfigured) {\n const edgeUrl = this.canRequestEdge() ? this.prepareEdgePodRequest() : void 0;\n if (edgeUrl) {\n this.clearPendingAdBreak();\n const outcome = await this.runEdgePod(edgeUrl, \"edge_break_start\");\n this.continueAfterEdgeOutcome(outcome, epoch);\n return;\n }\n if (!this.edgeExhaustedForBreak) {\n this.markEdgeExhausted(\"not_eligible_at_break_start\", {\n isLive: this.isLiveBreak(),\n durationMs: this.timing.expectedAdBreakDurationMs\n });\n }\n }\n if (!baseVastUrl) {\n this.requestNextAd(\"no_gam_source\");\n return;\n }\n const podPlayed = await this.startOptimizedPod(baseVastUrl);\n if (!podPlayed && this.inAdBreak && epoch === this.timing.adBreakEpoch) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"initial_request_failed\");\n this.requestNextAd(\"initial_request_failed\");\n }\n }\n async waitForBreakDuration(maxWaitMs) {\n const deadline = Date.now() + maxWaitMs;\n while (this.timing.expectedAdBreakDurationMs == null && Date.now() < deadline) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n if (!this.inAdBreak) break;\n }\n const durationMs = this.timing.expectedAdBreakDurationMs;\n this.logOrchestratorFunnel(\"break_duration_wait\", {\n waitedForMs: maxWaitMs - Math.max(0, deadline - Date.now()),\n durationMs,\n resolved: durationMs != null\n });\n return durationMs;\n }\n // ───────────────────────────────────────────────────────────────\n // Optimized pod (single multi-ad request)\n // ───────────────────────────────────────────────────────────────\n async startOptimizedPod(baseVastUrl) {\n let podUrl;\n const prefetched = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0) {\n podUrl = this.pendingAdBreak.vastUrls[0];\n this.clearPendingAdBreak();\n } else {\n podUrl = this.host.generatePodVastUrl(baseVastUrl);\n }\n if (!podUrl) {\n return false;\n }\n this.noteVastUrlGenerated(podUrl, prefetched ? \"prefetch\" : \"break_start\");\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", \"initial_pod\");\n this.beginFunnelRequest(adPlayer, requestToken, \"initial_pod\");\n let requestUrl = this.applyOpportunityFloor(podUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return true;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return true;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => adPlayer.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, adPlayer);\n }\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return true;\n }\n const podCount = adPlayer.getPodAdCount?.() ?? 1;\n if (podCount < 1) {\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n this.recordRequestFailure(new Error(\"No ads available\"), podUrl);\n return false;\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n if (this.debug) {\n console.log(\n podCount === 1 ? \"[POD] Response contained a single ad; playing it and enabling pod top-up\" : `[POD] Optimized pod returned ${podCount} ads; playing pod in one controller`\n );\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: this.currentVastUrl ?? requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return true;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return true;\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return true;\n }\n if (this.debug) {\n console.warn(\"[POD] Optimized pod request/play failed:\", error);\n }\n if (this.handlePodRequestNotSent(error)) return false;\n this.recordRequestFailure(error, podUrl);\n return false;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Edge-first pods (live SCTE-35 only, GAM fallback)\n // ───────────────────────────────────────────────────────────────\n resetEdgeStateForBreak() {\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.currentPodSource = void 0;\n }\n isLiveBreak() {\n return this.host.isLiveStream() || this.host.config.isLiveStream === true;\n }\n canRequestEdge() {\n return this.breakSource === \"scte35\" && !this.edgeExhaustedForBreak && !!this.host.getEdgePodBaseUrl() && this.isLiveBreak() && this.timing.expectedAdBreakDurationMs != null && this.edgeRequestsInBreak < this.timing.maxTotalAdRequestsPerBreak;\n }\n markEdgeExhausted(reason, extra = {}) {\n this.edgeExhaustedForBreak = true;\n this.countFunnelStage(`edge_fallback:${reason}`);\n this.logOrchestratorFunnel(\"edge_exhausted\", {\n reason,\n edgeRequests: this.edgeRequestsInBreak,\n remainingMs: this.timing.getRemainingAdMs(),\n ...extra\n });\n }\n prepareEdgePodRequest() {\n const baseUrl = this.host.getEdgePodBaseUrl();\n if (!baseUrl) return void 0;\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n );\n if (remainingAds < 1) {\n this.markEdgeExhausted(\"ad_capacity_reached\", { adsInBreak: this.timing.totalAdsInBreak });\n return void 0;\n }\n if (remainingMs < this.getMinRemainingMsToRequestAd()) {\n this.markEdgeExhausted(\"insufficient_break_time\", { remainingMs });\n return void 0;\n }\n try {\n const playerId = getCachedBrowserId();\n return buildEdgePodUrl(\n baseUrl,\n remainingMs,\n remainingAds,\n resolveEdgePodRequestContext(this.host.config, {\n width: this.host.video.offsetWidth || this.host.video.clientWidth,\n height: this.host.video.offsetHeight || this.host.video.clientHeight,\n playerId\n })\n );\n } catch {\n this.markEdgeExhausted(\"invalid_edge_url\");\n return void 0;\n }\n }\n async runEdgePod(requestUrl, trigger) {\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"edge\";\n this.edgeRequestsInBreak++;\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(adPlayer, requestToken, trigger, \"edge\");\n this.currentVastUrl = requestUrl;\n const params = new URL(requestUrl).searchParams;\n this.logOrchestratorFunnel(\"edge_request_sent\", {\n trigger,\n attempt: this.edgeRequestsInBreak,\n endpoint: describeEdgeUrl(requestUrl),\n pmxd: params.get(\"pmxd\") ?? void 0,\n pmad: params.get(\"pmad\") ?? void 0\n });\n try {\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl, { source: \"edge\" }));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken, source: \"edge\" });\n return \"stale\";\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.max(\n 1,\n Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n )\n );\n const overrunAllowanceMs = Math.max(0, this.host.config.maxAdBreakExtensionMs ?? 0);\n const podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs + overrunAllowanceMs, remainingAds) : adPlayer.getPodAdCount?.() ?? 0;\n if (classifyEdgeVastResponse({ podAdCount: podCount }) !== \"fill\") {\n throw new Error(`${EDGE_POD_EXCEEDS_BUDGET}: no Edge ad fits ${remainingMs}ms`);\n }\n this.setSlotState(\"READY\", \"edge_vast_ready\");\n this.logOrchestratorFunnel(\"edge_fill\", {\n podAdCount: podCount,\n podDurationMs: adPlayer.getPodTotalDurationMs?.(),\n remainingMs,\n overrunAllowanceMs\n });\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return \"stale\";\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return \"fill\";\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n const errorMessage = error?.message;\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n source: \"edge\",\n errorMessage\n });\n return \"stale\";\n }\n const classification = classifyEdgeVastResponse({ podAdCount: 0, error });\n const diag = this.requestDiagnostics.get(requestToken);\n if (diag && !diag.failureReason) diag.failureReason = `edge_${classification}: ${errorMessage}`;\n this.markEdgeExhausted(`edge_${classification}`, { errorMessage });\n return \"fallback\";\n }\n }\n continueAfterEdgeOutcome(outcome, epoch) {\n if (outcome !== \"fallback\") return;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] No usable Edge pod; checking with GAM for the remaining break\");\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"edge_fallback\");\n this.requestNextAd(\"edge_fallback\");\n }\n // ───────────────────────────────────────────────────────────────\n // Next-ad scheduling (single flight)\n // ───────────────────────────────────────────────────────────────\n setSlotState(next, reason) {\n if (this.slotState === next) return;\n const previous = this.slotState;\n this.slotState = next;\n if (this.debug) {\n console.log(`[AdBreak][STATE] ${previous} -> ${next}`, {\n reason,\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n controllerId: this.controllerGeneration\n });\n }\n }\n isStale(epoch, generation) {\n return !this.inAdBreak || epoch !== this.timing.adBreakEpoch || generation !== this.controllerGeneration;\n }\n getMinRemainingMsToRequestAd() {\n const configured = this.host.config.minRemainingMsToRequestAd;\n const floor = this.timing.getMinRemainingMsToStartAd();\n if (typeof configured === \"number\" && configured >= 0) {\n return Math.max(configured, floor);\n }\n return Math.max(this.defaultMinRemainingMsToRequestAd, floor);\n }\n getMaxNoFillsPerBreak() {\n const configured = this.host.config.maxNoFillsPerBreak;\n if (typeof configured === \"number\" && configured > 0) return configured;\n return this.breakSource === \"scte35\" ? this.defaultLiveMaxNoFillsPerBreak : this.defaultMaxNoFillsPerBreak;\n }\n isBreakTimeBounded() {\n return this.breakSource === \"scte35\" || this.timing.expectedAdBreakDurationMs != null;\n }\n getStopRequestingReason(remainingMs) {\n if (this.breakSource === \"vmap\") {\n if (this.adPodQueue.length === 0) return \"vmap_queue_empty\";\n } else if (this.breakSource !== \"scte35\" || !this.followUpBaseVastUrl && !this.canRequestEdge()) {\n return \"no_follow_up_source\";\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n return \"max_consecutive_failures\";\n }\n if (this.unusableResponsesInBreak >= this.getMaxNoFillsPerBreak()) {\n return \"unusable_response_limit\";\n }\n if (this.timing.totalAdRequestsInBreak >= this.timing.maxTotalAdRequestsPerBreak) {\n return \"request_cap\";\n }\n if (!this.canRequestEdge() && this.timing.isGamInCooldown()) {\n return \"gam_cooldown\";\n }\n if (this.isBreakTimeBounded() && remainingMs < this.getMinRemainingMsToRequestAd()) {\n return \"insufficient_break_time\";\n }\n return void 0;\n }\n getNextRequestDelayMs() {\n const failures = this.timing.consecutiveFailures;\n const backoff = failures > 0 ? Math.min(this.timing.backoffBaseMs * Math.pow(2, failures), this.timing.maxBackoffMs) : 0;\n const minInterval = this.timing.minAdRequestIntervalMs + backoff;\n const sinceLast = Date.now() - this.timing.lastAdRequestTime;\n return Math.max(0, minInterval - sinceLast);\n }\n requestNextAd(trigger) {\n if (!this.inAdBreak) return;\n if (this.slotState !== \"NEEDS_NEXT_AD\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"slot_busy\"\n });\n return;\n }\n if (this.nextAdTimerId != null) {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_already_scheduled\"\n });\n return;\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const stopReason = this.getStopRequestingReason(remainingMs);\n if (stopReason) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: stopReason,\n remainingMs,\n requestsSent: this.timing.totalAdRequestsInBreak,\n unusableResponses: this.unusableResponsesInBreak,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n this.handleAdPodComplete(stopReason);\n return;\n }\n const waitMs = this.getNextRequestDelayMs();\n if (waitMs > 0 && this.isBreakTimeBounded() && remainingMs - waitMs < this.getMinRemainingMsToRequestAd()) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: \"insufficient_break_time_after_backoff\",\n remainingMs,\n waitMs\n });\n this.handleAdPodComplete(\"insufficient_break_time_after_backoff\");\n return;\n }\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: waitMs > 0 ? \"request_after_delay\" : \"request_now\",\n waitMs,\n remainingMs,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n if (waitMs > 0) {\n if (!this.isShowingPlaceholder) {\n this.isShowingPlaceholder = true;\n this.host.getAdPlayer().showPlaceholder();\n }\n const epoch = this.timing.adBreakEpoch;\n this.nextAdTimerId = window.setTimeout(() => {\n this.nextAdTimerId = void 0;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.requestNextAd(`${trigger}:after_delay`);\n }, waitMs);\n return;\n }\n void this.requestFollowUpAd(trigger);\n }\n async requestFollowUpAd(trigger) {\n if (this.canRequestEdge()) {\n const edgeUrl = this.prepareEdgePodRequest();\n if (!edgeUrl) {\n this.requestNextAd(`${trigger}:edge_unavailable`);\n return;\n }\n const epoch2 = this.timing.adBreakEpoch;\n const outcome = await this.runEdgePod(edgeUrl, `edge_${trigger}`);\n this.continueAfterEdgeOutcome(outcome, epoch2);\n return;\n }\n let url;\n if (this.breakSource === \"vmap\") {\n url = this.adPodQueue.shift();\n } else if (this.followUpBaseVastUrl) {\n url = this.nextAdRequestUrl(this.followUpBaseVastUrl);\n }\n if (!url) return;\n this.noteVastUrlGenerated(ensureVideoAdType(url), trigger);\n const epoch = this.timing.adBreakEpoch;\n try {\n await this.playSingleAd(url, trigger);\n } catch {\n this.continueAfterRequestFailure(epoch);\n }\n }\n continueAfterRequestFailure(epoch = this.timing.adBreakEpoch) {\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"request_failed\");\n this.requestNextAd(\"after_failure\");\n }\n cancelScheduledRequest() {\n if (this.nextAdTimerId != null) {\n clearTimeout(this.nextAdTimerId);\n this.nextAdTimerId = void 0;\n }\n }\n noteVastUrlGenerated(url, source) {\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n }\n const adType = params?.get(\"ad_type\") ?? void 0;\n this.logOrchestratorFunnel(\"vast_url_generated\", {\n requestId: void 0,\n source,\n pod: params?.get(\"pod\") ?? void 0,\n podParamsDeferredToDispatch: findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name)),\n adType\n });\n if (adType === \"audio\" || adType === \"audio_video\") {\n console.warn(\n `[AdBreak] VAST tag requests ad_type=${adType}; GAM may return audio-only creatives, which this video player rejects`\n );\n this.countFunnelStage(\"tag_allows_audio\");\n }\n }\n recordRequestFailure(error, vastTagUrl) {\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n const message = error?.message || \"\";\n let outcome;\n if (message.includes(\"ad_duration_exceeds_budget\")) {\n outcome = \"discarded_budget\";\n } else if (message.includes(\"VAST fill rejected\")) {\n outcome = \"fill_rejected\";\n } else if (/no ads available|no fill|nofill/i.test(message)) {\n outcome = \"no_fill\";\n } else if (/timeout/i.test(message)) {\n outcome = \"request_timeout\";\n } else if (/destroyed|aborted/i.test(message)) {\n outcome = \"request_aborted\";\n } else if (diag && (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired) {\n outcome = \"playback_failed\";\n } else {\n outcome = \"request_failed\";\n }\n this.timing.consecutiveFailures++;\n if (outcome === \"no_fill\" || outcome === \"fill_rejected\" || outcome === \"discarded_budget\") {\n this.unusableResponsesInBreak++;\n }\n if (outcome === \"no_fill\") {\n this.timing.recordGamNoFill();\n }\n if (diag && !diag.failureReason) {\n diag.failureReason = `${outcome}: ${message}`;\n }\n const failureKey = diag?.dispatchedUrl && findScvpMacroNames(vastTagUrl).some((name) => SCVP_POD_MACROS.has(name)) ? diag.dispatchedUrl : vastTagUrl;\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(failureKey, Date.now());\n } else if (outcome !== \"discarded_budget\") {\n this.timing.failedVastUrls.add(failureKey);\n }\n this.countFunnelStage(`request_outcome:${outcome}`);\n this.logOrchestratorFunnel(\"request_outcome\", {\n outcome,\n errorMessage: message,\n consecutiveFailures: this.timing.consecutiveFailures,\n unusableResponsesInBreak: this.unusableResponsesInBreak,\n vastAdCount: diag?.vastAdCount,\n impressionCount: diag?.impressionCount,\n ...this.requestFloorFields(diag)\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Per-request diagnostics\n // ───────────────────────────────────────────────────────────────\n recordRequestDiagnostic(payload) {\n const requestId = payload.requestId;\n if (typeof requestId !== \"number\") return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n switch (payload.stage) {\n case \"gam_http_request_sent\":\n diag.gamRequestSent++;\n this.logPodDispatch(diag);\n break;\n case \"edge_http_request_sent\":\n diag.edgeRequestSent++;\n break;\n case \"gam_response_received\":\n case \"edge_response_received\":\n diag.vastHttpStatus = payload.httpStatus;\n break;\n case \"vast_parsed\":\n diag.vastAdCount = payload.adElementCount;\n break;\n case \"wrapper_fetch\":\n case \"inline_resolved\":\n if (typeof payload.depth === \"number\") {\n diag.wrapperDepth = Math.max(diag.wrapperDepth, payload.depth);\n }\n if (payload.stage === \"inline_resolved\") diag.inlineResolved = true;\n break;\n case \"mediafile_evaluated\":\n diag.mediaCandidateCount++;\n if (payload.whyAccepted) diag.supportedMediaCount++;\n break;\n case \"playing\":\n diag.playStarted = true;\n break;\n case \"impression_fired\":\n diag.impressionFired = true;\n diag.impressionCount++;\n break;\n default:\n if (REQUEST_FAILURE_STAGES.has(payload.stage) && !diag.failureReason) {\n diag.failureReason = payload.reason ? `${payload.stage}:${payload.reason}` : payload.stage;\n }\n }\n }\n finalizeRequestDiagnostics(requestId, endReason) {\n if (requestId == null) return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n this.requestDiagnostics.delete(requestId);\n if (!diag.impressionFired && !diag.failureReason && endReason) {\n diag.failureReason = endReason;\n }\n const gamReturnedAdWithoutImpression = (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired;\n if (gamReturnedAdWithoutImpression) {\n this.countFunnelStage(\"gam_ad_without_impression\");\n }\n const { startedAt, dispatchedUrl: _dispatchedUrl, podDispatchLogged: _logged, ...fields } = diag;\n console.log(\"[AdBreak][REQUEST] summary\", {\n ...fields,\n durationMs: Date.now() - startedAt,\n gamReturnedAdWithoutImpression\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Single ad playback\n // ───────────────────────────────────────────────────────────────\n createGamDispatchFinalizer(requestToken) {\n const breakId = this.timing.adBreakEpoch;\n const config = this.adConfig.resolveAdPodConfig();\n const minUsablePmxdMs = this.timing.getMinRemainingMsToStartAd();\n return (url) => {\n const capacity = measureBreakCapacity(this.timing.getBreakTimingSnapshot(), monotonicNow());\n const diag = this.requestDiagnostics.get(requestToken);\n try {\n const result = finalizeGamRequestUrl(url, { breakId, capacity, config, minUsablePmxdMs });\n if (diag) {\n diag.pod = result.diagnostics;\n diag.dispatchedUrl = result.url;\n diag.podDispatchLogged = false;\n }\n this.currentVastUrl = result.url;\n return result.url;\n } catch (error) {\n if (diag && isPodRequestAbortedError(error)) {\n diag.failureReason = `pod_request_not_sent:${error.reason}`;\n }\n throw error;\n }\n };\n }\n logPodDispatch(diag) {\n if (!diag.pod || diag.podDispatchLogged) return;\n diag.podDispatchLogged = true;\n this.logOrchestratorFunnel(\n diag.pod.optimizedPod ? \"optimized_pod_request_dispatched\" : \"gam_request_dispatched\",\n { ...diag.pod }\n );\n }\n recordPodResponseDiagnostics(requestToken, adPlayer) {\n const diag = this.requestDiagnostics.get(requestToken);\n if (!diag?.pod || diag.pod.pmxdSent == null || diag.podResponse) return;\n if (diag.gamRequestSent === 0 && diag.vastHttpStatus == null) return;\n diag.podResponse = computePodResponseDiagnostics(\n diag.pod.pmxdSent,\n diag.vastAdCount ?? 0,\n adPlayer.getPodTotalDurationMs?.() ?? 0\n );\n this.logOrchestratorFunnel(\"optimized_pod_response\", {\n pmxdSent: diag.pod.pmxdSent,\n ...diag.podResponse\n });\n }\n handlePodRequestNotSent(error) {\n if (!isPodRequestAbortedError(error) || error.reason === \"invalid_url\") return false;\n const aborted = error;\n this.countFunnelStage(`request_outcome:pod_request_not_sent`);\n this.logOrchestratorFunnel(\"pod_request_not_sent\", {\n reason: aborted.reason,\n errorMessage: aborted.message,\n ...aborted.diagnostics\n });\n return true;\n }\n opportunityFloorFields(floor = this.opportunityFloor) {\n if (!floor) return {};\n return {\n floorStatus: floor.status,\n floorCents: floor.floorCents,\n floorSource: floor.source,\n floorReason: floor.reason,\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n };\n }\n requestFloorFields(diag) {\n if (!diag || diag.floorApplied === void 0) return {};\n return {\n floorApplied: diag.floorApplied,\n floorCents: diag.floorCents,\n floorSource: diag.floorSource,\n floorReason: diag.floorReason,\n floorConfigVersion: diag.floorConfigVersion\n };\n }\n applyOpportunityFloor(url) {\n const floor = this.opportunityFloor;\n if (!floor) return url;\n const result = applyFloorToVastUrl(url, floor);\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag) {\n diag.floorApplied = result.applied;\n if (result.applied && floor.floorCents != null) diag.floorCents = floor.floorCents;\n diag.floorSource = result.applied ? floor.source : \"none\";\n if (result.reason) diag.floorReason = result.reason;\n diag.floorConfigVersion = floor.configurationVersion;\n }\n if (floor.status === \"skipped\" && floor.reason === \"disabled\") {\n this.countFunnelStage(\"floor_skipped:disabled\");\n return result.url;\n }\n this.logOrchestratorFunnel(result.applied ? \"floor_applied\" : \"floor_skipped\", {\n reason: result.reason,\n floorCents: result.applied ? floor.floorCents : void 0,\n floorSource: result.applied ? floor.source : \"none\",\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n });\n if (!result.applied && result.reason) {\n this.countFunnelStage(`floor_skipped:${result.reason}`);\n }\n return result.url;\n }\n countFunnelStage(stage, amount = 1) {\n this.breakFunnel[stage] = (this.breakFunnel[stage] ?? 0) + amount;\n }\n logOrchestratorFunnel(stage, extra = {}) {\n this.countFunnelStage(stage);\n console.log(`[AdBreak][FUNNEL] ${stage}`, {\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n ...extra\n });\n }\n noteOpportunity(source, breakKey, position) {\n if (breakKey && breakKey === this.opportunityBreakKey && this.opportunityEpoch === this.timing.adBreakEpoch) {\n this.logOrchestratorFunnel(\"duplicate_break_start\", { source, breakKey });\n return;\n }\n this.opportunityBreakKey = breakKey;\n this.opportunityEpoch = this.timing.adBreakEpoch;\n try {\n this.opportunityFloor = this.host.getFloorSnapshot(position);\n } catch {\n this.opportunityFloor = void 0;\n }\n this.logOrchestratorFunnel(\"opportunity_created\", {\n source,\n breakKey,\n expectedDurationMs: this.timing.expectedAdBreakDurationMs,\n ...this.opportunityFloorFields()\n });\n }\n beginFunnelRequest(adPlayer, requestToken, trigger, source = \"gam\") {\n if (this.controllerCallInFlight) {\n this.logOrchestratorFunnel(\"duplicate_request_detected\", {\n newRequestId: requestToken\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId);\n this.currentRequestId = requestToken;\n this.requestStartedAt = Date.now();\n this.requestDiagnostics.set(requestToken, {\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration,\n trigger,\n source,\n gamRequestSent: 0,\n edgeRequestSent: 0,\n wrapperDepth: 0,\n inlineResolved: false,\n mediaCandidateCount: 0,\n supportedMediaCount: 0,\n playStarted: false,\n impressionFired: false,\n impressionCount: 0,\n startedAt: Date.now()\n });\n adPlayer.setFunnelContext?.({\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration\n });\n }\n isAdLoadingWithoutPlayback() {\n return this.host.getAdPlayer().isAdPlaying() && !this.playbackStartedForCurrentRequest;\n }\n noteStopBeforeStart(reason) {\n if (!this.isAdLoadingWithoutPlayback()) return;\n this.logOrchestratorFunnel(\"ad_stopped_before_start\", {\n reason,\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n }\n handleRequestWatchdogTimeout() {\n const adPlayer = this.host.getAdPlayer();\n if (this.controllerCallInFlight && adPlayer.abortPendingRequest) {\n this.logOrchestratorFunnel(\"request_aborted_timeout\", {\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n adPlayer.abortPendingRequest(\n \"VAST request aborted after request watchdog timeout\"\n );\n return;\n }\n this.handleAdFailure(\"request_watchdog_timeout\");\n }\n async callController(call) {\n this.controllerCallInFlight = true;\n try {\n await call();\n } finally {\n this.controllerCallInFlight = false;\n }\n }\n async playSingleAd(vastTagUrl, trigger = \"vmap\") {\n if (this.slotState === \"REQUESTING\" || this.slotState === \"READY\" || this.slotState === \"PLAYING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_in_flight\"\n });\n return;\n }\n if (this.timing.failedVastUrls.has(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping permanently-failed VAST URL:\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL permanently failed\");\n }\n if (this.timing.isUrlInCooldown(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping URL in cooldown (recent no-fill):\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL in cooldown after no-fill\");\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.warn(\"[AD-ERROR] Too many consecutive failures, not requesting more ads\");\n throw new Error(\"Too many consecutive failures\");\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) console.warn(\"[CIRCUIT-BREAKER] GAM in cooldown, skipping ad request\");\n throw new Error(\"GAM in cooldown\");\n }\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n const ap = this.host.getAdPlayer();\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\n let requestUrl = this.applyOpportunityFloor(ensureVideoAdType(vastTagUrl));\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => ap.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, ap);\n }\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return;\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: this.currentVastUrl ?? requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n if (!this.timing.ensureLoadedAdFitsBudget(ap)) {\n const adDurationS = ap.getLoadedAdDuration?.();\n const remainingMs = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n this.logOrchestratorFunnel(\"discarded_budget\", {\n adDurationMs: adDurationS != null ? adDurationS * 1e3 : void 0,\n remainingMs\n });\n throw new Error(\"ad_duration_exceeds_budget\");\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => ap.play());\n if (this.isStale(epoch, generation)) return;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n ap.setAdVolume(getAdAudioVolume(ap));\n this.timing.temporaryFailureUrls.delete(vastTagUrl);\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return;\n }\n if (this.debug) console.error(\"[AD-ERROR] Ad request failed:\", error?.message);\n if (this.handlePodRequestNotSent(error)) throw error;\n this.recordRequestFailure(error, vastTagUrl);\n if (error?.message === \"ad_duration_exceeds_budget\") {\n this.recreateAdController(\"discarded_budget\");\n }\n throw error;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break completion\n // ───────────────────────────────────────────────────────────────\n logBreakFunnel(endReason) {\n const funnel = this.breakFunnel;\n this.breakFunnel = {};\n if (Object.keys(funnel).length === 0) return;\n const count = (stage) => funnel[stage] ?? 0;\n const countPrefix = (prefix) => Object.keys(funnel).reduce(\n (total, stage) => stage.indexOf(prefix) === 0 ? total + (funnel[stage] ?? 0) : total,\n 0\n );\n const breakId = this.opportunityEpoch;\n const requestRetries = count(\"gam_http_request_retry\");\n const requests = count(\"gam_http_request_sent\") - requestRetries;\n if (requests > 0 && count(\"impression_fired\") === 0) {\n console.log(\"[AdBreak][FUNNEL] break_abandoned_before_start\", {\n breakId,\n requests,\n endReason\n });\n }\n console.log(\"[AdBreak][FUNNEL] Break summary\", {\n breakId,\n endReason,\n opportunities: count(\"opportunity_created\"),\n ...this.opportunityFloorFields(),\n floorAppliedRequests: count(\"floor_applied\"),\n floorSkippedRequests: count(\"floor_skipped\") + count(\"floor_skipped:disabled\"),\n vastUrlsGenerated: count(\"vast_url_generated\"),\n requests,\n requestRetries,\n gamResponses: count(\"gam_response_received\"),\n edgeRequests: count(\"edge_request_sent\"),\n edgeFills: count(\"edge_fill\"),\n edgeEmptySentinels: count(\"edge_empty_sentinel\"),\n edgeFallbacks: countPrefix(\"edge_fallback:\"),\n requestsSuppressed: count(\"request_suppressed\"),\n duplicates: count(\"duplicate_request_detected\") + count(\"duplicate_break_start\"),\n filled: count(\"vast_received\"),\n noFill: count(\"no_fill\"),\n fillRejected: count(\"vast_fill_rejected\"),\n gamAdWithoutImpression: count(\"gam_ad_without_impression\"),\n playbackFailedAfterFill: count(\"request_outcome:playback_failed\"),\n requestFailed: count(\"request_failed\"),\n requestAbortedTimeout: count(\"request_aborted_timeout\"),\n credentialsModeChanges: count(\"gam_credentials_mode_changed\"),\n wrapperFailures: count(\"wrapper_fetch:failure\"),\n noSupportedMedia: count(\"vast_no_supported_media\"),\n vpaidOnly: count(\"vast_no_supported_media:vpaid\"),\n audioOnly: count(\"vast_no_supported_media:audio_only\"),\n mediaFilesEvaluated: count(\"mediafile_evaluated\"),\n mediaFilesAccepted: count(\"mediafile_evaluated:accepted\"),\n controllerDestroys: countPrefix(\"controller_destroy:\"),\n staleCallbacks: count(\"stale_callback_ignored\") + count(\"stale_request_result_ignored\"),\n tagAllowsAudio: count(\"tag_allows_audio\"),\n missingImpression: count(\"vast_missing_impression\"),\n discardedBudget: count(\"discarded_budget\"),\n mediaCandidates: count(\"media_candidate:accepted\") + count(\"media_candidate:rejected\"),\n mediaRejected: count(\"media_candidate:rejected\"),\n mediaFallbacks: count(\"media_fallback\"),\n playCalled: count(\"play_called\"),\n playRejected: count(\"play_rejected\"),\n mutedRetry: count(\"muted_retry\"),\n startTimeouts: count(\"play_resolved_but_never_started\"),\n impressions: count(\"impression_fired\"),\n impressionUrls: count(\"impression_urls\"),\n trackingRequests: count(\"tracking_request_created\"),\n trackingNotLoaded: count(\"tracking_request_settled:error\") + count(\"tracking_request_settled:timeout\"),\n trackingUnexpandedMacros: count(\"tracking_url_unexpanded_macro\"),\n trackingInvalidUrls: count(\"tracking_url_invalid\"),\n vastAdFallbacks: count(\"vast_ad_fallback\"),\n mediaEvents: count(\"media_event\"),\n quartile25: count(\"first_quartile\"),\n quartile50: count(\"midpoint\"),\n quartile75: count(\"third_quartile\"),\n complete: count(\"complete\"),\n stoppedBeforeStart: count(\"stopped_before_start\"),\n stoppedBeforeStartByBreakEnd: count(\"ad_stopped_before_start\"),\n unexpectedUnmutes: count(\"unexpected_unmute\"),\n unmuteBlocked: count(\"unmute_blocked_without_gesture\"),\n visibilityHidden: count(\"while_hidden\"),\n playbackFailures: count(\"play_failed\") + count(\"media_error\") + count(\"hls_fatal\") + count(\"stall\") + count(\"decode_failure\") + count(\"media_unsupported\"),\n stages: funnel\n });\n }\n handleAdPodComplete(reason = \"unspecified\") {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad pod complete - cleaning up\", { reason });\n }\n const previousState = this.slotState;\n const alreadyEnded = previousState === \"IDLE\" && !this.inAdBreak;\n this.setSlotState(\"ENDING\", reason);\n this.cancelScheduledRequest();\n const adPlayer = this.host.getAdPlayer();\n if (previousState === \"REQUESTING\") {\n adPlayer.abortPendingRequest?.(`VAST request aborted: ad break ended (${reason})`);\n }\n if (!alreadyEnded) {\n console.log(\"[AD-CONTROLLER] stop\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: previousState,\n reason\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId, `break_ended:${reason}`);\n this.currentRequestId = void 0;\n const contentWasInterrupted = this.showAds || this.isShowingPlaceholder || (this.breakFunnel[\"play_called\"] ?? 0) > 0 || (this.breakFunnel[\"impression_fired\"] ?? 0) > 0;\n this.timing.resetForBreakEnd();\n this.placeholder.hide();\n this.clearPendingAdBreak();\n if (this.isShowingPlaceholder) {\n adPlayer.hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n this.inAdBreak = false;\n this.adDetectSentForCurrentBreak = false;\n this.cueManager.activeScte35BreakKey = void 0;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.adPodQueue = [];\n this.showAds = false;\n this.breakSource = void 0;\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n adPlayer.stop().catch(() => {\n });\n if (!alreadyEnded) this.logBreakFunnel(reason);\n this.opportunityFloor = void 0;\n this.setSlotState(\"IDLE\", \"break_complete\");\n const restoredMuted = this.host.getAdPlayer().getOriginalMutedState();\n const restoredVolume = this.host.getAdPlayer().getOriginalVolume();\n if (this.host.video.muted !== restoredMuted) {\n this.host.video.muted = restoredMuted;\n }\n if (Math.abs(this.host.video.volume - restoredVolume) > 0.01) {\n this.host.video.volume = restoredVolume;\n }\n this.host.video.style.visibility = \"visible\";\n this.host.video.style.opacity = \"1\";\n if (this.host.isLiveStream()) {\n if (this.host.requiresMediaPipelineResetAfterAds()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Live break end \\u2014 hard-reloading stream to reacquire decoder (single-decoder platform)\"\n );\n }\n this.host.reloadLiveStream();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n if (!contentWasInterrupted) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Live break end \\u2014 no ad was shown, leaving playback position unchanged\");\n }\n this.resumeContentPlayback();\n return;\n }\n const liveSyncPos = this.host.getLiveSyncPosition();\n if (liveSyncPos != null && liveSyncPos > this.host.video.currentTime) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live break end \\u2014 snapping to live edge: ${this.host.video.currentTime.toFixed(2)}s \\u2192 ${liveSyncPos.toFixed(2)}s`\n );\n }\n this.host.video.currentTime = liveSyncPos;\n this.host.restartHlsLoad(liveSyncPos);\n }\n this.resumeContentPlayback();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n this.resumeContentPlayback();\n }\n getBufferedAhead() {\n const video = this.host.video;\n const t = video.currentTime;\n const ranges = video.buffered;\n for (let i = 0; i < ranges.length; i++) {\n if (t >= ranges.start(i) - 0.5 && t <= ranges.end(i)) {\n return ranges.end(i) - t;\n }\n }\n return 0;\n }\n describeVideoState() {\n const v = this.host.video;\n const networkStates = [\"EMPTY\", \"IDLE\", \"LOADING\", \"NO_SOURCE\"];\n const readyStates = [\n \"HAVE_NOTHING\",\n \"HAVE_METADATA\",\n \"HAVE_CURRENT_DATA\",\n \"HAVE_FUTURE_DATA\",\n \"HAVE_ENOUGH_DATA\"\n ];\n const net = networkStates[v.networkState] ?? String(v.networkState);\n const ready = readyStates[v.readyState] ?? String(v.readyState);\n const err = v.error ? `code=${v.error.code}${v.error.message ? ` (${v.error.message})` : \"\"}` : \"none\";\n const ranges = [];\n for (let i = 0; i < v.buffered.length; i++) {\n ranges.push(`[${v.buffered.start(i).toFixed(2)}\\u2013${v.buffered.end(i).toFixed(2)}]`);\n }\n return `t=${v.currentTime.toFixed(2)}s paused=${v.paused} ended=${v.ended} seeking=${v.seeking} readyState=${ready} networkState=${net} error=${err} buffered=${ranges.length ? ranges.join(\",\") : \"none\"}`;\n }\n monitorLiveResumeStall(resumeBaseline) {\n const needsReset = this.host.requiresMediaPipelineResetAfterAds();\n const pollIntervalMs = 1e3;\n const graceMs = needsReset ? 8e3 : 5e3;\n const recoveryCooldownMs = needsReset ? 7e3 : 5e3;\n const maxRecoveries = 3;\n const maxMonitorMs = 45e3;\n const startTime = Date.now();\n let baseline = resumeBaseline;\n let recoveries = 0;\n let lastRecoveryAt = 0;\n const video = this.host.video;\n let listenersAttached = false;\n let onMediaEvent;\n const diagEvents = [\n \"loadstart\",\n \"loadedmetadata\",\n \"loadeddata\",\n \"canplay\",\n \"canplaythrough\",\n \"play\",\n \"playing\",\n \"pause\",\n \"waiting\",\n \"stalled\",\n \"suspend\",\n \"seeking\",\n \"seeked\",\n \"emptied\",\n \"error\",\n \"ended\"\n ];\n if (this.debug) {\n onMediaEvent = (e) => {\n const dt = ((Date.now() - startTime) / 1e3).toFixed(1);\n console.log(\n `[ResumeDiag] +${dt}s event=${e.type} \\u2014 ${this.describeVideoState()}`\n );\n };\n for (const name of diagEvents) {\n video.addEventListener(name, onMediaEvent);\n }\n listenersAttached = true;\n console.log(\n `[ResumeDiag] +0.0s monitor start \\u2014 ${this.describeVideoState()}`\n );\n }\n const cleanup = () => {\n if (listenersAttached && onMediaEvent) {\n for (const name of diagEvents) {\n video.removeEventListener(name, onMediaEvent);\n }\n listenersAttached = false;\n }\n };\n const poll = () => {\n if (this.inAdBreak) {\n cleanup();\n return;\n }\n const currentTime = video.currentTime;\n const advanced = currentTime > baseline + 0.5;\n const playing = !video.paused && video.readyState >= 3;\n if (advanced && playing) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live stream resumed successfully after ad break \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n const elapsed = Date.now() - startTime;\n const bufferedAhead = this.getBufferedAhead();\n const wedged = bufferedAhead < 0.5 && !advanced;\n if (elapsed >= maxMonitorMs) {\n if (this.debug && !advanced) {\n console.warn(\n `[StormcloudVideoPlayer] Live stream failed to resume after ${(maxMonitorMs / 1e3).toFixed(0)}s \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n const canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;\n if (canRecover) {\n recoveries++;\n lastRecoveryAt = Date.now();\n if (needsReset) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n } else if (recoveries === 1) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 calling recoverMediaError() (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.recoverMediaError();\n } else if (recoveries === 2) {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 restarting HLS load at ${reloadPos.toFixed(2)}s (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n if (liveSyncPos != null && liveSyncPos > currentTime) {\n video.currentTime = liveSyncPos;\n }\n this.host.restartHlsLoad(reloadPos);\n } else {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n }\n baseline = video.currentTime;\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n }\n window.setTimeout(poll, pollIntervalMs);\n };\n window.setTimeout(poll, pollIntervalMs);\n }\n resumeContentPlayback(attempt = 0) {\n const maxAttempts = 5;\n const video = this.host.video;\n if (!video.paused) {\n if (this.debug && attempt === 0) {\n console.log(\"[StormcloudVideoPlayer] Content video already playing after ads\");\n }\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Resuming content playback after ads (attempt ${attempt + 1}/${maxAttempts}, readyState=${video.readyState})`\n );\n }\n if (video.readyState < 3) {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] readyState never reached HAVE_FUTURE_DATA, forcing play()\"\n );\n }\n video.play()?.catch(() => {\n });\n return;\n }\n const onReady = () => {\n video.removeEventListener(\"canplay\", onReady);\n this.resumeContentPlayback(attempt + 1);\n };\n video.addEventListener(\"canplay\", onReady);\n const backoffMs = 500 * (attempt + 1);\n window.setTimeout(() => {\n video.removeEventListener(\"canplay\", onReady);\n if (video.paused) {\n this.resumeContentPlayback(attempt + 1);\n }\n }, backoffMs);\n return;\n }\n const playResult = video.play();\n if (playResult && typeof playResult.catch === \"function\") {\n playResult.catch((error) => {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to resume content playback after ads:\",\n error\n );\n }\n return;\n }\n const backoffMs = 250 * (attempt + 1);\n window.setTimeout(() => {\n this.resumeContentPlayback(attempt + 1);\n }, backoffMs);\n });\n }\n }\n handleAdFailure(reason = \"ad_failure\") {\n if (!this.inAdBreak) return;\n if (this.slotState === \"REQUESTING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"failure_deferred_to_request\", {\n reason,\n state: this.slotState\n });\n return;\n }\n if (this.currentPodSource === \"edge\") {\n this.markEdgeExhausted(\"edge_playback_failed\", { reason });\n } else {\n this.timing.consecutiveFailures++;\n }\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag && !diag.failureReason) diag.failureReason = reason;\n if (this.debug) {\n console.log(\n `[AdBreak] Ad failure (${reason}): remaining=${this.timing.getRemainingAdMs()}ms, consecutiveFailures=${this.timing.consecutiveFailures}`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", reason);\n this.requestNextAd(reason);\n }\n};\n\n// src/player/ContentHealthWatchdog.ts\nvar POLL_INTERVAL_MS = 2e3;\nvar STALL_THRESHOLD_MS = 12e3;\nvar POST_BREAK_GRACE_MS = 5e4;\nvar MAX_BREAK_SUPPRESSION_MS = 10 * 60 * 1e3;\nvar SELF_INFLICTED_PAUSE_WINDOW_MS = 5e3;\nvar HEALTHY_PLAYBACK_SECONDS = 5;\nvar MAX_NORMAL_ADVANCE_PER_TICK_S = 4;\nvar LIGHT_STEP_COOLDOWN_MS = 1e4;\nvar RELOAD_BASE_COOLDOWN_MS = 15e3;\nvar RELOAD_MAX_COOLDOWN_MS = 12e4;\nvar ContentHealthWatchdog = class {\n constructor(host) {\n this.host = host;\n this.armed = false;\n this.userPaused = false;\n this.wasInBreak = false;\n this.breakStartedAt = 0;\n this.stuckBreakLogged = false;\n this.graceUntil = 0;\n this.lastPosition = 0;\n this.lastProgressAt = 0;\n this.lastRealPlaybackAt = 0;\n this.healthySeconds = 0;\n this.step = 0;\n this.nextActionAt = 0;\n this.lastActionAt = 0;\n this.onPlaying = () => {\n if (this.host.isAdPlaying()) return;\n this.armed = true;\n this.userPaused = false;\n };\n this.onPause = () => {\n if (this.host.isBreakActive() || this.host.isAdPlaying() || Date.now() - this.lastActionAt < SELF_INFLICTED_PAUSE_WINDOW_MS) {\n return;\n }\n this.userPaused = true;\n };\n this.onPlay = () => {\n this.userPaused = false;\n };\n }\n start() {\n if (this.intervalId !== void 0) return;\n const video = this.host.video;\n video.addEventListener(\"playing\", this.onPlaying);\n video.addEventListener(\"pause\", this.onPause);\n video.addEventListener(\"play\", this.onPlay);\n this.resetProgress(Date.now());\n this.intervalId = window.setInterval(() => this.tick(), POLL_INTERVAL_MS);\n }\n stop() {\n if (this.intervalId !== void 0) {\n clearInterval(this.intervalId);\n this.intervalId = void 0;\n }\n const video = this.host.video;\n video.removeEventListener(\"playing\", this.onPlaying);\n video.removeEventListener(\"pause\", this.onPause);\n video.removeEventListener(\"play\", this.onPlay);\n this.armed = false;\n this.step = 0;\n }\n resetProgress(now) {\n this.lastPosition = this.host.video.currentTime;\n this.lastProgressAt = now;\n }\n tick() {\n const now = Date.now();\n const video = this.host.video;\n const hidden = typeof document !== \"undefined\" && document.visibilityState === \"hidden\";\n if (!this.armed || this.userPaused || hidden || video.ended || !this.host.isLiveStream() || !this.host.hasHlsInstance()) {\n this.resetProgress(now);\n return;\n }\n const breakActive = this.host.isBreakActive() || this.host.isAdPlaying();\n if (breakActive && !this.wasInBreak) {\n this.wasInBreak = true;\n this.breakStartedAt = now;\n this.stuckBreakLogged = false;\n }\n if (breakActive && now - this.breakStartedAt < MAX_BREAK_SUPPRESSION_MS) {\n this.resetProgress(now);\n return;\n }\n if (breakActive && !this.stuckBreakLogged) {\n this.stuckBreakLogged = true;\n console.warn(\n `[ContentWatchdog] Ad break state active for over ${MAX_BREAK_SUPPRESSION_MS / 6e4} min \\u2014 monitoring content anyway`\n );\n }\n if (!breakActive && this.wasInBreak) {\n this.wasInBreak = false;\n this.graceUntil = now + POST_BREAK_GRACE_MS;\n this.resetProgress(now);\n return;\n }\n const currentTime = video.currentTime;\n const delta = currentTime - this.lastPosition;\n this.lastPosition = currentTime;\n if (delta > 0.25 && delta <= MAX_NORMAL_ADVANCE_PER_TICK_S && !video.paused) {\n this.lastProgressAt = now;\n this.lastRealPlaybackAt = now;\n this.healthySeconds += delta;\n if (this.step > 0 && this.healthySeconds >= HEALTHY_PLAYBACK_SECONDS) {\n console.log(\n `[ContentWatchdog] Content playback recovered after ${this.step} recovery step(s)`\n );\n this.step = 0;\n this.nextActionAt = 0;\n }\n return;\n }\n if (now < this.graceUntil) {\n this.lastProgressAt = now;\n return;\n }\n if (now - this.lastProgressAt < STALL_THRESHOLD_MS || now < this.nextActionAt) {\n return;\n }\n this.recover(now);\n }\n recover(now) {\n const video = this.host.video;\n const state = `t=${video.currentTime.toFixed(2)} paused=${video.paused} readyState=${video.readyState} networkState=${video.networkState} error=${video.error ? video.error.code : \"none\"}`;\n const stalledForS = ((now - (this.lastRealPlaybackAt || this.lastProgressAt)) / 1e3).toFixed(0);\n const fullReloadOnly = this.host.requiresMediaPipelineResetAfterAds();\n const action = fullReloadOnly || this.step >= 2 ? \"reload\" : this.step === 0 ? \"recover_media_error\" : \"restart_load\";\n console.warn(\n `[ContentWatchdog] Content stalled for ${stalledForS}s \\u2014 ${action} (step ${this.step + 1}) \\u2014 ${state}`\n );\n this.lastActionAt = now;\n this.healthySeconds = 0;\n if (action === \"recover_media_error\") {\n this.host.recoverMediaError();\n this.nextActionAt = now + LIGHT_STEP_COOLDOWN_MS;\n } else if (action === \"restart_load\") {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const position = liveSyncPos != null && liveSyncPos > video.currentTime ? liveSyncPos : video.currentTime;\n if (position !== video.currentTime) {\n video.currentTime = position;\n }\n this.host.restartHlsLoad(position);\n this.nextActionAt = now + LIGHT_STEP_COOLDOWN_MS;\n } else {\n const reloadIndex = fullReloadOnly ? this.step : this.step - 2;\n const cooldown = Math.min(\n RELOAD_BASE_COOLDOWN_MS * Math.pow(2, reloadIndex),\n RELOAD_MAX_COOLDOWN_MS\n );\n this.host.reloadLiveStream();\n this.nextActionAt = now + cooldown;\n }\n this.step++;\n this.resetProgress(now);\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n }\n};\n\n// src/player/StormcloudVideoPlayer.ts\nvar StormcloudVideoPlayer = class {\n constructor(config) {\n this.attached = false;\n this.palPlaybackStarted = false;\n initializePolyfills();\n const browserOverrides = getBrowserConfigOverrides();\n this.config = { ...browserOverrides, ...config };\n this.video = config.videoElement;\n logBrowserInfo(config.debugAdTiming);\n this.floorLadder = new FloorLadderController();\n this.adPlayer = this.createAdPlayer(false);\n this.palNonce = createPalNonceManager();\n this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {\n onEarlyStartCue: (marker, fragmentSn, cueKey) => {\n this.startAdPrefetch(marker, fragmentSn, cueKey);\n },\n onPlaybackCue: (marker, cueKey) => {\n this.onScte35Marker(marker, cueKey);\n },\n isInAdBreak: () => this.adBreak.inAdBreak\n });\n this.adConfig = new AdConfigManager(this.config, this.video);\n this.timing = new AdTimingService(this.config, this.video, {\n onAdStopTimerFired: () => this.onAdStopTimerFired(),\n onAdStartTimerFired: (marker, cueKey) => {\n this.startScte35AdBreak(\n marker,\n cueKey,\n marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs\n );\n },\n onWatchdogTimeout: () => this.adBreak.handleRequestWatchdogTimeout(),\n onFailsafeTimeout: () => this.adBreak.handleAdFailure(\"failsafe_timeout\"),\n getAdState: () => ({\n inAdBreak: this.adBreak.inAdBreak,\n showAds: this.adBreak.showAds,\n adPlaying: this.adPlayer.isAdPlaying()\n })\n });\n this.placeholder = new PlaceholderLayer(this.video, !!this.config.debugAdTiming);\n this.hlsEngine = new HlsEngine(this.config, this.video, this.cueManager, this.timing, {\n onManifestParsed: async (isLive) => this.onManifestParsed(isLive),\n onScte35Cue: (marker, context) => this.cueManager.onScte35Cue(marker, context),\n activatePendingCuesForFragment: (frag) => this.cueManager.activatePendingScte35CuesForFragment(frag),\n onFatalDestroy: () => this.destroy(),\n isInAdBreak: () => this.adBreak.inAdBreak,\n hasPendingAdBreak: () => this.adBreak.pendingAdBreak !== null\n });\n this.adBreak = new AdBreakOrchestrator(\n {\n config: this.config,\n video: this.video,\n getAdPlayer: () => this.adPlayer,\n setAdPlayer: (p) => {\n this.adPlayer = p;\n },\n createAdPlayer: (c) => this.createAdPlayer(c),\n shouldContinueLiveStreamDuringAds: () => this.shouldContinueLiveStreamDuringAds(),\n isLiveStream: () => this.hlsEngine.isLiveStream,\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n generatePodVastUrl: (base) => this.generatePodVastUrl(base),\n completeGamRequestSignals: (url) => this.adConfig.completeDeferredRequestSignals(url, this.palNonce),\n getEdgePodBaseUrl: () => this.edgePodBaseUrl,\n getFloorSnapshot: (position) => this.floorLadder.isEnabled() ? this.floorLadder.snapshotFor({ position }) : void 0,\n onAdClick: () => this.palNonce.sendAdClick(),\n onAdInteraction: (event) => this.palNonce.sendAdTouch(event)\n },\n this.timing,\n this.adConfig,\n this.cueManager,\n this.placeholder\n );\n this.contentWatchdog = new ContentHealthWatchdog({\n video: this.video,\n isLiveStream: () => this.hlsEngine.isLiveStream,\n hasHlsInstance: () => !!this.hlsEngine.hls,\n isBreakActive: () => this.adBreak.inAdBreak || this.adBreak.isBreakActive(),\n isAdPlaying: () => this.adPlayer.isAdPlaying(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream()\n });\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n createAdPlayer(continueLiveStreamDuringAds) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Creating HLS ad player\");\n }\n return createHlsAdPlayer(this.video, {\n continueLiveStreamDuringAds,\n ...this.config.licenseKey ? { licenseKey: this.config.licenseKey } : {},\n ...this.hlsEngine?.hls ? { mainHlsInstance: this.hlsEngine.hls } : {},\n ...this.config.adMediaStartTimeoutMs != null ? { mediaStartTimeoutMs: this.config.adMediaStartTimeoutMs } : {}\n });\n }\n applyFloorLadderFromApi() {\n const raw = this.adConfig.apiFloorLadder;\n if (raw == null) {\n this.floorLadder.reset();\n return;\n }\n const report = this.floorLadder.applyApiConfig(raw);\n this.warnOnInvalidFloorLadder(report);\n if (this.debug) {\n console.log(\"[AdBreak][FLOOR] configuration applied from API\", {\n config: this.floorLadder.get(),\n bounds: this.floorLadder.getBounds(),\n validation: report\n });\n }\n }\n isAdFloorLadderEnabled() {\n return this.floorLadder.isEnabled();\n }\n applyEdgePodFromApi() {\n this.edgePodBaseUrl = resolveEdgePodBaseUrl({\n enableEdgePodRequest: this.adConfig.apiEnableEdgePodRequest,\n edgePodUrl: this.adConfig.apiEdgePodUrl,\n licenseKey: this.config.licenseKey\n });\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] edge pod base URL from API:\", this.edgePodBaseUrl ?? \"(disabled; GAM only)\");\n }\n }\n getEdgePodUrl() {\n return this.edgePodBaseUrl;\n }\n warnOnInvalidFloorLadder(report) {\n const config = this.floorLadder.get();\n if (report.ok || !config.enabled) return;\n console.warn(\"[AdBreak][FLOOR] configuration has issues; invalid floors will not be sent\", {\n errors: report.errors,\n configurationVersion: config.configurationVersion,\n bounds: this.floorLadder.getBounds()\n });\n }\n getAdFloorLadder() {\n return this.floorLadder.get();\n }\n getAdFloorBounds() {\n return this.floorLadder.getBounds();\n }\n setAdFloorSelector(selector) {\n this.floorLadder.setSelector(selector);\n }\n generatePodVastUrl(baseUrl) {\n return this.adConfig.generatePodVastUrl(\n baseUrl,\n this.adPlayer,\n this.palNonce,\n this.adBreak.inAdBreak\n );\n }\n // ───────────────────────────────────────────────────────────────\n // Lifecycle\n // ───────────────────────────────────────────────────────────────\n async load() {\n if (!this.attached) {\n this.attach();\n }\n try {\n await this.adConfig.fetchAdConfiguration();\n } catch (error) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to fetch ad configuration:\",\n error\n );\n }\n }\n this.applyFloorLadderFromApi();\n this.applyEdgePodFromApi();\n const palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;\n fetchConsentSignals().catch(() => ({})).then((signals) => {\n this.adConfig.consentSignals = signals;\n const muted = this.video.muted;\n return this.palNonce.generateNonce({\n videoWidth: this.video.offsetWidth || this.video.clientWidth || 640,\n videoHeight: this.video.offsetHeight || this.video.clientHeight || 480,\n adWillAutoPlay: !!this.config.autoplay,\n adWillPlayMuted: muted,\n playerVolume: muted ? 0 : this.video.volume,\n continuousPlayback: this.config.lowLatencyMode ?? false,\n ...palDescriptionUrl ? { descriptionUrl: palDescriptionUrl } : {},\n ...signals.storageAllowed != null ? { allowStorage: signals.storageAllowed } : {}\n });\n }).catch(() => {\n });\n this.adConfig.initializeTracking();\n if (this.hlsEngine.shouldUseNativeHls(() => this.getStreamType())) {\n await this.hlsEngine.setupNativeHls();\n const continueLiveStreamDuringAds = this.shouldContinueLiveStreamDuringAds();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Native HLS ad behavior:\", {\n isLive: this.hlsEngine.isLiveStream,\n continueLiveStreamDuringAds\n });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(continueLiveStreamDuringAds);\n this.adPlayer.initialize();\n return;\n }\n this.hlsEngine.setupHls();\n }\n async onManifestParsed(isLive) {\n if (this.hlsEngine.reloadingLiveStream) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Manifest re-parsed after hard reload \\u2014 skipping ad-player setup\");\n }\n return;\n }\n if (!this.adConfig.isVmapEnabled() && !isLive && this.adConfig.vmapBreaks.length === 0 && this.adConfig.apiVastTagUrl) {\n const prerollKey = \"synthetic-vod-preroll\";\n if (!this.adConfig.consumedVmapBreakIds.has(prerollKey)) {\n this.adConfig.vmapBreaks = [\n { id: prerollKey, startTimeMs: 0, vastTagUrl: this.adConfig.apiVastTagUrl }\n ];\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Injected synthetic VOD preroll from apiVastTagUrl\"\n );\n }\n }\n }\n if (this.debug) {\n const adBehavior = this.shouldContinueLiveStreamDuringAds() ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\"[StormcloudVideoPlayer] Stream type detected:\", {\n isLive,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n });\n }\n if (this.adBreak.isBreakActive()) {\n console.log(\"[AD-CONTROLLER] destroy skipped\", {\n reason: \"manifest_parsed_during_break\",\n state: this.adBreak.getSlotState()\n });\n return;\n }\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] destroy\", { reason: \"manifest_parsed\", state: \"IDLE\" });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(this.shouldContinueLiveStreamDuringAds());\n this.adPlayer.initialize();\n }\n attach() {\n if (this.attached) return;\n this.attached = true;\n this.video.autoplay = !!this.config.autoplay;\n this.video.muted = !!this.config.muted;\n this.adPlayer.initialize();\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.attachImaEventListeners();\n this.video.addEventListener(\"play\", () => {\n if (!this.palPlaybackStarted && !this.adPlayer.isAdPlaying()) {\n this.palPlaybackStarted = true;\n this.palNonce.sendPlaybackStart();\n }\n });\n this.endedHandler = () => {\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.onVideoEnded();\n };\n this.video.addEventListener(\"ended\", this.endedHandler);\n this.video.addEventListener(\"mousedown\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.video.addEventListener(\"touchstart\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.timeUpdateHandler = () => {\n this.onTimeUpdate(this.video.currentTime);\n };\n this.video.addEventListener(\"timeupdate\", this.timeUpdateHandler);\n this.emptiedHandler = () => {\n if (this.hlsEngine.nativeHlsMode && this.hlsEngine.videoSrcProtection && !this.adPlayer.isAdPlaying()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Video src was cleared, restoring:\",\n this.hlsEngine.videoSrcProtection\n );\n }\n const currentTime = this.video.currentTime;\n const wasPaused = this.video.paused;\n this.video.src = this.hlsEngine.videoSrcProtection;\n this.video.currentTime = currentTime;\n if (!wasPaused) {\n this.video.play().catch(() => {\n });\n }\n }\n };\n this.video.addEventListener(\"emptied\", this.emptiedHandler);\n if (this.config.contentStallWatchdog !== false) {\n this.contentWatchdog.start();\n }\n }\n shouldContinueLiveStreamDuringAds() {\n if (this.config.pauseContentDuringAds) {\n return false;\n }\n if (this.hlsEngine.isLiveStream) {\n return true;\n }\n const duration = this.video.duration;\n if (!Number.isFinite(duration) || duration === Infinity) {\n return true;\n }\n return false;\n }\n // ───────────────────────────────────────────────────────────────\n // SCTE-35 marker orchestration\n // ───────────────────────────────────────────────────────────────\n onScte35Marker(marker, cueKey) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 marker detected:\", {\n type: marker.type,\n ptsSeconds: marker.ptsSeconds,\n durationSeconds: marker.durationSeconds,\n currentTime: this.video.currentTime,\n raw: marker.raw,\n hasPendingAdBreak: !!this.adBreak.pendingAdBreak\n });\n }\n if (marker.type === \"start\") {\n if (this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n const newDurationMs = marker.durationSeconds * 1e3;\n if (this.timing.expectedAdBreakDurationMs == null || newDurationMs > this.timing.expectedAdBreakDurationMs) {\n this.timing.setAdBreakDurationBoundary(newDurationMs);\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Updated ad break duration from subsequent marker: ${newDurationMs}ms, remaining: ${this.timing.getWallClockRemainingAdMs()}ms`\n );\n }\n }\n }\n return;\n }\n if (!this.adBreak.adDetectSentForCurrentBreak) {\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n }\n const hasPrefetchedAds = this.adBreak.pendingAdBreak && this.adBreak.pendingAdBreak.vastUrls.length > 0;\n const durationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.adBreak.pendingAdBreak?.marker.durationSeconds != null ? this.adBreak.pendingAdBreak.marker.durationSeconds * 1e3 : void 0;\n const isManifest = isManifestBasedMarker(marker);\n const forceImmediate = this.config.immediateManifestAds ?? true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad start decision:\", {\n isManifestMarker: isManifest,\n forceImmediate,\n hasPts: typeof marker.ptsSeconds === \"number\",\n hasPrefetchedAds\n });\n }\n if (isManifest && forceImmediate) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Starting ad immediately (manifest-based)${hasPrefetchedAds ? \" with prefetched ads\" : \"\"}`\n );\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n } else if (typeof marker.ptsSeconds === \"number\") {\n const tol = this.config.driftToleranceMs ?? 1e3;\n const nowMs = this.video.currentTime * 1e3;\n const estCurrentPtsMs = nowMs - this.timing.ptsDriftEmaMs;\n const deltaMs = Math.floor(marker.ptsSeconds * 1e3 - estCurrentPtsMs);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] PTS-based timing calculation:\", {\n nowMs,\n estCurrentPtsMs,\n markerPtsMs: marker.ptsSeconds * 1e3,\n deltaMs,\n tolerance: tol\n });\n }\n if (deltaMs > tol) {\n if (this.debug) {\n console.log(`[StormcloudVideoPlayer] Scheduling ad start in ${deltaMs}ms`);\n }\n this.timing.expectedAdBreakDurationMs = durationMs;\n this.cueManager.scheduledScte35BreakKey = cueKey;\n this.timing.scheduleAdStartIn(deltaMs, marker, cueKey);\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (within tolerance)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (fallback)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n return;\n }\n if (marker.type === \"progress\" && this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n this.timing.setAdBreakDurationBoundary(marker.durationSeconds * 1e3);\n }\n this.timing.scheduleAdStopAtBreakBoundary();\n return;\n }\n if (marker.type === \"end\") {\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on SCTE end marker\");\n }\n }\n const remaining = this.timing.getRemainingAdMs();\n const adPlaying = this.adPlayer.isAdPlaying();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 end marker received:\", {\n remaining,\n adPlaying,\n adSlotState: this.adBreak.getSlotState(),\n activeAdRequest: this.timing.activeAdRequestToken !== null\n });\n }\n this.timing.markBreakEndedNow();\n this.timing.clearAdStartTimer();\n this.timing.clearAdStopTimer();\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"scte_end\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"scte_end\");\n return;\n }\n }\n startScte35AdBreak(marker, cueKey, durationMs) {\n if (this.adBreak.isBreakActive()) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 break start: a break is already active\", {\n state: this.adBreak.getSlotState(),\n cueKey\n });\n }\n return;\n }\n this.adBreak.inAdBreak = true;\n this.cueManager.activeScte35BreakKey = cueKey ?? this.cueManager.pendingScte35CueKey;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.timing.beginBreakTiming(this.timing.resolveScteBreakStartWallClockMs(marker));\n this.timing.setAdBreakDurationBoundary(durationMs);\n this.adBreak.handleAdStart(marker);\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n onAdStopTimerFired() {\n if (!this.adBreak.inAdBreak) return;\n const adPlaying = this.adPlayer.isAdPlaying();\n const checkIntervalMs = Math.max(\n 250,\n Math.floor(this.config.adBreakCheckIntervalMs ?? 1e3)\n );\n const maxExtensionMsConfig = this.config.maxAdBreakExtensionMs;\n const maxExtensionMs = typeof maxExtensionMsConfig === \"number\" && maxExtensionMsConfig > 0 ? maxExtensionMsConfig : 0;\n const endWallClockMs = this.timing.getAdBreakEndWallClockMs() ?? Date.now();\n const overrunMs = Math.max(0, Date.now() - endWallClockMs);\n const shouldExtendAdBreak = adPlaying && overrunMs < maxExtensionMs;\n if (shouldExtendAdBreak) {\n this.timing.scheduleAdStopCountdown(checkIntervalMs);\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Ad break boundary reached (overrun=${overrunMs}ms) - hard-stopping ads and resuming stream`\n );\n }\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"break_boundary\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"break_boundary\");\n }\n // ───────────────────────────────────────────────────────────────\n // Ad prefetch\n // ───────────────────────────────────────────────────────────────\n startAdPrefetch(marker, fragmentSn, cueKey) {\n if (this.adBreak.pendingAdBreak || this.adBreak.inAdBreak) return;\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n if (!baseVastUrl) {\n if (this.debug) console.warn(\"[StormcloudVideoPlayer] No VAST URL available for prefetch\");\n return;\n }\n this.adConfig.beginNewAdPod();\n this.adConfig.podAssignedByPrefetch = true;\n const generatedUrls = [this.generatePodVastUrl(baseVastUrl)];\n this.adBreak.pendingAdBreak = {\n marker,\n ...fragmentSn !== void 0 ? { detectedAtFragmentSn: fragmentSn } : {},\n vastUrls: generatedUrls,\n isFetching: false,\n fetchStartTime: Date.now()\n };\n this.cueManager.pendingScte35CueKey = cueKey;\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n if (fragmentSn !== void 0) detectPayload.detectedAtFragmentSn = fragmentSn;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n if (this.debug) {\n console.log(\"[PREFETCH] Pre-generated pod request URL for upcoming ad break\");\n }\n }\n // ───────────────────────────────────────────────────────────────\n // VMAP time-based ad breaks\n // ───────────────────────────────────────────────────────────────\n onTimeUpdate(currentTimeSec) {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const nowMs = currentTimeSec * 1e3;\n const breakToPlay = this.adConfig.findBreakForTime(nowMs);\n if (breakToPlay) {\n void this.handleVmapAdBreak(breakToPlay, nowMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad break failed gracefully:\", error);\n }\n });\n }\n }\n onVideoEnded() {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const durationMs = Number.isFinite(this.video.duration) ? Math.floor(this.video.duration * 1e3) : 0;\n const postroll = this.adConfig.vmapBreaks.find(\n (b) => b.startTimeMs === -1 && !this.adConfig.consumedVmapBreakIds.has(this.adConfig.getAdBreakKey(b))\n );\n if (postroll) {\n void this.handleVmapAdBreak(postroll, durationMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP post-roll failed gracefully:\", error);\n }\n });\n }\n }\n async handleVmapAdBreak(adBreak, nowMs) {\n const key = this.adConfig.getAdBreakKey(adBreak);\n if (this.adConfig.consumedVmapBreakIds.has(key)) return;\n const breakStartMs = this.adConfig.resolveBreakStartMs(adBreak);\n if (breakStartMs == null) return;\n const durationMs = adBreak.durationMs ?? 0;\n const endMs = breakStartMs + durationMs;\n const inWindow = durationMs > 0 ? nowMs >= breakStartMs && nowMs < endMs : nowMs >= breakStartMs;\n if (inWindow) {\n this.adConfig.consumedVmapBreakIds.add(key);\n const tags = this.adConfig.selectVastTagsForBreak(adBreak);\n if (!tags || tags.length === 0) return;\n const first = tags[0];\n const rest = tags.slice(1);\n this.adBreak.adPodQueue = rest;\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.showAds = true;\n this.adBreak.inAdBreak = true;\n this.timing.beginBreakTiming(Date.now());\n if (durationMs > 0) {\n this.timing.setAdBreakDurationBoundary(durationMs);\n }\n const position = adBreak.startTimeMs === 0 ? \"preroll\" : adBreak.startTimeMs < 0 ? \"postroll\" : \"midroll\";\n this.adBreak.beginVmapBreak(key, position);\n try {\n await this.adBreak.playSingleAd(first, \"vmap\");\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad request failed:\", error);\n }\n this.adBreak.continueAfterRequestFailure();\n }\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Public API\n // ───────────────────────────────────────────────────────────────\n getCurrentAdIndex() {\n return this.timing.currentAdIndex;\n }\n getTotalAdsInBreak() {\n return this.timing.totalAdsInBreak;\n }\n getAdRemainingMs() {\n return this.timing.getRemainingAdMs();\n }\n isAdPlaying() {\n return this.adBreak.inAdBreak && this.adPlayer.isAdPlaying();\n }\n isShowingAds() {\n return this.adBreak.showAds;\n }\n getStreamType() {\n const url = this.config.src.toLowerCase();\n if (url.includes(\".m3u8\") || url.includes(\"/hls/\") || url.includes(\"application/vnd.apple.mpegurl\")) {\n return \"hls\";\n }\n return \"other\";\n }\n shouldShowNativeControls() {\n const streamType = this.getStreamType();\n if (streamType === \"other\") {\n return !(this.config.showCustomControls ?? false);\n }\n return !!(this.config.allowNativeHls && !(this.config.showCustomControls ?? false));\n }\n isLive() {\n return this.hlsEngine.isLiveStream;\n }\n isLowLatencyStream() {\n return this.hlsEngine.isLowLatencyStream();\n }\n get videoElement() {\n return this.video;\n }\n toggleMute() {\n toggleMute(this.video, this.adPlayer, this.debug);\n }\n toggleFullscreen() {\n return toggleFullscreen(this.video, this.debug);\n }\n isMuted() {\n return isMuted(this.video, this.adPlayer);\n }\n setMuted(muted) {\n setMuted(this.video, this.adPlayer, muted, this.debug);\n }\n setVolume(volume) {\n setVolume(this.video, this.adPlayer, volume, this.debug);\n }\n getVolume() {\n return getVolume(this.video, this.adPlayer);\n }\n isFullscreen() {\n return isFullscreen();\n }\n resize() {\n resizePlayer(this.video, this.adPlayer, this.debug);\n }\n // ───────────────────────────────────────────────────────────────\n // Destroy\n // ───────────────────────────────────────────────────────────────\n destroy() {\n this.contentWatchdog.stop();\n this.adBreak.cancelScheduledRequest();\n this.timing.destroy();\n this.adBreak.clearPendingAdBreak();\n this.placeholder.destroy();\n 0;\n if (this.timeUpdateHandler) {\n this.video.removeEventListener(\"timeupdate\", this.timeUpdateHandler);\n delete this.timeUpdateHandler;\n }\n if (this.endedHandler) {\n this.video.removeEventListener(\"ended\", this.endedHandler);\n delete this.endedHandler;\n }\n if (this.emptiedHandler) {\n this.video.removeEventListener(\"emptied\", this.emptiedHandler);\n delete this.emptiedHandler;\n }\n this.adConfig.destroyTracking();\n this.hlsEngine.destroy();\n this.adPlayer?.destroy();\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.palNonce.reset();\n this.timing.consecutiveFailures = 0;\n }\n};\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_fa = require(\"react-icons/fa\");\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar ExpandIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 4H4v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 9V4h-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 20h5v-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 15v5h5\" })\n ]\n }\n);\nvar CompressIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 9h5V4\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 4v5h5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 15h-5v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 20v-5H4\" })\n ]\n }\n);\nvar CRITICAL_PROPS = [\n \"src\",\n \"allowNativeHls\",\n \"isLiveStream\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"lowLatencyMode\",\n \"driftToleranceMs\",\n \"ctvAdRequest\"\n];\nvar CONTROLS_HIDE_DELAY = 3e3;\nvar DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;\nvar StormcloudVideoPlayerComponent = import_react.default.memo(\n (props) => {\n const {\n src,\n autoplay,\n muted,\n lowLatencyMode,\n allowNativeHls,\n isLiveStream,\n driftToleranceMs,\n immediateManifestAds,\n debugAdTiming,\n showCustomControls,\n hideLoadingIndicator,\n onVolumeToggle,\n onFullscreenToggle,\n onControlClick,\n onReady,\n wrapperClassName,\n wrapperStyle,\n className,\n style,\n controls,\n playsInline,\n preload,\n poster,\n children,\n licenseKey,\n vastTagUrl,\n isVmap,\n vmapUrl,\n minSegmentsBeforePlay,\n ctvAdRequest,\n programTitle,\n channelName,\n contentNetwork,\n minRemainingMsToStartAd,\n minRemainingMsToRequestAd,\n maxNoFillsPerBreak,\n maxAdBreakExtensionMs,\n ...restVideoAttrs\n } = props;\n const videoRef = (0, import_react.useRef)(null);\n const playerRef = (0, import_react.useRef)(null);\n const bufferingTimeoutRef = (0, import_react.useRef)(null);\n const controlsTimerRef = (0, import_react.useRef)(null);\n const wrapperRef = (0, import_react.useRef)(null);\n const [adStatus, setAdStatus] = import_react.default.useState({ showAds: false, currentIndex: 0, totalAds: 0, remainingSeconds: 0 });\n const [shouldShowNativeControls, setShouldShowNativeControls] = import_react.default.useState(true);\n const [isMuted2, setIsMuted] = import_react.default.useState(false);\n const [isFullscreen2, setIsFullscreen] = import_react.default.useState(false);\n const [isPlaying, setIsPlaying] = import_react.default.useState(false);\n const [currentTime, setCurrentTime] = import_react.default.useState(0);\n const [duration, setDuration] = import_react.default.useState(0);\n const [volume, setVolume2] = import_react.default.useState(1);\n const [playbackRate, setPlaybackRate] = import_react.default.useState(1);\n const [showVolumeSlider, setShowVolumeSlider] = import_react.default.useState(false);\n const [showSpeedMenu, setShowSpeedMenu] = import_react.default.useState(false);\n const [isLoading, setIsLoading] = import_react.default.useState(true);\n const [isBuffering, setIsBuffering] = import_react.default.useState(false);\n const [showCenterPlay, setShowCenterPlay] = import_react.default.useState(false);\n const [showLicenseWarning, setShowLicenseWarning] = import_react.default.useState(false);\n const [controlsVisible, setControlsVisible] = import_react.default.useState(true);\n const [viewportWidth, setViewportWidth] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerWidth : 1920\n );\n const [isPortrait, setIsPortrait] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerHeight > window.innerWidth : false\n );\n const [playerAspectRatio, setPlayerAspectRatio] = import_react.default.useState(\n DEFAULT_PLAYER_ASPECT_RATIO\n );\n const getResponsiveScale = () => {\n if (viewportWidth < 480) return 0.7;\n if (viewportWidth < 768) return 0.8;\n if (viewportWidth < 1024) return 0.9;\n return 1;\n };\n const responsiveScale = getResponsiveScale();\n const resetControlsTimer = (0, import_react.useCallback)(() => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n setControlsVisible(true);\n controlsTimerRef.current = window.setTimeout(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, CONTROLS_HIDE_DELAY);\n }, [showVolumeSlider, showSpeedMenu]);\n const handleWrapperMouseMove = (0, import_react.useCallback)(() => {\n resetControlsTimer();\n }, [resetControlsTimer]);\n const handleWrapperMouseLeave = (0, import_react.useCallback)(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, [showVolumeSlider, showSpeedMenu]);\n const formatTime = (seconds) => {\n if (!isFinite(seconds)) return \"0:00:00\";\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor(seconds % 3600 / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${hours}:${minutes.toString().padStart(2, \"0\")}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n };\n const handlePlayPause = () => {\n if (videoRef.current) {\n if (videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n } else {\n videoRef.current.pause();\n setShowCenterPlay(true);\n }\n }\n resetControlsTimer();\n };\n const handleCenterPlayClick = () => {\n if (videoRef.current && videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n }\n };\n const handleTimelineSeek = (e) => {\n if (videoRef.current && duration > 0 && isFinite(duration)) {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickX = e.clientX - rect.left;\n const progress = Math.max(0, Math.min(1, clickX / rect.width));\n const newTime = progress * duration;\n if (isFinite(newTime) && newTime >= 0 && newTime <= duration) {\n videoRef.current.currentTime = newTime;\n }\n }\n resetControlsTimer();\n };\n const handleVolumeChange = (newVolume) => {\n if (playerRef.current && isFinite(newVolume)) {\n const clampedVolume = Math.max(0, Math.min(1, newVolume));\n playerRef.current.setVolume(clampedVolume);\n }\n };\n const handlePlaybackRateChange = (rate) => {\n if (videoRef.current && isFinite(rate) && rate > 0) {\n videoRef.current.playbackRate = rate;\n }\n setShowSpeedMenu(false);\n };\n const isHlsStream = src?.toLowerCase().includes(\".m3u8\") || src?.toLowerCase().includes(\"/hls/\");\n const isLiveUiMode = isLiveStream === true;\n const shouldShowEnhancedControls = showCustomControls && (isHlsStream ? !isLiveUiMode : true);\n const criticalPropsKey = (0, import_react.useMemo)(() => {\n return CRITICAL_PROPS.map((prop) => `${prop}:${props[prop]}`).join(\"|\");\n }, [\n src,\n allowNativeHls,\n isLiveStream,\n licenseKey,\n isVmap,\n vmapUrl,\n lowLatencyMode,\n driftToleranceMs\n ]);\n (0, import_react.useEffect)(() => {\n if (typeof window === \"undefined\") return;\n const el = videoRef.current;\n if (!el || !src) return;\n if (!licenseKey) {\n setShowLicenseWarning(true);\n setIsLoading(false);\n console.warn(\n \"StormcloudVideoPlayer: License key is required but not provided. Please set the licenseKey prop to use the player.\"\n );\n return;\n }\n setShowLicenseWarning(false);\n if (debugAdTiming) {\n console.log(\"[StormcloudUI] Initializing player, isLoading=true\");\n }\n if (playerRef.current) {\n try {\n playerRef.current.destroy();\n } catch {\n }\n playerRef.current = null;\n }\n const cfg = {\n src,\n videoElement: el\n };\n if (autoplay !== void 0) cfg.autoplay = autoplay;\n if (muted !== void 0) cfg.muted = muted;\n if (lowLatencyMode !== void 0) cfg.lowLatencyMode = lowLatencyMode;\n if (allowNativeHls !== void 0) cfg.allowNativeHls = allowNativeHls;\n if (isLiveStream !== void 0) cfg.isLiveStream = isLiveStream;\n if (driftToleranceMs !== void 0)\n cfg.driftToleranceMs = driftToleranceMs;\n if (immediateManifestAds !== void 0)\n cfg.immediateManifestAds = immediateManifestAds;\n if (debugAdTiming !== void 0) cfg.debugAdTiming = debugAdTiming;\n if (showCustomControls !== void 0)\n cfg.showCustomControls = showCustomControls;\n if (onVolumeToggle !== void 0) cfg.onVolumeToggle = onVolumeToggle;\n if (onFullscreenToggle !== void 0)\n cfg.onFullscreenToggle = onFullscreenToggle;\n if (onControlClick !== void 0) cfg.onControlClick = onControlClick;\n if (licenseKey !== void 0) cfg.licenseKey = licenseKey;\n if (vastTagUrl !== void 0) cfg.vastTagUrl = vastTagUrl;\n if (isVmap !== void 0) cfg.isVmap = isVmap;\n if (vmapUrl !== void 0) cfg.vmapUrl = vmapUrl;\n if (minSegmentsBeforePlay !== void 0)\n cfg.minSegmentsBeforePlay = minSegmentsBeforePlay;\n if (ctvAdRequest !== void 0) cfg.ctvAdRequest = ctvAdRequest;\n if (programTitle !== void 0) cfg.programTitle = programTitle;\n if (channelName !== void 0) cfg.channelName = channelName;\n if (contentNetwork !== void 0) cfg.contentNetwork = contentNetwork;\n if (minRemainingMsToStartAd !== void 0)\n cfg.minRemainingMsToStartAd = minRemainingMsToStartAd;\n if (minRemainingMsToRequestAd !== void 0)\n cfg.minRemainingMsToRequestAd = minRemainingMsToRequestAd;\n if (maxNoFillsPerBreak !== void 0)\n cfg.maxNoFillsPerBreak = maxNoFillsPerBreak;\n if (maxAdBreakExtensionMs !== void 0)\n cfg.maxAdBreakExtensionMs = maxAdBreakExtensionMs;\n const player = new StormcloudVideoPlayer(cfg);\n playerRef.current = player;\n player.load().then(() => {\n const showNative = player.shouldShowNativeControls();\n setShouldShowNativeControls(showNative);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Player loaded successfully, waiting for video ready\"\n );\n }\n onReady?.(player);\n }).catch((error) => {\n console.error(\n \"StormcloudVideoPlayer: Failed to load player:\",\n error\n );\n setIsLoading(false);\n onReady?.(player);\n });\n return () => {\n try {\n player.destroy();\n } catch {\n }\n playerRef.current = null;\n };\n }, [criticalPropsKey]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n try {\n if (autoplay !== void 0 && playerRef.current.videoElement) {\n playerRef.current.videoElement.autoplay = autoplay;\n }\n if (muted !== void 0 && !playerRef.current.isShowingAds()) {\n playerRef.current.setMuted(muted);\n }\n } catch (error) {\n console.warn(\"Failed to update player properties:\", error);\n }\n }, [autoplay, muted]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n const checkAdStatus = () => {\n if (playerRef.current) {\n const showAdsFromMethod = playerRef.current.isShowingAds();\n const showAdsFromAttribute = videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n const showAds = showAdsFromMethod || showAdsFromAttribute;\n const currentIndex = playerRef.current.getCurrentAdIndex();\n const totalAds = playerRef.current.getTotalAdsInBreak();\n const remainingMs = playerRef.current.getAdRemainingMs();\n const remainingSeconds = showAds ? Math.max(0, Math.ceil(remainingMs / 1e3)) : 0;\n setAdStatus((prev) => {\n if (prev.showAds !== showAds || prev.currentIndex !== currentIndex || prev.totalAds !== totalAds || prev.remainingSeconds !== remainingSeconds) {\n if (showAds && !prev.showAds) {\n setShowCenterPlay(false);\n }\n return { showAds, currentIndex, totalAds, remainingSeconds };\n }\n return prev;\n });\n }\n };\n const interval = setInterval(checkAdStatus, 50);\n return () => clearInterval(interval);\n }, []);\n (0, import_react.useEffect)(() => {\n if (typeof window === \"undefined\" || !playerRef.current) return;\n const handleResize = () => {\n if (playerRef.current && videoRef.current) {\n if (typeof playerRef.current.resize === \"function\") {\n playerRef.current.resize();\n }\n }\n setViewportWidth(window.innerWidth);\n setIsPortrait(window.innerHeight > window.innerWidth);\n };\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current || !videoRef.current) return;\n const updateStates = () => {\n if (playerRef.current && videoRef.current) {\n setIsMuted(playerRef.current.isMuted());\n setIsPlaying(!videoRef.current.paused);\n const currentTimeValue = videoRef.current.currentTime;\n setCurrentTime(isFinite(currentTimeValue) ? currentTimeValue : 0);\n const durationValue = videoRef.current.duration;\n setDuration(isFinite(durationValue) ? durationValue : 0);\n const volumeValue = playerRef.current.getVolume();\n setVolume2(\n isFinite(volumeValue) ? Math.max(0, Math.min(1, volumeValue)) : 1\n );\n const rateValue = videoRef.current.playbackRate;\n setPlaybackRate(\n isFinite(rateValue) && rateValue > 0 ? rateValue : 1\n );\n }\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n const interval = setInterval(updateStates, 200);\n const handleFullscreenChange = () => {\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n return () => {\n clearInterval(interval);\n document.removeEventListener(\n \"fullscreenchange\",\n handleFullscreenChange\n );\n };\n }, []);\n (0, import_react.useEffect)(() => {\n if (!videoRef.current) return;\n const handleLoadedMetadata = () => {\n const video2 = videoRef.current;\n if (video2) {\n if (video2.videoWidth > 0 && video2.videoHeight > 0) {\n setPlayerAspectRatio(video2.videoWidth / video2.videoHeight);\n }\n void video2.offsetHeight;\n }\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadedmetadata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadedData = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadeddata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadStart = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadstart, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleCanPlay = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplay, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleCanPlayThrough = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplaythrough, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleWaiting = () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n }\n bufferingTimeoutRef.current = window.setTimeout(() => {\n setIsBuffering(true);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video buffering detected (after 300ms delay), readyState:\",\n videoRef.current?.readyState,\n \"- showing spinner, isBuffering=true\"\n );\n }\n }, 300);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: waiting, readyState:\",\n videoRef.current?.readyState,\n \"- buffering delay started (300ms)\"\n );\n }\n };\n const handlePlaying = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n setShowCenterPlay(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: playing, readyState:\",\n videoRef.current?.readyState,\n \"- playback started, isLoading=false, isBuffering=false\"\n );\n }\n };\n const handlePause = () => {\n const isAdActive = playerRef.current?.isShowingAds() || videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n if (playerRef.current && !isAdActive) {\n setShowCenterPlay(true);\n } else {\n setShowCenterPlay(false);\n }\n };\n const handleEnded = () => {\n setShowCenterPlay(true);\n };\n const video = videoRef.current;\n video.addEventListener(\"loadstart\", handleLoadStart);\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.addEventListener(\"canplay\", handleCanPlay);\n video.addEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.addEventListener(\"waiting\", handleWaiting);\n video.addEventListener(\"playing\", handlePlaying);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n if (video.paused) {\n setShowCenterPlay(true);\n }\n return () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n video.removeEventListener(\"loadstart\", handleLoadStart);\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n video.removeEventListener(\"canplay\", handleCanPlay);\n video.removeEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.removeEventListener(\"waiting\", handleWaiting);\n video.removeEventListener(\"playing\", handlePlaying);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n };\n }, [debugAdTiming]);\n (0, import_react.useEffect)(() => {\n setPlayerAspectRatio(DEFAULT_PLAYER_ASPECT_RATIO);\n }, [src]);\n (0, import_react.useEffect)(() => {\n return () => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n };\n }, []);\n const progressPercent = duration > 0 ? currentTime / duration * 100 : 0;\n const VolumeIcon = isMuted2 || volume === 0 ? import_fa.FaVolumeMute : volume < 0.5 ? import_fa.FaVolumeDown : import_fa.FaVolumeUp;\n return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"style\", { children: `\n @keyframes sc-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n @keyframes sc-loading-glow {\n 0%, 100% { opacity: 0.85; transform: scale(1); }\n 50% { opacity: 1; transform: scale(1.05); }\n }\n @keyframes sc-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n }\n @keyframes sc-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .sc-wrapper:fullscreen,\n .sc-wrapper:has(*:fullscreen) {\n border-radius: 0 !important;\n box-shadow: none !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n z-index: 999999 !important;\n background: #000 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n .sc-ctrl-btn {\n background: none;\n border: none;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n padding: 8px;\n transition: background 0.15s ease, opacity 0.15s ease;\n opacity: 0.9;\n }\n .sc-ctrl-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n .sc-ctrl-btn:active {\n opacity: 0.7;\n }\n .sc-controls-bar {\n transition: opacity 0.35s ease, transform 0.35s ease;\n }\n .sc-progress-track:hover .sc-progress-thumb {\n transform: translate(-50%, -50%) scale(1) !important;\n }\n .sc-loading-hidden .sc-loading-indicator {\n display: none !important;\n }\n ` }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n ref: wrapperRef,\n className: `sc-wrapper ${wrapperClassName || \"\"}`,\n onMouseMove: handleWrapperMouseMove,\n onMouseLeave: handleWrapperMouseLeave,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: isFullscreen2 ? \"fixed\" : \"relative\",\n top: isFullscreen2 ? 0 : void 0,\n left: isFullscreen2 ? 0 : void 0,\n overflow: \"hidden\",\n width: isFullscreen2 ? \"100vw\" : \"100%\",\n height: isFullscreen2 ? \"100vh\" : \"auto\",\n minHeight: isFullscreen2 ? \"100vh\" : \"auto\",\n aspectRatio: isFullscreen2 ? void 0 : playerAspectRatio,\n maxWidth: isFullscreen2 ? \"100vw\" : \"100%\",\n maxHeight: isFullscreen2 ? \"100vh\" : \"none\",\n zIndex: isFullscreen2 ? 999999 : void 0,\n backgroundColor: \"#000\",\n borderRadius: isFullscreen2 ? 0 : void 0,\n boxShadow: isFullscreen2 ? \"none\" : void 0,\n ...wrapperStyle\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"video\",\n {\n ref: videoRef,\n className,\n style: {\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n maxWidth: \"100%\",\n maxHeight: isFullscreen2 ? \"100%\" : \"none\",\n objectFit: isFullscreen2 ? \"cover\" : \"contain\",\n backgroundColor: \"#000\",\n aspectRatio: isFullscreen2 ? \"unset\" : void 0,\n ...style\n },\n controls: shouldShowNativeControls && controls && !showCustomControls,\n playsInline,\n preload,\n poster,\n ...restVideoAttrs,\n children\n }\n ),\n (isLoading || isBuffering) && !hideLoadingIndicator && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-loading-indicator\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 20,\n width: `${Math.max(34, 38 * responsiveScale)}px`,\n height: `${Math.max(34, 38 * responsiveScale)}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n animation: \"sc-loading-glow 1.4s ease-in-out infinite\",\n filter: \"drop-shadow(0 6px 14px rgba(0, 0, 0, 0.55))\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n inset: 0,\n borderRadius: \"50%\",\n border: \"3px solid rgba(255, 255, 255, 0.25)\",\n borderTopColor: \"#ff0000\",\n borderRightColor: \"rgba(255, 255, 255, 0.85)\",\n animation: \"sc-spin 0.8s linear infinite\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: \"7px\",\n height: \"7px\",\n borderRadius: \"50%\",\n background: \"#ff0000\",\n boxShadow: \"0 0 10px rgba(255, 0, 0, 0.65)\"\n }\n }\n )\n ]\n }\n ),\n showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 25,\n background: \"rgba(220, 38, 38, 0.92)\",\n backdropFilter: \"blur(24px)\",\n color: \"white\",\n padding: \"28px 36px\",\n borderRadius: \"14px\",\n border: \"1px solid rgba(255, 255, 255, 0.15)\",\n boxShadow: \"0 24px 64px rgba(0, 0, 0, 0.5)\",\n textAlign: \"center\",\n maxWidth: \"400px\",\n margin: \"0 16px\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { fontSize: \"18px\", fontWeight: \"700\", marginBottom: \"10px\", letterSpacing: \"-0.02em\" }, children: \"License Key Required\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { fontSize: \"13px\", lineHeight: \"1.6\", color: \"rgba(255, 255, 255, 0.85)\" }, children: [\n \"Please provide a valid license key to use the Stormcloud Video Player.\",\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"br\", {}),\n \"Contact your administrator for licensing information.\"\n ] })\n ]\n }\n ),\n adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${12 * responsiveScale}px`,\n left: `${12 * responsiveScale}px`,\n zIndex: 50,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n pointerEvents: \"none\",\n animation: \"sc-fade-in 0.3s ease\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n background: \"rgba(234, 179, 8, 0.95)\",\n color: \"#111\",\n padding: `${4 * responsiveScale}px ${12 * responsiveScale}px`,\n borderRadius: \"6px\",\n fontSize: `${11 * responsiveScale}px`,\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n boxShadow: \"0 2px 12px rgba(234, 179, 8, 0.35)\"\n },\n children: `Ad ${Math.max(1, adStatus.currentIndex)}`\n }\n )\n }\n ),\n showCenterPlay && !isLoading && !isBuffering && !showLicenseWarning && !adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n onClick: handleCenterPlayClick,\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 15,\n cursor: \"pointer\",\n background: \"rgba(0, 0, 0, 0.55)\",\n backdropFilter: \"blur(8px)\",\n borderRadius: \"50%\",\n width: `${92 * responsiveScale}px`,\n height: `${92 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 0.2s ease, transform 0.2s ease\",\n animation: \"sc-fade-in 0.2s ease\"\n },\n onMouseEnter: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.72)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1.06)\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.55)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1)\";\n },\n title: \"Play\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n import_fa.FaPlay,\n {\n size: Math.max(24, 32 * responsiveScale),\n color: \"white\",\n style: { marginLeft: \"4px\" }\n }\n )\n }\n ),\n shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n background: \"linear-gradient(0deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.35) 60%, transparent 100%)\",\n padding: `${20 * responsiveScale}px ${12 * responsiveScale}px ${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible || adStatus.showAds ? 1 : 0,\n transform: controlsVisible || adStatus.showAds ? \"translateY(0)\" : \"translateY(6px)\",\n pointerEvents: controlsVisible || adStatus.showAds ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-progress-track\",\n style: {\n width: \"100%\",\n height: \"3px\",\n background: \"rgba(255, 255, 255, 0.2)\",\n borderRadius: \"1.5px\",\n marginBottom: `${8 * responsiveScale}px`,\n cursor: \"pointer\",\n position: \"relative\",\n transition: \"height 0.1s ease\"\n },\n onClick: handleTimelineSeek,\n onMouseEnter: (e) => {\n e.currentTarget.style.height = \"5px\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.height = \"3px\";\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"1.5px\",\n width: `${progressPercent}%`,\n transition: \"width 0.15s linear\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n className: \"sc-progress-thumb\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${progressPercent}%`,\n transform: \"translate(-50%, -50%) scale(0)\",\n width: \"13px\",\n height: \"13px\",\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 4px rgba(0, 0, 0, 0.3)\",\n transition: \"transform 0.1s ease, left 0.15s linear\"\n }\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"white\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: handlePlayPause,\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isPlaying ? \"Pause\" : \"Play\",\n children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPause, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPlay, { size: Math.max(14, 18 * responsiveScale), style: { marginLeft: \"2px\" } })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n paddingRight: `${6 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${8 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"Roboto, 'Segoe UI', Arial, sans-serif\",\n color: \"rgba(255, 255, 255, 0.9)\",\n display: viewportWidth < 480 ? \"none\" : \"block\",\n fontVariantNumeric: \"tabular-nums\",\n userSelect: \"none\",\n marginLeft: `${4 * responsiveScale}px`\n },\n children: [\n formatTime(currentTime),\n \" \",\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"span\", { style: { color: \"rgba(255,255,255,0.5)\" }, children: \"/\" }),\n \" \",\n formatTime(duration)\n ]\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { position: \"relative\", display: viewportWidth < 600 ? \"none\" : \"block\" }, children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n setShowSpeedMenu(!showSpeedMenu);\n resetControlsTimer();\n },\n style: {\n padding: `${6 * responsiveScale}px ${10 * responsiveScale}px`,\n borderRadius: `${6 * responsiveScale}px`,\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"'SF Mono', 'Cascadia Code', monospace\",\n fontWeight: \"600\",\n minHeight: `${32 * responsiveScale}px`\n },\n title: \"Playback Speed\",\n children: [\n playbackRate,\n \"x\"\n ]\n }\n ),\n showSpeedMenu && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n bottom: \"100%\",\n right: 0,\n marginBottom: \"8px\",\n background: \"rgba(0, 0, 0, 0.8)\",\n backdropFilter: \"blur(24px)\",\n WebkitBackdropFilter: \"blur(24px)\",\n borderRadius: \"10px\",\n border: \"1px solid rgba(255, 255, 255, 0.1)\",\n overflow: \"hidden\",\n minWidth: \"80px\",\n boxShadow: \"0 12px 40px rgba(0, 0, 0, 0.5)\",\n animation: \"sc-fade-in 0.15s ease\"\n },\n children: [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2].map((speed) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"button\",\n {\n onClick: () => handlePlaybackRateChange(speed),\n style: {\n display: \"block\",\n width: \"100%\",\n padding: `${8 * responsiveScale}px ${14 * responsiveScale}px`,\n background: playbackRate === speed ? \"rgba(255, 255, 255, 0.12)\" : \"transparent\",\n border: \"none\",\n color: playbackRate === speed ? \"#fff\" : \"rgba(255, 255, 255, 0.7)\",\n cursor: \"pointer\",\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Mono', monospace\",\n fontWeight: playbackRate === speed ? \"700\" : \"500\",\n textAlign: \"center\",\n transition: \"background 0.15s ease, color 0.15s ease\"\n },\n onMouseEnter: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"rgba(255, 255, 255, 0.08)\";\n e.target.style.color = \"#fff\";\n }\n },\n onMouseLeave: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"transparent\";\n e.target.style.color = \"rgba(255, 255, 255, 0.7)\";\n }\n },\n children: [\n speed,\n \"x\"\n ]\n },\n speed\n ))\n }\n )\n ] }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ]\n }\n )\n ]\n }\n ) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${10 * responsiveScale}px`,\n left: `${10 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transition: \"opacity 0.35s ease\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n background: \"#ff3b30\",\n animation: \"sc-pulse 1.5s ease-in-out infinite\",\n flexShrink: 0\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"span\",\n {\n style: {\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Pro Display', 'Segoe UI', Arial, sans-serif\",\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n color: \"#fff\",\n textShadow: \"0 1px 3px rgba(0,0,0,0.6)\",\n userSelect: \"none\"\n },\n children: \"LIVE\"\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: `${10 * responsiveScale}px`,\n right: `${10 * responsiveScale}px`,\n display: \"flex\",\n flexDirection: isPortrait ? \"column\" : \"row\",\n alignItems: isPortrait ? \"flex-end\" : \"center\",\n gap: `${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transform: controlsVisible ? \"translateY(0)\" : \"translateY(4px)\",\n pointerEvents: controlsVisible ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n background: \"rgba(0, 0, 0, 0.6)\",\n borderRadius: `${18 * responsiveScale}px`,\n padding: \"2px\",\n paddingRight: `${8 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${10 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`,\n background: \"rgba(0, 0, 0, 0.6)\"\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ] }),\n onControlClick && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n onClick: onControlClick,\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n cursor: \"pointer\"\n }\n }\n )\n ]\n }\n )\n ] });\n },\n (prevProps, nextProps) => {\n for (const prop of CRITICAL_PROPS) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const uiProps = [\n \"autoplay\",\n \"muted\",\n \"controls\",\n \"showCustomControls\",\n \"className\",\n \"style\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"playsInline\",\n \"preload\",\n \"poster\",\n \"children\"\n ];\n for (const prop of uiProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const callbackProps = [\n \"onReady\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n ];\n for (const prop of callbackProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n return true;\n }\n);\n\n// src/StormcloudPlayer.tsx\nvar import_react6 = __toESM(require(\"react\"), 1);\n\n// src/props.ts\nvar noop = () => {\n};\nvar defaultProps = {\n playing: false,\n loop: false,\n controls: true,\n volume: 1,\n muted: false,\n playbackRate: 1,\n width: \"100%\",\n height: \"auto\",\n style: {},\n progressInterval: 1e3,\n playsInline: false,\n autoplay: false,\n preload: \"metadata\",\n poster: \"\",\n className: \"\",\n wrapperClassName: \"\",\n wrapperStyle: {},\n allowNativeHls: false,\n lowLatencyMode: false,\n driftToleranceMs: 1e3,\n immediateManifestAds: true,\n debugAdTiming: false,\n showCustomControls: false,\n hideLoadingIndicator: false,\n licenseKey: \"\",\n isVmap: false,\n vmapUrl: \"\",\n adFailsafeTimeoutMs: 1e4,\n minSegmentsBeforePlay: 2,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onProgress: noop,\n onVolumeToggle: noop,\n onFullscreenToggle: noop,\n onControlClick: noop\n};\n\n// src/utils.ts\nvar import_react2 = require(\"react\");\nvar lazy = import_react2.lazy;\nvar omit = (object, keys) => {\n const result = { ...object };\n keys.forEach((key) => {\n delete result[key];\n });\n return result;\n};\nvar isMediaStream = (url) => {\n return typeof window !== \"undefined\" && window.MediaStream && url instanceof window.MediaStream;\n};\nvar supportsWebKitPresentationMode = () => {\n if (typeof window === \"undefined\") return false;\n const video = document.createElement(\"video\");\n return \"webkitSupportsPresentationMode\" in video;\n};\nvar randomString = () => {\n return Math.random().toString(36).substr(2, 9);\n};\nvar parseQuery = (url) => {\n const query = {};\n const queryString = url.split(\"?\")[1] || \"\";\n if (!queryString) return query;\n const manualParse = (qs) => {\n qs.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n try {\n query[decodeURIComponent(key)] = value ? decodeURIComponent(value.replace(/\\+/g, \" \")) : \"\";\n } catch (e) {\n query[key] = value || \"\";\n }\n }\n });\n };\n if (typeof URLSearchParams !== \"undefined\") {\n try {\n const params = new URLSearchParams(queryString);\n params.forEach((value, key) => {\n query[key] = value;\n });\n return query;\n } catch (e) {\n manualParse(queryString);\n }\n } else {\n manualParse(queryString);\n }\n return query;\n};\nvar merge = (target, ...sources) => {\n if (!sources.length) return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n merge(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return merge(target, ...sources);\n};\nvar isObject = (item) => {\n return item && typeof item === \"object\" && !Array.isArray(item);\n};\nvar IS_BROWSER = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar IS_SAFARI = IS_BROWSER && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\nvar SUPPORTS_HLS = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/vnd.apple.mpegurl\"));\n};\nvar SUPPORTS_DASH = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/dash+xml\"));\n};\n\n// src/patterns.ts\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_PATHS = /\\/hls\\//i;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv)($|\\?)/i;\nvar AUDIO_EXTENSIONS = /\\.(mp3|wav|ogg|aac|wma|flac|m4a)($|\\?)/i;\nvar canPlay = {\n hls: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return HLS_EXTENSIONS.test(url) || HLS_PATHS.test(url);\n },\n dash: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return DASH_EXTENSIONS.test(url);\n },\n video: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url);\n },\n audio: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return AUDIO_EXTENSIONS.test(url);\n },\n file: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url) || AUDIO_EXTENSIONS.test(url);\n }\n};\n\n// src/players/HlsPlayer.tsx\nvar import_react3 = require(\"react\");\nvar HlsPlayer = class extends import_react3.Component {\n constructor() {\n super(...arguments);\n this.player = null;\n this.mounted = false;\n this.load = async () => {\n if (!this.props.videoElement || !this.props.src) return;\n try {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n const config = {\n src: this.props.src,\n videoElement: this.props.videoElement\n };\n if (this.props.autoplay !== void 0)\n config.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) config.muted = this.props.muted;\n if (this.props.lowLatencyMode !== void 0)\n config.lowLatencyMode = this.props.lowLatencyMode;\n if (this.props.allowNativeHls !== void 0)\n config.allowNativeHls = this.props.allowNativeHls;\n if (this.props.isLiveStream !== void 0)\n config.isLiveStream = this.props.isLiveStream;\n if (this.props.driftToleranceMs !== void 0)\n config.driftToleranceMs = this.props.driftToleranceMs;\n if (this.props.immediateManifestAds !== void 0)\n config.immediateManifestAds = this.props.immediateManifestAds;\n if (this.props.debugAdTiming !== void 0)\n config.debugAdTiming = this.props.debugAdTiming;\n if (this.props.showCustomControls !== void 0)\n config.showCustomControls = this.props.showCustomControls;\n if (this.props.onVolumeToggle !== void 0)\n config.onVolumeToggle = this.props.onVolumeToggle;\n if (this.props.onFullscreenToggle !== void 0)\n config.onFullscreenToggle = this.props.onFullscreenToggle;\n if (this.props.onControlClick !== void 0)\n config.onControlClick = this.props.onControlClick;\n if (this.props.licenseKey !== void 0)\n config.licenseKey = this.props.licenseKey;\n if (this.props.adFailsafeTimeoutMs !== void 0)\n config.adFailsafeTimeoutMs = this.props.adFailsafeTimeoutMs;\n if (this.props.minSegmentsBeforePlay !== void 0)\n config.minSegmentsBeforePlay = this.props.minSegmentsBeforePlay;\n if (this.props.ctvAdRequest !== void 0)\n config.ctvAdRequest = this.props.ctvAdRequest;\n if (this.props.vastTagUrl !== void 0)\n config.vastTagUrl = this.props.vastTagUrl;\n if (this.props.isVmap !== void 0) config.isVmap = this.props.isVmap;\n if (this.props.vmapUrl !== void 0) config.vmapUrl = this.props.vmapUrl;\n if (this.props.minRemainingMsToRequestAd !== void 0)\n config.minRemainingMsToRequestAd = this.props.minRemainingMsToRequestAd;\n if (this.props.maxNoFillsPerBreak !== void 0)\n config.maxNoFillsPerBreak = this.props.maxNoFillsPerBreak;\n if (this.props.maxAdBreakExtensionMs !== void 0)\n config.maxAdBreakExtensionMs = this.props.maxAdBreakExtensionMs;\n this.player = new StormcloudVideoPlayer(config);\n this.props.onMount?.(this);\n await this.player.load();\n if (this.mounted) {\n this.props.onReady?.();\n }\n } catch (error) {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n }\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[HlsPlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n this.props.onPlay?.();\n } else {\n console.warn(\"[HlsPlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n this.props.onPause?.();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"player\") return this.player;\n if (key === \"video\") return this.props.videoElement;\n if (key === \"hls\" && this.player) return this.player.hls;\n return null;\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nHlsPlayer.displayName = \"HlsPlayer\";\nHlsPlayer.canPlay = canPlay.hls;\n\n// src/players/FilePlayer.tsx\nvar import_react4 = require(\"react\");\nvar FilePlayer = class extends import_react4.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n\n// src/players/index.ts\nvar players = [\n {\n key: \"hls\",\n name: \"HLS Player\",\n canPlay: canPlay.hls,\n lazyPlayer: lazy(() => Promise.resolve({ default: HlsPlayer }))\n },\n {\n key: \"file\",\n name: \"File Player\",\n canPlay: canPlay.file,\n canEnablePIP: (url) => {\n return canPlay.file(url) && (document.pictureInPictureEnabled || typeof document.webkitSupportsPresentationMode === \"function\");\n },\n lazyPlayer: lazy(() => Promise.resolve({ default: FilePlayer }))\n }\n];\nvar players_default = players;\n\n// src/Player.tsx\nvar import_react5 = __toESM(require(\"react\"), 1);\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends import_react5.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.isReady = false;\n this.isPlaying = false;\n this.isLoading = true;\n this.loadOnReady = null;\n this.startOnPlay = true;\n this.seekOnPlay = null;\n this.onDurationCalled = false;\n this.handlePlayerMount = (player) => {\n if (this.player) {\n this.progress();\n return;\n }\n this.player = player;\n this.player.load(this.props.src);\n this.progress();\n };\n this.getInternalPlayer = (key) => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.progress = () => {\n if (this.props.src && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0;\n const loadedSeconds = this.getSecondsLoaded();\n const duration = this.getDuration();\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration,\n loaded: 0,\n loadedSeconds: 0\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress?.(progress);\n }\n this.prevPlayed = progress.playedSeconds;\n this.prevLoaded = progress.loadedSeconds;\n }\n }\n this.progressTimeout = window.setTimeout(\n this.progress,\n this.props.progressInterval || 1e3\n );\n };\n this.handleReady = () => {\n if (!this.mounted) return;\n this.isReady = true;\n this.isLoading = false;\n const { onReady, playing, volume, muted } = this.props;\n onReady();\n if (!muted && volume !== null) {\n this.player.setVolume(volume);\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true);\n this.loadOnReady = null;\n } else if (playing) {\n this.player.play();\n }\n this.handleDurationCheck();\n };\n this.handlePlay = () => {\n this.isPlaying = true;\n this.isLoading = false;\n const { onStart, onPlay, playbackRate } = this.props;\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate);\n }\n onStart?.();\n this.startOnPlay = false;\n }\n onPlay?.();\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay);\n this.seekOnPlay = null;\n }\n this.handleDurationCheck();\n };\n this.handlePause = (e) => {\n this.isPlaying = false;\n if (!this.isLoading) {\n this.props.onPause?.(e);\n }\n };\n this.handleEnded = () => {\n const { activePlayer, loop, onEnded } = this.props;\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0);\n }\n if (!loop) {\n this.isPlaying = false;\n onEnded?.();\n }\n };\n this.handleError = (...args) => {\n this.isLoading = false;\n this.props.onError?.(args[0], args[1], args[2], args[3]);\n };\n this.handleDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout);\n const duration = this.getDuration();\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration?.(duration);\n this.onDurationCalled = true;\n }\n } else {\n this.durationCheckTimeout = window.setTimeout(\n this.handleDurationCheck,\n 100\n );\n }\n };\n this.handleLoaded = () => {\n this.isLoading = false;\n };\n }\n componentDidMount() {\n this.mounted = true;\n }\n componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (!this.player) return;\n const { src, playing, volume, muted, playbackRate, loop, activePlayer } = this.props;\n if (prevProps.src !== src) {\n if (this.isLoading && !activePlayer.forceLoad && !isMediaStream(src)) {\n console.warn(\n `StormcloudPlayer: the attempt to load ${src} is being deferred until the player has loaded`\n );\n this.loadOnReady = src || null;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(src, this.isReady);\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (volume !== null) {\n setTimeout(() => this.player.setVolume(volume));\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n seekTo(amount, type, keepPlaying) {\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(() => {\n this.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n return;\n }\n const isFraction = !type ? amount > 0 && amount < 1 : type === \"fraction\";\n if (isFraction) {\n const duration = this.player.getDuration();\n if (!duration) {\n console.warn(\n \"StormcloudPlayer: could not seek using fraction \\u2013 duration not yet available\"\n );\n return;\n }\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n this.player.seekTo(amount, keepPlaying);\n }\n render() {\n const Player2 = this.props.activePlayer;\n if (!Player2) {\n return null;\n }\n return import_react5.default.createElement(Player2, {\n ...this.props,\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n });\n }\n};\nPlayer.displayName = \"Player\";\nPlayer.defaultProps = defaultProps;\n\n// src/StormcloudPlayer.tsx\nvar IS_BROWSER2 = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL2 = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar UniversalSuspense = IS_BROWSER2 || IS_GLOBAL2 ? import_react6.Suspense : () => null;\nvar SUPPORTED_PROPS = [\n \"src\",\n \"playing\",\n \"loop\",\n \"controls\",\n \"volume\",\n \"muted\",\n \"playbackRate\",\n \"width\",\n \"height\",\n \"style\",\n \"progressInterval\",\n \"playsInline\",\n \"autoplay\",\n \"preload\",\n \"poster\",\n \"className\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"allowNativeHls\",\n \"lowLatencyMode\",\n \"isLiveStream\",\n \"driftToleranceMs\",\n \"immediateManifestAds\",\n \"debugAdTiming\",\n \"showCustomControls\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"vastTagUrl\",\n \"adFailsafeTimeoutMs\",\n \"minSegmentsBeforePlay\",\n \"ctvAdRequest\",\n \"minRemainingMsToRequestAd\",\n \"maxNoFillsPerBreak\",\n \"maxAdBreakExtensionMs\",\n \"onReady\",\n \"onStart\",\n \"onPlay\",\n \"onPause\",\n \"onBuffer\",\n \"onBufferEnd\",\n \"onEnded\",\n \"onError\",\n \"onDuration\",\n \"onSeek\",\n \"onProgress\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n];\nvar customPlayers = [];\nvar createStormcloudPlayer = (playerList, fallback) => {\n var _a;\n return _a = class extends import_react6.Component {\n constructor() {\n super(...arguments);\n this.state = {\n showPreview: false\n };\n this.references = {\n wrapper: (wrapper) => {\n this.wrapper = wrapper;\n },\n player: (player) => {\n this.player = player;\n }\n };\n this.getActivePlayer = (src) => {\n if (!src) return null;\n for (const player of [...customPlayers, ...playerList]) {\n if (player.canPlay(src)) {\n return player;\n }\n }\n if (fallback) {\n return fallback;\n }\n return null;\n };\n this.getAttributes = (src) => {\n return omit(this.props, SUPPORTED_PROPS);\n };\n this.handleReady = () => {\n this.props.onReady?.(this);\n };\n this.seekTo = (fraction, type, keepPlaying) => {\n if (!this.player) return null;\n this.player.seekTo(fraction, type, keepPlaying);\n };\n this.getCurrentTime = () => {\n if (!this.player) return null;\n return this.player.getCurrentTime();\n };\n this.getSecondsLoaded = () => {\n if (!this.player) return null;\n return this.player.getSecondsLoaded();\n };\n this.getDuration = () => {\n if (!this.player) return null;\n return this.player.getDuration();\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.renderActivePlayer = (src) => {\n if (!src) return null;\n const activePlayer = this.getActivePlayer(src);\n if (!activePlayer) return null;\n return import_react6.default.createElement(Player, {\n ...this.props,\n key: activePlayer.key,\n ref: this.references.player,\n activePlayer: activePlayer.lazyPlayer || activePlayer,\n onReady: this.handleReady\n });\n };\n }\n render() {\n const {\n src,\n style,\n width,\n height,\n fallback: fallbackElement,\n wrapper: Wrapper\n } = this.props;\n const attributes = this.getAttributes(src);\n const wrapperRef = typeof Wrapper === \"string\" ? this.references.wrapper : void 0;\n return import_react6.default.createElement(\n Wrapper,\n {\n ref: wrapperRef,\n style: { ...style, width, height },\n ...attributes\n },\n import_react6.default.createElement(\n UniversalSuspense,\n { fallback: fallbackElement },\n this.renderActivePlayer(src)\n )\n );\n }\n }, _a.displayName = \"StormcloudPlayer\", _a.defaultProps = {\n ...defaultProps,\n fallback: null,\n wrapper: \"div\"\n }, _a.addCustomPlayer = (player) => {\n customPlayers.push(player);\n }, _a.removeCustomPlayers = () => {\n customPlayers.length = 0;\n }, _a.canPlay = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canPlay(src)) {\n return true;\n }\n }\n return false;\n }, _a.canEnablePIP = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canEnablePIP && Player2.canEnablePIP(src)) {\n return true;\n }\n }\n return false;\n }, _a;\n};\nvar StormcloudPlayer = createStormcloudPlayer(\n players_default,\n players_default[players_default.length - 1]\n);\nvar StormcloudPlayer_default = StormcloudPlayer;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_REQUEST_SAFETY_MS,\n DEFAULT_TRACKING_INGEST_CONFIG,\n DISABLED_FLOOR_LADDER_CONFIG,\n GAM_AD_OPPORTUNITY_DURATION_MS,\n IS_BROWSER,\n IS_GLOBAL,\n IS_IOS,\n IS_SAFARI,\n SUPPORTS_DASH,\n SUPPORTS_HLS,\n StormcloudPlayer,\n StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig,\n buildAnalyticsContext,\n canPlay,\n configureTrackingIngest,\n createHlsAdPlayer,\n createPalNonceManager,\n createStormcloudPlayer,\n detectBrowser,\n fixedFloorSelector,\n generateFloorLevels,\n getBrowserConfigOverrides,\n getBrowserID,\n getClientInfo,\n ingestPlayerTracking,\n initializePolyfills,\n isMediaStream,\n isTrackingIngestEnabled,\n lazy,\n logBrowserInfo,\n merge,\n omit,\n parseApiFloorLadder,\n parseQuery,\n players,\n randomString,\n requiresMediaPipelineResetAfterAds,\n resolveFloorLadderBounds,\n sendAdDetectTracking,\n sendAdImpressionTracking,\n sendAdLoadedTracking,\n sendHeartbeat,\n sendInitialTracking,\n supportsFeature,\n supportsModernJS,\n supportsWebKitPresentationMode,\n trackingIngestConfig,\n validateFloorCents,\n validateFloorLadderConfig\n});\n"]}
|