@bidkernel/analytics 0.21.0 → 0.22.0
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/analytics.global.js +1 -1
- package/dist/index.d.mts +21 -1
- package/dist/index.d.ts +21 -1
- package/dist/index.js +109 -5
- package/dist/index.mjs +109 -5
- package/package.json +1 -1
package/dist/analytics.global.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var bidkernelPrebidAnalyticsBundle=(()=>{var _=(i,e)=>()=>(i&&(e=i(i=0)),e);var yt=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports);function mt(){if(typeof window<"u"){let i=window;return i.__bidkernelLogListeners||(i.__bidkernelLogListeners=new Set),i.__bidkernelLogListeners}return gt}function It(i){if((i<0||!Number.isFinite(i))&&(i=0),i<1e3)return`${i.toFixed(2)}ms`;let e=i/1e3;if(e<60)return`${e.toFixed(2)}s`;let t=Math.floor(e/60);return t<60?`${t}m ${(e%60).toFixed(2)}s`:`${Math.floor(t/60)}h ${t%60}m ${(e%60).toFixed(2)}s`}function Y(i){if(typeof i=="string"){let e=i.toUpperCase();if(e==="DEBUG"||e==="INFO"||e==="WARN"||e==="ERROR")return e}return w.INFO}function re(i){return new ie(i)}var w,Ae,P,bt,gt,ie,Re=_(()=>{"use strict";w={DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"},Ae={[w.DEBUG]:10,[w.INFO]:20,[w.WARN]:30,[w.ERROR]:40},P={badge:"color: #2dd4bf; font-weight: bold",badgeWarn:"background: #f59e0b; color: #fff; padding: 2px 4px; border-radius: 3px; font-weight: bold",badgeError:"background: #ef4444; color: #fff; padding: 2px 4px; border-radius: 3px; font-weight: bold",dim:"color: #6b7280",event:"color: #38bdf8; font-weight: bold",eventWarn:"color: #f59e0b; font-weight: bold",eventError:"color: #ef4444; font-weight: bold",reset:"color: inherit"},bt=0,gt=new Set;ie=class i{_prefix;_level;_loadedAt;_now;_console;_customFormatTime;_listeners=new Set;constructor(e={}){this._prefix=e.prefix??"[bidkernel]",this._level=Y(e.logLevel??w.INFO),this._now=e.now,this._console=e.console,this._customFormatTime=e.formatTime,e.onLog&&this._listeners.add(e.onLog),this._loadedAt=e.loadedAt??(this._now?this._now():typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now())}get prefix(){return this._prefix}set prefix(e){this._prefix=e}get logLevel(){return this._level}set logLevel(e){this._level=Y(e)}getLevel(){return this._level}setLevel(e){this._level=Y(e)}getPrefix(){return this._prefix}setPrefix(e){this._prefix=e}resetTiming(e){this._loadedAt=e??(this._now?this._now():typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now())}getLoadedAt(){return this._loadedAt}addListener(e){return this._listeners.add(e),()=>{this._listeners.delete(e)}}removeListener(e){this._listeners.delete(e)}isEnabled(e){let t=Y(e);return(Ae[t]??20)>=(Ae[this._level]??20)}formatTime(e){return this._customFormatTime?this._customFormatTime(e):It(e)}_getConsole(){if(this._console)return this._console;if(typeof console<"u")return console}_getElapsed(){let e=this._now?this._now():typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();return Math.max(0,e-this._loadedAt)}_dispatchRecord(e){for(let n of this._listeners)try{n(e)}catch{}let t=mt();for(let n of t)if(!this._listeners.has(n))try{n(e)}catch{}if(typeof window<"u"&&typeof window.dispatchEvent=="function")try{window.dispatchEvent(new CustomEvent("__bidkernel_log__",{detail:e}))}catch{}}log(e,t,...n){let r=Y(e);if(!this.isEnabled(r))return;let o=this._getElapsed(),s=this.formatTime(o),d=Date.now(),l={id:`bk_log_${d}_${++bt}`,timestamp:d,elapsedMs:o,level:r,prefix:this._prefix,message:t,args:n,data:n.length===1?n[0]:n.length>1?n:void 0};this._dispatchRecord(l);let c=this._getConsole();if(!c)return;let b=P.badge,h=P.event;r===w.WARN?(b=P.badgeWarn,h=P.eventWarn):r===w.ERROR&&(b=P.badgeError,h=P.eventError);let m=`%c${this._prefix}%c ${s} %c${t}%c`,A=[b,P.dim,h,P.reset],p=[m,...A];switch(n.length>0&&p.push(...n),r){case w.DEBUG:typeof c.log=="function"?c.log(...p):typeof c.debug=="function"&&c.debug(...p);break;case w.INFO:typeof c.info=="function"?c.info(...p):typeof c.log=="function"&&c.log(...p);break;case w.WARN:typeof c.warn=="function"?c.warn(...p):typeof c.log=="function"&&c.log(...p);break;case w.ERROR:typeof c.error=="function"?c.error(...p):typeof c.log=="function"&&c.log(...p);break;default:typeof c.log=="function"&&c.log(...p);break}}debug(e,...t){this.log(w.DEBUG,e,...t)}info(e,...t){this.log(w.INFO,e,...t)}warn(e,...t){this.log(w.WARN,e,...t)}error(e,...t){this.log(w.ERROR,e,...t)}logEvent(e){e&&(e.data!==void 0?this.log(e.level,e.eventName,e.data):this.log(e.level,e.eventName))}child(e,t={}){let n=this._prefix;if(e){let r=e.startsWith("[")&&e.endsWith("]")?e:`[${e}]`;n=`${this._prefix}${r}`}return new i({prefix:n,logLevel:t.logLevel??this._level,loadedAt:t.loadedAt??this._loadedAt,now:t.now??this._now,console:t.console??this._console,formatTime:t.formatTime??this._customFormatTime,...t})}withPrefix(e){return new i({prefix:e,logLevel:this._level,loadedAt:this._loadedAt,now:this._now,console:this._console,formatTime:this._customFormatTime})}}});function Be(){let i=0,e=0;for(let n=0;n<28;n+=7){let r=this.buf[this.pos++];if(i|=(r&127)<<n,(r&128)==0)return this.assertBounds(),[i,e]}let t=this.buf[this.pos++];if(i|=(t&15)<<28,e=(t&112)>>4,(t&128)==0)return this.assertBounds(),[i,e];for(let n=3;n<=31;n+=7){let r=this.buf[this.pos++];if(e|=(r&127)<<n,(r&128)==0)return this.assertBounds(),[i,e]}throw new Error("invalid varint")}function Z(i,e,t){for(let o=0;o<28;o=o+7){let s=i>>>o,d=!(!(s>>>7)&&e==0),a=(d?s|128:s)&255;if(t.push(a),!d)return}let n=i>>>28&15|(e&7)<<4,r=e>>3!=0;if(t.push((r?n|128:n)&255),!!r){for(let o=3;o<31;o=o+7){let s=e>>>o,d=!!(s>>>7),a=(d?s|128:s)&255;if(t.push(a),!d)return}t.push(e>>>31&1)}}function oe(i){let e=i[0]==="-";e&&(i=i.slice(1));let t=1e6,n=0,r=0;function o(s,d){let a=Number(i.slice(s,d));r*=t,n=n*t+a,n>=Q&&(r=r+(n/Q|0),n=n%Q)}return o(-24,-18),o(-18,-12),o(-12,-6),o(-6),e?Se(n,r):de(n,r)}function Ce(i,e){let t=de(i,e),n=t.hi&2147483648;n&&(t=Se(t.lo,t.hi));let r=se(t.lo,t.hi);return n?"-"+r:r}function se(i,e){if({lo:i,hi:e}=vt(i,e),e<=2097151)return String(Q*e+i);let t=i&16777215,n=(i>>>24|e<<8)&16777215,r=e>>16&65535,o=t+n*6777216+r*6710656,s=n+r*8147497,d=r*2,a=1e7;return o>=a&&(s+=Math.floor(o/a),o%=a),s>=a&&(d+=Math.floor(s/a),s%=a),d.toString()+_e(s)+_e(o)}function vt(i,e){return{lo:i>>>0,hi:e>>>0}}function de(i,e){return{lo:i|0,hi:e|0}}function Se(i,e){return e=~e,i?i=~i+1:e+=1,de(i,e)}function ae(i,e){if(i>=0){for(;i>127;)e.push(i&127|128),i=i>>>7;e.push(i)}else{for(let t=0;t<9;t++)e.push(i&127|128),i=i>>7;e.push(1)}}function Le(){let i=this.buf[this.pos++],e=i&127;if((i&128)==0)return this.assertBounds(),e;if(i=this.buf[this.pos++],e|=(i&127)<<7,(i&128)==0)return this.assertBounds(),e;if(i=this.buf[this.pos++],e|=(i&127)<<14,(i&128)==0)return this.assertBounds(),e;if(i=this.buf[this.pos++],e|=(i&127)<<21,(i&128)==0)return this.assertBounds(),e;i=this.buf[this.pos++],e|=(i&15)<<28;for(let t=5;(i&128)!==0&&t<10;t++)i=this.buf[this.pos++];if((i&128)!=0)throw new Error("invalid varint");return this.assertBounds(),e>>>0}var Q,_e,ce=_(()=>{"use strict";Q=4294967296;_e=i=>{let e=String(i);return"0000000".slice(e.length)+e}});function Tt(){let i=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof i.getBigInt64=="function"&&typeof i.getBigUint64=="function"&&typeof i.setBigInt64=="function"&&typeof i.setBigUint64=="function"&&(!!globalThis.Deno||typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){let t=BigInt("-9223372036854775808"),n=BigInt("9223372036854775807"),r=BigInt("0"),o=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(s){let d=typeof s=="bigint"?s:BigInt(s);if(d>n||d<t)throw new Error(`invalid int64: ${s}`);return d},uParse(s){let d=typeof s=="bigint"?s:BigInt(s);if(d>o||d<r)throw new Error(`invalid uint64: ${s}`);return d},enc(s){return i.setBigInt64(0,this.parse(s),!0),{lo:i.getInt32(0,!0),hi:i.getInt32(4,!0)}},uEnc(s){return i.setBigInt64(0,this.uParse(s),!0),{lo:i.getInt32(0,!0),hi:i.getInt32(4,!0)}},dec(s,d){return i.setInt32(0,s,!0),i.setInt32(4,d,!0),i.getBigInt64(0,!0)},uDec(s,d){return i.setInt32(0,s,!0),i.setInt32(4,d,!0),i.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(t){return typeof t!="string"&&(t=t.toString()),xe(t),t},uParse(t){return typeof t!="string"&&(t=t.toString()),ke(t),t},enc(t){return typeof t!="string"&&(t=t.toString()),xe(t),oe(t)},uEnc(t){return typeof t!="string"&&(t=t.toString()),ke(t),oe(t)},dec(t,n){return Ce(t,n)},uDec(t,n){return se(t,n)}}}function xe(i){if(!/^-?[0-9]+$/.test(i))throw new Error("invalid int64: "+i)}function ke(i){if(!/^[0-9]+$/.test(i))throw new Error("invalid uint64: "+i)}var O,De=_(()=>{"use strict";ce();O=Tt()});function ue(){if(globalThis[le]==null){let i=new globalThis.TextEncoder,e=new globalThis.TextDecoder;globalThis[le]={encodeUtf8(t){return i.encode(t)},decodeUtf8(t){return e.decode(t)},checkUtf8(t){try{return encodeURIComponent(t),!0}catch{return!1}}}}return globalThis[le]}var le,fe=_(()=>{"use strict";le=Symbol.for("@bufbuild/protobuf/text-encoding")});function he(i){if(typeof i=="string")i=Number(i);else if(typeof i!="number")throw new Error("invalid int32: "+typeof i);if(!Number.isInteger(i)||i>Rt||i<_t)throw new Error("invalid int32: "+i)}function Oe(i){if(typeof i=="string")i=Number(i);else if(typeof i!="number")throw new Error("invalid uint32: "+typeof i);if(!Number.isInteger(i)||i>At||i<0)throw new Error("invalid uint32: "+i)}function Bt(i){if(typeof i=="string"){let e=i;if(i=Number(i),Number.isNaN(i)&&e!=="NaN")throw new Error("invalid float32: "+e)}else if(typeof i!="number")throw new Error("invalid float32: "+typeof i);if(Number.isFinite(i)&&(i>Et||i<wt))throw new Error("invalid float32: "+i)}var V,Et,wt,At,Rt,_t,F,B,Me=_(()=>{"use strict";ce();De();fe();(function(i){i[i.Varint=0]="Varint",i[i.Bit64=1]="Bit64",i[i.LengthDelimited=2]="LengthDelimited",i[i.StartGroup=3]="StartGroup",i[i.EndGroup=4]="EndGroup",i[i.Bit32=5]="Bit32"})(V||(V={}));Et=34028234663852886e22,wt=-34028234663852886e22,At=4294967295,Rt=2147483647,_t=-2147483648,F=class{constructor(e=ue().encodeUtf8){this.encodeUtf8=e,this.stack=[],this.chunks=[],this.buf=[]}finish(){this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]);let e=0;for(let r=0;r<this.chunks.length;r++)e+=this.chunks[r].length;let t=new Uint8Array(e),n=0;for(let r=0;r<this.chunks.length;r++)t.set(this.chunks[r],n),n+=this.chunks[r].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(e.byteLength),this.raw(e)}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(Oe(e);e>127;)this.buf.push(e&127|128),e=e>>>7;return this.buf.push(e),this}int32(e){return he(e),ae(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.encodeUtf8(e);return this.uint32(t.byteLength),this.raw(t)}float(e){Bt(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){Oe(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){he(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return he(e),e=(e<<1^e>>31)>>>0,ae(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=O.enc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=O.uEnc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=O.enc(e);return Z(t.lo,t.hi,this.buf),this}sint64(e){let t=O.enc(e),n=t.hi>>31,r=t.lo<<1^n,o=(t.hi<<1|t.lo>>>31)^n;return Z(r,o,this.buf),this}uint64(e){let t=O.uEnc(e);return Z(t.lo,t.hi,this.buf),this}},B=class{constructor(e,t=ue().decodeUtf8){this.decodeUtf8=t,this.varint64=Be,this.uint32=Le,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}tag(){let e=this.uint32(),t=e>>>3,n=e&7;if(t<=0||n<0||n>5)throw new Error("illegal tag: field no "+t+" wire type "+n);return[t,n]}skip(e,t){let n=this.pos;switch(e){case V.Varint:for(;this.buf[this.pos++]&128;);break;case V.Bit64:this.pos+=4;case V.Bit32:this.pos+=4;break;case V.LengthDelimited:let r=this.uint32();this.pos+=r;break;case V.StartGroup:for(;;){let[o,s]=this.tag();if(s===V.EndGroup){if(t!==void 0&&o!==t)throw new Error("invalid end group tag");break}this.skip(s,o)}break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(n,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return O.dec(...this.varint64())}uint64(){return O.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),n=-(e&1);return e=(e>>>1|(t&1)<<31)^n,t=t>>>1^n,O.dec(e,t)}bool(){let[e,t]=this.varint64();return e!==0||t!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return O.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return O.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.decodeUtf8(this.bytes())}}});var Ue=_(()=>{"use strict"});var Ne=_(()=>{"use strict"});var Pe=_(()=>{"use strict"});var Ve=_(()=>{"use strict";Me();Ue();fe();Ne();Pe()});function Ct(){return{propertyId:new Uint8Array(0),pageviewId:new Uint8Array(0),sessionId:new Uint8Array(0),pageUrl:"",country:"",region:"",deviceType:"",userId:new Uint8Array(0),domain:"",events:[],browser:"",deviceManufacturer:"",deviceModel:"",city:"",postalCode:""}}function St(){return{timestampMs:0,type:0,eventName:"",auctionId:new Uint8Array(0),transactionId:new Uint8Array(0),adUnitCode:"",bid:void 0,namespace:"",eventId:new Uint8Array(0),metadata:{},viewableDurationMs:void 0,bidderOutcomes:[]}}function Lt(){return{key:"",value:""}}function xt(){return{adUnitCode:"",outcome:0,bid:void 0,refreshIndex:0}}function kt(){return{bidder:"",cpm:0,currency:"",width:0,height:0,dealId:"",mediaType:"",latencyMs:0,advertiserDomain:"",creativeId:""}}var I,U,pe,Fe,$e,We,J,ye=_(()=>{"use strict";Ve();I={TRACE_EVENT_TYPE_UNSPECIFIED:0,AUCTION_START:1,AUCTION_END:2,BID_WIN:4,IMPRESSION:5,VIEWABLE:6,TIME_IN_VIEW:7,ERROR:9,SLOT_DEFINED:10,SLOT_DESTROYED:11,CLICK:12,AD_RENDER_FAILED:13,UNRECOGNIZED:-1},U={BIDDER_OUTCOME_UNSPECIFIED:0,BIDDER_OUTCOME_BID:1,BIDDER_OUTCOME_NO_BID:2,BIDDER_OUTCOME_TIMEOUT:3,BIDDER_OUTCOME_ERROR:4,BIDDER_OUTCOME_NO_RESPONSE:5,UNRECOGNIZED:-1};pe={encode(i,e=new F){if(i.propertyId!==void 0&&i.propertyId.length!==0&&e.uint32(10).bytes(i.propertyId),i.pageviewId!==void 0&&i.pageviewId.length!==0&&e.uint32(18).bytes(i.pageviewId),i.sessionId!==void 0&&i.sessionId.length!==0&&e.uint32(26).bytes(i.sessionId),i.pageUrl!==void 0&&i.pageUrl!==""&&e.uint32(34).string(i.pageUrl),i.country!==void 0&&i.country!==""&&e.uint32(42).string(i.country),i.region!==void 0&&i.region!==""&&e.uint32(50).string(i.region),i.deviceType!==void 0&&i.deviceType!==""&&e.uint32(58).string(i.deviceType),i.userId!==void 0&&i.userId.length!==0&&e.uint32(66).bytes(i.userId),i.domain!==void 0&&i.domain!==""&&e.uint32(74).string(i.domain),i.events!==void 0&&i.events.length!==0)for(let t of i.events)Fe.encode(t,e.uint32(82).fork()).join();return i.browser!==void 0&&i.browser!==""&&e.uint32(90).string(i.browser),i.deviceManufacturer!==void 0&&i.deviceManufacturer!==""&&e.uint32(98).string(i.deviceManufacturer),i.deviceModel!==void 0&&i.deviceModel!==""&&e.uint32(106).string(i.deviceModel),i.city!==void 0&&i.city!==""&&e.uint32(114).string(i.city),i.postalCode!==void 0&&i.postalCode!==""&&e.uint32(122).string(i.postalCode),e},decode(i,e){let t=i instanceof B?i:new B(i),n=e===void 0?t.len:t.pos+e,r=Ct();for(;t.pos<n;){let o=t.uint32();switch(o>>>3){case 1:{if(o!==10)break;r.propertyId=t.bytes();continue}case 2:{if(o!==18)break;r.pageviewId=t.bytes();continue}case 3:{if(o!==26)break;r.sessionId=t.bytes();continue}case 4:{if(o!==34)break;r.pageUrl=t.string();continue}case 5:{if(o!==42)break;r.country=t.string();continue}case 6:{if(o!==50)break;r.region=t.string();continue}case 7:{if(o!==58)break;r.deviceType=t.string();continue}case 8:{if(o!==66)break;r.userId=t.bytes();continue}case 9:{if(o!==74)break;r.domain=t.string();continue}case 10:{if(o!==82)break;let s=Fe.decode(t,t.uint32());s!==void 0&&r.events.push(s);continue}case 11:{if(o!==90)break;r.browser=t.string();continue}case 12:{if(o!==98)break;r.deviceManufacturer=t.string();continue}case 13:{if(o!==106)break;r.deviceModel=t.string();continue}case 14:{if(o!==114)break;r.city=t.string();continue}case 15:{if(o!==122)break;r.postalCode=t.string();continue}}if((o&7)===4||o===0)break;t.skip(o&7)}return r}};Fe={encode(i,e=new F){if(i.timestampMs!==void 0&&i.timestampMs!==0&&e.uint32(9).double(i.timestampMs),i.type!==void 0&&i.type!==0&&e.uint32(16).int32(i.type),i.eventName!==void 0&&i.eventName!==""&&e.uint32(26).string(i.eventName),i.auctionId!==void 0&&i.auctionId.length!==0&&e.uint32(34).bytes(i.auctionId),i.transactionId!==void 0&&i.transactionId.length!==0&&e.uint32(42).bytes(i.transactionId),i.adUnitCode!==void 0&&i.adUnitCode!==""&&e.uint32(50).string(i.adUnitCode),i.bid!==void 0&&J.encode(i.bid,e.uint32(58).fork()).join(),i.namespace!==void 0&&i.namespace!==""&&e.uint32(66).string(i.namespace),i.eventId!==void 0&&i.eventId.length!==0&&e.uint32(74).bytes(i.eventId),globalThis.Object.entries(i.metadata||{}).forEach(([t,n])=>{$e.encode({key:t,value:n},e.uint32(82).fork()).join()}),i.viewableDurationMs!==void 0&&e.uint32(89).double(i.viewableDurationMs),i.bidderOutcomes!==void 0&&i.bidderOutcomes.length!==0)for(let t of i.bidderOutcomes)We.encode(t,e.uint32(98).fork()).join();return e},decode(i,e){let t=i instanceof B?i:new B(i),n=e===void 0?t.len:t.pos+e,r=St();for(;t.pos<n;){let o=t.uint32();switch(o>>>3){case 1:{if(o!==9)break;r.timestampMs=t.double();continue}case 2:{if(o!==16)break;r.type=t.int32();continue}case 3:{if(o!==26)break;r.eventName=t.string();continue}case 4:{if(o!==34)break;r.auctionId=t.bytes();continue}case 5:{if(o!==42)break;r.transactionId=t.bytes();continue}case 6:{if(o!==50)break;r.adUnitCode=t.string();continue}case 7:{if(o!==58)break;r.bid=J.decode(t,t.uint32());continue}case 8:{if(o!==66)break;r.namespace=t.string();continue}case 9:{if(o!==74)break;r.eventId=t.bytes();continue}case 10:{if(o!==82)break;let s=$e.decode(t,t.uint32());s.value!==void 0&&(r.metadata[s.key]=s.value);continue}case 11:{if(o!==89)break;r.viewableDurationMs=t.double();continue}case 12:{if(o!==98)break;let s=We.decode(t,t.uint32());s!==void 0&&r.bidderOutcomes.push(s);continue}}if((o&7)===4||o===0)break;t.skip(o&7)}return r}};$e={encode(i,e=new F){return i.key!==""&&e.uint32(10).string(i.key),i.value!==""&&e.uint32(18).string(i.value),e},decode(i,e){let t=i instanceof B?i:new B(i),n=e===void 0?t.len:t.pos+e,r=Lt();for(;t.pos<n;){let o=t.uint32();switch(o>>>3){case 1:{if(o!==10)break;r.key=t.string();continue}case 2:{if(o!==18)break;r.value=t.string();continue}}if((o&7)===4||o===0)break;t.skip(o&7)}return r}};We={encode(i,e=new F){return i.adUnitCode!==void 0&&i.adUnitCode!==""&&e.uint32(18).string(i.adUnitCode),i.outcome!==void 0&&i.outcome!==0&&e.uint32(32).int32(i.outcome),i.bid!==void 0&&J.encode(i.bid,e.uint32(50).fork()).join(),i.refreshIndex!==void 0&&i.refreshIndex!==0&&e.uint32(56).int32(i.refreshIndex),e},decode(i,e){let t=i instanceof B?i:new B(i),n=e===void 0?t.len:t.pos+e,r=xt();for(;t.pos<n;){let o=t.uint32();switch(o>>>3){case 2:{if(o!==18)break;r.adUnitCode=t.string();continue}case 4:{if(o!==32)break;r.outcome=t.int32();continue}case 6:{if(o!==50)break;r.bid=J.decode(t,t.uint32());continue}case 7:{if(o!==56)break;r.refreshIndex=t.int32();continue}}if((o&7)===4||o===0)break;t.skip(o&7)}return r}};J={encode(i,e=new F){return i.bidder!==void 0&&i.bidder!==""&&e.uint32(10).string(i.bidder),i.cpm!==void 0&&i.cpm!==0&&e.uint32(17).double(i.cpm),i.currency!==void 0&&i.currency!==""&&e.uint32(26).string(i.currency),i.width!==void 0&&i.width!==0&&e.uint32(32).int32(i.width),i.height!==void 0&&i.height!==0&&e.uint32(40).int32(i.height),i.dealId!==void 0&&i.dealId!==""&&e.uint32(50).string(i.dealId),i.mediaType!==void 0&&i.mediaType!==""&&e.uint32(58).string(i.mediaType),i.latencyMs!==void 0&&i.latencyMs!==0&&e.uint32(65).double(i.latencyMs),i.advertiserDomain!==void 0&&i.advertiserDomain!==""&&e.uint32(74).string(i.advertiserDomain),i.creativeId!==void 0&&i.creativeId!==""&&e.uint32(82).string(i.creativeId),e},decode(i,e){let t=i instanceof B?i:new B(i),n=e===void 0?t.len:t.pos+e,r=kt();for(;t.pos<n;){let o=t.uint32();switch(o>>>3){case 1:{if(o!==10)break;r.bidder=t.string();continue}case 2:{if(o!==17)break;r.cpm=t.double();continue}case 3:{if(o!==26)break;r.currency=t.string();continue}case 4:{if(o!==32)break;r.width=t.int32();continue}case 5:{if(o!==40)break;r.height=t.int32();continue}case 6:{if(o!==50)break;r.dealId=t.string();continue}case 7:{if(o!==58)break;r.mediaType=t.string();continue}case 8:{if(o!==65)break;r.latencyMs=t.double();continue}case 9:{if(o!==74)break;r.advertiserDomain=t.string();continue}case 10:{if(o!==82)break;r.creativeId=t.string();continue}}if((o&7)===4||o===0)break;t.skip(o&7)}return r}}});function $(i){if(!i)return new Uint8Array(0);if(Dt.test(i)){let t=i.replace(/-/g,""),n=new Uint8Array(16);for(let r=0;r<16;r++)n[r]=parseInt(t.slice(r*2,r*2+2),16);return n}if(qe)return qe.encode(i);let e=new Uint8Array(i.length);for(let t=0;t<i.length;t++)e[t]=i.charCodeAt(t)&255;return e}var Dt,qe,Mn,He=_(()=>{"use strict";Dt=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,qe=typeof TextEncoder<"u"?new TextEncoder:null,Mn=typeof TextDecoder<"u"?new TextDecoder:null});function H(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,i=>{let e=Math.random()*16|0;return(i==="x"?e:e&3|8).toString(16)})}function Yt(i){let e="";for(let n=0;n<i.length;n+=8192)e+=String.fromCharCode(...i.subarray(n,n+8192));return btoa(e)}function zt(i){let e=atob(i),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}function Xt(i){if(!i)return!1;let e;try{e=new URL(i)}catch{return!1}return e.username||e.password?!1:e.protocol==="https:"?!0:e.protocol==="http:"?e.hostname==="localhost"||e.hostname==="127.0.0.1"||e.hostname==="[::1]":!1}function Qt(i){let e={},t=0;for(let n of Object.keys(i)){if(t>=Nt)break;let r=i[n];if(r==null)continue;let o=String(r);e[n]=o.length>Ke?`${o.slice(0,Ke)}...[truncated]`:o,t++}return e}function Zt(i){let e=i.slice(ee.length).split("_");return e.length===2&&/^\d+$/.test(e[0])}function Jt(i,e){if(!i||!e)return!1;try{return new URL(i).origin===new URL(e).origin}catch{return!1}}function Je(i){try{typeof localStorage<"u"&&(localStorage.setItem(Qe,i.toString()),q=i)}catch{}}function et(i=Date.now()){return N>0&&i-N<=Ze}function te(){let i=Date.now(),e=!!D&&!et(i);if(N=i,e){D=null;for(let t of nn)t();return}!K||!D||q===0||i-q<en||Je(i)}function rn(){return!D||K&&q===0}function on(){if(Xe||typeof window>"u")return;Xe=!0;let i=()=>te();for(let e of tn)window.addEventListener(e,i,{passive:!0,capture:!0});typeof document<"u"&&document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&te()})}function ge(){let i=Date.now(),e=!!D&&et(i);try{if(K&&typeof localStorage<"u"){let t=localStorage.getItem(ze),n=localStorage.getItem(Qe),r=n&&parseInt(n,10)||0;if(t&&r&&i-r<=Ze)return(D!==t||N<r)&&(D=t,N=Math.max(N,r)),q===0&&(q=r),t;let o=e?D:H();return e||(N=i),localStorage.setItem(ze,o),Je(N),D=o,o}}catch{}return e||(D=H(),N=i),D}function f(i){return String(i??"").replace(/%/g,"%25").replace(/:/g,"%3A")}function sn(i,e){switch(i){case"auctionInit":return`auctionInit:${f(e?.auctionId)}`;case"auctionEnd":return`auctionEnd:${f(e?.auctionId)}`;case"bidRequested":{let t=Array.isArray(e?.bids)?e.bids.map(n=>f(n?.bidId||n?.transactionId||n?.adUnitCode)).join(","):"";return`bidRequested:${f(e?.auctionId)}:${f(e?.bidderCode||e?.bidder)}:${t}`}case"bidResponse":{let t=e||{},n=t.creativeId||t.adId||t.requestId||t.bidId||"",r=t.originalCpm??t.cpm??"";return`bidResponse:${f(t.auctionId)}:${f(t.adUnitCode)}:${f(t.bidderCode||t.bidder)}:${f(n)}:${f(r)}`}case"bidTimeout":return"bidTimeout:"+(Array.isArray(e)?e:e?[e]:[]).map(n=>`${f(n?.auctionId)}:${f(n?.bidderCode||n?.bidder)}:${f(n?.bidId||n?.transactionId||n?.adUnitCode)}`).join(",");case"bidWon":{let t=e||{},n=t.creativeId||t.adId||t.requestId||t.bidId||"",r=t.originalCpm??t.cpm??"";return`bidWon:${f(t.auctionId)}:${f(t.adUnitCode)}:${f(t.bidderCode||t.bidder)}:${f(n)}:${f(r)}`}case"noBid":return`noBid:${f(e?.auctionId)}:${f(e?.adUnitCode)}:${f(e?.bidderCode||e?.bidder)}:${f(e?.bidId||e?.transactionId)}`;case"adRenderFailed":{let t=e?.bid||{};return`adRenderFailed:${f(t.auctionId||e?.auctionId)}:${f(t.adUnitCode||e?.adUnitCode)}:${f(t.bidderCode||t.bidder||e?.bidderCode||e?.bidder)}:${f(e?.reason)}:${f(e?.message)}`}case"adRenderSucceeded":{let t=e?.bid||e||{},n=t.creativeId||t.adId||e?.adId||"",r=t.originalCpm??t.cpm??"";return`adRenderSucceeded:${f(t.auctionId||e?.auctionId)}:${f(t.adUnitCode||e?.adUnitCode)}:${f(t.bidderCode||t.bidder)}:${f(n)}:${f(r)}`}case"setTargeting":return`setTargeting:${Object.keys(e||{}).sort().map(f).join(",")}`;case"auctionDebug":return`auctionDebug:${f(e?.type)}:${f(String(e?.arguments?.[0]??"").slice(0,50))}`;default:return""}}function W(i){if(Number.isFinite(i?.width)&&Number.isFinite(i?.height))return{width:i.width,height:i.height};if(typeof i?.size=="string"){let e=i.size.match(/^(\d+)x(\d+)$/);if(e)return{width:Number(e[1]),height:Number(e[2])}}return{width:Number.isFinite(i?.width)?i.width:0,height:Number.isFinite(i?.height)?i.height:0}}function G(i,e=!0){if(!i)return null;if(Array.isArray(i)){let t=i.find(n=>n?.provider==="bidkernel")??(e?i.find(n=>n&&typeof n=="object"&&n.provider===void 0):void 0);return t?G(t,e):null}if(typeof i=="object"){if(i.options&&typeof i.options=="object")return i.options;if(i.config&&typeof i.config=="object")return i.config;if(i.propertyId||i.endpoint)return i}return null}function dn(i){if(!i)return null;if(i._bidkernelAnalyticsConfig){let e=G(i._bidkernelAnalyticsConfig);if(e)return e}if(i.bidkernelPrebidAnalytics){let e=i.bidkernelPrebidAnalytics;if(e.options){let t=G(e.options);if(t)return t}if(e.config){let t=G(e.config);if(t)return t}if(e.propertyId)return G(e)}return null}function ve(i="pbjs",e){let t=typeof window<"u"?window:{};t[i]=t[i]||{};let n=t[i],r=s=>{let d=t._bidkernelPrebidAnalytics,a=d?.getEndpoint?.()||"",l={pbjsGlobalName:i,...e,...s};if(a&&!Jt(l.endpoint||"",a)&&(me.warn(`Ignoring analytics endpoint change to ${l.endpoint||"(empty)"}: this page is pinned to ${a}. Reload to change the ingest endpoint.`),l.endpoint=a),d)try{d.disable()}catch(b){me.warn("Failed to disable previous analytics instance:",b)}let c=new C(l);return c.enable(),t._bidkernelPrebidAnalytics=c,c},o=()=>{try{n.adapterManager&&typeof n.adapterManager.registerAnalyticsAdapter=="function"&&n.adapterManager.registerAnalyticsAdapter({adapter:{enableAnalytics:d=>{let a=G(d,!Array.isArray(d));a&&r(a)},disableAnalytics:()=>{t._bidkernelPrebidAnalytics&&t._bidkernelPrebidAnalytics.disable()}},code:"bidkernel"});let s=dn(t);s&&(s.propertyId||e?.propertyId)&&r(s)}catch(s){me.warn("Failed to register standard Prebid analytics adapter:",s)}};n.adapterManager&&typeof n.adapterManager.registerAnalyticsAdapter=="function"?o():(n.que=n.que||[],n.que.push(o))}var Ge,Ot,z,Mt,Ut,be,Ke,Nt,Ye,ee,Pt,Vt,Ft,$t,Wt,jt,j,qt,Ht,Gt,Kt,ze,Qe,Ze,D,N,K,en,q,tn,Xe,nn,Ie,C,me,Te=_(()=>{"use strict";Re();ye();He();Ge=1e4,Ot=50,z=200,Mt=300*1e3,Ut=10,be=32*1024,Ke=1024,Nt=16,Ye="text/plain",ee="_bidkernel_pending_",Pt=20,Vt=7200*1e3,Ft=1e4,$t={auctionStart:I.AUCTION_START,auctionEnd:I.AUCTION_END,bidWin:I.BID_WIN,adRenderFailed:I.AD_RENDER_FAILED,click:I.CLICK,impression:I.IMPRESSION,timeInView:I.TIME_IN_VIEW,viewable:I.VIEWABLE},Wt=3e3,jt=new Set([I.IMPRESSION,I.BID_WIN,I.CLICK]),j=1800*1e3,qt=200,Ht=1e3,Gt=50,Kt=1e3,ze="_bidkernel_session",Qe="_bidkernel_session_ts",Ze=1800*1e3,D=null,N=0,K=!0;en=60*1e3,q=0,tn=["pointerdown","pointermove","keydown","scroll","wheel","touchstart"],Xe=!1,nn=new Set;Ie=class{seenObjects=new WeakMap;seenKeys=new Set;isDuplicate(e,t){if(!t)return!1;if(typeof t=="object"){let r=this.seenObjects.get(t);if(r){if(r.has(e))return!0;r.add(e)}else this.seenObjects.set(t,new Set([e]))}let n=sn(e,t);if(n){if(this.seenKeys.has(n))return!0;if(this.seenKeys.size>=1e3){let r=this.seenKeys.values().next().value;r!==void 0&&this.seenKeys.delete(r)}this.seenKeys.add(n)}return!1}};C=class i{static activeInstances=new Set;static getActiveInstances(){return i.activeInstances}static setStorageAllowed(e){K=e,q=0}static isStorageAllowed(){return K}config;queue=[];errorCount=0;flushTimer=null;boundFlushBeacon;boundVisibilityChange;isEnabled=!1;boundPbjsHandlers=[];pageUrl="";deduper=new Ie;consecutiveSendFailures=0;nextSendAllowedAt=0;replayedEventCount=0;revenueFlushTimer=null;persistedBatchKeys=[];persistedCleanupTimer=null;intersectionObserver=null;slotViewabilityRecords=new Map;elementToSlotId=new Map;slotRefreshIndices=new Map;slotLastAuctionIds=new Map;pendingThresholdListeners=new Map;pendingViewableListeners=new Map;slotElements=new Map;clickDetachCleanups=new Set;lastClickAt=new Map;slotEmittedImpressionKeys=new Set;cachedWinningBids=new Map;videoDetachCleanups=new Set;auctionBidderOutcomes=new Map;logger;managesSessionId;constructor(e){e.storageAllowed!==void 0&&i.setStorageAllowed(e.storageAllowed);let t=e.endpoint||"",n=!t||Xt(t)?t:"";this.config={endpoint:n,propertyId:e.propertyId||"",pageviewId:e.pageviewId||H(),sessionId:e.sessionId||"",userId:e.userId||"",deviceType:e.deviceType||"desktop",country:e.country||"",region:e.region||"",auctionEnabled:e.auctionEnabled??!0,warningsEnabled:e.warningsEnabled??!0,errorsEnabled:e.errorsEnabled??!0,viewabilityEnabled:e.viewabilityEnabled??!0,storageAllowed:e.storageAllowed??!0,logLevel:e.logLevel||"INFO",pbjsGlobalName:e.pbjsGlobalName||"pbjs",attachPbjsListeners:e.attachPbjsListeners??!0,revenueFlushDelayMs:Number.isFinite(e.revenueFlushDelayMs)&&e.revenueFlushDelayMs>=0?e.revenueFlushDelayMs:Wt},this.logger=re({prefix:"[bidkernel][prebid-analytics]",logLevel:this.config.logLevel}),te(),this.managesSessionId=!e.sessionId,this.managesSessionId&&(this.config.sessionId=ge()),t&&!n&&this.log("ERROR",`Rejected untrusted analytics endpoint ${t}: must be an absolute https:// URL without embedded credentials. Events will not be transmitted.`),this.boundFlushBeacon=()=>{this.flushAllSlotsTimeInView(),this.flushBeacon()},this.boundVisibilityChange=()=>this.handleVisibilityChange()}enable(){if(!this.isEnabled){if(this.isEnabled=!0,i.activeInstances.add(this),this.logger.setLevel(this.config.logLevel),this.config.endpoint||this.log("WARN","Endpoint is empty. Analytics events will not be transmitted."),this.config.viewabilityEnabled&&typeof IntersectionObserver<"u"){this.intersectionObserver=new IntersectionObserver(this.handleIntersection.bind(this),{threshold:[.5]});for(let e of this.slotViewabilityRecords.values())e.element&&this.intersectionObserver.observe(e.element)}if(this.config.attachPbjsListeners&&this.attachPbjs(),typeof window<"u"){if(!this.pageUrl)try{let e=new URL(window.location.href);this.pageUrl=e.origin+e.pathname}catch{this.pageUrl=window.location.href}window.addEventListener("pagehide",this.boundFlushBeacon),typeof document<"u"&&document.addEventListener("visibilitychange",this.boundVisibilityChange),on(),this.flushTimer=setInterval(()=>this.flush(),Ge),this.resendPersistedBatches()}}}attachPbjs(){if(!this.isEnabled)return!1;if(this.boundPbjsHandlers.length>0)return!0;let t=(typeof window<"u"?window:{})[this.config.pbjsGlobalName]||{};if(typeof t.onEvent!="function")return this.log("WARN","pbjs.onEvent is not defined. Prebid analytics will not function."),!1;this.log("DEBUG","Attaching event listeners to pbjs");let n={auctionInit:this.handleAuctionInit.bind(this),auctionEnd:this.handleAuctionEnd.bind(this),bidRequested:this.handleBidRequested.bind(this),bidResponse:this.handleBidResponse.bind(this),bidTimeout:this.handleBidTimeout.bind(this),bidWon:this.handleBidWon.bind(this),noBid:this.handleNoBid.bind(this),adRenderFailed:this.handleAdRenderFailed.bind(this),adRenderSucceeded:this.handleAdRenderSucceeded.bind(this)};for(let[r,o]of Object.entries(n))t.onEvent(r,o),this.boundPbjsHandlers.push({event:r,handler:o});if(typeof t.getEvents=="function")try{let r=t.getEvents();if(Array.isArray(r)){let o=r.slice(this.replayedEventCount);if(this.replayedEventCount=r.length,o.length>0){this.log("DEBUG",`Replaying ${o.length} historical events from pbjs.getEvents()`);for(let s of o){if(!s)continue;let d=s.eventType||s.event||s.name,a=s.args!==void 0?s.args:s.data!==void 0?s.data:s,l=n[d];l&&l(a)}}}}catch(r){this.log("WARN","Failed to replay historical events from pbjs.getEvents()",r)}return!0}disable(){if(this.isEnabled){this.flushAllSlotsTimeInView(),this.isEnabled=!1,i.activeInstances.delete(this);for(let e of this.slotViewabilityRecords.values()){e.dwellTimer&&(clearTimeout(e.dwellTimer),e.dwellTimer=null,e.dwellStartedAt=null);for(let t of e.thresholdListeners)t.timer&&(clearTimeout(t.timer),t.timer=null)}this.intersectionObserver&&(this.intersectionObserver.disconnect(),this.intersectionObserver=null),this.slotViewabilityRecords.clear(),this.elementToSlotId.clear();for(let e of this.videoDetachCleanups)try{e()}catch{}this.videoDetachCleanups.clear();for(let e of Array.from(this.clickDetachCleanups))try{e()}catch{}if(this.clickDetachCleanups.clear(),this.slotElements.clear(),this.cachedWinningBids.clear(),this.slotEmittedImpressionKeys.clear(),this.slotLastAuctionIds.clear(),this.auctionBidderOutcomes.clear(),this.flushTimer&&(clearInterval(this.flushTimer),this.flushTimer=null),this.revenueFlushTimer&&(clearTimeout(this.revenueFlushTimer),this.revenueFlushTimer=null),this.persistedCleanupTimer&&(clearTimeout(this.persistedCleanupTimer),this.persistedCleanupTimer=null),typeof window<"u"&&(window.removeEventListener("pagehide",this.boundFlushBeacon),typeof document<"u"&&document.removeEventListener("visibilitychange",this.boundVisibilityChange)),this.boundPbjsHandlers.length>0){let t=(typeof window<"u"?window:{})[this.config.pbjsGlobalName]||{};if(typeof t.offEvent=="function")for(let{event:n,handler:r}of this.boundPbjsHandlers)t.offEvent(n,r);this.boundPbjsHandlers=[]}this.flush()}}handleVisibilityChange(){if(!(typeof document>"u")){if(document.visibilityState==="hidden"){let e=typeof performance<"u"&&performance.now?performance.now():Date.now();for(let t of this.slotViewabilityRecords.values()){t.inView&&t.lastEnteredViewAt!==null&&(t.accumulatedTimeInViewMs+=Math.max(0,e-t.lastEnteredViewAt),t.lastEnteredViewAt=null,this.checkThresholdListeners(t)),t.dwellTimer&&(clearTimeout(t.dwellTimer),t.dwellTimer=null,t.dwellStartedAt=null);for(let r of t.thresholdListeners)r.timer&&(clearTimeout(r.timer),r.timer=null);let n=Math.round(t.accumulatedTimeInViewMs);n>0&&this.enqueue(I.TIME_IN_VIEW,"timeInView",{auctionId:t.auctionId,transactionId:t.transactionId,adUnitCode:t.adUnitCode,viewableDurationMs:n,bid:t.bidPayload,metadata:{...t.metadata,refresh_index:String(t.refreshIndex)}})}this.flushBeacon()}else if(document.visibilityState==="visible"){let e=typeof performance<"u"&&performance.now?performance.now():Date.now();for(let t of this.slotViewabilityRecords.values())if(t.inView){if(t.lastEnteredViewAt=e,!t.viewableFired&&t.dwellTimer===null){let n=t.mediaType==="video"?2e3:1e3;t.dwellStartedAt=e,t.dwellTimer=setTimeout(()=>{this.handleDwellComplete(t)},n)}this.scheduleThresholdTimers(t)}}}}handleIntersection(e){for(let t of e){let n=this.elementToSlotId.get(t.target);if(!n){for(let a of i.activeInstances)if(a!==this&&a.elementToSlotId.has(t.target)){a.handleIntersection([t]);break}continue}let r=this.slotViewabilityRecords.get(n);if(!r)continue;let o=t.isIntersecting&&(t.intersectionRatio===void 0||t.intersectionRatio>=.5),s=typeof document>"u"||document.visibilityState==="visible",d=typeof performance<"u"&&performance.now?performance.now():Date.now();if(o){if(!r.inView&&(r.inView=!0,s)){if(r.lastEnteredViewAt=d,!r.viewableFired&&r.dwellTimer===null){let a=r.mediaType==="video"?2e3:1e3;r.dwellStartedAt=d,r.dwellTimer=setTimeout(()=>{this.handleDwellComplete(r)},a)}this.scheduleThresholdTimers(r)}}else{r.inView&&(r.lastEnteredViewAt!==null&&(r.accumulatedTimeInViewMs+=Math.max(0,d-r.lastEnteredViewAt),r.lastEnteredViewAt=null),r.inView=!1,this.checkThresholdListeners(r)),r.dwellTimer!==null&&(clearTimeout(r.dwellTimer),r.dwellTimer=null,r.dwellStartedAt=null);for(let a of r.thresholdListeners)a.timer&&(clearTimeout(a.timer),a.timer=null)}}}handleDwellComplete(e){e.dwellTimer=null,e.dwellStartedAt=null,e.inView&&(typeof document<"u"&&document.visibilityState==="hidden"||(e.viewableFired||(e.viewableFired=!0,this.enqueue(I.VIEWABLE,"viewable",{auctionId:e.auctionId,transactionId:e.transactionId,adUnitCode:e.adUnitCode,bid:e.bidPayload,metadata:{...e.metadata,refresh_index:String(e.refreshIndex)}})),this.notifyViewable(e)))}notifyViewable(e){if(e.viewableFired){for(let t of e.viewableListeners)if(t.firedForIndex!==e.refreshIndex){t.firedForIndex=e.refreshIndex;try{t.callback(e.slotId)}catch(n){this.log("ERROR","Error in viewable listener callback",n)}}}}setSlotElement(e,t){this.slotElements.set(e,t);let n=this.slotViewabilityRecords.get(e);n&&n.element!==t&&this.observeSlot(t,e,{refreshIndex:n.refreshIndex})}recordClick(e,t){if(!this.isEnabled||!e)return!1;let n=Date.now();if(n-(this.lastClickAt.get(e)||0)<Kt)return!1;this.lastClickAt.set(e,n);let r=this.getCachedBid(e);return this.enqueue(I.CLICK,"click",{auctionId:r?.auctionId||"",transactionId:r?.transactionId||"",adUnitCode:e,bid:r?.bidTrace,metadata:{...t?.metadata,refresh_index:String(this.getRefreshIndex(e))}}),!0}attachClickTracker(e,t){if(typeof window>"u")return()=>{};let n=()=>{setTimeout(()=>{let o=document.activeElement;o&&(o===e||e.contains(o))&&(this.recordClick(t,{metadata:{source:"blur"}}),window.focus())},0)};window.addEventListener("blur",n);let r=()=>{window.removeEventListener("blur",n),this.clickDetachCleanups.delete(r)};return this.clickDetachCleanups.add(r),r}onViewable(e,t){let n={callback:t,firedForIndex:-1},r=this.slotViewabilityRecords.get(e);return r?(r.viewableListeners.add(n),this.notifyViewable(r)):(this.pendingViewableListeners.has(e)||this.pendingViewableListeners.set(e,new Set),this.pendingViewableListeners.get(e).add(n)),()=>{this.slotViewabilityRecords.get(e)?.viewableListeners.delete(n),this.pendingViewableListeners.get(e)?.delete(n)}}scheduleThresholdTimers(e){if(!e.inView||typeof document<"u"&&document.visibilityState==="hidden")return;let t=this.getCurrentTimeInView(e);for(let n of e.thresholdListeners)if(!n.fired)if(t>=n.thresholdMs){n.fired=!0,n.timer&&(clearTimeout(n.timer),n.timer=null);try{n.callback(e.slotId,t)}catch(r){this.log("ERROR","Error in threshold listener callback",r)}}else{n.timer&&clearTimeout(n.timer);let r=n.thresholdMs-t;n.timer=setTimeout(()=>{if(n.timer=null,!n.fired&&e.inView&&(typeof document>"u"||document.visibilityState==="visible")){let o=this.getCurrentTimeInView(e);if(o>=n.thresholdMs){n.fired=!0;try{n.callback(e.slotId,o)}catch(s){this.log("ERROR","Error in threshold listener callback",s)}}}},r)}}checkThresholdListeners(e){let t=this.getCurrentTimeInView(e);for(let n of e.thresholdListeners)if(!n.fired&&t>=n.thresholdMs){n.fired=!0,n.timer&&(clearTimeout(n.timer),n.timer=null);try{n.callback(e.slotId,t)}catch(r){this.log("ERROR","Error in threshold listener callback",r)}}}getCurrentTimeInView(e){let t=e.accumulatedTimeInViewMs;if(e.inView&&e.lastEnteredViewAt!==null){let n=typeof performance<"u"&&performance.now?performance.now():Date.now();t+=Math.max(0,n-e.lastEnteredViewAt)}return t}flushSlotTimeInView(e){let t=this.slotViewabilityRecords.get(e);if(!t)return;if(t.inView&&t.lastEnteredViewAt!==null){let r=typeof performance<"u"&&performance.now?performance.now():Date.now();t.accumulatedTimeInViewMs+=Math.max(0,r-t.lastEnteredViewAt),t.lastEnteredViewAt=null}let n=Math.round(t.accumulatedTimeInViewMs);n>0&&this.enqueue(I.TIME_IN_VIEW,"timeInView",{auctionId:t.auctionId,transactionId:t.transactionId,adUnitCode:t.adUnitCode,viewableDurationMs:n,bid:t.bidPayload,metadata:{...t.metadata,refresh_index:String(t.refreshIndex)}}),t.accumulatedTimeInViewMs=0}flushAllSlotsTimeInView(){for(let e of Array.from(this.slotViewabilityRecords.keys()))this.flushSlotTimeInView(e)}observeSlot(e,t,n){if(!this.config.viewabilityEnabled)return;let r=null;if(typeof e=="string"){if(typeof document<"u"){try{r=document.querySelector(e)||document.getElementById(e)}catch{r=document.getElementById(e)}r||(r=document.getElementById(e))}}else r=e;let o=t||n?.adUnitCode||(r?r.id:"")||H(),s=this.slotViewabilityRecords.get(o);if(s){if(n?.refreshIndex===void 0||n.refreshIndex>s.refreshIndex){this.flushSlotTimeInView(o);let a=n?.refreshIndex!==void 0?n.refreshIndex:(this.slotRefreshIndices.get(o)??s.refreshIndex)+1;this.slotRefreshIndices.set(o,a),s.dwellTimer&&(clearTimeout(s.dwellTimer),s.dwellTimer=null,s.dwellStartedAt=null);for(let c of s.thresholdListeners)c.fired=!1,c.timer&&(clearTimeout(c.timer),c.timer=null);s.viewableFired=!1,s.accumulatedTimeInViewMs=0;let l=typeof performance<"u"&&performance.now?performance.now():Date.now();if(s.lastEnteredViewAt=s.inView?l:null,s.refreshIndex=a,s.auctionId=n?.auctionId||s.auctionId,s.transactionId=n?.transactionId||s.transactionId,s.mediaType=n?.mediaType||s.mediaType||"banner",s.bidPayload=n?.bid!==void 0?n.bid:s.bidPayload,s.metadata=n?.metadata??s.metadata,s.inView&&(typeof document>"u"||document.visibilityState==="visible")){let c=s.mediaType==="video"?2e3:1e3;s.dwellStartedAt=l,s.dwellTimer=setTimeout(()=>{this.handleDwellComplete(s)},c),this.scheduleThresholdTimers(s)}}else s.auctionId=n?.auctionId||s.auctionId,s.transactionId=n?.transactionId||s.transactionId,s.mediaType=n?.mediaType||s.mediaType,n?.bid!==void 0&&(s.bidPayload=n.bid),n?.metadata!==void 0&&(s.metadata=n.metadata);n?.auctionId&&this.slotLastAuctionIds.set(o,n.auctionId),r&&(s.element&&s.element!==r&&this.intersectionObserver&&(this.intersectionObserver.unobserve(s.element),this.elementToSlotId.delete(s.element)),s.element=r,this.elementToSlotId.set(r,o),this.intersectionObserver?.observe(r))}else{let d=n?.refreshIndex??this.slotRefreshIndices.get(o)??0;this.slotRefreshIndices.set(o,d),n?.auctionId&&this.slotLastAuctionIds.set(o,n.auctionId);let a=this.pendingThresholdListeners.get(o)||new Set;this.pendingThresholdListeners.delete(o);let l=this.pendingViewableListeners.get(o)||new Set;this.pendingViewableListeners.delete(o);let c={slotId:o,element:r,adUnitCode:n?.adUnitCode||o,auctionId:n?.auctionId||"",transactionId:n?.transactionId||"",mediaType:n?.mediaType||"banner",bidPayload:n?.bid,metadata:n?.metadata,refreshIndex:d,inView:!1,lastEnteredViewAt:null,accumulatedTimeInViewMs:0,viewableFired:!1,dwellTimer:null,dwellStartedAt:null,thresholdListeners:a,viewableListeners:l};this.slotViewabilityRecords.set(o,c),r&&(this.elementToSlotId.set(r,o),this.intersectionObserver?.observe(r))}}unobserveSlot(e){let t=this.slotViewabilityRecords.get(e);if(t){this.flushSlotTimeInView(e),t.dwellTimer&&(clearTimeout(t.dwellTimer),t.dwellTimer=null,t.dwellStartedAt=null);for(let n of t.thresholdListeners)n.timer&&(clearTimeout(n.timer),n.timer=null);t.thresholdListeners=new Set,t.viewableListeners=new Set,t.element&&this.intersectionObserver&&(this.intersectionObserver.unobserve(t.element),this.elementToSlotId.delete(t.element),t.element=null),t.inView=!1,t.lastEnteredViewAt=null}}destroySlot(e){this.unobserveSlot(e),this.slotViewabilityRecords.delete(e),this.slotRefreshIndices.delete(e),this.slotLastAuctionIds.delete(e),this.pendingThresholdListeners.delete(e),this.pendingViewableListeners.delete(e);let t=`${f(e)}:`;for(let r of Array.from(this.slotEmittedImpressionKeys))(r===e||r.startsWith(t))&&this.slotEmittedImpressionKeys.delete(r);let n=this.cachedWinningBids.get(e);n&&this.deleteCachedBidEntry(n)}getCachedBid(e){let t=this.cachedWinningBids.get(e);if(t){if(Date.now()-t.timestamp>j){this.deleteCachedBidEntry(t);return}return t}}deleteCachedBidEntry(e){for(let[t,n]of Array.from(this.cachedWinningBids))n===e&&this.cachedWinningBids.delete(t)}pruneCachedWinningBids(){let e=Date.now();for(let[t,n]of Array.from(this.cachedWinningBids))e-n.timestamp>j&&this.cachedWinningBids.delete(t);for(;this.cachedWinningBids.size>qt;){let t=this.cachedWinningBids.keys().next();if(t.done)break;this.cachedWinningBids.delete(t.value)}}addImpressionKey(e){if(!this.slotEmittedImpressionKeys.has(e)){for(;this.slotEmittedImpressionKeys.size>=Ht;){let t=this.slotEmittedImpressionKeys.values().next();if(t.done)break;this.slotEmittedImpressionKeys.delete(t.value)}this.slotEmittedImpressionKeys.add(e)}}getOrCreateAuctionOutcomes(e){let t=this.auctionBidderOutcomes.get(e);for(t||(t=new Map,this.auctionBidderOutcomes.set(e,t));this.auctionBidderOutcomes.size>Gt;){let n=this.auctionBidderOutcomes.keys().next();if(n.done||n.value===e)break;this.auctionBidderOutcomes.delete(n.value)}return t}hasImpressionEmitted(e,t,n,r){let o=t??this.slotRefreshIndices.get(e)??0,s=`${f(e)}:${o}`;return r?n?this.slotEmittedImpressionKeys.has(`${s}:auc:${f(n)}:${f(r)}`)||this.slotEmittedImpressionKeys.has(`${s}:${f(r)}`):this.slotEmittedImpressionKeys.has(`${s}:${f(r)}`):n?this.slotEmittedImpressionKeys.has(`${s}:auc:${f(n)}`):this.slotEmittedImpressionKeys.has(s)}markImpressionEmitted(e,t,n,r){let o=`${f(e)}:${t}`;this.addImpressionKey(o),r&&this.addImpressionKey(`${o}:${f(r)}`),n&&(this.addImpressionKey(`${o}:auc:${f(n)}`),r&&this.addImpressionKey(`${o}:auc:${f(n)}:${f(r)}`))}recordImpression(e,t){if(!this.isEnabled)return!1;let n=e||t?.adUnitCode||"",r=t?.adUnitCode||n,o=(t?.auctionId&&n?this.getCachedBid(`${t.auctionId}:${n}`):void 0)||(t?.auctionId&&r?this.getCachedBid(`${t.auctionId}:${r}`):void 0)||(n?this.getCachedBid(n):void 0)||(r?this.getCachedBid(r):void 0),s=t?.bid||o?.rawBid||{},d=t?.auctionId||s.auctionId||o?.auctionId||"",a=t?.transactionId||s.transactionId||o?.transactionId||"",l=s.creativeId||o?.bidTrace?.creativeId||t?.bid?.creativeId||"",c=t?.mediaType||s.mediaType||o?.bidTrace?.mediaType||"banner",b=n||r,h=(n?this.slotViewabilityRecords.get(n):void 0)||(r?this.slotViewabilityRecords.get(r):void 0),m=b?this.slotLastAuctionIds.get(b)||(h?h.auctionId:void 0):void 0,A=!!(b&&d&&m&&m!==d&&t?.refreshIndex===void 0),p={bidder:s.bidderCode||s.bidder||o?.bidTrace?.bidder||"",cpm:Number.isFinite(s.originalCpm)?s.originalCpm:Number.isFinite(s.cpm)?s.cpm:o?.bidTrace?.cpm??0,currency:s.originalCurrency??s.currency??o?.bidTrace?.currency??"USD",...W(s).width?W(s):o?.bidTrace?{width:o.bidTrace.width,height:o.bidTrace.height}:W(s),dealId:s.dealId||o?.bidTrace?.dealId||"",mediaType:c,latencyMs:Number.isFinite(s.timeToRespond)?s.timeToRespond:o?.bidTrace?.latencyMs??0,advertiserDomain:s.meta?.advertiserDomains?.[0]||o?.bidTrace?.advertiserDomain||"",creativeId:s.creativeId||o?.bidTrace?.creativeId||""};if(A&&b){this.flushSlotTimeInView(b);let L=(this.slotRefreshIndices.get(b)??(h?h.refreshIndex:0))+1;this.slotRefreshIndices.set(b,L),this.slotLastAuctionIds.set(b,d),h&&(h.refreshIndex=L,h.auctionId=d,h.transactionId=a,h.bidPayload=p,h.viewableFired=!1,h.accumulatedTimeInViewMs=0)}else b&&(d&&this.slotLastAuctionIds.set(b,d),this.slotRefreshIndices.has(b)||this.slotRefreshIndices.set(b,0));let E=t?.refreshIndex??(n?this.slotRefreshIndices.get(n)??(r?this.slotRefreshIndices.get(r):void 0)??(h?h.refreshIndex:0):0);return n&&this.hasImpressionEmitted(n,E,d,l)||r&&r!==n&&this.hasImpressionEmitted(r,E,d,l)?(this.log("DEBUG",`Impression already emitted for slot ${n||r} in cycle ${E}`),!1):(n&&this.markImpressionEmitted(n,E,d,l),r&&r!==n&&this.markImpressionEmitted(r,E,d,l),this.enqueue(I.IMPRESSION,"impression",{auctionId:d,transactionId:a,adUnitCode:r,bid:p,metadata:{...t?.metadata,refresh_index:String(E)}}),h&&(!h.bidPayload&&p&&(h.bidPayload=p),!h.auctionId&&d&&(h.auctionId=d),!h.transactionId&&a&&(h.transactionId=a)),!0)}onTimeInViewThreshold(e,t,n){let r={thresholdMs:t,callback:n,timer:null,fired:!1},o=this.slotViewabilityRecords.get(e);if(o){o.thresholdListeners.add(r);let s=this.getCurrentTimeInView(o);if(s>=t){r.fired=!0;try{n(e,s)}catch(d){this.log("ERROR","Error in threshold callback",d)}}else if(o.inView&&(typeof document>"u"||document.visibilityState==="visible")){let d=t-s;r.timer=setTimeout(()=>{if(r.timer=null,!r.fired&&o.inView&&(typeof document>"u"||document.visibilityState==="visible")){let a=this.getCurrentTimeInView(o);if(a>=t){r.fired=!0;try{n(e,a)}catch(l){this.log("ERROR","Error in threshold callback",l)}}}},d)}}else this.pendingThresholdListeners.has(e)||this.pendingThresholdListeners.set(e,new Set),this.pendingThresholdListeners.get(e).add(r);return()=>{r.timer&&(clearTimeout(r.timer),r.timer=null),o&&o.thresholdListeners.delete(r);let s=this.pendingThresholdListeners.get(e);s&&s.delete(r)}}getViewabilityState(e){let t=this.slotViewabilityRecords.get(e);if(!t)return;let n=Math.round(this.getCurrentTimeInView(t));return{inView:t.inView,viewable:t.viewableFired,timeInViewMs:n,refreshIndex:t.refreshIndex}}getEndpoint(){return this.config.endpoint}getRefreshIndex(e){return this.slotRefreshIndices.get(e)??0}triggerSlotRefresh(e,t){let n=this.slotViewabilityRecords.get(e);n&&n.element&&this.observeSlot(n.element,e,t)}trackRawEvent(e,t,n){let r=$t[t]??(e==="ERROR"?I.ERROR:void 0);r!==void 0&&this.enqueue(r,t,n,e)}setUserId(e){this.config.userId=e}setSessionId(e){this.config.sessionId=e,this.managesSessionId=!e,this.managesSessionId&&(this.config.sessionId=ge())}navigate(e,t){if(this.disable(),this.slotRefreshIndices.clear(),this.pendingThresholdListeners.clear(),this.config.pageviewId=e||H(),t)try{let n=new URL(t);this.pageUrl=n.origin+n.pathname}catch{this.pageUrl=t}else this.pageUrl="";this.logger.resetTiming(),te(),this.enable()}handleAuctionInit(e){if(this.isDuplicate("auctionInit",e))return;this.log("DEBUG","auctionInit",e);let t=e.auctionId||"";t&&(this.auctionBidderOutcomes.delete(t),this.getOrCreateAuctionOutcomes(t)),this.enqueue(I.AUCTION_START,"auctionStart",{auctionId:t,transactionId:e.transactionId||""})}handleAuctionEnd(e){if(this.isDuplicate("auctionEnd",e))return;this.log("DEBUG","auctionEnd",e);let t=e.auctionId||"",n=t?this.auctionBidderOutcomes.get(t):void 0,r=n?Array.from(n.values()):[];t&&this.auctionBidderOutcomes.delete(t),this.enqueue(I.AUCTION_END,"auctionEnd",{auctionId:t,transactionId:e.transactionId||"",bidderOutcomes:r})}auctionCycleIndex(e){if(!e)return 0;let t=this.slotRefreshIndices.get(e)??this.slotViewabilityRecords.get(e)?.refreshIndex;return t===void 0?0:t+1}handleBidRequested(e){if(this.isDuplicate("bidRequested",e))return;this.log("DEBUG","bidRequested",e);let t=e.auctionId||"",n=e.bidderCode||e.bidder||"";if(!t||!n)return;let r=this.getOrCreateAuctionOutcomes(t);Array.isArray(e.bids)&&e.bids.forEach(o=>{let s=o.adUnitCode||"",d=Object.keys(o.mediaTypes||{}),a=d.length>0?d[0]:o.mediaType||"banner",l=`${n}:${s}`;r.has(l)||r.set(l,{adUnitCode:s,outcome:U.BIDDER_OUTCOME_NO_RESPONSE,bid:{bidder:n,mediaType:a,latencyMs:0}})})}handleBidResponse(e){if(this.isDuplicate("bidResponse",e))return;this.log("DEBUG","bidResponse",e);let t=e.auctionId||"",n=e.bidderCode||e.bidder||"",r=e.adUnitCode||"",o=Number.isFinite(e.originalCpm)?e.originalCpm:Number.isFinite(e.cpm)?e.cpm:0,s=Number.isFinite(e.timeToRespond)?e.timeToRespond:0,d=Object.keys(e.mediaTypes||{}),a=e.mediaType||(e.mediaTypes?.video?"video":d.length>0?d[0]:"banner");if(!t||!n)return;let l=o>0?{bidder:n,cpm:o,currency:e.originalCurrency??e.currency??"USD",...W(e),dealId:e.dealId||"",mediaType:a,latencyMs:s,advertiserDomain:e.meta?.advertiserDomains?.[0]||"",creativeId:e.creativeId||""}:{bidder:n,mediaType:a,latencyMs:s};this.getOrCreateAuctionOutcomes(t).set(`${n}:${r}`,{adUnitCode:r,outcome:o>0?U.BIDDER_OUTCOME_BID:U.BIDDER_OUTCOME_NO_BID,bid:l})}handleBidTimeout(e){if(this.isDuplicate("bidTimeout",e))return;this.log("DEBUG","bidTimeout",e);let t=Array.isArray(e)?e:e?[e]:[];for(let n of t){let r=n.auctionId||"",o=n.bidderCode||n.bidder||"",s=n.adUnitCode||"",d=Number.isFinite(n.timeout)?n.timeout:0;if(r&&o){let a=this.getOrCreateAuctionOutcomes(r),l=`${o}:${s}`,c=a.get(l);c?(c.outcome=U.BIDDER_OUTCOME_TIMEOUT,d>0&&c.bid&&(c.bid.latencyMs=d)):a.set(l,{adUnitCode:s,outcome:U.BIDDER_OUTCOME_TIMEOUT,bid:{bidder:o,mediaType:"banner",latencyMs:d}})}}}handleBidWon(e){if(this.isDuplicate("bidWon",e))return;this.log("DEBUG","bidWon",e);let t=e.auctionId||"",n=e.transactionId||"",r=e.adUnitCode||e.adId||"",o=Object.keys(e.mediaTypes||{}),s=e.mediaType||(e.mediaTypes?.video?"video":o.length>0?o[0]:"banner"),d={bidder:e.bidderCode||e.bidder||"",cpm:Number.isFinite(e.originalCpm)?e.originalCpm:Number.isFinite(e.cpm)?e.cpm:0,currency:e.originalCurrency??e.currency??"USD",...W(e),dealId:e.dealId||"",mediaType:s,latencyMs:Number.isFinite(e.timeToRespond)?e.timeToRespond:0,advertiserDomain:e.meta?.advertiserDomains?.[0]||"",creativeId:e.creativeId||""};if(r){let a={bidTrace:d,auctionId:t,transactionId:n,adUnitCode:r,rawBid:e,timestamp:Date.now()};this.cachedWinningBids.set(r,a),e.adId&&e.adId!==r&&this.cachedWinningBids.set(e.adId,a),t&&(this.cachedWinningBids.set(`${t}:${r}`,a),e.adId&&e.adId!==r&&this.cachedWinningBids.set(`${t}:${e.adId}`,a)),this.pruneCachedWinningBids()}this.enqueue(I.BID_WIN,"bidWon",{auctionId:t,transactionId:n,adUnitCode:r,bid:d})}handleNoBid(e){if(this.isDuplicate("noBid",e))return;this.log("DEBUG","noBid",e);let t=e.auctionId||"",n=e.bidderCode||e.bidder||"",r=e.adUnitCode||"";if(t&&n){let o=this.getOrCreateAuctionOutcomes(t),s=`${n}:${r}`,d=o.get(s);d?d.outcome===U.BIDDER_OUTCOME_NO_RESPONSE&&(d.outcome=U.BIDDER_OUTCOME_NO_BID):o.set(s,{adUnitCode:r,outcome:U.BIDDER_OUTCOME_NO_BID,bid:{bidder:n,mediaType:"banner",latencyMs:0}})}}handleAdRenderFailed(e){if(this.isDuplicate("adRenderFailed",e))return;this.log("DEBUG","adRenderFailed",e);let t=e.bid||{};this.enqueue(I.AD_RENDER_FAILED,"adRenderFailed",{auctionId:t.auctionId||e.auctionId||"",transactionId:t.transactionId||e.transactionId||"",adUnitCode:t.adUnitCode||e.adUnitCode||"",bid:{bidder:t.bidderCode||t.bidder||e.bidderCode||e.bidder||""},metadata:{reason:String(e.reason||""),message:String(e.message||e.error?.message||"")},error:e.error||(e.message?new Error(String(e.message)):void 0)})}handleAdRenderSucceeded(e){if(this.isDuplicate("adRenderSucceeded",e))return;this.log("DEBUG","adRenderSucceeded",e);let t=e.bid||e||{},n=e.adUnitCode||t.adUnitCode||e.adId||t.adId||"",r=t.auctionId||e.auctionId||"",o=t.transactionId||e.transactionId||"",s=t.mediaType||"banner",d=e.adUnitCode||t.adUnitCode||"",a=e.adId||t.adId||"",l=(r&&d?this.getCachedBid(`${r}:${d}`):void 0)||(r&&a?this.getCachedBid(`${r}:${a}`):void 0)||(d?this.getCachedBid(d):void 0)||(a?this.getCachedBid(a):void 0),c=s==="video"||t.mediaType==="video"||t.mediaTypes?.video!==void 0||l?.bidTrace?.mediaType==="video"||l?.rawBid?.mediaType==="video"||n&&this.slotViewabilityRecords.get(n)?.mediaType==="video",b=c?"video":s||l?.bidTrace?.mediaType||"banner",h={bidder:t.bidderCode||t.bidder||l?.bidTrace?.bidder||"",cpm:Number.isFinite(t.originalCpm)?t.originalCpm:Number.isFinite(t.cpm)?t.cpm:l?.bidTrace?.cpm??0,currency:t.originalCurrency??t.currency??l?.bidTrace?.currency??"USD",...W(t).width?W(t):l?.bidTrace?{width:l.bidTrace.width,height:l.bidTrace.height}:W(t),dealId:t.dealId||l?.bidTrace?.dealId||"",mediaType:b,latencyMs:Number.isFinite(t.timeToRespond)?t.timeToRespond:l?.bidTrace?.latencyMs??0,advertiserDomain:t.meta?.advertiserDomains?.[0]||l?.bidTrace?.advertiserDomain||"",creativeId:t.creativeId||l?.bidTrace?.creativeId||""},m=r||l?.auctionId||"",A=o||l?.transactionId||"",p=n?this.slotViewabilityRecords.get(n):void 0,E=p&&m&&p.auctionId&&p.auctionId!==m;if(!!(n&&p&&E)){this.flushSlotTimeInView(n);let T=(this.slotRefreshIndices.get(n)??(p?p.refreshIndex:0))+1;this.slotRefreshIndices.set(n,T),this.slotLastAuctionIds.set(n,m),p&&(p.refreshIndex=T,p.auctionId=m,p.transactionId=A,p.bidPayload=h,p.viewableFired=!1,p.accumulatedTimeInViewMs=0)}else n&&(m&&this.slotLastAuctionIds.set(n,m),this.slotRefreshIndices.has(n)||this.slotRefreshIndices.set(n,0));let L=n?this.slotRefreshIndices.get(n)??(p?p.refreshIndex:0):0;if(c?this.log("DEBUG",`adRenderSucceeded received for video ad unit ${n||"unknown"}: suppressing IMPRESSION until verified video lifecycle event`):n&&this.hasImpressionEmitted(n,L,m,h.creativeId)||(n&&this.markImpressionEmitted(n,L,m,h.creativeId),this.enqueue(I.IMPRESSION,"impression",{auctionId:m,transactionId:A,adUnitCode:n,bid:h,metadata:{refresh_index:String(L)}})),this.config.viewabilityEnabled&&typeof document<"u"){let T=n&&this.slotElements.get(n)||null,x=n||e.adId||t.adId;if(!T&&x&&(T=document.getElementById(x)),!T&&typeof window<"u"&&window.googletag?.pubads)try{let k=window.googletag.pubads().getSlots();for(let g of k)if((g.getAdUnitPath?.()===n||g.getSlotElementId?.()===n)&&(T=document.getElementById(g.getSlotElementId()),T))break}catch{}if(!T&&x)try{for(let k of Array.from(document.querySelectorAll("[data-ad-slot]")))if(k.getAttribute("data-ad-slot")===x){T=k;break}}catch{}T&&this.observeSlot(T,n||x,{adUnitCode:n,auctionId:m,transactionId:A,mediaType:b,bid:h,refreshIndex:L})}}isDuplicate(e,t){return this.deduper.isDuplicate(e,t)}enqueue(e,t,n,r){if(!this.isEnabled||!this.shouldSample(e,r))return;this.managesSessionId&&rn()&&(this.config.sessionId=ge());let o={eventId:$(H()),timestampMs:Date.now(),type:e,eventName:e===I.ERROR?t:"",auctionId:$(String(n.auctionId||"")),transactionId:$(String(n.transactionId||"")),adUnitCode:n.adUnitCode||n.elementId||"",namespace:n.ns||n.namespace||""};n.bid&&(o.bid={bidder:n.bid.bidder||"",cpm:Number.isFinite(n.bid.cpm)?n.bid.cpm:0,currency:n.bid.currency||"",width:Number.isFinite(n.bid.width)?n.bid.width:0,height:Number.isFinite(n.bid.height)?n.bid.height:0,dealId:n.bid.dealId||"",mediaType:n.bid.mediaType||"",latencyMs:Number.isFinite(n.bid.latencyMs)?n.bid.latencyMs:0,advertiserDomain:n.bid.advertiserDomain||"",creativeId:n.bid.creativeId||""}),n.viewableDurationMs!==void 0&&(o.viewableDurationMs=Number.isFinite(n.viewableDurationMs)?n.viewableDurationMs:0),n.bidderOutcomes&&Array.isArray(n.bidderOutcomes)&&(o.bidderOutcomes=n.bidderOutcomes.map(a=>({...a,refreshIndex:a.refreshIndex??this.auctionCycleIndex(a.adUnitCode||"")})));let s={...n.metadata};n.error!==void 0&&n.error!==null&&(s.error=typeof n.error=="object"&&n.error.message?String(n.error.message):String(n.error)),n.gpid&&(s.gpid=String(n.gpid)),n.refreshIndex!==void 0&&s.refresh_index===void 0&&(s.refresh_index=String(n.refreshIndex));let d=Qt(s);Object.keys(d).length>0&&(o.metadata=d),this.queue.push(o),this.queue.length>=z?(this.flush(),this.queue.length>z&&this.queue.splice(0,this.queue.length-z)):jt.has(e)&&this.revenueFlushTimer===null&&(this.revenueFlushTimer=setTimeout(()=>{this.revenueFlushTimer=null,this.flush()},this.config.revenueFlushDelayMs))}shouldSample(e,t){return e===I.ERROR?(this.errorCount++,this.errorCount>Ot?!1:this.config.errorsEnabled):t==="WARN"?this.config.warningsEnabled:this.config.auctionEnabled}requeue(e){e.length&&(this.queue=e.concat(this.queue),this.queue.length>z&&this.queue.splice(0,this.queue.length-z))}drainBatch(){if(this.queue.length===0||!this.config.endpoint)return null;let e=typeof window<"u"?window.location.hostname:"",t=n=>({propertyId:$(this.config.propertyId),pageviewId:$(this.config.pageviewId),sessionId:$(this.config.sessionId),pageUrl:this.pageUrl,country:this.config.country,region:this.config.region,deviceType:this.config.deviceType,userId:$(this.config.userId),domain:e,events:n});for(;;){if(this.queue.length===0)return null;let n=this.queue,r=pe.encode(t(n)).finish();for(;n.length>1&&r.byteLength>be;)n=n.slice(0,Math.floor(n.length/2)),r=pe.encode(t(n)).finish();if(r.byteLength>be){let[o]=this.queue.splice(0,1);this.log("WARN",`Dropping oversized event (type ${o?.type}, ${r.byteLength} bytes exceeds the ${be}-byte cap on its own)`);continue}return this.queue=this.queue.slice(n.length),{url:`${this.config.endpoint}/${this.config.propertyId}`,encoded:r,events:n}}}sendFetch(e,t=!1,n,r=!1){let o={method:"POST",headers:{"Content-Type":Ye},body:e.encoded};t&&(o.keepalive=!0),fetch(e.url,o).then(d=>{if(d.ok)r||(this.consecutiveSendFailures=0,this.nextSendAllowedAt=0),n&&n();else{if(this.log("WARN",`Failed to send batch: HTTP ${d.status}`),d.status>=400&&d.status<500&&d.status!==429&&d.status!==408){this.log("WARN",`Dropping batch due to non-retryable client error HTTP ${d.status}`);return}r||this.handleSendFailure(e.events)}}).catch(d=>{this.log("ERROR","Failed to send batch",d),r||this.handleSendFailure(e.events)});let s=typeof globalThis<"u"?globalThis.process:void 0;if(s&&typeof s._tickCallback=="function")try{s._tickCallback()}catch{}}handleSendFailure(e){this.consecutiveSendFailures++;let t=Math.min(Ge*2**(this.consecutiveSendFailures-1),Mt);this.nextSendAllowedAt=Date.now()+t,this.consecutiveSendFailures<=Ut?this.requeue(e):this.log("WARN",`Dropping ${e.length} events after ${this.consecutiveSendFailures} consecutive send failures`)}flush(){if(Date.now()<this.nextSendAllowedAt)return;let e=this.drainBatch();for(;e&&(this.sendFetch(e,!1),!(Date.now()<this.nextSendAllowedAt));)e=this.drainBatch()}flushBeacon(){let e=this.drainBatch();for(;e;){let t=!1;if(typeof navigator<"u"&&typeof navigator.sendBeacon=="function")try{let n=new Blob([e.encoded],{type:Ye});t=navigator.sendBeacon(e.url,n)}catch{t=!1}if(!t){let n=this.persistBatch(e.encoded);this.sendFetch(e,!0,()=>this.removePersistedBatch(n))}e=this.drainBatch()}this.schedulePersistedCleanup()}pendingKeyPrefix(){return`${ee}${encodeURIComponent(this.config.propertyId)}_`}persistBatch(e){if(!K)return null;try{if(typeof localStorage>"u"||!this.config.propertyId)return null;let t=0;for(let r=0;r<localStorage.length;r++){let o=localStorage.key(r);o&&o.startsWith(ee)&&t++}if(t>=Pt)return null;let n=`${this.pendingKeyPrefix()}${Date.now()}_${Math.floor(Math.random()*1e6)}`;return localStorage.setItem(n,Yt(e)),this.persistedBatchKeys.push(n),n}catch{return null}}removePersistedBatch(e){if(!e)return;try{typeof localStorage<"u"&&localStorage.removeItem(e)}catch{}let t=this.persistedBatchKeys.indexOf(e);t!==-1&&this.persistedBatchKeys.splice(t,1)}schedulePersistedCleanup(){this.persistedBatchKeys.length!==0&&(this.persistedCleanupTimer&&clearTimeout(this.persistedCleanupTimer),this.persistedCleanupTimer=setTimeout(()=>{this.persistedCleanupTimer=null;for(let e of Array.from(this.persistedBatchKeys))this.removePersistedBatch(e)},Ft))}resendPersistedBatches(){try{if(typeof localStorage>"u"||!this.config.endpoint||!this.config.propertyId)return;let e=this.pendingKeyPrefix(),t=[],n=[];for(let r=0;r<localStorage.length;r++){let o=localStorage.key(r);!o||!o.startsWith(ee)||(o.startsWith(e)?t.push(o):Zt(o)&&n.push(o))}for(let r of n)try{localStorage.removeItem(r)}catch{}for(let r of t){let o=null;try{o=localStorage.getItem(r),localStorage.removeItem(r)}catch{continue}if(!o)continue;let s=parseInt(r.slice(e.length),10);if(!Number.isFinite(s)||Date.now()-s>Vt)continue;let d;try{d=zt(o)}catch{continue}d.byteLength!==0&&(this.log("DEBUG",`Resending persisted exit batch (${d.byteLength} bytes)`),this.sendFetch({url:`${this.config.endpoint}/${this.config.propertyId}`,encoded:d,events:[]},!1,void 0,!0))}}catch{}}log(e,t,...n){this.logger.log(e,t,...n)}},me=re({prefix:"[bidkernel]",logLevel:"INFO"})});function an(i){let e=typeof i?.getError=="function"?i.getError():i?.error||i,t=a=>e&&typeof e[a]=="function"?e[a]():void 0,n=t("getMessage")||e?.message||String(e||"IMA ad error"),r=t("getErrorCode")??e?.code,o=t("getVastErrorCode"),s=t("getType")??e?.type,d={message:n};return r&&(d.error_code=String(r)),o&&(d.vast_error_code=String(o)),s&&(d.error_type=String(s)),{err:e,message:n,metadata:d}}function ot(i,e,t){let n=ne(i),{err:r,message:o,metadata:s}=an(e);return n.log("WARN","IMA AdErrorEvent received",e),n.enqueue(I.AD_RENDER_FAILED,"adRenderFailed",{auctionId:t.auctionId,transactionId:t.transactionId,adUnitCode:t.adUnitCode,bid:t.bid,metadata:{...t.metadata,reason:t.adStarted?"ima_playback_error":"ima_ad_error",playback_phase:t.adStarted?"post_start":"pre_start",...s},error:typeof r=="object"?r:new Error(o)}),r}function cn(i,e){if(!i||typeof i!="object"||tt.has(i))return;tt.add(i);let t=typeof window<"u"&&window.google?.ima?.AdErrorEvent?.Type?.AD_ERROR||"adError";try{e.call(i,t,n=>{for(let r of C.getActiveInstances())try{let o=dt(r,{mediaType:"video"});ot(r,n,{adStarted:!1,adUnitCode:o?.adUnitCode||"video",auctionId:o?.auctionId,transactionId:o?.transactionId,bid:o?.bidTrace})}catch{}})}catch{}}function nt(i){if(i)try{let e=i.prototype;if(e&&typeof e.getAdsManager=="function"&&!e.getAdsManager.__bidkernelHooked){let t=e.getAdsManager,n=function(...r){let o=t.apply(this,r);if(o)for(let s of C.getActiveInstances())try{s.attachImaAdsManager(o)}catch{}return o};n.__bidkernelHooked=!0,e.getAdsManager=n}}catch{}}function it(i){if(i)try{let e=i.prototype||i;if(e&&typeof e.init=="function"&&!e.init.__bidkernelHooked){let t=e.init,n=function(...r){for(let o of C.getActiveInstances())try{o.attachImaAdsManager(this)}catch{}return t.apply(this,r)};n.__bidkernelHooked=!0,e.init=n}if(e&&typeof e.start=="function"&&!e.start.__bidkernelHooked){let t=e.start,n=function(...r){for(let o of C.getActiveInstances())try{o.attachImaAdsManager(this)}catch{}return t.apply(this,r)};n.__bidkernelHooked=!0,e.start=n}}catch{}}function rt(i){if(i)try{let e=i.prototype;if(!e)return;if(typeof e.addEventListener=="function"&&!e.addEventListener.__bidkernelHooked){let t=e.addEventListener,n=function(r,o,...s){if(cn(this,t),(r==="adsManagerLoaded"||r===(this?.AdsManagerLoadedEvent?.Type?.ADS_MANAGER_LOADED||"adsManagerLoaded"))&&typeof o=="function"){let d=Ee.get(o);return d||(d=function(a){if(a&&typeof a.getAdsManager=="function"&&!a.getAdsManager.__bidkernelHooked){let l=a.getAdsManager;a.getAdsManager=function(...c){let b=l.apply(this,c);if(b)for(let h of C.getActiveInstances())try{h.attachImaAdsManager(b)}catch{}return b},a.getAdsManager.__bidkernelHooked=!0}return o.apply(this,arguments)},Ee.set(o,d)),t.call(this,r,d,...s)}return t.call(this,r,o,...s)};n.__bidkernelHooked=!0,e.addEventListener=n}if(typeof e.removeEventListener=="function"&&!e.removeEventListener.__bidkernelHooked){let t=e.removeEventListener,n=function(r,o,...s){let d=typeof o=="function"?Ee.get(o):void 0;return t.call(this,r,d||o,...s)};n.__bidkernelHooked=!0,e.removeEventListener=n}}catch{}}function X(i){if(!(!i||typeof i!="object"))try{i.AdsManagerLoadedEvent&&nt(i.AdsManagerLoadedEvent);let e=Object.getOwnPropertyDescriptor(i,"AdsManagerLoadedEvent");if(!e||e.configurable){let r=i.AdsManagerLoadedEvent;try{Object.defineProperty(i,"AdsManagerLoadedEvent",{configurable:!0,enumerable:!0,get(){return r},set(o){r=o,nt(o)}})}catch{}}i.AdsLoader&&rt(i.AdsLoader);let t=Object.getOwnPropertyDescriptor(i,"AdsLoader");if(!t||t.configurable){let r=i.AdsLoader;try{Object.defineProperty(i,"AdsLoader",{configurable:!0,enumerable:!0,get(){return r},set(o){r=o,rt(o)}})}catch{}}i.AdsManager&&it(i.AdsManager);let n=Object.getOwnPropertyDescriptor(i,"AdsManager");if(!n||n.configurable){let r=i.AdsManager;try{Object.defineProperty(i,"AdsManager",{configurable:!0,enumerable:!0,get(){return r},set(o){r=o,it(o)}})}catch{}}}catch{}}function st(){if(typeof window>"u")return;let i=window;if(i.google?.ima&&X(i.google.ima),i.google&&typeof i.google=="object"){let t=Object.getOwnPropertyDescriptor(i.google,"ima");if(!t||t.configurable){let n=i.google.ima;try{Object.defineProperty(i.google,"ima",{configurable:!0,enumerable:!0,get(){return n},set(r){n=r,X(r)}})}catch{}}}let e=Object.getOwnPropertyDescriptor(i,"google");if(!e||e.configurable){let t=i.google;try{Object.defineProperty(i,"google",{configurable:!0,enumerable:!0,get(){return t},set(n){if(t=n,t&&typeof t=="object"){t.ima&&X(t.ima);let r=Object.getOwnPropertyDescriptor(t,"ima");if(!r||r.configurable){let o=t.ima;try{Object.defineProperty(t,"ima",{configurable:!0,enumerable:!0,get(){return o},set(s){o=s,X(s)}})}catch{}}}}})}catch{}}}function dt(i,e){let t=ne(i),n=Date.now(),r=d=>t.hasImpressionEmitted(d.adUnitCode,void 0,d.auctionId,d.bidTrace.creativeId);if(e?.creativeId||e?.adId){for(let d of Array.from(t.cachedWinningBids.values()))if(!(n-d.timestamp>j)&&(e.creativeId&&(d.bidTrace.creativeId===e.creativeId||d.rawBid?.creativeId===e.creativeId)||e.adId&&(d.rawBid?.adId===e.adId||d.adUnitCode===e.adId)))return d}let o;if(e?.mediaType){for(let a of Array.from(t.cachedWinningBids.values())){if(n-a.timestamp>j)continue;(a.bidTrace.mediaType===e.mediaType||a.rawBid?.mediaType===e.mediaType||e.mediaType==="video"&&a.rawBid?.mediaTypes?.video!==void 0)&&(r(a)||(!o||a.timestamp<o.timestamp)&&(o=a))}if(o)return o;let d;for(let a of Array.from(t.cachedWinningBids.values())){if(n-a.timestamp>j)continue;(a.bidTrace.mediaType===e.mediaType||a.rawBid?.mediaType===e.mediaType||e.mediaType==="video"&&a.rawBid?.mediaTypes?.video!==void 0)&&(!d||a.timestamp>d.timestamp)&&(d=a)}if(d)return d}for(let d of Array.from(t.cachedWinningBids.values()))n-d.timestamp>j||r(d)||(!o||d.timestamp>o.timestamp)&&(o=d);if(o)return o;let s;for(let d of Array.from(t.cachedWinningBids.values()))n-d.timestamp>j||(!s||d.timestamp>s.timestamp)&&(s=d);return s}function at(i,e,t){let n=ne(i);if(!e||typeof e.addEventListener!="function")return n.log("WARN","Invalid AdsManager passed to attachImaAdsManager"),()=>{};if(!e.__bidkernelAttachedInstances)try{Object.defineProperty(e,"__bidkernelAttachedInstances",{value:new Map,configurable:!0,writable:!0})}catch{e.__bidkernelAttachedInstances=new Map}let r=e.__bidkernelAttachedInstances,o=r.get(i);if(o){if(!t)return()=>{};o()}let s=t?.slotId||t?.adUnitCode||"video",d=t?.adUnitCode||s,a=t?.auctionId||"",l=t?.transactionId||"",c=y=>{let u=(a?n.getCachedBid(`${a}:${d}`):void 0)||(a&&s!==d?n.getCachedBid(`${a}:${s}`):void 0)||(d!=="video"?n.getCachedBid(d):void 0)||(s!==d&&s!=="video"?n.getCachedBid(s):void 0);return u||(u=dt(i,{creativeId:y?.creativeId,adId:y?.adId,mediaType:"video"})),u},b=!1,h=y=>{b=!0,n.log("DEBUG","IMA AdEvent.STARTED / IMPRESSION received",y);let u=typeof y?.getAd=="function"?y.getAd():y?.ad,v={};u&&(v.creativeId=(typeof u.getCreativeId=="function"?u.getCreativeId():u.creativeId)||"",v.adId=(typeof u.getAdId=="function"?u.getAdId():u.id)||"",v.title=(typeof u.getTitle=="function"?u.getTitle():u.title)||"",v.duration=typeof u.getDuration=="function"?u.getDuration():u.duration,v.advertiserName=typeof u.getAdvertiserName=="function"?u.getAdvertiserName():"");let R=c(v),M=t?.slotId&&t.slotId!=="video"?t.slotId:t?.adUnitCode&&t.adUnitCode!=="video"?t.adUnitCode:R?.adUnitCode||t?.slotId||t?.adUnitCode||"video",ut=t?.adUnitCode&&t.adUnitCode!=="video"?t.adUnitCode:R?.adUnitCode||M,ft=a||R?.auctionId||"",ht=l||R?.transactionId||"",we={...R?.rawBid||t?.bid,mediaType:"video",creativeId:v.creativeId||R?.bidTrace?.creativeId||t?.bid?.creativeId||""};if(n.recordImpression(M,{adUnitCode:ut,auctionId:ft,transactionId:ht,mediaType:"video",bid:we,metadata:{...t?.metadata,media_type:"video",...v.title?{ad_title:v.title}:{},...Number.isFinite(v.duration)?{ad_duration_s:String(v.duration)}:{}}})&&t?.onImpression)try{t.onImpression(M,{ad:u,bid:we})}catch(pt){n.log("ERROR","Error in onImpression callback",pt)}},m=y=>{if(n.log("DEBUG",`IMA AdEvent milestone: ${y}`),t?.onMilestone)try{t.onMilestone(y,s)}catch(u){n.log("ERROR","Error in onMilestone callback",u)}},A=y=>{n.log("DEBUG","IMA AdEvent.CLICK received",y);let u=c(),v=t?.adUnitCode&&t.adUnitCode!=="video"?t.adUnitCode:u?.adUnitCode||s;n.enqueue(I.CLICK,"click",{auctionId:a||u?.auctionId,transactionId:l||u?.transactionId,adUnitCode:v,bid:u?.bidTrace||t?.bid,metadata:{...t?.metadata,media_type:"video"}})},p=y=>{let u=c(),v=t?.adUnitCode&&t.adUnitCode!=="video"?t.adUnitCode:u?.adUnitCode||s,R=ot(i,y,{adStarted:b,adUnitCode:v,auctionId:a||u?.auctionId,transactionId:l||u?.transactionId,bid:u?.bidTrace||t?.bid,metadata:t?.metadata});if(t?.onError)try{t.onError(R)}catch(M){n.log("ERROR","Error in onError callback",M)}},E=typeof window<"u"?window.google?.ima:void 0,S=E?.AdEvent?.Type||{},L=E?.AdErrorEvent?.Type||{},T=[{type:S.STARTED||"started",handler:h},{type:S.IMPRESSION||"impression",handler:h},{type:S.FIRST_QUARTILE||"firstQuartile",handler:()=>m("firstQuartile")},{type:S.MIDPOINT||"midpoint",handler:()=>m("midpoint")},{type:S.THIRD_QUARTILE||"thirdQuartile",handler:()=>m("thirdQuartile")},{type:S.COMPLETE||"complete",handler:()=>m("complete")},{type:S.CLICK||"click",handler:A},{type:L.AD_ERROR||"adError",handler:p}],x=new Set,k=[];for(let y of T)x.has(y.type)||(x.add(y.type),k.push(y));for(let{type:y,handler:u}of k)try{e.addEventListener(y,u)}catch{}let g=()=>{r.delete(i);for(let{type:y,handler:u}of k)try{e.removeEventListener(y,u)}catch{}n.videoDetachCleanups.delete(g)};return r.set(i,g),n.videoDetachCleanups.add(g),g}function ln(i,e,t){let n=ne(i);if(!e)return n.log("WARN","attachVideoPlayer called with null/undefined target"),()=>{};let r=null;if(typeof e=="string"){if(typeof document<"u")try{r=document.querySelector(e)||document.getElementById(e)}catch{r=document.getElementById(e)}}else if(typeof HTMLElement<"u"&&e instanceof HTMLElement)r=e;else if(e&&typeof e=="object"&&e.nodeType===1)r=e;else{if(typeof e.addEventListener=="function"&&(typeof e.init=="function"||typeof e.start=="function"||typeof e.getCuePoints=="function"||typeof e.getVolume=="function"||e.__imaAdsManager))return at(i,e,t);e&&typeof e.addEventListener=="function"&&(r=e)}let o=t?.slotId||t?.adUnitCode||(r?r.id:"")||"video",s=t?.adUnitCode||o,d=t?.auctionId||"",a=t?.transactionId||"",l=()=>(d?n.getCachedBid(`${d}:${s}`):void 0)||(d&&o!==s?n.getCachedBid(`${d}:${o}`):void 0)||n.getCachedBid(s)||(o!==s?n.getCachedBid(o):void 0),c=null;r&&(r.tagName&&r.tagName.toLowerCase()==="video"?c=r:c=r.querySelector("video"));let b={q1:!1,q2:!1,q3:!1,q4:!1},h=g=>{let y=g||c||(r?.querySelector?r.querySelector("video"):null),u=l(),v={...u?.rawBid||t?.bid,mediaType:"video"};if(n.recordImpression(o,{adUnitCode:s,auctionId:d||u?.auctionId,transactionId:a||u?.transactionId,mediaType:"video",bid:v,metadata:{...t?.metadata,media_type:"video",...y&&Number.isFinite(y.duration)?{video_duration_s:String(Math.round(y.duration))}:{}}})&&t?.onImpression)try{t.onImpression(o,{element:y||r,bid:v})}catch(M){n.log("ERROR","Error in onImpression callback",M)}},m=g=>{n.log("DEBUG","HTML5 video playing event received");let y=g?.target instanceof HTMLVideoElement?g.target:c;h(y)},A=g=>{let y=g?.target instanceof HTMLVideoElement?g.target:c;if(y&&y.currentTime>0&&(h(y),Number.isFinite(y.duration)&&y.duration>0)){let u=y.currentTime/y.duration;u>=.25&&!b.q1&&(b.q1=!0,t?.onMilestone?.("firstQuartile",o)),u>=.5&&!b.q2&&(b.q2=!0,t?.onMilestone?.("midpoint",o)),u>=.75&&!b.q3&&(b.q3=!0,t?.onMilestone?.("thirdQuartile",o))}},p=()=>{b.q4||(b.q4=!0,t?.onMilestone?.("complete",o))},E=g=>{let u=(g?.target instanceof HTMLVideoElement?g.target:c)?.error||c?.error,v=l(),R=u?`HTML5 video error code ${u.code}: ${u.message}`:"Video playback error";if(n.log("WARN",R),n.enqueue(I.AD_RENDER_FAILED,"adRenderFailed",{auctionId:d||v?.auctionId,transactionId:a||v?.transactionId,adUnitCode:s,bid:v?.bidTrace||t?.bid,metadata:{...t?.metadata,reason:"html5_video_error",message:R,...u?.code?{error_code:String(u.code)}:{}},error:u?new Error(R):void 0}),t?.onError)try{t.onError(u)}catch(M){n.log("ERROR","Error in onError callback",M)}},S=g=>{g.addEventListener("playing",m),g.addEventListener("play",m),g.addEventListener("timeupdate",A),g.addEventListener("ended",p),g.addEventListener("error",E)},L=g=>{g.removeEventListener("playing",m),g.removeEventListener("play",m),g.removeEventListener("timeupdate",A),g.removeEventListener("ended",p),g.removeEventListener("error",E)},T=null;r&&r!==c&&(r.addEventListener("playing",m,!0),r.addEventListener("play",m,!0),r.addEventListener("timeupdate",A,!0),r.addEventListener("ended",p,!0),r.addEventListener("error",E,!0)),c&&S(c),r&&r.tagName?.toLowerCase()!=="video"&&typeof MutationObserver<"u"&&(T=new MutationObserver(()=>{let g=r.querySelector("video");g&&g!==c&&(c&&L(c),c=g,c&&S(c))}),T.observe(r,{childList:!0,subtree:!0}));let x=l();t?.trackViewability!==!1&&r&&n.observeSlot(r,o,{adUnitCode:s,auctionId:d||x?.auctionId,transactionId:a||x?.transactionId,mediaType:"video",bid:x?.bidTrace||t?.bid,metadata:t?.metadata});let k=()=>{T&&(T.disconnect(),T=null),r&&r!==c&&(r.removeEventListener("playing",m,!0),r.removeEventListener("play",m,!0),r.removeEventListener("timeupdate",A,!0),r.removeEventListener("ended",p,!0),r.removeEventListener("error",E,!0)),c&&L(c),n.videoDetachCleanups.delete(k)};return n.videoDetachCleanups.add(k),k}var ne,Ee,tt,un,ct=_(()=>{"use strict";Te();ye();ne=i=>i,Ee=new WeakMap,tt=new WeakSet;typeof window<"u"&&st();C.prototype.attachImaAdsManager=function(i,e){return at(this,i,e)};C.prototype.attachVideoPlayer=function(i,e){return ln(this,i,e)};un=C.prototype.enable;C.prototype.enable=function(){un.call(this),typeof window<"u"&&(st(),window.google?.ima&&X(window.google.ima))}});var hn=yt(()=>{Te();ct();var lt="https://by.bidkernel.io/t",fn=window._bidkernelPbjsGlobal||"pbjs";ve(fn,{endpoint:lt});window.bidkernelPrebidAnalytics={...window.bidkernelPrebidAnalytics,register:(i,e)=>ve(i,{endpoint:lt,...e}),attachVideoPlayer:(i,e)=>{let t=window._bidkernelPrebidAnalytics;return t?.attachVideoPlayer?t.attachVideoPlayer(i,e):()=>{}},attachImaAdsManager:(i,e)=>{let t=window._bidkernelPrebidAnalytics;return t?.attachImaAdsManager?t.attachImaAdsManager(i,e):()=>{}},recordImpression:(i,e)=>{let t=window._bidkernelPrebidAnalytics;return t?.recordImpression?t.recordImpression(i,e):!1}}});return hn();})();
|
|
1
|
+
"use strict";var bidkernelPrebidAnalyticsBundle=(()=>{var _=(i,e)=>()=>(i&&(e=i(i=0)),e);var bt=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports);function It(){if(typeof window<"u"){let i=window;return i.__bidkernelLogListeners||(i.__bidkernelLogListeners=new Set),i.__bidkernelLogListeners}return mt}function vt(i){if((i<0||!Number.isFinite(i))&&(i=0),i<1e3)return`${i.toFixed(2)}ms`;let e=i/1e3;if(e<60)return`${e.toFixed(2)}s`;let t=Math.floor(e/60);return t<60?`${t}m ${(e%60).toFixed(2)}s`:`${Math.floor(t/60)}h ${t%60}m ${(e%60).toFixed(2)}s`}function Y(i){if(typeof i=="string"){let e=i.toUpperCase();if(e==="DEBUG"||e==="INFO"||e==="WARN"||e==="ERROR")return e}return w.INFO}function oe(i){return new re(i)}var w,Re,P,gt,mt,re,_e=_(()=>{"use strict";w={DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"},Re={[w.DEBUG]:10,[w.INFO]:20,[w.WARN]:30,[w.ERROR]:40},P={badge:"color: #2dd4bf; font-weight: bold",badgeWarn:"background: #f59e0b; color: #fff; padding: 2px 4px; border-radius: 3px; font-weight: bold",badgeError:"background: #ef4444; color: #fff; padding: 2px 4px; border-radius: 3px; font-weight: bold",dim:"color: #6b7280",event:"color: #38bdf8; font-weight: bold",eventWarn:"color: #f59e0b; font-weight: bold",eventError:"color: #ef4444; font-weight: bold",reset:"color: inherit"},gt=0,mt=new Set;re=class i{_prefix;_level;_loadedAt;_now;_console;_customFormatTime;_listeners=new Set;constructor(e={}){this._prefix=e.prefix??"[bidkernel]",this._level=Y(e.logLevel??w.INFO),this._now=e.now,this._console=e.console,this._customFormatTime=e.formatTime,e.onLog&&this._listeners.add(e.onLog),this._loadedAt=e.loadedAt??(this._now?this._now():typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now())}get prefix(){return this._prefix}set prefix(e){this._prefix=e}get logLevel(){return this._level}set logLevel(e){this._level=Y(e)}getLevel(){return this._level}setLevel(e){this._level=Y(e)}getPrefix(){return this._prefix}setPrefix(e){this._prefix=e}resetTiming(e){this._loadedAt=e??(this._now?this._now():typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now())}getLoadedAt(){return this._loadedAt}addListener(e){return this._listeners.add(e),()=>{this._listeners.delete(e)}}removeListener(e){this._listeners.delete(e)}isEnabled(e){let t=Y(e);return(Re[t]??20)>=(Re[this._level]??20)}formatTime(e){return this._customFormatTime?this._customFormatTime(e):vt(e)}_getConsole(){if(this._console)return this._console;if(typeof console<"u")return console}_getElapsed(){let e=this._now?this._now():typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();return Math.max(0,e-this._loadedAt)}_dispatchRecord(e){for(let n of this._listeners)try{n(e)}catch{}let t=It();for(let n of t)if(!this._listeners.has(n))try{n(e)}catch{}if(typeof window<"u"&&typeof window.dispatchEvent=="function")try{window.dispatchEvent(new CustomEvent("__bidkernel_log__",{detail:e}))}catch{}}log(e,t,...n){let r=Y(e);if(!this.isEnabled(r))return;let o=this._getElapsed(),s=this.formatTime(o),d=Date.now(),l={id:`bk_log_${d}_${++gt}`,timestamp:d,elapsedMs:o,level:r,prefix:this._prefix,message:t,args:n,data:n.length===1?n[0]:n.length>1?n:void 0};this._dispatchRecord(l);let c=this._getConsole();if(!c)return;let b=P.badge,h=P.event;r===w.WARN?(b=P.badgeWarn,h=P.eventWarn):r===w.ERROR&&(b=P.badgeError,h=P.eventError);let I=`%c${this._prefix}%c ${s} %c${t}%c`,A=[b,P.dim,h,P.reset],p=[I,...A];switch(n.length>0&&p.push(...n),r){case w.DEBUG:typeof c.log=="function"?c.log(...p):typeof c.debug=="function"&&c.debug(...p);break;case w.INFO:typeof c.info=="function"?c.info(...p):typeof c.log=="function"&&c.log(...p);break;case w.WARN:typeof c.warn=="function"?c.warn(...p):typeof c.log=="function"&&c.log(...p);break;case w.ERROR:typeof c.error=="function"?c.error(...p):typeof c.log=="function"&&c.log(...p);break;default:typeof c.log=="function"&&c.log(...p);break}}debug(e,...t){this.log(w.DEBUG,e,...t)}info(e,...t){this.log(w.INFO,e,...t)}warn(e,...t){this.log(w.WARN,e,...t)}error(e,...t){this.log(w.ERROR,e,...t)}logEvent(e){e&&(e.data!==void 0?this.log(e.level,e.eventName,e.data):this.log(e.level,e.eventName))}child(e,t={}){let n=this._prefix;if(e){let r=e.startsWith("[")&&e.endsWith("]")?e:`[${e}]`;n=`${this._prefix}${r}`}return new i({prefix:n,logLevel:t.logLevel??this._level,loadedAt:t.loadedAt??this._loadedAt,now:t.now??this._now,console:t.console??this._console,formatTime:t.formatTime??this._customFormatTime,...t})}withPrefix(e){return new i({prefix:e,logLevel:this._level,loadedAt:this._loadedAt,now:this._now,console:this._console,formatTime:this._customFormatTime})}}});function Ce(){let i=0,e=0;for(let n=0;n<28;n+=7){let r=this.buf[this.pos++];if(i|=(r&127)<<n,(r&128)==0)return this.assertBounds(),[i,e]}let t=this.buf[this.pos++];if(i|=(t&15)<<28,e=(t&112)>>4,(t&128)==0)return this.assertBounds(),[i,e];for(let n=3;n<=31;n+=7){let r=this.buf[this.pos++];if(e|=(r&127)<<n,(r&128)==0)return this.assertBounds(),[i,e]}throw new Error("invalid varint")}function Z(i,e,t){for(let o=0;o<28;o=o+7){let s=i>>>o,d=!(!(s>>>7)&&e==0),a=(d?s|128:s)&255;if(t.push(a),!d)return}let n=i>>>28&15|(e&7)<<4,r=e>>3!=0;if(t.push((r?n|128:n)&255),!!r){for(let o=3;o<31;o=o+7){let s=e>>>o,d=!!(s>>>7),a=(d?s|128:s)&255;if(t.push(a),!d)return}t.push(e>>>31&1)}}function se(i){let e=i[0]==="-";e&&(i=i.slice(1));let t=1e6,n=0,r=0;function o(s,d){let a=Number(i.slice(s,d));r*=t,n=n*t+a,n>=Q&&(r=r+(n/Q|0),n=n%Q)}return o(-24,-18),o(-18,-12),o(-12,-6),o(-6),e?Be(n,r):ae(n,r)}function Oe(i,e){let t=ae(i,e),n=t.hi&2147483648;n&&(t=Be(t.lo,t.hi));let r=de(t.lo,t.hi);return n?"-"+r:r}function de(i,e){if({lo:i,hi:e}=Et(i,e),e<=2097151)return String(Q*e+i);let t=i&16777215,n=(i>>>24|e<<8)&16777215,r=e>>16&65535,o=t+n*6777216+r*6710656,s=n+r*8147497,d=r*2,a=1e7;return o>=a&&(s+=Math.floor(o/a),o%=a),s>=a&&(d+=Math.floor(s/a),s%=a),d.toString()+Se(s)+Se(o)}function Et(i,e){return{lo:i>>>0,hi:e>>>0}}function ae(i,e){return{lo:i|0,hi:e|0}}function Be(i,e){return e=~e,i?i=~i+1:e+=1,ae(i,e)}function ce(i,e){if(i>=0){for(;i>127;)e.push(i&127|128),i=i>>>7;e.push(i)}else{for(let t=0;t<9;t++)e.push(i&127|128),i=i>>7;e.push(1)}}function Le(){let i=this.buf[this.pos++],e=i&127;if((i&128)==0)return this.assertBounds(),e;if(i=this.buf[this.pos++],e|=(i&127)<<7,(i&128)==0)return this.assertBounds(),e;if(i=this.buf[this.pos++],e|=(i&127)<<14,(i&128)==0)return this.assertBounds(),e;if(i=this.buf[this.pos++],e|=(i&127)<<21,(i&128)==0)return this.assertBounds(),e;i=this.buf[this.pos++],e|=(i&15)<<28;for(let t=5;(i&128)!==0&&t<10;t++)i=this.buf[this.pos++];if((i&128)!=0)throw new Error("invalid varint");return this.assertBounds(),e>>>0}var Q,Se,le=_(()=>{"use strict";Q=4294967296;Se=i=>{let e=String(i);return"0000000".slice(e.length)+e}});function Tt(){let i=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof i.getBigInt64=="function"&&typeof i.getBigUint64=="function"&&typeof i.setBigInt64=="function"&&typeof i.setBigUint64=="function"&&(!!globalThis.Deno||typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){let t=BigInt("-9223372036854775808"),n=BigInt("9223372036854775807"),r=BigInt("0"),o=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(s){let d=typeof s=="bigint"?s:BigInt(s);if(d>n||d<t)throw new Error(`invalid int64: ${s}`);return d},uParse(s){let d=typeof s=="bigint"?s:BigInt(s);if(d>o||d<r)throw new Error(`invalid uint64: ${s}`);return d},enc(s){return i.setBigInt64(0,this.parse(s),!0),{lo:i.getInt32(0,!0),hi:i.getInt32(4,!0)}},uEnc(s){return i.setBigInt64(0,this.uParse(s),!0),{lo:i.getInt32(0,!0),hi:i.getInt32(4,!0)}},dec(s,d){return i.setInt32(0,s,!0),i.setInt32(4,d,!0),i.getBigInt64(0,!0)},uDec(s,d){return i.setInt32(0,s,!0),i.setInt32(4,d,!0),i.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(t){return typeof t!="string"&&(t=t.toString()),xe(t),t},uParse(t){return typeof t!="string"&&(t=t.toString()),De(t),t},enc(t){return typeof t!="string"&&(t=t.toString()),xe(t),se(t)},uEnc(t){return typeof t!="string"&&(t=t.toString()),De(t),se(t)},dec(t,n){return Oe(t,n)},uDec(t,n){return de(t,n)}}}function xe(i){if(!/^-?[0-9]+$/.test(i))throw new Error("invalid int64: "+i)}function De(i){if(!/^[0-9]+$/.test(i))throw new Error("invalid uint64: "+i)}var k,ke=_(()=>{"use strict";le();k=Tt()});function fe(){if(globalThis[ue]==null){let i=new globalThis.TextEncoder,e=new globalThis.TextDecoder;globalThis[ue]={encodeUtf8(t){return i.encode(t)},decodeUtf8(t){return e.decode(t)},checkUtf8(t){try{return encodeURIComponent(t),!0}catch{return!1}}}}return globalThis[ue]}var ue,he=_(()=>{"use strict";ue=Symbol.for("@bufbuild/protobuf/text-encoding")});function pe(i){if(typeof i=="string")i=Number(i);else if(typeof i!="number")throw new Error("invalid int32: "+typeof i);if(!Number.isInteger(i)||i>_t||i<St)throw new Error("invalid int32: "+i)}function Ue(i){if(typeof i=="string")i=Number(i);else if(typeof i!="number")throw new Error("invalid uint32: "+typeof i);if(!Number.isInteger(i)||i>Rt||i<0)throw new Error("invalid uint32: "+i)}function Ct(i){if(typeof i=="string"){let e=i;if(i=Number(i),Number.isNaN(i)&&e!=="NaN")throw new Error("invalid float32: "+e)}else if(typeof i!="number")throw new Error("invalid float32: "+typeof i);if(Number.isFinite(i)&&(i>wt||i<At))throw new Error("invalid float32: "+i)}var F,wt,At,Rt,_t,St,V,S,Me=_(()=>{"use strict";le();ke();he();(function(i){i[i.Varint=0]="Varint",i[i.Bit64=1]="Bit64",i[i.LengthDelimited=2]="LengthDelimited",i[i.StartGroup=3]="StartGroup",i[i.EndGroup=4]="EndGroup",i[i.Bit32=5]="Bit32"})(F||(F={}));wt=34028234663852886e22,At=-34028234663852886e22,Rt=4294967295,_t=2147483647,St=-2147483648,V=class{constructor(e=fe().encodeUtf8){this.encodeUtf8=e,this.stack=[],this.chunks=[],this.buf=[]}finish(){this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]);let e=0;for(let r=0;r<this.chunks.length;r++)e+=this.chunks[r].length;let t=new Uint8Array(e),n=0;for(let r=0;r<this.chunks.length;r++)t.set(this.chunks[r],n),n+=this.chunks[r].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(e.byteLength),this.raw(e)}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(Ue(e);e>127;)this.buf.push(e&127|128),e=e>>>7;return this.buf.push(e),this}int32(e){return pe(e),ce(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.encodeUtf8(e);return this.uint32(t.byteLength),this.raw(t)}float(e){Ct(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){Ue(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){pe(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return pe(e),e=(e<<1^e>>31)>>>0,ce(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=k.enc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=k.uEnc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=k.enc(e);return Z(t.lo,t.hi,this.buf),this}sint64(e){let t=k.enc(e),n=t.hi>>31,r=t.lo<<1^n,o=(t.hi<<1|t.lo>>>31)^n;return Z(r,o,this.buf),this}uint64(e){let t=k.uEnc(e);return Z(t.lo,t.hi,this.buf),this}},S=class{constructor(e,t=fe().decodeUtf8){this.decodeUtf8=t,this.varint64=Ce,this.uint32=Le,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}tag(){let e=this.uint32(),t=e>>>3,n=e&7;if(t<=0||n<0||n>5)throw new Error("illegal tag: field no "+t+" wire type "+n);return[t,n]}skip(e,t){let n=this.pos;switch(e){case F.Varint:for(;this.buf[this.pos++]&128;);break;case F.Bit64:this.pos+=4;case F.Bit32:this.pos+=4;break;case F.LengthDelimited:let r=this.uint32();this.pos+=r;break;case F.StartGroup:for(;;){let[o,s]=this.tag();if(s===F.EndGroup){if(t!==void 0&&o!==t)throw new Error("invalid end group tag");break}this.skip(s,o)}break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(n,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return k.dec(...this.varint64())}uint64(){return k.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),n=-(e&1);return e=(e>>>1|(t&1)<<31)^n,t=t>>>1^n,k.dec(e,t)}bool(){let[e,t]=this.varint64();return e!==0||t!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return k.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return k.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.decodeUtf8(this.bytes())}}});var Ne=_(()=>{"use strict"});var Pe=_(()=>{"use strict"});var Fe=_(()=>{"use strict"});var Ve=_(()=>{"use strict";Me();Ne();he();Pe();Fe()});function Ot(){return{propertyId:new Uint8Array(0),pageviewId:new Uint8Array(0),sessionId:new Uint8Array(0),pageUrl:"",country:"",region:"",deviceType:"",userId:new Uint8Array(0),domain:"",events:[],browser:"",deviceManufacturer:"",deviceModel:"",city:"",postalCode:""}}function Bt(){return{timestampMs:0,type:0,eventName:"",auctionId:new Uint8Array(0),transactionId:new Uint8Array(0),adUnitCode:"",bid:void 0,namespace:"",eventId:new Uint8Array(0),metadata:{},viewableDurationMs:void 0,bidderOutcomes:[]}}function Lt(){return{key:"",value:""}}function xt(){return{adUnitCode:"",outcome:0,bid:void 0,refreshIndex:0,floorCents:void 0,floorSource:0,floorTreatmentBp:void 0}}function Dt(){return{bidder:"",cpm:0,currency:"",width:0,height:0,dealId:"",mediaType:"",latencyMs:0,advertiserDomain:"",creativeId:""}}var m,M,ee,ye,$e,We,je,J,be=_(()=>{"use strict";Ve();m={TRACE_EVENT_TYPE_UNSPECIFIED:0,AUCTION_START:1,AUCTION_END:2,BID_WIN:4,IMPRESSION:5,VIEWABLE:6,TIME_IN_VIEW:7,ERROR:9,SLOT_DEFINED:10,SLOT_DESTROYED:11,CLICK:12,AD_RENDER_FAILED:13,UNRECOGNIZED:-1},M={BIDDER_OUTCOME_UNSPECIFIED:0,BIDDER_OUTCOME_BID:1,BIDDER_OUTCOME_NO_BID:2,BIDDER_OUTCOME_TIMEOUT:3,BIDDER_OUTCOME_ERROR:4,BIDDER_OUTCOME_NO_RESPONSE:5,UNRECOGNIZED:-1},ee={FLOOR_SOURCE_UNSPECIFIED:0,FLOOR_SOURCE_STATIC:1,FLOOR_SOURCE_POOL:2,FLOOR_SOURCE_NONE:3,UNRECOGNIZED:-1};ye={encode(i,e=new V){if(i.propertyId!==void 0&&i.propertyId.length!==0&&e.uint32(10).bytes(i.propertyId),i.pageviewId!==void 0&&i.pageviewId.length!==0&&e.uint32(18).bytes(i.pageviewId),i.sessionId!==void 0&&i.sessionId.length!==0&&e.uint32(26).bytes(i.sessionId),i.pageUrl!==void 0&&i.pageUrl!==""&&e.uint32(34).string(i.pageUrl),i.country!==void 0&&i.country!==""&&e.uint32(42).string(i.country),i.region!==void 0&&i.region!==""&&e.uint32(50).string(i.region),i.deviceType!==void 0&&i.deviceType!==""&&e.uint32(58).string(i.deviceType),i.userId!==void 0&&i.userId.length!==0&&e.uint32(66).bytes(i.userId),i.domain!==void 0&&i.domain!==""&&e.uint32(74).string(i.domain),i.events!==void 0&&i.events.length!==0)for(let t of i.events)$e.encode(t,e.uint32(82).fork()).join();return i.browser!==void 0&&i.browser!==""&&e.uint32(90).string(i.browser),i.deviceManufacturer!==void 0&&i.deviceManufacturer!==""&&e.uint32(98).string(i.deviceManufacturer),i.deviceModel!==void 0&&i.deviceModel!==""&&e.uint32(106).string(i.deviceModel),i.city!==void 0&&i.city!==""&&e.uint32(114).string(i.city),i.postalCode!==void 0&&i.postalCode!==""&&e.uint32(122).string(i.postalCode),e},decode(i,e){let t=i instanceof S?i:new S(i),n=e===void 0?t.len:t.pos+e,r=Ot();for(;t.pos<n;){let o=t.uint32();switch(o>>>3){case 1:{if(o!==10)break;r.propertyId=t.bytes();continue}case 2:{if(o!==18)break;r.pageviewId=t.bytes();continue}case 3:{if(o!==26)break;r.sessionId=t.bytes();continue}case 4:{if(o!==34)break;r.pageUrl=t.string();continue}case 5:{if(o!==42)break;r.country=t.string();continue}case 6:{if(o!==50)break;r.region=t.string();continue}case 7:{if(o!==58)break;r.deviceType=t.string();continue}case 8:{if(o!==66)break;r.userId=t.bytes();continue}case 9:{if(o!==74)break;r.domain=t.string();continue}case 10:{if(o!==82)break;let s=$e.decode(t,t.uint32());s!==void 0&&r.events.push(s);continue}case 11:{if(o!==90)break;r.browser=t.string();continue}case 12:{if(o!==98)break;r.deviceManufacturer=t.string();continue}case 13:{if(o!==106)break;r.deviceModel=t.string();continue}case 14:{if(o!==114)break;r.city=t.string();continue}case 15:{if(o!==122)break;r.postalCode=t.string();continue}}if((o&7)===4||o===0)break;t.skip(o&7)}return r}};$e={encode(i,e=new V){if(i.timestampMs!==void 0&&i.timestampMs!==0&&e.uint32(9).double(i.timestampMs),i.type!==void 0&&i.type!==0&&e.uint32(16).int32(i.type),i.eventName!==void 0&&i.eventName!==""&&e.uint32(26).string(i.eventName),i.auctionId!==void 0&&i.auctionId.length!==0&&e.uint32(34).bytes(i.auctionId),i.transactionId!==void 0&&i.transactionId.length!==0&&e.uint32(42).bytes(i.transactionId),i.adUnitCode!==void 0&&i.adUnitCode!==""&&e.uint32(50).string(i.adUnitCode),i.bid!==void 0&&J.encode(i.bid,e.uint32(58).fork()).join(),i.namespace!==void 0&&i.namespace!==""&&e.uint32(66).string(i.namespace),i.eventId!==void 0&&i.eventId.length!==0&&e.uint32(74).bytes(i.eventId),globalThis.Object.entries(i.metadata||{}).forEach(([t,n])=>{We.encode({key:t,value:n},e.uint32(82).fork()).join()}),i.viewableDurationMs!==void 0&&e.uint32(89).double(i.viewableDurationMs),i.bidderOutcomes!==void 0&&i.bidderOutcomes.length!==0)for(let t of i.bidderOutcomes)je.encode(t,e.uint32(98).fork()).join();return e},decode(i,e){let t=i instanceof S?i:new S(i),n=e===void 0?t.len:t.pos+e,r=Bt();for(;t.pos<n;){let o=t.uint32();switch(o>>>3){case 1:{if(o!==9)break;r.timestampMs=t.double();continue}case 2:{if(o!==16)break;r.type=t.int32();continue}case 3:{if(o!==26)break;r.eventName=t.string();continue}case 4:{if(o!==34)break;r.auctionId=t.bytes();continue}case 5:{if(o!==42)break;r.transactionId=t.bytes();continue}case 6:{if(o!==50)break;r.adUnitCode=t.string();continue}case 7:{if(o!==58)break;r.bid=J.decode(t,t.uint32());continue}case 8:{if(o!==66)break;r.namespace=t.string();continue}case 9:{if(o!==74)break;r.eventId=t.bytes();continue}case 10:{if(o!==82)break;let s=We.decode(t,t.uint32());s.value!==void 0&&(r.metadata[s.key]=s.value);continue}case 11:{if(o!==89)break;r.viewableDurationMs=t.double();continue}case 12:{if(o!==98)break;let s=je.decode(t,t.uint32());s!==void 0&&r.bidderOutcomes.push(s);continue}}if((o&7)===4||o===0)break;t.skip(o&7)}return r}};We={encode(i,e=new V){return i.key!==""&&e.uint32(10).string(i.key),i.value!==""&&e.uint32(18).string(i.value),e},decode(i,e){let t=i instanceof S?i:new S(i),n=e===void 0?t.len:t.pos+e,r=Lt();for(;t.pos<n;){let o=t.uint32();switch(o>>>3){case 1:{if(o!==10)break;r.key=t.string();continue}case 2:{if(o!==18)break;r.value=t.string();continue}}if((o&7)===4||o===0)break;t.skip(o&7)}return r}};je={encode(i,e=new V){return i.adUnitCode!==void 0&&i.adUnitCode!==""&&e.uint32(18).string(i.adUnitCode),i.outcome!==void 0&&i.outcome!==0&&e.uint32(32).int32(i.outcome),i.bid!==void 0&&J.encode(i.bid,e.uint32(50).fork()).join(),i.refreshIndex!==void 0&&i.refreshIndex!==0&&e.uint32(56).int32(i.refreshIndex),i.floorCents!==void 0&&e.uint32(64).int32(i.floorCents),i.floorSource!==void 0&&i.floorSource!==0&&e.uint32(72).int32(i.floorSource),i.floorTreatmentBp!==void 0&&e.uint32(80).int32(i.floorTreatmentBp),e},decode(i,e){let t=i instanceof S?i:new S(i),n=e===void 0?t.len:t.pos+e,r=xt();for(;t.pos<n;){let o=t.uint32();switch(o>>>3){case 2:{if(o!==18)break;r.adUnitCode=t.string();continue}case 4:{if(o!==32)break;r.outcome=t.int32();continue}case 6:{if(o!==50)break;r.bid=J.decode(t,t.uint32());continue}case 7:{if(o!==56)break;r.refreshIndex=t.int32();continue}case 8:{if(o!==64)break;r.floorCents=t.int32();continue}case 9:{if(o!==72)break;r.floorSource=t.int32();continue}case 10:{if(o!==80)break;r.floorTreatmentBp=t.int32();continue}}if((o&7)===4||o===0)break;t.skip(o&7)}return r}};J={encode(i,e=new V){return i.bidder!==void 0&&i.bidder!==""&&e.uint32(10).string(i.bidder),i.cpm!==void 0&&i.cpm!==0&&e.uint32(17).double(i.cpm),i.currency!==void 0&&i.currency!==""&&e.uint32(26).string(i.currency),i.width!==void 0&&i.width!==0&&e.uint32(32).int32(i.width),i.height!==void 0&&i.height!==0&&e.uint32(40).int32(i.height),i.dealId!==void 0&&i.dealId!==""&&e.uint32(50).string(i.dealId),i.mediaType!==void 0&&i.mediaType!==""&&e.uint32(58).string(i.mediaType),i.latencyMs!==void 0&&i.latencyMs!==0&&e.uint32(65).double(i.latencyMs),i.advertiserDomain!==void 0&&i.advertiserDomain!==""&&e.uint32(74).string(i.advertiserDomain),i.creativeId!==void 0&&i.creativeId!==""&&e.uint32(82).string(i.creativeId),e},decode(i,e){let t=i instanceof S?i:new S(i),n=e===void 0?t.len:t.pos+e,r=Dt();for(;t.pos<n;){let o=t.uint32();switch(o>>>3){case 1:{if(o!==10)break;r.bidder=t.string();continue}case 2:{if(o!==17)break;r.cpm=t.double();continue}case 3:{if(o!==26)break;r.currency=t.string();continue}case 4:{if(o!==32)break;r.width=t.int32();continue}case 5:{if(o!==40)break;r.height=t.int32();continue}case 6:{if(o!==50)break;r.dealId=t.string();continue}case 7:{if(o!==58)break;r.mediaType=t.string();continue}case 8:{if(o!==65)break;r.latencyMs=t.double();continue}case 9:{if(o!==74)break;r.advertiserDomain=t.string();continue}case 10:{if(o!==82)break;r.creativeId=t.string();continue}}if((o&7)===4||o===0)break;t.skip(o&7)}return r}}});function $(i){if(!i)return new Uint8Array(0);if(kt.test(i)){let t=i.replace(/-/g,""),n=new Uint8Array(16);for(let r=0;r<16;r++)n[r]=parseInt(t.slice(r*2,r*2+2),16);return n}if(Ge)return Ge.encode(i);let e=new Uint8Array(i.length);for(let t=0;t<i.length;t++)e[t]=i.charCodeAt(t)&255;return e}var kt,Ge,Pn,He=_(()=>{"use strict";kt=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,Ge=typeof TextEncoder<"u"?new TextEncoder:null,Pn=typeof TextDecoder<"u"?new TextDecoder:null});function G(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,i=>{let e=Math.random()*16|0;return(i==="x"?e:e&3|8).toString(16)})}function Qt(i){let e="";for(let n=0;n<i.length;n+=8192)e+=String.fromCharCode(...i.subarray(n,n+8192));return btoa(e)}function Zt(i){let e=atob(i),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}function Jt(i){if(!i)return!1;let e;try{e=new URL(i)}catch{return!1}return e.username||e.password?!1:e.protocol==="https:"?!0:e.protocol==="http:"?e.hostname==="localhost"||e.hostname==="127.0.0.1"||e.hostname==="[::1]":!1}function en(i){let e={},t=0;for(let n of Object.keys(i)){if(t>=Pt)break;let r=i[n];if(r==null)continue;let o=String(r);e[n]=o.length>Ye?`${o.slice(0,Ye)}...[truncated]`:o,t++}return e}function tn(i){let e=i.slice(te.length).split("_");return e.length===2&&/^\d+$/.test(e[0])}function nn(i,e){if(!i||!e)return!1;try{return new URL(i).origin===new URL(e).origin}catch{return!1}}function et(i){try{typeof localStorage<"u"&&(localStorage.setItem(Ze,i.toString()),q=i)}catch{}}function tt(i=Date.now()){return N>0&&i-N<=Je}function ne(){let i=Date.now(),e=!!D&&!tt(i);if(N=i,e){D=null;for(let t of sn)t();return}!K||!D||q===0||i-q<rn||et(i)}function dn(){return!D||K&&q===0}function an(){if(Qe||typeof window>"u")return;Qe=!0;let i=()=>ne();for(let e of on)window.addEventListener(e,i,{passive:!0,capture:!0});typeof document<"u"&&document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&ne()})}function me(){let i=Date.now(),e=!!D&&tt(i);try{if(K&&typeof localStorage<"u"){let t=localStorage.getItem(Xe),n=localStorage.getItem(Ze),r=n&&parseInt(n,10)||0;if(t&&r&&i-r<=Je)return(D!==t||N<r)&&(D=t,N=Math.max(N,r)),q===0&&(q=r),t;let o=e?D:G();return e||(N=i),localStorage.setItem(Xe,o),et(N),D=o,o}}catch{}return e||(D=G(),N=i),D}function f(i){return String(i??"").replace(/%/g,"%25").replace(/:/g,"%3A")}function cn(i,e){switch(i){case"auctionInit":return`auctionInit:${f(e?.auctionId)}`;case"auctionEnd":return`auctionEnd:${f(e?.auctionId)}`;case"bidRequested":{let t=Array.isArray(e?.bids)?e.bids.map(n=>f(n?.bidId||n?.transactionId||n?.adUnitCode)).join(","):"";return`bidRequested:${f(e?.auctionId)}:${f(e?.bidderCode||e?.bidder)}:${t}`}case"bidResponse":{let t=e||{},n=t.creativeId||t.adId||t.requestId||t.bidId||"",r=t.originalCpm??t.cpm??"";return`bidResponse:${f(t.auctionId)}:${f(t.adUnitCode)}:${f(t.bidderCode||t.bidder)}:${f(n)}:${f(r)}`}case"bidTimeout":return"bidTimeout:"+(Array.isArray(e)?e:e?[e]:[]).map(n=>`${f(n?.auctionId)}:${f(n?.bidderCode||n?.bidder)}:${f(n?.bidId||n?.transactionId||n?.adUnitCode)}`).join(",");case"bidWon":{let t=e||{},n=t.creativeId||t.adId||t.requestId||t.bidId||"",r=t.originalCpm??t.cpm??"";return`bidWon:${f(t.auctionId)}:${f(t.adUnitCode)}:${f(t.bidderCode||t.bidder)}:${f(n)}:${f(r)}`}case"noBid":return`noBid:${f(e?.auctionId)}:${f(e?.adUnitCode)}:${f(e?.bidderCode||e?.bidder)}:${f(e?.bidId||e?.transactionId)}`;case"adRenderFailed":{let t=e?.bid||{};return`adRenderFailed:${f(t.auctionId||e?.auctionId)}:${f(t.adUnitCode||e?.adUnitCode)}:${f(t.bidderCode||t.bidder||e?.bidderCode||e?.bidder)}:${f(e?.reason)}:${f(e?.message)}`}case"adRenderSucceeded":{let t=e?.bid||e||{},n=t.creativeId||t.adId||e?.adId||"",r=t.originalCpm??t.cpm??"";return`adRenderSucceeded:${f(t.auctionId||e?.auctionId)}:${f(t.adUnitCode||e?.adUnitCode)}:${f(t.bidderCode||t.bidder)}:${f(n)}:${f(r)}`}case"setTargeting":return`setTargeting:${Object.keys(e||{}).sort().map(f).join(",")}`;case"auctionDebug":return`auctionDebug:${f(e?.type)}:${f(String(e?.arguments?.[0]??"").slice(0,50))}`;default:return""}}function W(i){if(Number.isFinite(i?.width)&&Number.isFinite(i?.height))return{width:i.width,height:i.height};if(typeof i?.size=="string"){let e=i.size.match(/^(\d+)x(\d+)$/);if(e)return{width:Number(e[1]),height:Number(e[2])}}return{width:Number.isFinite(i?.width)?i.width:0,height:Number.isFinite(i?.height)?i.height:0}}function H(i,e=!0){if(!i)return null;if(Array.isArray(i)){let t=i.find(n=>n?.provider==="bidkernel")??(e?i.find(n=>n&&typeof n=="object"&&n.provider===void 0):void 0);return t?H(t,e):null}if(typeof i=="object"){if(i.options&&typeof i.options=="object")return i.options;if(i.config&&typeof i.config=="object")return i.config;if(i.propertyId||i.endpoint)return i}return null}function ln(i){if(!i)return null;if(i._bidkernelAnalyticsConfig){let e=H(i._bidkernelAnalyticsConfig);if(e)return e}if(i.bidkernelPrebidAnalytics){let e=i.bidkernelPrebidAnalytics;if(e.options){let t=H(e.options);if(t)return t}if(e.config){let t=H(e.config);if(t)return t}if(e.propertyId)return H(e)}return null}function Ee(i="pbjs",e){let t=typeof window<"u"?window:{};t[i]=t[i]||{};let n=t[i],r=s=>{let d=t._bidkernelPrebidAnalytics,a=d?.getEndpoint?.()||"",l={pbjsGlobalName:i,...e,...s};if(a&&!nn(l.endpoint||"",a)&&(Ie.warn(`Ignoring analytics endpoint change to ${l.endpoint||"(empty)"}: this page is pinned to ${a}. Reload to change the ingest endpoint.`),l.endpoint=a),d)try{d.disable()}catch(b){Ie.warn("Failed to disable previous analytics instance:",b)}let c=new C(l);return c.enable(),t._bidkernelPrebidAnalytics=c,c},o=()=>{try{n.adapterManager&&typeof n.adapterManager.registerAnalyticsAdapter=="function"&&n.adapterManager.registerAnalyticsAdapter({adapter:{enableAnalytics:d=>{let a=H(d,!Array.isArray(d));a&&r(a)},disableAnalytics:()=>{t._bidkernelPrebidAnalytics&&t._bidkernelPrebidAnalytics.disable()}},code:"bidkernel"});let s=ln(t);s&&(s.propertyId||e?.propertyId)&&r(s)}catch(s){Ie.warn("Failed to register standard Prebid analytics adapter:",s)}};n.adapterManager&&typeof n.adapterManager.registerAnalyticsAdapter=="function"?o():(n.que=n.que||[],n.que.push(o))}var Ke,Ut,z,Mt,Nt,ge,Ye,Pt,ze,te,Ft,Vt,$t,Wt,jt,qt,j,Gt,Ht,Kt,Yt,zt,Xt,Xe,Ze,Je,D,N,K,rn,q,on,Qe,sn,ve,C,Ie,Te=_(()=>{"use strict";_e();be();He();Ke=1e4,Ut=50,z=200,Mt=300*1e3,Nt=10,ge=32*1024,Ye=1024,Pt=16,ze="text/plain",te="_bidkernel_pending_",Ft=20,Vt=7200*1e3,$t=1e4,Wt={auctionStart:m.AUCTION_START,auctionEnd:m.AUCTION_END,bidWin:m.BID_WIN,adRenderFailed:m.AD_RENDER_FAILED,click:m.CLICK,impression:m.IMPRESSION,timeInView:m.TIME_IN_VIEW,viewable:m.VIEWABLE},jt=3e3,qt=new Set([m.IMPRESSION,m.BID_WIN,m.CLICK]),j=1800*1e3,Gt=200,Ht=1e3,Kt=50,Yt=200,zt={static:ee.FLOOR_SOURCE_STATIC,pool:ee.FLOOR_SOURCE_POOL,none:ee.FLOOR_SOURCE_NONE},Xt=1e3,Xe="_bidkernel_session",Ze="_bidkernel_session_ts",Je=1800*1e3,D=null,N=0,K=!0;rn=60*1e3,q=0,on=["pointerdown","pointermove","keydown","scroll","wheel","touchstart"],Qe=!1,sn=new Set;ve=class{seenObjects=new WeakMap;seenKeys=new Set;isDuplicate(e,t){if(!t)return!1;if(typeof t=="object"){let r=this.seenObjects.get(t);if(r){if(r.has(e))return!0;r.add(e)}else this.seenObjects.set(t,new Set([e]))}let n=cn(e,t);if(n){if(this.seenKeys.has(n))return!0;if(this.seenKeys.size>=1e3){let r=this.seenKeys.values().next().value;r!==void 0&&this.seenKeys.delete(r)}this.seenKeys.add(n)}return!1}};C=class i{static activeInstances=new Set;static getActiveInstances(){return i.activeInstances}static setStorageAllowed(e){K=e,q=0}static isStorageAllowed(){return K}config;queue=[];errorCount=0;flushTimer=null;boundFlushBeacon;boundVisibilityChange;isEnabled=!1;boundPbjsHandlers=[];pageUrl="";deduper=new ve;consecutiveSendFailures=0;nextSendAllowedAt=0;replayedEventCount=0;revenueFlushTimer=null;persistedBatchKeys=[];persistedCleanupTimer=null;intersectionObserver=null;slotViewabilityRecords=new Map;elementToSlotId=new Map;slotRefreshIndices=new Map;slotLastAuctionIds=new Map;pendingThresholdListeners=new Map;pendingViewableListeners=new Map;slotElements=new Map;clickDetachCleanups=new Set;lastClickAt=new Map;slotEmittedImpressionKeys=new Set;cachedWinningBids=new Map;videoDetachCleanups=new Set;auctionBidderOutcomes=new Map;floorDecisions=new Map;logger;managesSessionId;constructor(e){e.storageAllowed!==void 0&&i.setStorageAllowed(e.storageAllowed);let t=e.endpoint||"",n=!t||Jt(t)?t:"";this.config={endpoint:n,propertyId:e.propertyId||"",pageviewId:e.pageviewId||G(),sessionId:e.sessionId||"",userId:e.userId||"",deviceType:e.deviceType||"desktop",country:e.country||"",region:e.region||"",auctionEnabled:e.auctionEnabled??!0,warningsEnabled:e.warningsEnabled??!0,errorsEnabled:e.errorsEnabled??!0,viewabilityEnabled:e.viewabilityEnabled??!0,storageAllowed:e.storageAllowed??!0,logLevel:e.logLevel||"INFO",pbjsGlobalName:e.pbjsGlobalName||"pbjs",attachPbjsListeners:e.attachPbjsListeners??!0,revenueFlushDelayMs:Number.isFinite(e.revenueFlushDelayMs)&&e.revenueFlushDelayMs>=0?e.revenueFlushDelayMs:jt},this.logger=oe({prefix:"[bidkernel][prebid-analytics]",logLevel:this.config.logLevel}),ne(),this.managesSessionId=!e.sessionId,this.managesSessionId&&(this.config.sessionId=me()),t&&!n&&this.log("ERROR",`Rejected untrusted analytics endpoint ${t}: must be an absolute https:// URL without embedded credentials. Events will not be transmitted.`),this.boundFlushBeacon=()=>{this.flushAllSlotsTimeInView(),this.flushBeacon()},this.boundVisibilityChange=()=>this.handleVisibilityChange()}enable(){if(!this.isEnabled){if(this.isEnabled=!0,i.activeInstances.add(this),this.logger.setLevel(this.config.logLevel),this.config.endpoint||this.log("WARN","Endpoint is empty. Analytics events will not be transmitted."),this.config.viewabilityEnabled&&typeof IntersectionObserver<"u"){this.intersectionObserver=new IntersectionObserver(this.handleIntersection.bind(this),{threshold:[.5]});for(let e of this.slotViewabilityRecords.values())e.element&&this.intersectionObserver.observe(e.element)}if(this.config.attachPbjsListeners&&this.attachPbjs(),typeof window<"u"){if(!this.pageUrl)try{let e=new URL(window.location.href);this.pageUrl=e.origin+e.pathname}catch{this.pageUrl=window.location.href}window.addEventListener("pagehide",this.boundFlushBeacon),typeof document<"u"&&document.addEventListener("visibilitychange",this.boundVisibilityChange),an(),this.flushTimer=setInterval(()=>this.flush(),Ke),this.resendPersistedBatches()}}}attachPbjs(){if(!this.isEnabled)return!1;if(this.boundPbjsHandlers.length>0)return!0;let t=(typeof window<"u"?window:{})[this.config.pbjsGlobalName]||{};if(typeof t.onEvent!="function")return this.log("WARN","pbjs.onEvent is not defined. Prebid analytics will not function."),!1;this.log("DEBUG","Attaching event listeners to pbjs");let n={auctionInit:this.handleAuctionInit.bind(this),auctionEnd:this.handleAuctionEnd.bind(this),bidRequested:this.handleBidRequested.bind(this),bidResponse:this.handleBidResponse.bind(this),bidTimeout:this.handleBidTimeout.bind(this),bidWon:this.handleBidWon.bind(this),noBid:this.handleNoBid.bind(this),adRenderFailed:this.handleAdRenderFailed.bind(this),adRenderSucceeded:this.handleAdRenderSucceeded.bind(this)};for(let[r,o]of Object.entries(n))t.onEvent(r,o),this.boundPbjsHandlers.push({event:r,handler:o});if(typeof t.getEvents=="function")try{let r=t.getEvents();if(Array.isArray(r)){let o=r.slice(this.replayedEventCount);if(this.replayedEventCount=r.length,o.length>0){this.log("DEBUG",`Replaying ${o.length} historical events from pbjs.getEvents()`);for(let s of o){if(!s)continue;let d=s.eventType||s.event||s.name,a=s.args!==void 0?s.args:s.data!==void 0?s.data:s,l=n[d];l&&l(a)}}}}catch(r){this.log("WARN","Failed to replay historical events from pbjs.getEvents()",r)}return!0}disable(){if(this.isEnabled){this.flushAllSlotsTimeInView(),this.isEnabled=!1,i.activeInstances.delete(this);for(let e of this.slotViewabilityRecords.values()){e.dwellTimer&&(clearTimeout(e.dwellTimer),e.dwellTimer=null,e.dwellStartedAt=null);for(let t of e.thresholdListeners)t.timer&&(clearTimeout(t.timer),t.timer=null)}this.intersectionObserver&&(this.intersectionObserver.disconnect(),this.intersectionObserver=null),this.slotViewabilityRecords.clear(),this.elementToSlotId.clear();for(let e of this.videoDetachCleanups)try{e()}catch{}this.videoDetachCleanups.clear();for(let e of Array.from(this.clickDetachCleanups))try{e()}catch{}if(this.clickDetachCleanups.clear(),this.slotElements.clear(),this.cachedWinningBids.clear(),this.slotEmittedImpressionKeys.clear(),this.slotLastAuctionIds.clear(),this.auctionBidderOutcomes.clear(),this.floorDecisions.clear(),this.flushTimer&&(clearInterval(this.flushTimer),this.flushTimer=null),this.revenueFlushTimer&&(clearTimeout(this.revenueFlushTimer),this.revenueFlushTimer=null),this.persistedCleanupTimer&&(clearTimeout(this.persistedCleanupTimer),this.persistedCleanupTimer=null),typeof window<"u"&&(window.removeEventListener("pagehide",this.boundFlushBeacon),typeof document<"u"&&document.removeEventListener("visibilitychange",this.boundVisibilityChange)),this.boundPbjsHandlers.length>0){let t=(typeof window<"u"?window:{})[this.config.pbjsGlobalName]||{};if(typeof t.offEvent=="function")for(let{event:n,handler:r}of this.boundPbjsHandlers)t.offEvent(n,r);this.boundPbjsHandlers=[]}this.flush()}}handleVisibilityChange(){if(!(typeof document>"u")){if(document.visibilityState==="hidden"){let e=typeof performance<"u"&&performance.now?performance.now():Date.now();for(let t of this.slotViewabilityRecords.values()){t.inView&&t.lastEnteredViewAt!==null&&(t.accumulatedTimeInViewMs+=Math.max(0,e-t.lastEnteredViewAt),t.lastEnteredViewAt=null,this.checkThresholdListeners(t)),t.dwellTimer&&(clearTimeout(t.dwellTimer),t.dwellTimer=null,t.dwellStartedAt=null);for(let r of t.thresholdListeners)r.timer&&(clearTimeout(r.timer),r.timer=null);let n=Math.round(t.accumulatedTimeInViewMs);n>0&&this.enqueue(m.TIME_IN_VIEW,"timeInView",{auctionId:t.auctionId,transactionId:t.transactionId,adUnitCode:t.adUnitCode,viewableDurationMs:n,bid:t.bidPayload,metadata:{...t.metadata,refresh_index:String(t.refreshIndex)}})}this.flushBeacon()}else if(document.visibilityState==="visible"){let e=typeof performance<"u"&&performance.now?performance.now():Date.now();for(let t of this.slotViewabilityRecords.values())if(t.inView){if(t.lastEnteredViewAt=e,!t.viewableFired&&t.dwellTimer===null){let n=t.mediaType==="video"?2e3:1e3;t.dwellStartedAt=e,t.dwellTimer=setTimeout(()=>{this.handleDwellComplete(t)},n)}this.scheduleThresholdTimers(t)}}}}handleIntersection(e){for(let t of e){let n=this.elementToSlotId.get(t.target);if(!n){for(let a of i.activeInstances)if(a!==this&&a.elementToSlotId.has(t.target)){a.handleIntersection([t]);break}continue}let r=this.slotViewabilityRecords.get(n);if(!r)continue;let o=t.isIntersecting&&(t.intersectionRatio===void 0||t.intersectionRatio>=.5),s=typeof document>"u"||document.visibilityState==="visible",d=typeof performance<"u"&&performance.now?performance.now():Date.now();if(o){if(!r.inView&&(r.inView=!0,s)){if(r.lastEnteredViewAt=d,!r.viewableFired&&r.dwellTimer===null){let a=r.mediaType==="video"?2e3:1e3;r.dwellStartedAt=d,r.dwellTimer=setTimeout(()=>{this.handleDwellComplete(r)},a)}this.scheduleThresholdTimers(r)}}else{r.inView&&(r.lastEnteredViewAt!==null&&(r.accumulatedTimeInViewMs+=Math.max(0,d-r.lastEnteredViewAt),r.lastEnteredViewAt=null),r.inView=!1,this.checkThresholdListeners(r)),r.dwellTimer!==null&&(clearTimeout(r.dwellTimer),r.dwellTimer=null,r.dwellStartedAt=null);for(let a of r.thresholdListeners)a.timer&&(clearTimeout(a.timer),a.timer=null)}}}handleDwellComplete(e){e.dwellTimer=null,e.dwellStartedAt=null,e.inView&&(typeof document<"u"&&document.visibilityState==="hidden"||(e.viewableFired||(e.viewableFired=!0,this.enqueue(m.VIEWABLE,"viewable",{auctionId:e.auctionId,transactionId:e.transactionId,adUnitCode:e.adUnitCode,bid:e.bidPayload,metadata:{...e.metadata,refresh_index:String(e.refreshIndex)}})),this.notifyViewable(e)))}notifyViewable(e){if(e.viewableFired){for(let t of e.viewableListeners)if(t.firedForIndex!==e.refreshIndex){t.firedForIndex=e.refreshIndex;try{t.callback(e.slotId)}catch(n){this.log("ERROR","Error in viewable listener callback",n)}}}}setSlotElement(e,t){this.slotElements.set(e,t);let n=this.slotViewabilityRecords.get(e);n&&n.element!==t&&this.observeSlot(t,e,{refreshIndex:n.refreshIndex})}recordClick(e,t){if(!this.isEnabled||!e)return!1;let n=Date.now();if(n-(this.lastClickAt.get(e)||0)<Xt)return!1;this.lastClickAt.set(e,n);let r=this.getCachedBid(e);return this.enqueue(m.CLICK,"click",{auctionId:r?.auctionId||"",transactionId:r?.transactionId||"",adUnitCode:e,bid:r?.bidTrace,metadata:{...t?.metadata,refresh_index:String(this.getRefreshIndex(e))}}),!0}attachClickTracker(e,t){if(typeof window>"u")return()=>{};let n=()=>{setTimeout(()=>{let o=document.activeElement;o&&(o===e||e.contains(o))&&(this.recordClick(t,{metadata:{source:"blur"}}),window.focus())},0)};window.addEventListener("blur",n);let r=()=>{window.removeEventListener("blur",n),this.clickDetachCleanups.delete(r)};return this.clickDetachCleanups.add(r),r}onViewable(e,t){let n={callback:t,firedForIndex:-1},r=this.slotViewabilityRecords.get(e);return r?(r.viewableListeners.add(n),this.notifyViewable(r)):(this.pendingViewableListeners.has(e)||this.pendingViewableListeners.set(e,new Set),this.pendingViewableListeners.get(e).add(n)),()=>{this.slotViewabilityRecords.get(e)?.viewableListeners.delete(n),this.pendingViewableListeners.get(e)?.delete(n)}}scheduleThresholdTimers(e){if(!e.inView||typeof document<"u"&&document.visibilityState==="hidden")return;let t=this.getCurrentTimeInView(e);for(let n of e.thresholdListeners)if(!n.fired)if(t>=n.thresholdMs){n.fired=!0,n.timer&&(clearTimeout(n.timer),n.timer=null);try{n.callback(e.slotId,t)}catch(r){this.log("ERROR","Error in threshold listener callback",r)}}else{n.timer&&clearTimeout(n.timer);let r=n.thresholdMs-t;n.timer=setTimeout(()=>{if(n.timer=null,!n.fired&&e.inView&&(typeof document>"u"||document.visibilityState==="visible")){let o=this.getCurrentTimeInView(e);if(o>=n.thresholdMs){n.fired=!0;try{n.callback(e.slotId,o)}catch(s){this.log("ERROR","Error in threshold listener callback",s)}}}},r)}}checkThresholdListeners(e){let t=this.getCurrentTimeInView(e);for(let n of e.thresholdListeners)if(!n.fired&&t>=n.thresholdMs){n.fired=!0,n.timer&&(clearTimeout(n.timer),n.timer=null);try{n.callback(e.slotId,t)}catch(r){this.log("ERROR","Error in threshold listener callback",r)}}}getCurrentTimeInView(e){let t=e.accumulatedTimeInViewMs;if(e.inView&&e.lastEnteredViewAt!==null){let n=typeof performance<"u"&&performance.now?performance.now():Date.now();t+=Math.max(0,n-e.lastEnteredViewAt)}return t}flushSlotTimeInView(e){let t=this.slotViewabilityRecords.get(e);if(!t)return;if(t.inView&&t.lastEnteredViewAt!==null){let r=typeof performance<"u"&&performance.now?performance.now():Date.now();t.accumulatedTimeInViewMs+=Math.max(0,r-t.lastEnteredViewAt),t.lastEnteredViewAt=null}let n=Math.round(t.accumulatedTimeInViewMs);n>0&&this.enqueue(m.TIME_IN_VIEW,"timeInView",{auctionId:t.auctionId,transactionId:t.transactionId,adUnitCode:t.adUnitCode,viewableDurationMs:n,bid:t.bidPayload,metadata:{...t.metadata,refresh_index:String(t.refreshIndex)}}),t.accumulatedTimeInViewMs=0}flushAllSlotsTimeInView(){for(let e of Array.from(this.slotViewabilityRecords.keys()))this.flushSlotTimeInView(e)}observeSlot(e,t,n){if(!this.config.viewabilityEnabled)return;let r=null;if(typeof e=="string"){if(typeof document<"u"){try{r=document.querySelector(e)||document.getElementById(e)}catch{r=document.getElementById(e)}r||(r=document.getElementById(e))}}else r=e;let o=t||n?.adUnitCode||(r?r.id:"")||G(),s=this.slotViewabilityRecords.get(o);if(s){if(n?.refreshIndex===void 0||n.refreshIndex>s.refreshIndex){this.flushSlotTimeInView(o);let a=n?.refreshIndex!==void 0?n.refreshIndex:(this.slotRefreshIndices.get(o)??s.refreshIndex)+1;this.slotRefreshIndices.set(o,a),s.dwellTimer&&(clearTimeout(s.dwellTimer),s.dwellTimer=null,s.dwellStartedAt=null);for(let c of s.thresholdListeners)c.fired=!1,c.timer&&(clearTimeout(c.timer),c.timer=null);s.viewableFired=!1,s.accumulatedTimeInViewMs=0;let l=typeof performance<"u"&&performance.now?performance.now():Date.now();if(s.lastEnteredViewAt=s.inView?l:null,s.refreshIndex=a,s.auctionId=n?.auctionId||s.auctionId,s.transactionId=n?.transactionId||s.transactionId,s.mediaType=n?.mediaType||s.mediaType||"banner",s.bidPayload=n?.bid!==void 0?n.bid:s.bidPayload,s.metadata=n?.metadata??s.metadata,s.inView&&(typeof document>"u"||document.visibilityState==="visible")){let c=s.mediaType==="video"?2e3:1e3;s.dwellStartedAt=l,s.dwellTimer=setTimeout(()=>{this.handleDwellComplete(s)},c),this.scheduleThresholdTimers(s)}}else s.auctionId=n?.auctionId||s.auctionId,s.transactionId=n?.transactionId||s.transactionId,s.mediaType=n?.mediaType||s.mediaType,n?.bid!==void 0&&(s.bidPayload=n.bid),n?.metadata!==void 0&&(s.metadata=n.metadata);n?.auctionId&&this.slotLastAuctionIds.set(o,n.auctionId),r&&(s.element&&s.element!==r&&this.intersectionObserver&&(this.intersectionObserver.unobserve(s.element),this.elementToSlotId.delete(s.element)),s.element=r,this.elementToSlotId.set(r,o),this.intersectionObserver?.observe(r))}else{let d=n?.refreshIndex??this.slotRefreshIndices.get(o)??0;this.slotRefreshIndices.set(o,d),n?.auctionId&&this.slotLastAuctionIds.set(o,n.auctionId);let a=this.pendingThresholdListeners.get(o)||new Set;this.pendingThresholdListeners.delete(o);let l=this.pendingViewableListeners.get(o)||new Set;this.pendingViewableListeners.delete(o);let c={slotId:o,element:r,adUnitCode:n?.adUnitCode||o,auctionId:n?.auctionId||"",transactionId:n?.transactionId||"",mediaType:n?.mediaType||"banner",bidPayload:n?.bid,metadata:n?.metadata,refreshIndex:d,inView:!1,lastEnteredViewAt:null,accumulatedTimeInViewMs:0,viewableFired:!1,dwellTimer:null,dwellStartedAt:null,thresholdListeners:a,viewableListeners:l};this.slotViewabilityRecords.set(o,c),r&&(this.elementToSlotId.set(r,o),this.intersectionObserver?.observe(r))}}unobserveSlot(e){let t=this.slotViewabilityRecords.get(e);if(t){this.flushSlotTimeInView(e),t.dwellTimer&&(clearTimeout(t.dwellTimer),t.dwellTimer=null,t.dwellStartedAt=null);for(let n of t.thresholdListeners)n.timer&&(clearTimeout(n.timer),n.timer=null);t.thresholdListeners=new Set,t.viewableListeners=new Set,t.element&&this.intersectionObserver&&(this.intersectionObserver.unobserve(t.element),this.elementToSlotId.delete(t.element),t.element=null),t.inView=!1,t.lastEnteredViewAt=null}}destroySlot(e){this.unobserveSlot(e),this.slotViewabilityRecords.delete(e),this.slotRefreshIndices.delete(e),this.slotLastAuctionIds.delete(e),this.pendingThresholdListeners.delete(e),this.pendingViewableListeners.delete(e);let t=`${f(e)}:`;for(let r of Array.from(this.slotEmittedImpressionKeys))(r===e||r.startsWith(t))&&this.slotEmittedImpressionKeys.delete(r);let n=this.cachedWinningBids.get(e);n&&this.deleteCachedBidEntry(n)}getCachedBid(e){let t=this.cachedWinningBids.get(e);if(t){if(Date.now()-t.timestamp>j){this.deleteCachedBidEntry(t);return}return t}}deleteCachedBidEntry(e){for(let[t,n]of Array.from(this.cachedWinningBids))n===e&&this.cachedWinningBids.delete(t)}pruneCachedWinningBids(){let e=Date.now();for(let[t,n]of Array.from(this.cachedWinningBids))e-n.timestamp>j&&this.cachedWinningBids.delete(t);for(;this.cachedWinningBids.size>Gt;){let t=this.cachedWinningBids.keys().next();if(t.done)break;this.cachedWinningBids.delete(t.value)}}addImpressionKey(e){if(!this.slotEmittedImpressionKeys.has(e)){for(;this.slotEmittedImpressionKeys.size>=Ht;){let t=this.slotEmittedImpressionKeys.values().next();if(t.done)break;this.slotEmittedImpressionKeys.delete(t.value)}this.slotEmittedImpressionKeys.add(e)}}getOrCreateAuctionOutcomes(e){let t=this.auctionBidderOutcomes.get(e);for(t||(t=new Map,this.auctionBidderOutcomes.set(e,t));this.auctionBidderOutcomes.size>Kt;){let n=this.auctionBidderOutcomes.keys().next();if(n.done||n.value===e)break;this.auctionBidderOutcomes.delete(n.value)}return t}hasImpressionEmitted(e,t,n,r){let o=t??this.slotRefreshIndices.get(e)??0,s=`${f(e)}:${o}`;return r?n?this.slotEmittedImpressionKeys.has(`${s}:auc:${f(n)}:${f(r)}`)||this.slotEmittedImpressionKeys.has(`${s}:${f(r)}`):this.slotEmittedImpressionKeys.has(`${s}:${f(r)}`):n?this.slotEmittedImpressionKeys.has(`${s}:auc:${f(n)}`):this.slotEmittedImpressionKeys.has(s)}markImpressionEmitted(e,t,n,r){let o=`${f(e)}:${t}`;this.addImpressionKey(o),r&&this.addImpressionKey(`${o}:${f(r)}`),n&&(this.addImpressionKey(`${o}:auc:${f(n)}`),r&&this.addImpressionKey(`${o}:auc:${f(n)}:${f(r)}`))}recordImpression(e,t){if(!this.isEnabled)return!1;let n=e||t?.adUnitCode||"",r=t?.adUnitCode||n,o=(t?.auctionId&&n?this.getCachedBid(`${t.auctionId}:${n}`):void 0)||(t?.auctionId&&r?this.getCachedBid(`${t.auctionId}:${r}`):void 0)||(n?this.getCachedBid(n):void 0)||(r?this.getCachedBid(r):void 0),s=t?.bid||o?.rawBid||{},d=t?.auctionId||s.auctionId||o?.auctionId||"",a=t?.transactionId||s.transactionId||o?.transactionId||"",l=s.creativeId||o?.bidTrace?.creativeId||t?.bid?.creativeId||"",c=t?.mediaType||s.mediaType||o?.bidTrace?.mediaType||"banner",b=n||r,h=(n?this.slotViewabilityRecords.get(n):void 0)||(r?this.slotViewabilityRecords.get(r):void 0),I=b?this.slotLastAuctionIds.get(b)||(h?h.auctionId:void 0):void 0,A=!!(b&&d&&I&&I!==d&&t?.refreshIndex===void 0),p={bidder:s.bidderCode||s.bidder||o?.bidTrace?.bidder||"",cpm:Number.isFinite(s.originalCpm)?s.originalCpm:Number.isFinite(s.cpm)?s.cpm:o?.bidTrace?.cpm??0,currency:s.originalCurrency??s.currency??o?.bidTrace?.currency??"USD",...W(s).width?W(s):o?.bidTrace?{width:o.bidTrace.width,height:o.bidTrace.height}:W(s),dealId:s.dealId||o?.bidTrace?.dealId||"",mediaType:c,latencyMs:Number.isFinite(s.timeToRespond)?s.timeToRespond:o?.bidTrace?.latencyMs??0,advertiserDomain:s.meta?.advertiserDomains?.[0]||o?.bidTrace?.advertiserDomain||"",creativeId:s.creativeId||o?.bidTrace?.creativeId||""};if(A&&b){this.flushSlotTimeInView(b);let B=(this.slotRefreshIndices.get(b)??(h?h.refreshIndex:0))+1;this.slotRefreshIndices.set(b,B),this.slotLastAuctionIds.set(b,d),h&&(h.refreshIndex=B,h.auctionId=d,h.transactionId=a,h.bidPayload=p,h.viewableFired=!1,h.accumulatedTimeInViewMs=0)}else b&&(d&&this.slotLastAuctionIds.set(b,d),this.slotRefreshIndices.has(b)||this.slotRefreshIndices.set(b,0));let T=t?.refreshIndex??(n?this.slotRefreshIndices.get(n)??(r?this.slotRefreshIndices.get(r):void 0)??(h?h.refreshIndex:0):0);return n&&this.hasImpressionEmitted(n,T,d,l)||r&&r!==n&&this.hasImpressionEmitted(r,T,d,l)?(this.log("DEBUG",`Impression already emitted for slot ${n||r} in cycle ${T}`),!1):(n&&this.markImpressionEmitted(n,T,d,l),r&&r!==n&&this.markImpressionEmitted(r,T,d,l),this.enqueue(m.IMPRESSION,"impression",{auctionId:d,transactionId:a,adUnitCode:r,bid:p,metadata:{...t?.metadata,refresh_index:String(T)}}),h&&(!h.bidPayload&&p&&(h.bidPayload=p),!h.auctionId&&d&&(h.auctionId=d),!h.transactionId&&a&&(h.transactionId=a)),!0)}onTimeInViewThreshold(e,t,n){let r={thresholdMs:t,callback:n,timer:null,fired:!1},o=this.slotViewabilityRecords.get(e);if(o){o.thresholdListeners.add(r);let s=this.getCurrentTimeInView(o);if(s>=t){r.fired=!0;try{n(e,s)}catch(d){this.log("ERROR","Error in threshold callback",d)}}else if(o.inView&&(typeof document>"u"||document.visibilityState==="visible")){let d=t-s;r.timer=setTimeout(()=>{if(r.timer=null,!r.fired&&o.inView&&(typeof document>"u"||document.visibilityState==="visible")){let a=this.getCurrentTimeInView(o);if(a>=t){r.fired=!0;try{n(e,a)}catch(l){this.log("ERROR","Error in threshold callback",l)}}}},d)}}else this.pendingThresholdListeners.has(e)||this.pendingThresholdListeners.set(e,new Set),this.pendingThresholdListeners.get(e).add(r);return()=>{r.timer&&(clearTimeout(r.timer),r.timer=null),o&&o.thresholdListeners.delete(r);let s=this.pendingThresholdListeners.get(e);s&&s.delete(r)}}getViewabilityState(e){let t=this.slotViewabilityRecords.get(e);if(!t)return;let n=Math.round(this.getCurrentTimeInView(t));return{inView:t.inView,viewable:t.viewableFired,timeInViewMs:n,refreshIndex:t.refreshIndex}}getEndpoint(){return this.config.endpoint}getRefreshIndex(e){return this.slotRefreshIndices.get(e)??0}triggerSlotRefresh(e,t){let n=this.slotViewabilityRecords.get(e);n&&n.element&&this.observeSlot(n.element,e,t)}trackRawEvent(e,t,n){let r=Wt[t]??(e==="ERROR"?m.ERROR:void 0);r!==void 0&&this.enqueue(r,t,n,e)}recordFloorDecision(e,t,n){if(!e||!t)return;let r=`${e}:${t}`;for(this.floorDecisions.delete(r),this.floorDecisions.set(r,{floorCents:n.floorCents!==void 0&&Number.isFinite(n.floorCents)?Math.round(n.floorCents):void 0,source:n.source,treatment:Number.isFinite(n.treatment)?n.treatment:1});this.floorDecisions.size>Yt;){let o=this.floorDecisions.keys().next();if(o.done)break;this.floorDecisions.delete(o.value)}}floorDecisionFor(e,t){return e&&t?this.floorDecisions.get(`${e}:${t}`):void 0}setUserId(e){this.config.userId=e}setSessionId(e){this.config.sessionId=e,this.managesSessionId=!e,this.managesSessionId&&(this.config.sessionId=me())}navigate(e,t){if(this.disable(),this.slotRefreshIndices.clear(),this.floorDecisions.clear(),this.pendingThresholdListeners.clear(),this.config.pageviewId=e||G(),t)try{let n=new URL(t);this.pageUrl=n.origin+n.pathname}catch{this.pageUrl=t}else this.pageUrl="";this.logger.resetTiming(),ne(),this.enable()}handleAuctionInit(e){if(this.isDuplicate("auctionInit",e))return;this.log("DEBUG","auctionInit",e);let t=e.auctionId||"";t&&(this.auctionBidderOutcomes.delete(t),this.getOrCreateAuctionOutcomes(t)),this.enqueue(m.AUCTION_START,"auctionStart",{auctionId:t,transactionId:e.transactionId||""})}handleAuctionEnd(e){if(this.isDuplicate("auctionEnd",e))return;this.log("DEBUG","auctionEnd",e);let t=e.auctionId||"",n=t?this.auctionBidderOutcomes.get(t):void 0,r=n?Array.from(n.values()):[];t&&this.auctionBidderOutcomes.delete(t),this.enqueue(m.AUCTION_END,"auctionEnd",{auctionId:t,transactionId:e.transactionId||"",bidderOutcomes:r})}auctionCycleIndex(e){if(!e)return 0;let t=this.slotRefreshIndices.get(e)??this.slotViewabilityRecords.get(e)?.refreshIndex;return t===void 0?0:t+1}handleBidRequested(e){if(this.isDuplicate("bidRequested",e))return;this.log("DEBUG","bidRequested",e);let t=e.auctionId||"",n=e.bidderCode||e.bidder||"";if(!t||!n)return;let r=this.getOrCreateAuctionOutcomes(t);Array.isArray(e.bids)&&e.bids.forEach(o=>{let s=o.adUnitCode||"",d=Object.keys(o.mediaTypes||{}),a=d.length>0?d[0]:o.mediaType||"banner",l=`${n}:${s}`;r.has(l)||r.set(l,{adUnitCode:s,outcome:M.BIDDER_OUTCOME_NO_RESPONSE,bid:{bidder:n,mediaType:a,latencyMs:0}})})}handleBidResponse(e){if(this.isDuplicate("bidResponse",e))return;this.log("DEBUG","bidResponse",e);let t=e.auctionId||"",n=e.bidderCode||e.bidder||"",r=e.adUnitCode||"",o=Number.isFinite(e.originalCpm)?e.originalCpm:Number.isFinite(e.cpm)?e.cpm:0,s=Number.isFinite(e.timeToRespond)?e.timeToRespond:0,d=Object.keys(e.mediaTypes||{}),a=e.mediaType||(e.mediaTypes?.video?"video":d.length>0?d[0]:"banner");if(!t||!n)return;let l=o>0?{bidder:n,cpm:o,currency:e.originalCurrency??e.currency??"USD",...W(e),dealId:e.dealId||"",mediaType:a,latencyMs:s,advertiserDomain:e.meta?.advertiserDomains?.[0]||"",creativeId:e.creativeId||""}:{bidder:n,mediaType:a,latencyMs:s};this.getOrCreateAuctionOutcomes(t).set(`${n}:${r}`,{adUnitCode:r,outcome:o>0?M.BIDDER_OUTCOME_BID:M.BIDDER_OUTCOME_NO_BID,bid:l})}handleBidTimeout(e){if(this.isDuplicate("bidTimeout",e))return;this.log("DEBUG","bidTimeout",e);let t=Array.isArray(e)?e:e?[e]:[];for(let n of t){let r=n.auctionId||"",o=n.bidderCode||n.bidder||"",s=n.adUnitCode||"",d=Number.isFinite(n.timeout)?n.timeout:0;if(r&&o){let a=this.getOrCreateAuctionOutcomes(r),l=`${o}:${s}`,c=a.get(l);c?(c.outcome=M.BIDDER_OUTCOME_TIMEOUT,d>0&&c.bid&&(c.bid.latencyMs=d)):a.set(l,{adUnitCode:s,outcome:M.BIDDER_OUTCOME_TIMEOUT,bid:{bidder:o,mediaType:"banner",latencyMs:d}})}}}handleBidWon(e){if(this.isDuplicate("bidWon",e))return;this.log("DEBUG","bidWon",e);let t=e.auctionId||"",n=e.transactionId||"",r=e.adUnitCode||e.adId||"",o=Object.keys(e.mediaTypes||{}),s=e.mediaType||(e.mediaTypes?.video?"video":o.length>0?o[0]:"banner"),d={bidder:e.bidderCode||e.bidder||"",cpm:Number.isFinite(e.originalCpm)?e.originalCpm:Number.isFinite(e.cpm)?e.cpm:0,currency:e.originalCurrency??e.currency??"USD",...W(e),dealId:e.dealId||"",mediaType:s,latencyMs:Number.isFinite(e.timeToRespond)?e.timeToRespond:0,advertiserDomain:e.meta?.advertiserDomains?.[0]||"",creativeId:e.creativeId||""};if(r){let a={bidTrace:d,auctionId:t,transactionId:n,adUnitCode:r,rawBid:e,timestamp:Date.now()};this.cachedWinningBids.set(r,a),e.adId&&e.adId!==r&&this.cachedWinningBids.set(e.adId,a),t&&(this.cachedWinningBids.set(`${t}:${r}`,a),e.adId&&e.adId!==r&&this.cachedWinningBids.set(`${t}:${e.adId}`,a)),this.pruneCachedWinningBids()}this.enqueue(m.BID_WIN,"bidWon",{auctionId:t,transactionId:n,adUnitCode:r,bid:d})}handleNoBid(e){if(this.isDuplicate("noBid",e))return;this.log("DEBUG","noBid",e);let t=e.auctionId||"",n=e.bidderCode||e.bidder||"",r=e.adUnitCode||"";if(t&&n){let o=this.getOrCreateAuctionOutcomes(t),s=`${n}:${r}`,d=o.get(s);d?d.outcome===M.BIDDER_OUTCOME_NO_RESPONSE&&(d.outcome=M.BIDDER_OUTCOME_NO_BID):o.set(s,{adUnitCode:r,outcome:M.BIDDER_OUTCOME_NO_BID,bid:{bidder:n,mediaType:"banner",latencyMs:0}})}}handleAdRenderFailed(e){if(this.isDuplicate("adRenderFailed",e))return;this.log("DEBUG","adRenderFailed",e);let t=e.bid||{};this.enqueue(m.AD_RENDER_FAILED,"adRenderFailed",{auctionId:t.auctionId||e.auctionId||"",transactionId:t.transactionId||e.transactionId||"",adUnitCode:t.adUnitCode||e.adUnitCode||"",bid:{bidder:t.bidderCode||t.bidder||e.bidderCode||e.bidder||""},metadata:{reason:String(e.reason||""),message:String(e.message||e.error?.message||"")},error:e.error||(e.message?new Error(String(e.message)):void 0)})}handleAdRenderSucceeded(e){if(this.isDuplicate("adRenderSucceeded",e))return;this.log("DEBUG","adRenderSucceeded",e);let t=e.bid||e||{},n=e.adUnitCode||t.adUnitCode||e.adId||t.adId||"",r=t.auctionId||e.auctionId||"",o=t.transactionId||e.transactionId||"",s=t.mediaType||"banner",d=e.adUnitCode||t.adUnitCode||"",a=e.adId||t.adId||"",l=(r&&d?this.getCachedBid(`${r}:${d}`):void 0)||(r&&a?this.getCachedBid(`${r}:${a}`):void 0)||(d?this.getCachedBid(d):void 0)||(a?this.getCachedBid(a):void 0),c=s==="video"||t.mediaType==="video"||t.mediaTypes?.video!==void 0||l?.bidTrace?.mediaType==="video"||l?.rawBid?.mediaType==="video"||n&&this.slotViewabilityRecords.get(n)?.mediaType==="video",b=c?"video":s||l?.bidTrace?.mediaType||"banner",h={bidder:t.bidderCode||t.bidder||l?.bidTrace?.bidder||"",cpm:Number.isFinite(t.originalCpm)?t.originalCpm:Number.isFinite(t.cpm)?t.cpm:l?.bidTrace?.cpm??0,currency:t.originalCurrency??t.currency??l?.bidTrace?.currency??"USD",...W(t).width?W(t):l?.bidTrace?{width:l.bidTrace.width,height:l.bidTrace.height}:W(t),dealId:t.dealId||l?.bidTrace?.dealId||"",mediaType:b,latencyMs:Number.isFinite(t.timeToRespond)?t.timeToRespond:l?.bidTrace?.latencyMs??0,advertiserDomain:t.meta?.advertiserDomains?.[0]||l?.bidTrace?.advertiserDomain||"",creativeId:t.creativeId||l?.bidTrace?.creativeId||""},I=r||l?.auctionId||"",A=o||l?.transactionId||"",p=n?this.slotViewabilityRecords.get(n):void 0,T=p&&I&&p.auctionId&&p.auctionId!==I;if(!!(n&&p&&T)){this.flushSlotTimeInView(n);let E=(this.slotRefreshIndices.get(n)??(p?p.refreshIndex:0))+1;this.slotRefreshIndices.set(n,E),this.slotLastAuctionIds.set(n,I),p&&(p.refreshIndex=E,p.auctionId=I,p.transactionId=A,p.bidPayload=h,p.viewableFired=!1,p.accumulatedTimeInViewMs=0)}else n&&(I&&this.slotLastAuctionIds.set(n,I),this.slotRefreshIndices.has(n)||this.slotRefreshIndices.set(n,0));let B=n?this.slotRefreshIndices.get(n)??(p?p.refreshIndex:0):0;if(c?this.log("DEBUG",`adRenderSucceeded received for video ad unit ${n||"unknown"}: suppressing IMPRESSION until verified video lifecycle event`):n&&this.hasImpressionEmitted(n,B,I,h.creativeId)||(n&&this.markImpressionEmitted(n,B,I,h.creativeId),this.enqueue(m.IMPRESSION,"impression",{auctionId:I,transactionId:A,adUnitCode:n,bid:h,metadata:{refresh_index:String(B)}})),this.config.viewabilityEnabled&&typeof document<"u"){let E=n&&this.slotElements.get(n)||null,L=n||e.adId||t.adId;if(!E&&L&&(E=document.getElementById(L)),!E&&typeof window<"u"&&window.googletag?.pubads)try{let x=window.googletag.pubads().getSlots();for(let g of x)if((g.getAdUnitPath?.()===n||g.getSlotElementId?.()===n)&&(E=document.getElementById(g.getSlotElementId()),E))break}catch{}if(!E&&L)try{for(let x of Array.from(document.querySelectorAll("[data-ad-slot]")))if(x.getAttribute("data-ad-slot")===L){E=x;break}}catch{}E&&this.observeSlot(E,n||L,{adUnitCode:n,auctionId:I,transactionId:A,mediaType:b,bid:h,refreshIndex:B})}}isDuplicate(e,t){return this.deduper.isDuplicate(e,t)}enqueue(e,t,n,r){if(!this.isEnabled||!this.shouldSample(e,r))return;this.managesSessionId&&dn()&&(this.config.sessionId=me());let o={eventId:$(G()),timestampMs:Date.now(),type:e,eventName:e===m.ERROR?t:"",auctionId:$(String(n.auctionId||"")),transactionId:$(String(n.transactionId||"")),adUnitCode:n.adUnitCode||n.elementId||"",namespace:n.ns||n.namespace||""};n.bid&&(o.bid={bidder:n.bid.bidder||"",cpm:Number.isFinite(n.bid.cpm)?n.bid.cpm:0,currency:n.bid.currency||"",width:Number.isFinite(n.bid.width)?n.bid.width:0,height:Number.isFinite(n.bid.height)?n.bid.height:0,dealId:n.bid.dealId||"",mediaType:n.bid.mediaType||"",latencyMs:Number.isFinite(n.bid.latencyMs)?n.bid.latencyMs:0,advertiserDomain:n.bid.advertiserDomain||"",creativeId:n.bid.creativeId||""}),n.viewableDurationMs!==void 0&&(o.viewableDurationMs=Number.isFinite(n.viewableDurationMs)?n.viewableDurationMs:0),n.bidderOutcomes&&Array.isArray(n.bidderOutcomes)&&(o.bidderOutcomes=n.bidderOutcomes.map(a=>{let l=this.floorDecisionFor(String(n.auctionId||""),a.adUnitCode||"");return{...a,refreshIndex:a.refreshIndex??this.auctionCycleIndex(a.adUnitCode||""),...l?{floorCents:l.floorCents,floorSource:zt[l.source],floorTreatmentBp:Math.round(l.treatment*1e4)}:{}}}));let s={...n.metadata};if(e===m.BID_WIN||e===m.IMPRESSION){let a=this.floorDecisionFor(String(n.auctionId||""),o.adUnitCode||"");a&&(a.floorCents!==void 0&&(s.floor_cents=String(a.floorCents)),s.floor_source=a.source,s.floor_treatment=a.treatment.toFixed(2))}n.error!==void 0&&n.error!==null&&(s.error=typeof n.error=="object"&&n.error.message?String(n.error.message):String(n.error)),n.gpid&&(s.gpid=String(n.gpid)),n.refreshIndex!==void 0&&s.refresh_index===void 0&&(s.refresh_index=String(n.refreshIndex));let d=en(s);Object.keys(d).length>0&&(o.metadata=d),this.queue.push(o),this.queue.length>=z?(this.flush(),this.queue.length>z&&this.queue.splice(0,this.queue.length-z)):qt.has(e)&&this.revenueFlushTimer===null&&(this.revenueFlushTimer=setTimeout(()=>{this.revenueFlushTimer=null,this.flush()},this.config.revenueFlushDelayMs))}shouldSample(e,t){return e===m.ERROR?(this.errorCount++,this.errorCount>Ut?!1:this.config.errorsEnabled):t==="WARN"?this.config.warningsEnabled:this.config.auctionEnabled}requeue(e){e.length&&(this.queue=e.concat(this.queue),this.queue.length>z&&this.queue.splice(0,this.queue.length-z))}drainBatch(){if(this.queue.length===0||!this.config.endpoint)return null;let e=typeof window<"u"?window.location.hostname:"",t=n=>({propertyId:$(this.config.propertyId),pageviewId:$(this.config.pageviewId),sessionId:$(this.config.sessionId),pageUrl:this.pageUrl,country:this.config.country,region:this.config.region,deviceType:this.config.deviceType,userId:$(this.config.userId),domain:e,events:n});for(;;){if(this.queue.length===0)return null;let n=this.queue,r=ye.encode(t(n)).finish();for(;n.length>1&&r.byteLength>ge;)n=n.slice(0,Math.floor(n.length/2)),r=ye.encode(t(n)).finish();if(r.byteLength>ge){let[o]=this.queue.splice(0,1);this.log("WARN",`Dropping oversized event (type ${o?.type}, ${r.byteLength} bytes exceeds the ${ge}-byte cap on its own)`);continue}return this.queue=this.queue.slice(n.length),{url:`${this.config.endpoint}/${this.config.propertyId}`,encoded:r,events:n}}}sendFetch(e,t=!1,n,r=!1){let o={method:"POST",headers:{"Content-Type":ze},body:e.encoded};t&&(o.keepalive=!0),fetch(e.url,o).then(d=>{if(d.ok)r||(this.consecutiveSendFailures=0,this.nextSendAllowedAt=0),n&&n();else{if(this.log("WARN",`Failed to send batch: HTTP ${d.status}`),d.status>=400&&d.status<500&&d.status!==429&&d.status!==408){this.log("WARN",`Dropping batch due to non-retryable client error HTTP ${d.status}`);return}r||this.handleSendFailure(e.events)}}).catch(d=>{this.log("ERROR","Failed to send batch",d),r||this.handleSendFailure(e.events)});let s=typeof globalThis<"u"?globalThis.process:void 0;if(s&&typeof s._tickCallback=="function")try{s._tickCallback()}catch{}}handleSendFailure(e){this.consecutiveSendFailures++;let t=Math.min(Ke*2**(this.consecutiveSendFailures-1),Mt);this.nextSendAllowedAt=Date.now()+t,this.consecutiveSendFailures<=Nt?this.requeue(e):this.log("WARN",`Dropping ${e.length} events after ${this.consecutiveSendFailures} consecutive send failures`)}flush(){if(Date.now()<this.nextSendAllowedAt)return;let e=this.drainBatch();for(;e&&(this.sendFetch(e,!1),!(Date.now()<this.nextSendAllowedAt));)e=this.drainBatch()}flushBeacon(){let e=this.drainBatch();for(;e;){let t=!1;if(typeof navigator<"u"&&typeof navigator.sendBeacon=="function")try{let n=new Blob([e.encoded],{type:ze});t=navigator.sendBeacon(e.url,n)}catch{t=!1}if(!t){let n=this.persistBatch(e.encoded);this.sendFetch(e,!0,()=>this.removePersistedBatch(n))}e=this.drainBatch()}this.schedulePersistedCleanup()}pendingKeyPrefix(){return`${te}${encodeURIComponent(this.config.propertyId)}_`}persistBatch(e){if(!K)return null;try{if(typeof localStorage>"u"||!this.config.propertyId)return null;let t=0;for(let r=0;r<localStorage.length;r++){let o=localStorage.key(r);o&&o.startsWith(te)&&t++}if(t>=Ft)return null;let n=`${this.pendingKeyPrefix()}${Date.now()}_${Math.floor(Math.random()*1e6)}`;return localStorage.setItem(n,Qt(e)),this.persistedBatchKeys.push(n),n}catch{return null}}removePersistedBatch(e){if(!e)return;try{typeof localStorage<"u"&&localStorage.removeItem(e)}catch{}let t=this.persistedBatchKeys.indexOf(e);t!==-1&&this.persistedBatchKeys.splice(t,1)}schedulePersistedCleanup(){this.persistedBatchKeys.length!==0&&(this.persistedCleanupTimer&&clearTimeout(this.persistedCleanupTimer),this.persistedCleanupTimer=setTimeout(()=>{this.persistedCleanupTimer=null;for(let e of Array.from(this.persistedBatchKeys))this.removePersistedBatch(e)},$t))}resendPersistedBatches(){try{if(typeof localStorage>"u"||!this.config.endpoint||!this.config.propertyId)return;let e=this.pendingKeyPrefix(),t=[],n=[];for(let r=0;r<localStorage.length;r++){let o=localStorage.key(r);!o||!o.startsWith(te)||(o.startsWith(e)?t.push(o):tn(o)&&n.push(o))}for(let r of n)try{localStorage.removeItem(r)}catch{}for(let r of t){let o=null;try{o=localStorage.getItem(r),localStorage.removeItem(r)}catch{continue}if(!o)continue;let s=parseInt(r.slice(e.length),10);if(!Number.isFinite(s)||Date.now()-s>Vt)continue;let d;try{d=Zt(o)}catch{continue}d.byteLength!==0&&(this.log("DEBUG",`Resending persisted exit batch (${d.byteLength} bytes)`),this.sendFetch({url:`${this.config.endpoint}/${this.config.propertyId}`,encoded:d,events:[]},!1,void 0,!0))}}catch{}}log(e,t,...n){this.logger.log(e,t,...n)}},Ie=oe({prefix:"[bidkernel]",logLevel:"INFO"})});function un(i){let e=typeof i?.getError=="function"?i.getError():i?.error||i,t=a=>e&&typeof e[a]=="function"?e[a]():void 0,n=t("getMessage")||e?.message||String(e||"IMA ad error"),r=t("getErrorCode")??e?.code,o=t("getVastErrorCode"),s=t("getType")??e?.type,d={message:n};return r&&(d.error_code=String(r)),o&&(d.vast_error_code=String(o)),s&&(d.error_type=String(s)),{err:e,message:n,metadata:d}}function st(i,e,t){let n=ie(i),{err:r,message:o,metadata:s}=un(e);return n.log("WARN","IMA AdErrorEvent received",e),n.enqueue(m.AD_RENDER_FAILED,"adRenderFailed",{auctionId:t.auctionId,transactionId:t.transactionId,adUnitCode:t.adUnitCode,bid:t.bid,metadata:{...t.metadata,reason:t.adStarted?"ima_playback_error":"ima_ad_error",playback_phase:t.adStarted?"post_start":"pre_start",...s},error:typeof r=="object"?r:new Error(o)}),r}function fn(i,e){if(!i||typeof i!="object"||nt.has(i))return;nt.add(i);let t=typeof window<"u"&&window.google?.ima?.AdErrorEvent?.Type?.AD_ERROR||"adError";try{e.call(i,t,n=>{for(let r of C.getActiveInstances())try{let o=at(r,{mediaType:"video"});st(r,n,{adStarted:!1,adUnitCode:o?.adUnitCode||"video",auctionId:o?.auctionId,transactionId:o?.transactionId,bid:o?.bidTrace})}catch{}})}catch{}}function it(i){if(i)try{let e=i.prototype;if(e&&typeof e.getAdsManager=="function"&&!e.getAdsManager.__bidkernelHooked){let t=e.getAdsManager,n=function(...r){let o=t.apply(this,r);if(o)for(let s of C.getActiveInstances())try{s.attachImaAdsManager(o)}catch{}return o};n.__bidkernelHooked=!0,e.getAdsManager=n}}catch{}}function rt(i){if(i)try{let e=i.prototype||i;if(e&&typeof e.init=="function"&&!e.init.__bidkernelHooked){let t=e.init,n=function(...r){for(let o of C.getActiveInstances())try{o.attachImaAdsManager(this)}catch{}return t.apply(this,r)};n.__bidkernelHooked=!0,e.init=n}if(e&&typeof e.start=="function"&&!e.start.__bidkernelHooked){let t=e.start,n=function(...r){for(let o of C.getActiveInstances())try{o.attachImaAdsManager(this)}catch{}return t.apply(this,r)};n.__bidkernelHooked=!0,e.start=n}}catch{}}function ot(i){if(i)try{let e=i.prototype;if(!e)return;if(typeof e.addEventListener=="function"&&!e.addEventListener.__bidkernelHooked){let t=e.addEventListener,n=function(r,o,...s){if(fn(this,t),(r==="adsManagerLoaded"||r===(this?.AdsManagerLoadedEvent?.Type?.ADS_MANAGER_LOADED||"adsManagerLoaded"))&&typeof o=="function"){let d=we.get(o);return d||(d=function(a){if(a&&typeof a.getAdsManager=="function"&&!a.getAdsManager.__bidkernelHooked){let l=a.getAdsManager;a.getAdsManager=function(...c){let b=l.apply(this,c);if(b)for(let h of C.getActiveInstances())try{h.attachImaAdsManager(b)}catch{}return b},a.getAdsManager.__bidkernelHooked=!0}return o.apply(this,arguments)},we.set(o,d)),t.call(this,r,d,...s)}return t.call(this,r,o,...s)};n.__bidkernelHooked=!0,e.addEventListener=n}if(typeof e.removeEventListener=="function"&&!e.removeEventListener.__bidkernelHooked){let t=e.removeEventListener,n=function(r,o,...s){let d=typeof o=="function"?we.get(o):void 0;return t.call(this,r,d||o,...s)};n.__bidkernelHooked=!0,e.removeEventListener=n}}catch{}}function X(i){if(!(!i||typeof i!="object"))try{i.AdsManagerLoadedEvent&&it(i.AdsManagerLoadedEvent);let e=Object.getOwnPropertyDescriptor(i,"AdsManagerLoadedEvent");if(!e||e.configurable){let r=i.AdsManagerLoadedEvent;try{Object.defineProperty(i,"AdsManagerLoadedEvent",{configurable:!0,enumerable:!0,get(){return r},set(o){r=o,it(o)}})}catch{}}i.AdsLoader&&ot(i.AdsLoader);let t=Object.getOwnPropertyDescriptor(i,"AdsLoader");if(!t||t.configurable){let r=i.AdsLoader;try{Object.defineProperty(i,"AdsLoader",{configurable:!0,enumerable:!0,get(){return r},set(o){r=o,ot(o)}})}catch{}}i.AdsManager&&rt(i.AdsManager);let n=Object.getOwnPropertyDescriptor(i,"AdsManager");if(!n||n.configurable){let r=i.AdsManager;try{Object.defineProperty(i,"AdsManager",{configurable:!0,enumerable:!0,get(){return r},set(o){r=o,rt(o)}})}catch{}}}catch{}}function dt(){if(typeof window>"u")return;let i=window;if(i.google?.ima&&X(i.google.ima),i.google&&typeof i.google=="object"){let t=Object.getOwnPropertyDescriptor(i.google,"ima");if(!t||t.configurable){let n=i.google.ima;try{Object.defineProperty(i.google,"ima",{configurable:!0,enumerable:!0,get(){return n},set(r){n=r,X(r)}})}catch{}}}let e=Object.getOwnPropertyDescriptor(i,"google");if(!e||e.configurable){let t=i.google;try{Object.defineProperty(i,"google",{configurable:!0,enumerable:!0,get(){return t},set(n){if(t=n,t&&typeof t=="object"){t.ima&&X(t.ima);let r=Object.getOwnPropertyDescriptor(t,"ima");if(!r||r.configurable){let o=t.ima;try{Object.defineProperty(t,"ima",{configurable:!0,enumerable:!0,get(){return o},set(s){o=s,X(s)}})}catch{}}}}})}catch{}}}function at(i,e){let t=ie(i),n=Date.now(),r=d=>t.hasImpressionEmitted(d.adUnitCode,void 0,d.auctionId,d.bidTrace.creativeId);if(e?.creativeId||e?.adId){for(let d of Array.from(t.cachedWinningBids.values()))if(!(n-d.timestamp>j)&&(e.creativeId&&(d.bidTrace.creativeId===e.creativeId||d.rawBid?.creativeId===e.creativeId)||e.adId&&(d.rawBid?.adId===e.adId||d.adUnitCode===e.adId)))return d}let o;if(e?.mediaType){for(let a of Array.from(t.cachedWinningBids.values())){if(n-a.timestamp>j)continue;(a.bidTrace.mediaType===e.mediaType||a.rawBid?.mediaType===e.mediaType||e.mediaType==="video"&&a.rawBid?.mediaTypes?.video!==void 0)&&(r(a)||(!o||a.timestamp<o.timestamp)&&(o=a))}if(o)return o;let d;for(let a of Array.from(t.cachedWinningBids.values())){if(n-a.timestamp>j)continue;(a.bidTrace.mediaType===e.mediaType||a.rawBid?.mediaType===e.mediaType||e.mediaType==="video"&&a.rawBid?.mediaTypes?.video!==void 0)&&(!d||a.timestamp>d.timestamp)&&(d=a)}if(d)return d}for(let d of Array.from(t.cachedWinningBids.values()))n-d.timestamp>j||r(d)||(!o||d.timestamp>o.timestamp)&&(o=d);if(o)return o;let s;for(let d of Array.from(t.cachedWinningBids.values()))n-d.timestamp>j||(!s||d.timestamp>s.timestamp)&&(s=d);return s}function ct(i,e,t){let n=ie(i);if(!e||typeof e.addEventListener!="function")return n.log("WARN","Invalid AdsManager passed to attachImaAdsManager"),()=>{};if(!e.__bidkernelAttachedInstances)try{Object.defineProperty(e,"__bidkernelAttachedInstances",{value:new Map,configurable:!0,writable:!0})}catch{e.__bidkernelAttachedInstances=new Map}let r=e.__bidkernelAttachedInstances,o=r.get(i);if(o){if(!t)return()=>{};o()}let s=t?.slotId||t?.adUnitCode||"video",d=t?.adUnitCode||s,a=t?.auctionId||"",l=t?.transactionId||"",c=y=>{let u=(a?n.getCachedBid(`${a}:${d}`):void 0)||(a&&s!==d?n.getCachedBid(`${a}:${s}`):void 0)||(d!=="video"?n.getCachedBid(d):void 0)||(s!==d&&s!=="video"?n.getCachedBid(s):void 0);return u||(u=at(i,{creativeId:y?.creativeId,adId:y?.adId,mediaType:"video"})),u},b=!1,h=y=>{b=!0,n.log("DEBUG","IMA AdEvent.STARTED / IMPRESSION received",y);let u=typeof y?.getAd=="function"?y.getAd():y?.ad,v={};u&&(v.creativeId=(typeof u.getCreativeId=="function"?u.getCreativeId():u.creativeId)||"",v.adId=(typeof u.getAdId=="function"?u.getAdId():u.id)||"",v.title=(typeof u.getTitle=="function"?u.getTitle():u.title)||"",v.duration=typeof u.getDuration=="function"?u.getDuration():u.duration,v.advertiserName=typeof u.getAdvertiserName=="function"?u.getAdvertiserName():"");let R=c(v),U=t?.slotId&&t.slotId!=="video"?t.slotId:t?.adUnitCode&&t.adUnitCode!=="video"?t.adUnitCode:R?.adUnitCode||t?.slotId||t?.adUnitCode||"video",ft=t?.adUnitCode&&t.adUnitCode!=="video"?t.adUnitCode:R?.adUnitCode||U,ht=a||R?.auctionId||"",pt=l||R?.transactionId||"",Ae={...R?.rawBid||t?.bid,mediaType:"video",creativeId:v.creativeId||R?.bidTrace?.creativeId||t?.bid?.creativeId||""};if(n.recordImpression(U,{adUnitCode:ft,auctionId:ht,transactionId:pt,mediaType:"video",bid:Ae,metadata:{...t?.metadata,media_type:"video",...v.title?{ad_title:v.title}:{},...Number.isFinite(v.duration)?{ad_duration_s:String(v.duration)}:{}}})&&t?.onImpression)try{t.onImpression(U,{ad:u,bid:Ae})}catch(yt){n.log("ERROR","Error in onImpression callback",yt)}},I=y=>{if(n.log("DEBUG",`IMA AdEvent milestone: ${y}`),t?.onMilestone)try{t.onMilestone(y,s)}catch(u){n.log("ERROR","Error in onMilestone callback",u)}},A=y=>{n.log("DEBUG","IMA AdEvent.CLICK received",y);let u=c(),v=t?.adUnitCode&&t.adUnitCode!=="video"?t.adUnitCode:u?.adUnitCode||s;n.enqueue(m.CLICK,"click",{auctionId:a||u?.auctionId,transactionId:l||u?.transactionId,adUnitCode:v,bid:u?.bidTrace||t?.bid,metadata:{...t?.metadata,media_type:"video"}})},p=y=>{let u=c(),v=t?.adUnitCode&&t.adUnitCode!=="video"?t.adUnitCode:u?.adUnitCode||s,R=st(i,y,{adStarted:b,adUnitCode:v,auctionId:a||u?.auctionId,transactionId:l||u?.transactionId,bid:u?.bidTrace||t?.bid,metadata:t?.metadata});if(t?.onError)try{t.onError(R)}catch(U){n.log("ERROR","Error in onError callback",U)}},T=typeof window<"u"?window.google?.ima:void 0,O=T?.AdEvent?.Type||{},B=T?.AdErrorEvent?.Type||{},E=[{type:O.STARTED||"started",handler:h},{type:O.IMPRESSION||"impression",handler:h},{type:O.FIRST_QUARTILE||"firstQuartile",handler:()=>I("firstQuartile")},{type:O.MIDPOINT||"midpoint",handler:()=>I("midpoint")},{type:O.THIRD_QUARTILE||"thirdQuartile",handler:()=>I("thirdQuartile")},{type:O.COMPLETE||"complete",handler:()=>I("complete")},{type:O.CLICK||"click",handler:A},{type:B.AD_ERROR||"adError",handler:p}],L=new Set,x=[];for(let y of E)L.has(y.type)||(L.add(y.type),x.push(y));for(let{type:y,handler:u}of x)try{e.addEventListener(y,u)}catch{}let g=()=>{r.delete(i);for(let{type:y,handler:u}of x)try{e.removeEventListener(y,u)}catch{}n.videoDetachCleanups.delete(g)};return r.set(i,g),n.videoDetachCleanups.add(g),g}function hn(i,e,t){let n=ie(i);if(!e)return n.log("WARN","attachVideoPlayer called with null/undefined target"),()=>{};let r=null;if(typeof e=="string"){if(typeof document<"u")try{r=document.querySelector(e)||document.getElementById(e)}catch{r=document.getElementById(e)}}else if(typeof HTMLElement<"u"&&e instanceof HTMLElement)r=e;else if(e&&typeof e=="object"&&e.nodeType===1)r=e;else{if(typeof e.addEventListener=="function"&&(typeof e.init=="function"||typeof e.start=="function"||typeof e.getCuePoints=="function"||typeof e.getVolume=="function"||e.__imaAdsManager))return ct(i,e,t);e&&typeof e.addEventListener=="function"&&(r=e)}let o=t?.slotId||t?.adUnitCode||(r?r.id:"")||"video",s=t?.adUnitCode||o,d=t?.auctionId||"",a=t?.transactionId||"",l=()=>(d?n.getCachedBid(`${d}:${s}`):void 0)||(d&&o!==s?n.getCachedBid(`${d}:${o}`):void 0)||n.getCachedBid(s)||(o!==s?n.getCachedBid(o):void 0),c=null;r&&(r.tagName&&r.tagName.toLowerCase()==="video"?c=r:c=r.querySelector("video"));let b={q1:!1,q2:!1,q3:!1,q4:!1},h=g=>{let y=g||c||(r?.querySelector?r.querySelector("video"):null),u=l(),v={...u?.rawBid||t?.bid,mediaType:"video"};if(n.recordImpression(o,{adUnitCode:s,auctionId:d||u?.auctionId,transactionId:a||u?.transactionId,mediaType:"video",bid:v,metadata:{...t?.metadata,media_type:"video",...y&&Number.isFinite(y.duration)?{video_duration_s:String(Math.round(y.duration))}:{}}})&&t?.onImpression)try{t.onImpression(o,{element:y||r,bid:v})}catch(U){n.log("ERROR","Error in onImpression callback",U)}},I=g=>{n.log("DEBUG","HTML5 video playing event received");let y=g?.target instanceof HTMLVideoElement?g.target:c;h(y)},A=g=>{let y=g?.target instanceof HTMLVideoElement?g.target:c;if(y&&y.currentTime>0&&(h(y),Number.isFinite(y.duration)&&y.duration>0)){let u=y.currentTime/y.duration;u>=.25&&!b.q1&&(b.q1=!0,t?.onMilestone?.("firstQuartile",o)),u>=.5&&!b.q2&&(b.q2=!0,t?.onMilestone?.("midpoint",o)),u>=.75&&!b.q3&&(b.q3=!0,t?.onMilestone?.("thirdQuartile",o))}},p=()=>{b.q4||(b.q4=!0,t?.onMilestone?.("complete",o))},T=g=>{let u=(g?.target instanceof HTMLVideoElement?g.target:c)?.error||c?.error,v=l(),R=u?`HTML5 video error code ${u.code}: ${u.message}`:"Video playback error";if(n.log("WARN",R),n.enqueue(m.AD_RENDER_FAILED,"adRenderFailed",{auctionId:d||v?.auctionId,transactionId:a||v?.transactionId,adUnitCode:s,bid:v?.bidTrace||t?.bid,metadata:{...t?.metadata,reason:"html5_video_error",message:R,...u?.code?{error_code:String(u.code)}:{}},error:u?new Error(R):void 0}),t?.onError)try{t.onError(u)}catch(U){n.log("ERROR","Error in onError callback",U)}},O=g=>{g.addEventListener("playing",I),g.addEventListener("play",I),g.addEventListener("timeupdate",A),g.addEventListener("ended",p),g.addEventListener("error",T)},B=g=>{g.removeEventListener("playing",I),g.removeEventListener("play",I),g.removeEventListener("timeupdate",A),g.removeEventListener("ended",p),g.removeEventListener("error",T)},E=null;r&&r!==c&&(r.addEventListener("playing",I,!0),r.addEventListener("play",I,!0),r.addEventListener("timeupdate",A,!0),r.addEventListener("ended",p,!0),r.addEventListener("error",T,!0)),c&&O(c),r&&r.tagName?.toLowerCase()!=="video"&&typeof MutationObserver<"u"&&(E=new MutationObserver(()=>{let g=r.querySelector("video");g&&g!==c&&(c&&B(c),c=g,c&&O(c))}),E.observe(r,{childList:!0,subtree:!0}));let L=l();t?.trackViewability!==!1&&r&&n.observeSlot(r,o,{adUnitCode:s,auctionId:d||L?.auctionId,transactionId:a||L?.transactionId,mediaType:"video",bid:L?.bidTrace||t?.bid,metadata:t?.metadata});let x=()=>{E&&(E.disconnect(),E=null),r&&r!==c&&(r.removeEventListener("playing",I,!0),r.removeEventListener("play",I,!0),r.removeEventListener("timeupdate",A,!0),r.removeEventListener("ended",p,!0),r.removeEventListener("error",T,!0)),c&&B(c),n.videoDetachCleanups.delete(x)};return n.videoDetachCleanups.add(x),x}var ie,we,nt,pn,lt=_(()=>{"use strict";Te();be();ie=i=>i,we=new WeakMap,nt=new WeakSet;typeof window<"u"&&dt();C.prototype.attachImaAdsManager=function(i,e){return ct(this,i,e)};C.prototype.attachVideoPlayer=function(i,e){return hn(this,i,e)};pn=C.prototype.enable;C.prototype.enable=function(){pn.call(this),typeof window<"u"&&(dt(),window.google?.ima&&X(window.google.ima))}});var bn=bt(()=>{Te();lt();var ut="https://by.bidkernel.io/t",yn=window._bidkernelPbjsGlobal||"pbjs";Ee(yn,{endpoint:ut});window.bidkernelPrebidAnalytics={...window.bidkernelPrebidAnalytics,register:(i,e)=>Ee(i,{endpoint:ut,...e}),attachVideoPlayer:(i,e)=>{let t=window._bidkernelPrebidAnalytics;return t?.attachVideoPlayer?t.attachVideoPlayer(i,e):()=>{}},attachImaAdsManager:(i,e)=>{let t=window._bidkernelPrebidAnalytics;return t?.attachImaAdsManager?t.attachImaAdsManager(i,e):()=>{}},recordImpression:(i,e)=>{let t=window._bidkernelPrebidAnalytics;return t?.recordImpression?t.recordImpression(i,e):!1}}});return bn();})();
|
package/dist/index.d.mts
CHANGED
|
@@ -85,6 +85,15 @@ interface SlotViewabilityState {
|
|
|
85
85
|
refreshIndex: number;
|
|
86
86
|
}
|
|
87
87
|
declare const CACHED_BID_TTL_MS: number;
|
|
88
|
+
/** A Live Floors decision for one auction and ad unit, as the wrapper reports it. */
|
|
89
|
+
interface FloorDecision {
|
|
90
|
+
/** The applied floor for the slot's primary size, integer cents of the floor currency. */
|
|
91
|
+
floorCents?: number;
|
|
92
|
+
/** Which term set it. */
|
|
93
|
+
source: "static" | "pool" | "none";
|
|
94
|
+
/** The pageview's variance multiplier, two decimals. */
|
|
95
|
+
treatment: number;
|
|
96
|
+
}
|
|
88
97
|
/**
|
|
89
98
|
* The ingest endpoint decides where auction telemetry -- CPMs, deal IDs,
|
|
90
99
|
* advertiser domains, user and session IDs -- is shipped, and it arrives from
|
|
@@ -177,6 +186,7 @@ declare class BidkernelPrebidAnalytics {
|
|
|
177
186
|
private cachedWinningBids;
|
|
178
187
|
private videoDetachCleanups;
|
|
179
188
|
private auctionBidderOutcomes;
|
|
189
|
+
private floorDecisions;
|
|
180
190
|
private logger;
|
|
181
191
|
private managesSessionId;
|
|
182
192
|
constructor(config: AnalyticsConfig);
|
|
@@ -265,6 +275,16 @@ declare class BidkernelPrebidAnalytics {
|
|
|
265
275
|
getRefreshIndex(slotId: string): number;
|
|
266
276
|
triggerSlotRefresh(slotId: string, options?: SlotObserveOptions): void;
|
|
267
277
|
trackRawEvent(level: string, eventName: string, data: any): void;
|
|
278
|
+
/**
|
|
279
|
+
* Record the wrapper's Live Floors decision for an auction and ad unit,
|
|
280
|
+
* before the auction runs. The decision is stamped on the auction's
|
|
281
|
+
* outcome entries for the ad unit at auction end and on the win and
|
|
282
|
+
* impression rows that follow, so every outcome can be split by floor,
|
|
283
|
+
* source and treatment without a join. Integrations without the module
|
|
284
|
+
* never call this and their rows carry no floor fields.
|
|
285
|
+
*/
|
|
286
|
+
recordFloorDecision(auctionId: string, adUnitCode: string, decision: FloorDecision): void;
|
|
287
|
+
private floorDecisionFor;
|
|
268
288
|
setUserId(userId: string): void;
|
|
269
289
|
setSessionId(sessionId: string): void;
|
|
270
290
|
navigate(pageviewId: string, pageUrl: string): void;
|
|
@@ -435,4 +455,4 @@ interface AdsGlobal {
|
|
|
435
455
|
*/
|
|
436
456
|
declare function getbidkernel(alias?: string): AdsGlobal;
|
|
437
457
|
|
|
438
|
-
export { type AdsGlobal, type AnalyticsConfig, BidkernelPrebidAnalytics, CACHED_BID_TTL_MS, type CachedWinningBid, PrebidEventDeduper, type SizeMapping, type SlotConfig, type SlotObserveOptions, type SlotSize, type SlotSizes, type SlotViewabilityState, type VideoPlayerOptions, attachImaAdsManager, attachVideoPlayer, getOrCreateSessionId, getPrebidEventKey, getbidkernel, hookImaPrototype, initImaInterception, isSessionActive, isTrustedEndpoint, onSessionResume, registerPrebidAnalytics };
|
|
458
|
+
export { type AdsGlobal, type AnalyticsConfig, BidkernelPrebidAnalytics, CACHED_BID_TTL_MS, type CachedWinningBid, type FloorDecision, PrebidEventDeduper, type SizeMapping, type SlotConfig, type SlotObserveOptions, type SlotSize, type SlotSizes, type SlotViewabilityState, type VideoPlayerOptions, attachImaAdsManager, attachVideoPlayer, getOrCreateSessionId, getPrebidEventKey, getbidkernel, hookImaPrototype, initImaInterception, isSessionActive, isTrustedEndpoint, onSessionResume, registerPrebidAnalytics };
|
package/dist/index.d.ts
CHANGED
|
@@ -85,6 +85,15 @@ interface SlotViewabilityState {
|
|
|
85
85
|
refreshIndex: number;
|
|
86
86
|
}
|
|
87
87
|
declare const CACHED_BID_TTL_MS: number;
|
|
88
|
+
/** A Live Floors decision for one auction and ad unit, as the wrapper reports it. */
|
|
89
|
+
interface FloorDecision {
|
|
90
|
+
/** The applied floor for the slot's primary size, integer cents of the floor currency. */
|
|
91
|
+
floorCents?: number;
|
|
92
|
+
/** Which term set it. */
|
|
93
|
+
source: "static" | "pool" | "none";
|
|
94
|
+
/** The pageview's variance multiplier, two decimals. */
|
|
95
|
+
treatment: number;
|
|
96
|
+
}
|
|
88
97
|
/**
|
|
89
98
|
* The ingest endpoint decides where auction telemetry -- CPMs, deal IDs,
|
|
90
99
|
* advertiser domains, user and session IDs -- is shipped, and it arrives from
|
|
@@ -177,6 +186,7 @@ declare class BidkernelPrebidAnalytics {
|
|
|
177
186
|
private cachedWinningBids;
|
|
178
187
|
private videoDetachCleanups;
|
|
179
188
|
private auctionBidderOutcomes;
|
|
189
|
+
private floorDecisions;
|
|
180
190
|
private logger;
|
|
181
191
|
private managesSessionId;
|
|
182
192
|
constructor(config: AnalyticsConfig);
|
|
@@ -265,6 +275,16 @@ declare class BidkernelPrebidAnalytics {
|
|
|
265
275
|
getRefreshIndex(slotId: string): number;
|
|
266
276
|
triggerSlotRefresh(slotId: string, options?: SlotObserveOptions): void;
|
|
267
277
|
trackRawEvent(level: string, eventName: string, data: any): void;
|
|
278
|
+
/**
|
|
279
|
+
* Record the wrapper's Live Floors decision for an auction and ad unit,
|
|
280
|
+
* before the auction runs. The decision is stamped on the auction's
|
|
281
|
+
* outcome entries for the ad unit at auction end and on the win and
|
|
282
|
+
* impression rows that follow, so every outcome can be split by floor,
|
|
283
|
+
* source and treatment without a join. Integrations without the module
|
|
284
|
+
* never call this and their rows carry no floor fields.
|
|
285
|
+
*/
|
|
286
|
+
recordFloorDecision(auctionId: string, adUnitCode: string, decision: FloorDecision): void;
|
|
287
|
+
private floorDecisionFor;
|
|
268
288
|
setUserId(userId: string): void;
|
|
269
289
|
setSessionId(sessionId: string): void;
|
|
270
290
|
navigate(pageviewId: string, pageUrl: string): void;
|
|
@@ -435,4 +455,4 @@ interface AdsGlobal {
|
|
|
435
455
|
*/
|
|
436
456
|
declare function getbidkernel(alias?: string): AdsGlobal;
|
|
437
457
|
|
|
438
|
-
export { type AdsGlobal, type AnalyticsConfig, BidkernelPrebidAnalytics, CACHED_BID_TTL_MS, type CachedWinningBid, PrebidEventDeduper, type SizeMapping, type SlotConfig, type SlotObserveOptions, type SlotSize, type SlotSizes, type SlotViewabilityState, type VideoPlayerOptions, attachImaAdsManager, attachVideoPlayer, getOrCreateSessionId, getPrebidEventKey, getbidkernel, hookImaPrototype, initImaInterception, isSessionActive, isTrustedEndpoint, onSessionResume, registerPrebidAnalytics };
|
|
458
|
+
export { type AdsGlobal, type AnalyticsConfig, BidkernelPrebidAnalytics, CACHED_BID_TTL_MS, type CachedWinningBid, type FloorDecision, PrebidEventDeduper, type SizeMapping, type SlotConfig, type SlotObserveOptions, type SlotSize, type SlotSizes, type SlotViewabilityState, type VideoPlayerOptions, attachImaAdsManager, attachVideoPlayer, getOrCreateSessionId, getPrebidEventKey, getbidkernel, hookImaPrototype, initImaInterception, isSessionActive, isTrustedEndpoint, onSessionResume, registerPrebidAnalytics };
|
package/dist/index.js
CHANGED
|
@@ -356,6 +356,17 @@ var BidderOutcome = {
|
|
|
356
356
|
BIDDER_OUTCOME_NO_RESPONSE: 5,
|
|
357
357
|
UNRECOGNIZED: -1
|
|
358
358
|
};
|
|
359
|
+
var FloorSource = {
|
|
360
|
+
/** FLOOR_SOURCE_UNSPECIFIED - module off, no decision */
|
|
361
|
+
FLOOR_SOURCE_UNSPECIFIED: 0,
|
|
362
|
+
/** FLOOR_SOURCE_STATIC - the publisher's rule, scaled by the treatment */
|
|
363
|
+
FLOOR_SOURCE_STATIC: 1,
|
|
364
|
+
/** FLOOR_SOURCE_POOL - the bid pool's standing bid plus margin */
|
|
365
|
+
FLOOR_SOURCE_POOL: 2,
|
|
366
|
+
/** FLOOR_SOURCE_NONE - module on, but neither term applied */
|
|
367
|
+
FLOOR_SOURCE_NONE: 3,
|
|
368
|
+
UNRECOGNIZED: -1
|
|
369
|
+
};
|
|
359
370
|
function createBaseTraceEventBatch() {
|
|
360
371
|
return {
|
|
361
372
|
propertyId: new Uint8Array(0),
|
|
@@ -758,7 +769,15 @@ var TraceEvent_MetadataEntry = {
|
|
|
758
769
|
}
|
|
759
770
|
};
|
|
760
771
|
function createBaseBidderOutcomeEntry() {
|
|
761
|
-
return {
|
|
772
|
+
return {
|
|
773
|
+
adUnitCode: "",
|
|
774
|
+
outcome: 0,
|
|
775
|
+
bid: void 0,
|
|
776
|
+
refreshIndex: 0,
|
|
777
|
+
floorCents: void 0,
|
|
778
|
+
floorSource: 0,
|
|
779
|
+
floorTreatmentBp: void 0
|
|
780
|
+
};
|
|
762
781
|
}
|
|
763
782
|
var BidderOutcomeEntry = {
|
|
764
783
|
encode(message, writer = new import_wire.BinaryWriter()) {
|
|
@@ -774,6 +793,15 @@ var BidderOutcomeEntry = {
|
|
|
774
793
|
if (message.refreshIndex !== void 0 && message.refreshIndex !== 0) {
|
|
775
794
|
writer.uint32(56).int32(message.refreshIndex);
|
|
776
795
|
}
|
|
796
|
+
if (message.floorCents !== void 0) {
|
|
797
|
+
writer.uint32(64).int32(message.floorCents);
|
|
798
|
+
}
|
|
799
|
+
if (message.floorSource !== void 0 && message.floorSource !== 0) {
|
|
800
|
+
writer.uint32(72).int32(message.floorSource);
|
|
801
|
+
}
|
|
802
|
+
if (message.floorTreatmentBp !== void 0) {
|
|
803
|
+
writer.uint32(80).int32(message.floorTreatmentBp);
|
|
804
|
+
}
|
|
777
805
|
return writer;
|
|
778
806
|
},
|
|
779
807
|
decode(input, length) {
|
|
@@ -811,6 +839,27 @@ var BidderOutcomeEntry = {
|
|
|
811
839
|
message.refreshIndex = reader.int32();
|
|
812
840
|
continue;
|
|
813
841
|
}
|
|
842
|
+
case 8: {
|
|
843
|
+
if (tag !== 64) {
|
|
844
|
+
break;
|
|
845
|
+
}
|
|
846
|
+
message.floorCents = reader.int32();
|
|
847
|
+
continue;
|
|
848
|
+
}
|
|
849
|
+
case 9: {
|
|
850
|
+
if (tag !== 72) {
|
|
851
|
+
break;
|
|
852
|
+
}
|
|
853
|
+
message.floorSource = reader.int32();
|
|
854
|
+
continue;
|
|
855
|
+
}
|
|
856
|
+
case 10: {
|
|
857
|
+
if (tag !== 80) {
|
|
858
|
+
break;
|
|
859
|
+
}
|
|
860
|
+
message.floorTreatmentBp = reader.int32();
|
|
861
|
+
continue;
|
|
862
|
+
}
|
|
814
863
|
}
|
|
815
864
|
if ((tag & 7) === 4 || tag === 0) {
|
|
816
865
|
break;
|
|
@@ -1010,6 +1059,12 @@ var CACHED_BID_TTL_MS = 30 * 60 * 1e3;
|
|
|
1010
1059
|
var MAX_CACHED_BID_KEYS = 200;
|
|
1011
1060
|
var MAX_IMPRESSION_KEYS = 1e3;
|
|
1012
1061
|
var MAX_TRACKED_AUCTIONS = 50;
|
|
1062
|
+
var MAX_FLOOR_DECISIONS = 200;
|
|
1063
|
+
var FLOOR_SOURCE_PROTO = {
|
|
1064
|
+
static: FloorSource.FLOOR_SOURCE_STATIC,
|
|
1065
|
+
pool: FloorSource.FLOOR_SOURCE_POOL,
|
|
1066
|
+
none: FloorSource.FLOOR_SOURCE_NONE
|
|
1067
|
+
};
|
|
1013
1068
|
var CLICK_DEDUP_MS = 1e3;
|
|
1014
1069
|
var SESSION_KEY = "_bidkernel_session";
|
|
1015
1070
|
var SESSION_TS_KEY = "_bidkernel_session_ts";
|
|
@@ -1320,6 +1375,8 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
1320
1375
|
videoDetachCleanups = /* @__PURE__ */ new Set();
|
|
1321
1376
|
// Compacted bidder participation map per auction: auctionId -> Map<`${bidder}:${adUnitCode}`, BidderOutcomeEntry>
|
|
1322
1377
|
auctionBidderOutcomes = /* @__PURE__ */ new Map();
|
|
1378
|
+
// Live Floors decisions: `${auctionId}:${adUnitCode}` -> decision (see recordFloorDecision)
|
|
1379
|
+
floorDecisions = /* @__PURE__ */ new Map();
|
|
1323
1380
|
logger;
|
|
1324
1381
|
// True when this instance owns its session id (none was supplied), so the
|
|
1325
1382
|
// id follows the page-wide session as it lapses and restarts. An id the
|
|
@@ -1515,6 +1572,7 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
1515
1572
|
this.slotEmittedImpressionKeys.clear();
|
|
1516
1573
|
this.slotLastAuctionIds.clear();
|
|
1517
1574
|
this.auctionBidderOutcomes.clear();
|
|
1575
|
+
this.floorDecisions.clear();
|
|
1518
1576
|
if (this.flushTimer) {
|
|
1519
1577
|
clearInterval(this.flushTimer);
|
|
1520
1578
|
this.flushTimer = null;
|
|
@@ -2274,6 +2332,32 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
2274
2332
|
if (eventType === void 0) return;
|
|
2275
2333
|
this.enqueue(eventType, eventName, data, level);
|
|
2276
2334
|
}
|
|
2335
|
+
/**
|
|
2336
|
+
* Record the wrapper's Live Floors decision for an auction and ad unit,
|
|
2337
|
+
* before the auction runs. The decision is stamped on the auction's
|
|
2338
|
+
* outcome entries for the ad unit at auction end and on the win and
|
|
2339
|
+
* impression rows that follow, so every outcome can be split by floor,
|
|
2340
|
+
* source and treatment without a join. Integrations without the module
|
|
2341
|
+
* never call this and their rows carry no floor fields.
|
|
2342
|
+
*/
|
|
2343
|
+
recordFloorDecision(auctionId, adUnitCode, decision) {
|
|
2344
|
+
if (!auctionId || !adUnitCode) return;
|
|
2345
|
+
const key = `${auctionId}:${adUnitCode}`;
|
|
2346
|
+
this.floorDecisions.delete(key);
|
|
2347
|
+
this.floorDecisions.set(key, {
|
|
2348
|
+
floorCents: decision.floorCents !== void 0 && Number.isFinite(decision.floorCents) ? Math.round(decision.floorCents) : void 0,
|
|
2349
|
+
source: decision.source,
|
|
2350
|
+
treatment: Number.isFinite(decision.treatment) ? decision.treatment : 1
|
|
2351
|
+
});
|
|
2352
|
+
while (this.floorDecisions.size > MAX_FLOOR_DECISIONS) {
|
|
2353
|
+
const oldest = this.floorDecisions.keys().next();
|
|
2354
|
+
if (oldest.done) break;
|
|
2355
|
+
this.floorDecisions.delete(oldest.value);
|
|
2356
|
+
}
|
|
2357
|
+
}
|
|
2358
|
+
floorDecisionFor(auctionId, adUnitCode) {
|
|
2359
|
+
return auctionId && adUnitCode ? this.floorDecisions.get(`${auctionId}:${adUnitCode}`) : void 0;
|
|
2360
|
+
}
|
|
2277
2361
|
setUserId(userId) {
|
|
2278
2362
|
this.config.userId = userId;
|
|
2279
2363
|
}
|
|
@@ -2285,6 +2369,7 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
2285
2369
|
navigate(pageviewId, pageUrl) {
|
|
2286
2370
|
this.disable();
|
|
2287
2371
|
this.slotRefreshIndices.clear();
|
|
2372
|
+
this.floorDecisions.clear();
|
|
2288
2373
|
this.pendingThresholdListeners.clear();
|
|
2289
2374
|
this.config.pageviewId = pageviewId || generateUUID();
|
|
2290
2375
|
if (pageUrl) {
|
|
@@ -2674,13 +2759,32 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
2674
2759
|
}
|
|
2675
2760
|
if (data.bidderOutcomes && Array.isArray(data.bidderOutcomes)) {
|
|
2676
2761
|
protoEvent.bidderOutcomes = data.bidderOutcomes.map(
|
|
2677
|
-
(entry) =>
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2762
|
+
(entry) => {
|
|
2763
|
+
const floor = this.floorDecisionFor(String(data.auctionId || ""), entry.adUnitCode || "");
|
|
2764
|
+
return {
|
|
2765
|
+
...entry,
|
|
2766
|
+
refreshIndex: entry.refreshIndex ?? this.auctionCycleIndex(entry.adUnitCode || ""),
|
|
2767
|
+
...floor ? {
|
|
2768
|
+
floorCents: floor.floorCents,
|
|
2769
|
+
floorSource: FLOOR_SOURCE_PROTO[floor.source],
|
|
2770
|
+
floorTreatmentBp: Math.round(floor.treatment * 1e4)
|
|
2771
|
+
} : {}
|
|
2772
|
+
};
|
|
2773
|
+
}
|
|
2681
2774
|
);
|
|
2682
2775
|
}
|
|
2683
2776
|
const metadata = { ...data.metadata };
|
|
2777
|
+
if (type === TraceEventType.BID_WIN || type === TraceEventType.IMPRESSION) {
|
|
2778
|
+
const floor = this.floorDecisionFor(
|
|
2779
|
+
String(data.auctionId || ""),
|
|
2780
|
+
protoEvent.adUnitCode || ""
|
|
2781
|
+
);
|
|
2782
|
+
if (floor) {
|
|
2783
|
+
if (floor.floorCents !== void 0) metadata.floor_cents = String(floor.floorCents);
|
|
2784
|
+
metadata.floor_source = floor.source;
|
|
2785
|
+
metadata.floor_treatment = floor.treatment.toFixed(2);
|
|
2786
|
+
}
|
|
2787
|
+
}
|
|
2684
2788
|
if (data.error !== void 0 && data.error !== null) {
|
|
2685
2789
|
metadata.error = typeof data.error === "object" && data.error.message ? String(data.error.message) : String(data.error);
|
|
2686
2790
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -317,6 +317,17 @@ var BidderOutcome = {
|
|
|
317
317
|
BIDDER_OUTCOME_NO_RESPONSE: 5,
|
|
318
318
|
UNRECOGNIZED: -1
|
|
319
319
|
};
|
|
320
|
+
var FloorSource = {
|
|
321
|
+
/** FLOOR_SOURCE_UNSPECIFIED - module off, no decision */
|
|
322
|
+
FLOOR_SOURCE_UNSPECIFIED: 0,
|
|
323
|
+
/** FLOOR_SOURCE_STATIC - the publisher's rule, scaled by the treatment */
|
|
324
|
+
FLOOR_SOURCE_STATIC: 1,
|
|
325
|
+
/** FLOOR_SOURCE_POOL - the bid pool's standing bid plus margin */
|
|
326
|
+
FLOOR_SOURCE_POOL: 2,
|
|
327
|
+
/** FLOOR_SOURCE_NONE - module on, but neither term applied */
|
|
328
|
+
FLOOR_SOURCE_NONE: 3,
|
|
329
|
+
UNRECOGNIZED: -1
|
|
330
|
+
};
|
|
320
331
|
function createBaseTraceEventBatch() {
|
|
321
332
|
return {
|
|
322
333
|
propertyId: new Uint8Array(0),
|
|
@@ -719,7 +730,15 @@ var TraceEvent_MetadataEntry = {
|
|
|
719
730
|
}
|
|
720
731
|
};
|
|
721
732
|
function createBaseBidderOutcomeEntry() {
|
|
722
|
-
return {
|
|
733
|
+
return {
|
|
734
|
+
adUnitCode: "",
|
|
735
|
+
outcome: 0,
|
|
736
|
+
bid: void 0,
|
|
737
|
+
refreshIndex: 0,
|
|
738
|
+
floorCents: void 0,
|
|
739
|
+
floorSource: 0,
|
|
740
|
+
floorTreatmentBp: void 0
|
|
741
|
+
};
|
|
723
742
|
}
|
|
724
743
|
var BidderOutcomeEntry = {
|
|
725
744
|
encode(message, writer = new BinaryWriter()) {
|
|
@@ -735,6 +754,15 @@ var BidderOutcomeEntry = {
|
|
|
735
754
|
if (message.refreshIndex !== void 0 && message.refreshIndex !== 0) {
|
|
736
755
|
writer.uint32(56).int32(message.refreshIndex);
|
|
737
756
|
}
|
|
757
|
+
if (message.floorCents !== void 0) {
|
|
758
|
+
writer.uint32(64).int32(message.floorCents);
|
|
759
|
+
}
|
|
760
|
+
if (message.floorSource !== void 0 && message.floorSource !== 0) {
|
|
761
|
+
writer.uint32(72).int32(message.floorSource);
|
|
762
|
+
}
|
|
763
|
+
if (message.floorTreatmentBp !== void 0) {
|
|
764
|
+
writer.uint32(80).int32(message.floorTreatmentBp);
|
|
765
|
+
}
|
|
738
766
|
return writer;
|
|
739
767
|
},
|
|
740
768
|
decode(input, length) {
|
|
@@ -772,6 +800,27 @@ var BidderOutcomeEntry = {
|
|
|
772
800
|
message.refreshIndex = reader.int32();
|
|
773
801
|
continue;
|
|
774
802
|
}
|
|
803
|
+
case 8: {
|
|
804
|
+
if (tag !== 64) {
|
|
805
|
+
break;
|
|
806
|
+
}
|
|
807
|
+
message.floorCents = reader.int32();
|
|
808
|
+
continue;
|
|
809
|
+
}
|
|
810
|
+
case 9: {
|
|
811
|
+
if (tag !== 72) {
|
|
812
|
+
break;
|
|
813
|
+
}
|
|
814
|
+
message.floorSource = reader.int32();
|
|
815
|
+
continue;
|
|
816
|
+
}
|
|
817
|
+
case 10: {
|
|
818
|
+
if (tag !== 80) {
|
|
819
|
+
break;
|
|
820
|
+
}
|
|
821
|
+
message.floorTreatmentBp = reader.int32();
|
|
822
|
+
continue;
|
|
823
|
+
}
|
|
775
824
|
}
|
|
776
825
|
if ((tag & 7) === 4 || tag === 0) {
|
|
777
826
|
break;
|
|
@@ -971,6 +1020,12 @@ var CACHED_BID_TTL_MS = 30 * 60 * 1e3;
|
|
|
971
1020
|
var MAX_CACHED_BID_KEYS = 200;
|
|
972
1021
|
var MAX_IMPRESSION_KEYS = 1e3;
|
|
973
1022
|
var MAX_TRACKED_AUCTIONS = 50;
|
|
1023
|
+
var MAX_FLOOR_DECISIONS = 200;
|
|
1024
|
+
var FLOOR_SOURCE_PROTO = {
|
|
1025
|
+
static: FloorSource.FLOOR_SOURCE_STATIC,
|
|
1026
|
+
pool: FloorSource.FLOOR_SOURCE_POOL,
|
|
1027
|
+
none: FloorSource.FLOOR_SOURCE_NONE
|
|
1028
|
+
};
|
|
974
1029
|
var CLICK_DEDUP_MS = 1e3;
|
|
975
1030
|
var SESSION_KEY = "_bidkernel_session";
|
|
976
1031
|
var SESSION_TS_KEY = "_bidkernel_session_ts";
|
|
@@ -1281,6 +1336,8 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
1281
1336
|
videoDetachCleanups = /* @__PURE__ */ new Set();
|
|
1282
1337
|
// Compacted bidder participation map per auction: auctionId -> Map<`${bidder}:${adUnitCode}`, BidderOutcomeEntry>
|
|
1283
1338
|
auctionBidderOutcomes = /* @__PURE__ */ new Map();
|
|
1339
|
+
// Live Floors decisions: `${auctionId}:${adUnitCode}` -> decision (see recordFloorDecision)
|
|
1340
|
+
floorDecisions = /* @__PURE__ */ new Map();
|
|
1284
1341
|
logger;
|
|
1285
1342
|
// True when this instance owns its session id (none was supplied), so the
|
|
1286
1343
|
// id follows the page-wide session as it lapses and restarts. An id the
|
|
@@ -1476,6 +1533,7 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
1476
1533
|
this.slotEmittedImpressionKeys.clear();
|
|
1477
1534
|
this.slotLastAuctionIds.clear();
|
|
1478
1535
|
this.auctionBidderOutcomes.clear();
|
|
1536
|
+
this.floorDecisions.clear();
|
|
1479
1537
|
if (this.flushTimer) {
|
|
1480
1538
|
clearInterval(this.flushTimer);
|
|
1481
1539
|
this.flushTimer = null;
|
|
@@ -2235,6 +2293,32 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
2235
2293
|
if (eventType === void 0) return;
|
|
2236
2294
|
this.enqueue(eventType, eventName, data, level);
|
|
2237
2295
|
}
|
|
2296
|
+
/**
|
|
2297
|
+
* Record the wrapper's Live Floors decision for an auction and ad unit,
|
|
2298
|
+
* before the auction runs. The decision is stamped on the auction's
|
|
2299
|
+
* outcome entries for the ad unit at auction end and on the win and
|
|
2300
|
+
* impression rows that follow, so every outcome can be split by floor,
|
|
2301
|
+
* source and treatment without a join. Integrations without the module
|
|
2302
|
+
* never call this and their rows carry no floor fields.
|
|
2303
|
+
*/
|
|
2304
|
+
recordFloorDecision(auctionId, adUnitCode, decision) {
|
|
2305
|
+
if (!auctionId || !adUnitCode) return;
|
|
2306
|
+
const key = `${auctionId}:${adUnitCode}`;
|
|
2307
|
+
this.floorDecisions.delete(key);
|
|
2308
|
+
this.floorDecisions.set(key, {
|
|
2309
|
+
floorCents: decision.floorCents !== void 0 && Number.isFinite(decision.floorCents) ? Math.round(decision.floorCents) : void 0,
|
|
2310
|
+
source: decision.source,
|
|
2311
|
+
treatment: Number.isFinite(decision.treatment) ? decision.treatment : 1
|
|
2312
|
+
});
|
|
2313
|
+
while (this.floorDecisions.size > MAX_FLOOR_DECISIONS) {
|
|
2314
|
+
const oldest = this.floorDecisions.keys().next();
|
|
2315
|
+
if (oldest.done) break;
|
|
2316
|
+
this.floorDecisions.delete(oldest.value);
|
|
2317
|
+
}
|
|
2318
|
+
}
|
|
2319
|
+
floorDecisionFor(auctionId, adUnitCode) {
|
|
2320
|
+
return auctionId && adUnitCode ? this.floorDecisions.get(`${auctionId}:${adUnitCode}`) : void 0;
|
|
2321
|
+
}
|
|
2238
2322
|
setUserId(userId) {
|
|
2239
2323
|
this.config.userId = userId;
|
|
2240
2324
|
}
|
|
@@ -2246,6 +2330,7 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
2246
2330
|
navigate(pageviewId, pageUrl) {
|
|
2247
2331
|
this.disable();
|
|
2248
2332
|
this.slotRefreshIndices.clear();
|
|
2333
|
+
this.floorDecisions.clear();
|
|
2249
2334
|
this.pendingThresholdListeners.clear();
|
|
2250
2335
|
this.config.pageviewId = pageviewId || generateUUID();
|
|
2251
2336
|
if (pageUrl) {
|
|
@@ -2635,13 +2720,32 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
2635
2720
|
}
|
|
2636
2721
|
if (data.bidderOutcomes && Array.isArray(data.bidderOutcomes)) {
|
|
2637
2722
|
protoEvent.bidderOutcomes = data.bidderOutcomes.map(
|
|
2638
|
-
(entry) =>
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2723
|
+
(entry) => {
|
|
2724
|
+
const floor = this.floorDecisionFor(String(data.auctionId || ""), entry.adUnitCode || "");
|
|
2725
|
+
return {
|
|
2726
|
+
...entry,
|
|
2727
|
+
refreshIndex: entry.refreshIndex ?? this.auctionCycleIndex(entry.adUnitCode || ""),
|
|
2728
|
+
...floor ? {
|
|
2729
|
+
floorCents: floor.floorCents,
|
|
2730
|
+
floorSource: FLOOR_SOURCE_PROTO[floor.source],
|
|
2731
|
+
floorTreatmentBp: Math.round(floor.treatment * 1e4)
|
|
2732
|
+
} : {}
|
|
2733
|
+
};
|
|
2734
|
+
}
|
|
2642
2735
|
);
|
|
2643
2736
|
}
|
|
2644
2737
|
const metadata = { ...data.metadata };
|
|
2738
|
+
if (type === TraceEventType.BID_WIN || type === TraceEventType.IMPRESSION) {
|
|
2739
|
+
const floor = this.floorDecisionFor(
|
|
2740
|
+
String(data.auctionId || ""),
|
|
2741
|
+
protoEvent.adUnitCode || ""
|
|
2742
|
+
);
|
|
2743
|
+
if (floor) {
|
|
2744
|
+
if (floor.floorCents !== void 0) metadata.floor_cents = String(floor.floorCents);
|
|
2745
|
+
metadata.floor_source = floor.source;
|
|
2746
|
+
metadata.floor_treatment = floor.treatment.toFixed(2);
|
|
2747
|
+
}
|
|
2748
|
+
}
|
|
2645
2749
|
if (data.error !== void 0 && data.error !== null) {
|
|
2646
2750
|
metadata.error = typeof data.error === "object" && data.error.message ? String(data.error.message) : String(data.error);
|
|
2647
2751
|
}
|
package/package.json
CHANGED