@bidkernel/analytics 0.19.0 → 0.20.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 +9 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +33 -39
- package/dist/index.mjs +33 -39
- package/package.json +1 -1
package/dist/analytics.global.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var bidkernelPrebidAnalyticsBundle=(()=>{var B=(i,e)=>()=>(i&&(e=i(i=0)),e);var ft=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports);function yt(){if(typeof window<"u"){let i=window;return i.__bidkernelLogListeners||(i.__bidkernelLogListeners=new Set),i.__bidkernelLogListeners}return pt}function bt(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 G(i){if(typeof i=="string"){let e=i.toUpperCase();if(e==="DEBUG"||e==="INFO"||e==="WARN"||e==="ERROR")return e}return w.INFO}function ne(i){return new te(i)}var w,Ae,N,ht,pt,te,Re=B(()=>{"use strict";w={DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"},Ae={[w.DEBUG]:10,[w.INFO]:20,[w.WARN]:30,[w.ERROR]:40},N={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"},ht=0,pt=new Set;te=class i{_prefix;_level;_loadedAt;_now;_console;_customFormatTime;_listeners=new Set;constructor(e={}){this._prefix=e.prefix??"[bidkernel]",this._level=G(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=G(e)}getLevel(){return this._level}setLevel(e){this._level=G(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=G(e);return(Ae[t]??20)>=(Ae[this._level]??20)}formatTime(e){return this._customFormatTime?this._customFormatTime(e):bt(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=yt();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=G(e);if(!this.isEnabled(r))return;let o=this._getElapsed(),s=this.formatTime(o),d=Date.now(),l={id:`bk_log_${d}_${++ht}`,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 y=N.badge,h=N.event;r===w.WARN?(y=N.badgeWarn,h=N.eventWarn):r===w.ERROR&&(y=N.badgeError,h=N.eventError);let I=`%c${this._prefix}%c ${s} %c${t}%c`,A=[y,N.dim,h,N.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 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 Q(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 ie(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>=X&&(r=r+(n/X|0),n=n%X)}return o(-24,-18),o(-18,-12),o(-12,-6),o(-6),e?Se(n,r):oe(n,r)}function Ce(i,e){let t=oe(i,e),n=t.hi&2147483648;n&&(t=Se(t.lo,t.hi));let r=re(t.lo,t.hi);return n?"-"+r:r}function re(i,e){if({lo:i,hi:e}=gt(i,e),e<=2097151)return String(X*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 gt(i,e){return{lo:i>>>0,hi:e>>>0}}function oe(i,e){return{lo:i|0,hi:e|0}}function Se(i,e){return e=~e,i?i=~i+1:e+=1,oe(i,e)}function se(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 X,_e,de=B(()=>{"use strict";X=4294967296;_e=i=>{let e=String(i);return"0000000".slice(e.length)+e}});function mt(){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),ie(t)},uEnc(t){return typeof t!="string"&&(t=t.toString()),ke(t),ie(t)},dec(t,n){return Ce(t,n)},uDec(t,n){return re(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 D,De=B(()=>{"use strict";de();D=mt()});function ce(){if(globalThis[ae]==null){let i=new globalThis.TextEncoder,e=new globalThis.TextDecoder;globalThis[ae]={encodeUtf8(t){return i.encode(t)},decodeUtf8(t){return e.decode(t)},checkUtf8(t){try{return encodeURIComponent(t),!0}catch{return!1}}}}return globalThis[ae]}var ae,le=B(()=>{"use strict";ae=Symbol.for("@bufbuild/protobuf/text-encoding")});function ue(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>Tt||i<wt)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>Et||i<0)throw new Error("invalid uint32: "+i)}function At(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>It||i<vt))throw new Error("invalid float32: "+i)}var P,It,vt,Et,Tt,wt,V,C,Ue=B(()=>{"use strict";de();De();le();(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"})(P||(P={}));It=34028234663852886e22,vt=-34028234663852886e22,Et=4294967295,Tt=2147483647,wt=-2147483648,V=class{constructor(e=ce().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 ue(e),se(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){At(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){ue(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return ue(e),e=(e<<1^e>>31)>>>0,se(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=D.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=D.uEnc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=D.enc(e);return Q(t.lo,t.hi,this.buf),this}sint64(e){let t=D.enc(e),n=t.hi>>31,r=t.lo<<1^n,o=(t.hi<<1|t.lo>>>31)^n;return Q(r,o,this.buf),this}uint64(e){let t=D.uEnc(e);return Q(t.lo,t.hi,this.buf),this}},C=class{constructor(e,t=ce().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 P.Varint:for(;this.buf[this.pos++]&128;);break;case P.Bit64:this.pos+=4;case P.Bit32:this.pos+=4;break;case P.LengthDelimited:let r=this.uint32();this.pos+=r;break;case P.StartGroup:for(;;){let[o,s]=this.tag();if(s===P.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 D.dec(...this.varint64())}uint64(){return D.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),n=-(e&1);return e=(e>>>1|(t&1)<<31)^n,t=t>>>1^n,D.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 D.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return D.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 Me=B(()=>{"use strict"});var Ne=B(()=>{"use strict"});var Pe=B(()=>{"use strict"});var Ve=B(()=>{"use strict";Ue();Me();le();Ne();Pe()});function Rt(){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 _t(){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 Bt(){return{key:"",value:""}}function Ct(){return{adUnitCode:"",outcome:0,bid:void 0}}function St(){return{bidder:"",cpm:0,currency:"",width:0,height:0,dealId:"",mediaType:"",latencyMs:0,advertiserDomain:"",creativeId:""}}var m,U,fe,Fe,$e,We,Z,he=B(()=>{"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,REFRESH:8,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};fe={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)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 C?i:new C(i),n=e===void 0?t.len:t.pos+e,r=Rt();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 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&&Z.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 C?i:new C(i),n=e===void 0?t.len:t.pos+e,r=_t();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=Z.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 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 C?i:new C(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!==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 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&&Z.encode(i.bid,e.uint32(50).fork()).join(),e},decode(i,e){let t=i instanceof C?i:new C(i),n=e===void 0?t.len:t.pos+e,r=Ct();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=Z.decode(t,t.uint32());continue}}if((o&7)===4||o===0)break;t.skip(o&7)}return r}};Z={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 C?i:new C(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!==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 F(i){if(!i)return new Uint8Array(0);if(Lt.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 Lt,qe,Sn,He=B(()=>{"use strict";Lt=/^[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,Sn=typeof TextDecoder<"u"?new TextDecoder:null});function q(){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 Ht(i){let e="";for(let n=0;n<i.length;n+=8192)e+=String.fromCharCode(...i.subarray(n,n+8192));return btoa(e)}function Gt(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 Kt(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 Yt(i){let e={},t=0;for(let n of Object.keys(i)){if(t>=Ot)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(J.length).split("_");return e.length===2&&/^\d+$/.test(e[0])}function Xt(i,e){if(!i||!e)return!1;try{return new URL(i).origin===new URL(e).origin}catch{return!1}}function ge(i){try{typeof localStorage<"u"&&(localStorage.setItem(Qe,i.toString()),Ie=i)}catch{}}function Xe(){let i=Date.now();M=i,Y&&(i-Ie<Qt||ge(i))}function Zt(){let i=Date.now(),e=!!$&&!!M&&i-M<=ye;try{if(Y&&typeof localStorage<"u"){let t=localStorage.getItem(ze),n=localStorage.getItem(Qe),r=n&&parseInt(n,10)||0;if(t&&r&&i-r<=ye)return ge(i),$=t,M=i,t;let o=e?$:q();return localStorage.setItem(ze,o),ge(i),$=o,M=i,o}}catch{}return $&&M&&i-M<=ye?(M=i,$):($=q(),M=i,$)}function f(i){return String(i??"").replace(/%/g,"%25").replace(/:/g,"%3A")}function Jt(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 en(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 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&&!Xt(l.endpoint||"",a)&&(be.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(y){be.warn("Failed to disable previous analytics instance:",y)}let c=new S(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=en(t);s&&(s.propertyId||e?.propertyId)&&r(s)}catch(s){be.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,xt,K,kt,Dt,pe,Ke,Ot,Ye,J,Ut,Mt,Nt,Pt,Vt,Ft,j,$t,Wt,jt,qt,ze,Qe,ye,$,M,Y,Qt,Ie,me,S,be,Ee=B(()=>{"use strict";Re();he();He();Ge=1e4,xt=50,K=200,kt=300*1e3,Dt=10,pe=32*1024,Ke=1024,Ot=16,Ye="text/plain",J="_bidkernel_pending_",Ut=20,Mt=7200*1e3,Nt=1e4,Pt={auctionStart:m.AUCTION_START,auctionEnd:m.AUCTION_END,bidWin:m.BID_WIN,adRenderFailed:m.AD_RENDER_FAILED,click:m.CLICK,impression:m.IMPRESSION,refresh:m.REFRESH,timeInView:m.TIME_IN_VIEW,viewable:m.VIEWABLE},Vt=3e3,Ft=new Set([m.IMPRESSION,m.BID_WIN,m.CLICK]),j=1800*1e3,$t=200,Wt=1e3,jt=50,qt=1e3,ze="_bidkernel_session",Qe="_bidkernel_session_ts",ye=1800*1e3,$=null,M=0,Y=!0;Qt=60*1e3,Ie=0;me=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=Jt(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}};S=class i{static activeInstances=new Set;static getActiveInstances(){return i.activeInstances}static setStorageAllowed(e){Y=e,Ie=0}static isStorageAllowed(){return Y}config;queue=[];errorCount=0;flushTimer=null;boundFlushBeacon;boundVisibilityChange;isEnabled=!1;boundPbjsHandlers=[];pageUrl="";deduper=new me;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;constructor(e){e.storageAllowed!==void 0&&i.setStorageAllowed(e.storageAllowed);let t=e.endpoint||"",n=!t||Kt(t)?t:"";this.config={endpoint:n,propertyId:e.propertyId||"",pageviewId:e.pageviewId||q(),sessionId:e.sessionId||Zt(),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:Vt},this.logger=ne({prefix:"[bidkernel][prebid-analytics]",logLevel:this.config.logLevel}),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),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(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,emitRefreshEvent:!1})}recordClick(e,t){if(!this.isEnabled||!e)return!1;let n=Date.now();if(n-(this.lastClickAt.get(e)||0)<qt)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:"")||q(),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),n?.emitRefreshEvent!==!1&&this.enqueue(m.REFRESH,"refresh",{auctionId:n?.auctionId||s.auctionId,transactionId:n?.transactionId||s.transactionId,adUnitCode:o,bid:n?.bid??s.bidPayload,metadata:{...n?.metadata,refresh_index:String(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>$t;){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>=Wt;){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>jt;){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",y=n||r,h=(n?this.slotViewabilityRecords.get(n):void 0)||(r?this.slotViewabilityRecords.get(r):void 0),I=y?this.slotLastAuctionIds.get(y)||(h?h.auctionId:void 0):void 0,A=!!(y&&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&&y){this.flushSlotTimeInView(y);let R=(this.slotRefreshIndices.get(y)??(h?h.refreshIndex:0))+1;this.slotRefreshIndices.set(y,R),this.slotLastAuctionIds.set(y,d),h&&(h.refreshIndex=R,h.auctionId=d,h.transactionId=a,h.bidPayload=p,h.viewableFired=!1,h.accumulatedTimeInViewMs=0),this.enqueue(m.REFRESH,"refresh",{auctionId:d,transactionId:a,adUnitCode:y,bid:p,metadata:{...t?.metadata,refresh_index:String(R)}})}else y&&(d&&this.slotLastAuctionIds.set(y,d),this.slotRefreshIndices.has(y)||this.slotRefreshIndices.set(y,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=Pt[t]??(e==="ERROR"?m.ERROR:void 0);r!==void 0&&this.enqueue(r,t,n,e)}setUserId(e){this.config.userId=e}setSessionId(e){this.config.sessionId=e}navigate(e,t){if(this.disable(),this.slotRefreshIndices.clear(),this.pendingThresholdListeners.clear(),this.config.pageviewId=e||q(),t)try{let n=new URL(t);this.pageUrl=n.origin+n.pathname}catch{this.pageUrl=t}else this.pageUrl="";this.logger.resetTiming(),Xe(),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})}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(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===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(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",y=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:y,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 v=(this.slotRefreshIndices.get(n)??(p?p.refreshIndex:0))+1;this.slotRefreshIndices.set(n,v),this.slotLastAuctionIds.set(n,I),p&&(p.refreshIndex=v,p.auctionId=I,p.transactionId=A,p.bidPayload=h,p.viewableFired=!1,p.accumulatedTimeInViewMs=0),this.enqueue(m.REFRESH,"refresh",{auctionId:I,transactionId:A,adUnitCode:n,bid:h,metadata:{refresh_index:String(v)}})}else n&&(I&&this.slotLastAuctionIds.set(n,I),this.slotRefreshIndices.has(n)||this.slotRefreshIndices.set(n,0));let R=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,R,I,h.creativeId)||(n&&this.markImpressionEmitted(n,R,I,h.creativeId),this.enqueue(m.IMPRESSION,"impression",{auctionId:I,transactionId:A,adUnitCode:n,bid:h,metadata:{refresh_index:String(R)}})),this.config.viewabilityEnabled&&typeof document<"u"){let v=n&&this.slotElements.get(n)||null,x=n||e.adId||t.adId;if(!v&&x&&(v=document.getElementById(x)),!v&&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)&&(v=document.getElementById(g.getSlotElementId()),v))break}catch{}if(!v&&x)try{for(let k of Array.from(document.querySelectorAll("[data-ad-slot]")))if(k.getAttribute("data-ad-slot")===x){v=k;break}}catch{}v&&this.observeSlot(v,n||x,{adUnitCode:n,auctionId:I,transactionId:A,mediaType:y,bid:h,refreshIndex:R,emitRefreshEvent:!1})}}isDuplicate(e,t){return this.deduper.isDuplicate(e,t)}enqueue(e,t,n,r){if(!this.isEnabled||!this.shouldSample(e,r))return;Xe();let o={eventId:F(q()),timestampMs:Date.now(),type:e,eventName:e===m.ERROR?t:"",auctionId:F(String(n.auctionId||"")),transactionId:F(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);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=Yt(s);Object.keys(d).length>0&&(o.metadata=d),this.queue.push(o),this.queue.length>=K?(this.flush(),this.queue.length>K&&this.queue.splice(0,this.queue.length-K)):Ft.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>xt?!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>K&&this.queue.splice(0,this.queue.length-K))}drainBatch(){if(this.queue.length===0||!this.config.endpoint)return null;let e=typeof window<"u"?window.location.hostname:"",t=n=>({propertyId:F(this.config.propertyId),pageviewId:F(this.config.pageviewId),sessionId:F(this.config.sessionId),pageUrl:this.pageUrl,country:this.config.country,region:this.config.region,deviceType:this.config.deviceType,userId:F(this.config.userId),domain:e,events:n});for(;;){if(this.queue.length===0)return null;let n=this.queue,r=fe.encode(t(n)).finish();for(;n.length>1&&r.byteLength>pe;)n=n.slice(0,Math.floor(n.length/2)),r=fe.encode(t(n)).finish();if(r.byteLength>pe){let[o]=this.queue.splice(0,1);this.log("WARN",`Dropping oversized event (type ${o?.type}, ${r.byteLength} bytes exceeds the ${pe}-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),kt);this.nextSendAllowedAt=Date.now()+t,this.consecutiveSendFailures<=Dt?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`${J}${encodeURIComponent(this.config.propertyId)}_`}persistBatch(e){if(!Y)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(J)&&t++}if(t>=Ut)return null;let n=`${this.pendingKeyPrefix()}${Date.now()}_${Math.floor(Math.random()*1e6)}`;return localStorage.setItem(n,Ht(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)},Nt))}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(J)||(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>Mt)continue;let d;try{d=Gt(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)}},be=ne({prefix:"[bidkernel]",logLevel:"INFO"})});function tn(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 nt(i,e,t){let n=ee(i),{err:r,message:o,metadata:s}=tn(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 nn(i,e){if(!i||typeof i!="object"||Ze.has(i))return;Ze.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 S.getActiveInstances())try{let o=rt(r,{mediaType:"video"});nt(r,n,{adStarted:!1,adUnitCode:o?.adUnitCode||"video",auctionId:o?.auctionId,transactionId:o?.transactionId,bid:o?.bidTrace})}catch{}})}catch{}}function Je(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 S.getActiveInstances())try{s.attachImaAdsManager(o)}catch{}return o};n.__bidkernelHooked=!0,e.getAdsManager=n}}catch{}}function et(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 S.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 S.getActiveInstances())try{o.attachImaAdsManager(this)}catch{}return t.apply(this,r)};n.__bidkernelHooked=!0,e.start=n}}catch{}}function tt(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(nn(this,t),(r==="adsManagerLoaded"||r===(this?.AdsManagerLoadedEvent?.Type?.ADS_MANAGER_LOADED||"adsManagerLoaded"))&&typeof o=="function"){let d=Te.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 y=l.apply(this,c);if(y)for(let h of S.getActiveInstances())try{h.attachImaAdsManager(y)}catch{}return y},a.getAdsManager.__bidkernelHooked=!0}return o.apply(this,arguments)},Te.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"?Te.get(o):void 0;return t.call(this,r,d||o,...s)};n.__bidkernelHooked=!0,e.removeEventListener=n}}catch{}}function z(i){if(!(!i||typeof i!="object"))try{i.AdsManagerLoadedEvent&&Je(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,Je(o)}})}catch{}}i.AdsLoader&&tt(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,tt(o)}})}catch{}}i.AdsManager&&et(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,et(o)}})}catch{}}}catch{}}function it(){if(typeof window>"u")return;let i=window;if(i.google?.ima&&z(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,z(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&&z(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,z(s)}})}catch{}}}}})}catch{}}}function rt(i,e){let t=ee(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 ot(i,e,t){let n=ee(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=b=>{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=rt(i,{creativeId:b?.creativeId,adId:b?.adId,mediaType:"video"})),u},y=!1,h=b=>{y=!0,n.log("DEBUG","IMA AdEvent.STARTED / IMPRESSION received",b);let u=typeof b?.getAd=="function"?b.getAd():b?.ad,E={};u&&(E.creativeId=(typeof u.getCreativeId=="function"?u.getCreativeId():u.creativeId)||"",E.adId=(typeof u.getAdId=="function"?u.getAdId():u.id)||"",E.title=(typeof u.getTitle=="function"?u.getTitle():u.title)||"",E.duration=typeof u.getDuration=="function"?u.getDuration():u.duration,E.advertiserName=typeof u.getAdvertiserName=="function"?u.getAdvertiserName():"");let _=c(E),O=t?.slotId&&t.slotId!=="video"?t.slotId:t?.adUnitCode&&t.adUnitCode!=="video"?t.adUnitCode:_?.adUnitCode||t?.slotId||t?.adUnitCode||"video",at=t?.adUnitCode&&t.adUnitCode!=="video"?t.adUnitCode:_?.adUnitCode||O,ct=a||_?.auctionId||"",lt=l||_?.transactionId||"",we={..._?.rawBid||t?.bid,mediaType:"video",creativeId:E.creativeId||_?.bidTrace?.creativeId||t?.bid?.creativeId||""};if(n.recordImpression(O,{adUnitCode:at,auctionId:ct,transactionId:lt,mediaType:"video",bid:we,metadata:{...t?.metadata,media_type:"video",...E.title?{ad_title:E.title}:{},...Number.isFinite(E.duration)?{ad_duration_s:String(E.duration)}:{}}})&&t?.onImpression)try{t.onImpression(O,{ad:u,bid:we})}catch(ut){n.log("ERROR","Error in onImpression callback",ut)}},I=b=>{if(n.log("DEBUG",`IMA AdEvent milestone: ${b}`),t?.onMilestone)try{t.onMilestone(b,s)}catch(u){n.log("ERROR","Error in onMilestone callback",u)}},A=b=>{n.log("DEBUG","IMA AdEvent.CLICK received",b);let u=c(),E=t?.adUnitCode&&t.adUnitCode!=="video"?t.adUnitCode:u?.adUnitCode||s;n.enqueue(m.CLICK,"click",{auctionId:a||u?.auctionId,transactionId:l||u?.transactionId,adUnitCode:E,bid:u?.bidTrace||t?.bid,metadata:{...t?.metadata,media_type:"video"}})},p=b=>{let u=c(),E=t?.adUnitCode&&t.adUnitCode!=="video"?t.adUnitCode:u?.adUnitCode||s,_=nt(i,b,{adStarted:y,adUnitCode:E,auctionId:a||u?.auctionId,transactionId:l||u?.transactionId,bid:u?.bidTrace||t?.bid,metadata:t?.metadata});if(t?.onError)try{t.onError(_)}catch(O){n.log("ERROR","Error in onError callback",O)}},T=typeof window<"u"?window.google?.ima:void 0,L=T?.AdEvent?.Type||{},R=T?.AdErrorEvent?.Type||{},v=[{type:L.STARTED||"started",handler:h},{type:L.IMPRESSION||"impression",handler:h},{type:L.FIRST_QUARTILE||"firstQuartile",handler:()=>I("firstQuartile")},{type:L.MIDPOINT||"midpoint",handler:()=>I("midpoint")},{type:L.THIRD_QUARTILE||"thirdQuartile",handler:()=>I("thirdQuartile")},{type:L.COMPLETE||"complete",handler:()=>I("complete")},{type:L.CLICK||"click",handler:A},{type:R.AD_ERROR||"adError",handler:p}],x=new Set,k=[];for(let b of v)x.has(b.type)||(x.add(b.type),k.push(b));for(let{type:b,handler:u}of k)try{e.addEventListener(b,u)}catch{}let g=()=>{r.delete(i);for(let{type:b,handler:u}of k)try{e.removeEventListener(b,u)}catch{}n.videoDetachCleanups.delete(g)};return r.set(i,g),n.videoDetachCleanups.add(g),g}function rn(i,e,t){let n=ee(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 ot(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 y={q1:!1,q2:!1,q3:!1,q4:!1},h=g=>{let b=g||c||(r?.querySelector?r.querySelector("video"):null),u=l(),E={...u?.rawBid||t?.bid,mediaType:"video"};if(n.recordImpression(o,{adUnitCode:s,auctionId:d||u?.auctionId,transactionId:a||u?.transactionId,mediaType:"video",bid:E,metadata:{...t?.metadata,media_type:"video",...b&&Number.isFinite(b.duration)?{video_duration_s:String(Math.round(b.duration))}:{}}})&&t?.onImpression)try{t.onImpression(o,{element:b||r,bid:E})}catch(O){n.log("ERROR","Error in onImpression callback",O)}},I=g=>{n.log("DEBUG","HTML5 video playing event received");let b=g?.target instanceof HTMLVideoElement?g.target:c;h(b)},A=g=>{let b=g?.target instanceof HTMLVideoElement?g.target:c;if(b&&b.currentTime>0&&(h(b),Number.isFinite(b.duration)&&b.duration>0)){let u=b.currentTime/b.duration;u>=.25&&!y.q1&&(y.q1=!0,t?.onMilestone?.("firstQuartile",o)),u>=.5&&!y.q2&&(y.q2=!0,t?.onMilestone?.("midpoint",o)),u>=.75&&!y.q3&&(y.q3=!0,t?.onMilestone?.("thirdQuartile",o))}},p=()=>{y.q4||(y.q4=!0,t?.onMilestone?.("complete",o))},T=g=>{let u=(g?.target instanceof HTMLVideoElement?g.target:c)?.error||c?.error,E=l(),_=u?`HTML5 video error code ${u.code}: ${u.message}`:"Video playback error";if(n.log("WARN",_),n.enqueue(m.AD_RENDER_FAILED,"adRenderFailed",{auctionId:d||E?.auctionId,transactionId:a||E?.transactionId,adUnitCode:s,bid:E?.bidTrace||t?.bid,metadata:{...t?.metadata,reason:"html5_video_error",message:_,...u?.code?{error_code:String(u.code)}:{}},error:u?new Error(_):void 0}),t?.onError)try{t.onError(u)}catch(O){n.log("ERROR","Error in onError callback",O)}},L=g=>{g.addEventListener("playing",I),g.addEventListener("play",I),g.addEventListener("timeupdate",A),g.addEventListener("ended",p),g.addEventListener("error",T)},R=g=>{g.removeEventListener("playing",I),g.removeEventListener("play",I),g.removeEventListener("timeupdate",A),g.removeEventListener("ended",p),g.removeEventListener("error",T)},v=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&&L(c),r&&r.tagName?.toLowerCase()!=="video"&&typeof MutationObserver<"u"&&(v=new MutationObserver(()=>{let g=r.querySelector("video");g&&g!==c&&(c&&R(c),c=g,c&&L(c))}),v.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,emitRefreshEvent:!1});let k=()=>{v&&(v.disconnect(),v=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&&R(c),n.videoDetachCleanups.delete(k)};return n.videoDetachCleanups.add(k),k}var ee,Te,Ze,on,st=B(()=>{"use strict";Ee();he();ee=i=>i,Te=new WeakMap,Ze=new WeakSet;typeof window<"u"&&it();S.prototype.attachImaAdsManager=function(i,e){return ot(this,i,e)};S.prototype.attachVideoPlayer=function(i,e){return rn(this,i,e)};on=S.prototype.enable;S.prototype.enable=function(){on.call(this),typeof window<"u"&&(it(),window.google?.ima&&z(window.google.ima))}});var dn=ft(()=>{Ee();st();var dt="https://by.bidkernel.io/t",sn=window._bidkernelPbjsGlobal||"pbjs";ve(sn,{endpoint:dt});window.bidkernelPrebidAnalytics={...window.bidkernelPrebidAnalytics,register:(i,e)=>ve(i,{endpoint:dt,...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 dn();})();
|
|
1
|
+
"use strict";var bidkernelPrebidAnalyticsBundle=(()=>{var R=(i,e)=>()=>(i&&(e=i(i=0)),e);var ft=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports);function yt(){if(typeof window<"u"){let i=window;return i.__bidkernelLogListeners||(i.__bidkernelLogListeners=new Set),i.__bidkernelLogListeners}return pt}function bt(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 G(i){if(typeof i=="string"){let e=i.toUpperCase();if(e==="DEBUG"||e==="INFO"||e==="WARN"||e==="ERROR")return e}return w.INFO}function ne(i){return new te(i)}var w,Ae,N,ht,pt,te,_e=R(()=>{"use strict";w={DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"},Ae={[w.DEBUG]:10,[w.INFO]:20,[w.WARN]:30,[w.ERROR]:40},N={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"},ht=0,pt=new Set;te=class i{_prefix;_level;_loadedAt;_now;_console;_customFormatTime;_listeners=new Set;constructor(e={}){this._prefix=e.prefix??"[bidkernel]",this._level=G(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=G(e)}getLevel(){return this._level}setLevel(e){this._level=G(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=G(e);return(Ae[t]??20)>=(Ae[this._level]??20)}formatTime(e){return this._customFormatTime?this._customFormatTime(e):bt(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=yt();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=G(e);if(!this.isEnabled(r))return;let o=this._getElapsed(),s=this.formatTime(o),d=Date.now(),l={id:`bk_log_${d}_${++ht}`,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=N.badge,h=N.event;r===w.WARN?(b=N.badgeWarn,h=N.eventWarn):r===w.ERROR&&(b=N.badgeError,h=N.eventError);let m=`%c${this._prefix}%c ${s} %c${t}%c`,A=[b,N.dim,h,N.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 Q(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 ie(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>=X&&(r=r+(n/X|0),n=n%X)}return o(-24,-18),o(-18,-12),o(-12,-6),o(-6),e?Le(n,r):oe(n,r)}function Ce(i,e){let t=oe(i,e),n=t.hi&2147483648;n&&(t=Le(t.lo,t.hi));let r=re(t.lo,t.hi);return n?"-"+r:r}function re(i,e){if({lo:i,hi:e}=gt(i,e),e<=2097151)return String(X*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()+Re(s)+Re(o)}function gt(i,e){return{lo:i>>>0,hi:e>>>0}}function oe(i,e){return{lo:i|0,hi:e|0}}function Le(i,e){return e=~e,i?i=~i+1:e+=1,oe(i,e)}function se(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 Se(){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 X,Re,de=R(()=>{"use strict";X=4294967296;Re=i=>{let e=String(i);return"0000000".slice(e.length)+e}});function mt(){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),ie(t)},uEnc(t){return typeof t!="string"&&(t=t.toString()),ke(t),ie(t)},dec(t,n){return Ce(t,n)},uDec(t,n){return re(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 D,De=R(()=>{"use strict";de();D=mt()});function ce(){if(globalThis[ae]==null){let i=new globalThis.TextEncoder,e=new globalThis.TextDecoder;globalThis[ae]={encodeUtf8(t){return i.encode(t)},decodeUtf8(t){return e.decode(t)},checkUtf8(t){try{return encodeURIComponent(t),!0}catch{return!1}}}}return globalThis[ae]}var ae,le=R(()=>{"use strict";ae=Symbol.for("@bufbuild/protobuf/text-encoding")});function ue(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>Et||i<wt)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>Tt||i<0)throw new Error("invalid uint32: "+i)}function At(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>It||i<vt))throw new Error("invalid float32: "+i)}var P,It,vt,Tt,Et,wt,V,B,Me=R(()=>{"use strict";de();De();le();(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"})(P||(P={}));It=34028234663852886e22,vt=-34028234663852886e22,Tt=4294967295,Et=2147483647,wt=-2147483648,V=class{constructor(e=ce().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 ue(e),se(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){At(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){ue(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return ue(e),e=(e<<1^e>>31)>>>0,se(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=D.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=D.uEnc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=D.enc(e);return Q(t.lo,t.hi,this.buf),this}sint64(e){let t=D.enc(e),n=t.hi>>31,r=t.lo<<1^n,o=(t.hi<<1|t.lo>>>31)^n;return Q(r,o,this.buf),this}uint64(e){let t=D.uEnc(e);return Q(t.lo,t.hi,this.buf),this}},B=class{constructor(e,t=ce().decodeUtf8){this.decodeUtf8=t,this.varint64=Be,this.uint32=Se,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 P.Varint:for(;this.buf[this.pos++]&128;);break;case P.Bit64:this.pos+=4;case P.Bit32:this.pos+=4;break;case P.LengthDelimited:let r=this.uint32();this.pos+=r;break;case P.StartGroup:for(;;){let[o,s]=this.tag();if(s===P.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 D.dec(...this.varint64())}uint64(){return D.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),n=-(e&1);return e=(e>>>1|(t&1)<<31)^n,t=t>>>1^n,D.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 D.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return D.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=R(()=>{"use strict"});var Ne=R(()=>{"use strict"});var Pe=R(()=>{"use strict"});var Ve=R(()=>{"use strict";Me();Ue();le();Ne();Pe()});function _t(){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 Rt(){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 Bt(){return{key:"",value:""}}function Ct(){return{adUnitCode:"",outcome:0,bid:void 0,refreshIndex:0}}function Lt(){return{bidder:"",cpm:0,currency:"",width:0,height:0,dealId:"",mediaType:"",latencyMs:0,advertiserDomain:"",creativeId:""}}var I,M,fe,Fe,$e,We,Z,he=R(()=>{"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},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};fe={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)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=_t();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 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&&Z.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=Rt();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=Z.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 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 B?i:new B(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!==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 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&&Z.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=Ct();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=Z.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}};Z={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 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.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 F(i){if(!i)return new Uint8Array(0);if(St.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 St,qe,Ln,He=R(()=>{"use strict";St=/^[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,Ln=typeof TextDecoder<"u"?new TextDecoder:null});function q(){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 Ht(i){let e="";for(let n=0;n<i.length;n+=8192)e+=String.fromCharCode(...i.subarray(n,n+8192));return btoa(e)}function Gt(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 Kt(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 Yt(i){let e={},t=0;for(let n of Object.keys(i)){if(t>=Ot)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(J.length).split("_");return e.length===2&&/^\d+$/.test(e[0])}function Xt(i,e){if(!i||!e)return!1;try{return new URL(i).origin===new URL(e).origin}catch{return!1}}function ge(i){try{typeof localStorage<"u"&&(localStorage.setItem(Qe,i.toString()),Ie=i)}catch{}}function Xe(){let i=Date.now();U=i,Y&&(i-Ie<Qt||ge(i))}function Zt(){let i=Date.now(),e=!!$&&!!U&&i-U<=ye;try{if(Y&&typeof localStorage<"u"){let t=localStorage.getItem(ze),n=localStorage.getItem(Qe),r=n&&parseInt(n,10)||0;if(t&&r&&i-r<=ye)return ge(i),$=t,U=i,t;let o=e?$:q();return localStorage.setItem(ze,o),ge(i),$=o,U=i,o}}catch{}return $&&U&&i-U<=ye?(U=i,$):($=q(),U=i,$)}function f(i){return String(i??"").replace(/%/g,"%25").replace(/:/g,"%3A")}function Jt(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 en(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 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&&!Xt(l.endpoint||"",a)&&(be.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){be.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=en(t);s&&(s.propertyId||e?.propertyId)&&r(s)}catch(s){be.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,xt,K,kt,Dt,pe,Ke,Ot,Ye,J,Mt,Ut,Nt,Pt,Vt,Ft,j,$t,Wt,jt,qt,ze,Qe,ye,$,U,Y,Qt,Ie,me,C,be,Te=R(()=>{"use strict";_e();he();He();Ge=1e4,xt=50,K=200,kt=300*1e3,Dt=10,pe=32*1024,Ke=1024,Ot=16,Ye="text/plain",J="_bidkernel_pending_",Mt=20,Ut=7200*1e3,Nt=1e4,Pt={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},Vt=3e3,Ft=new Set([I.IMPRESSION,I.BID_WIN,I.CLICK]),j=1800*1e3,$t=200,Wt=1e3,jt=50,qt=1e3,ze="_bidkernel_session",Qe="_bidkernel_session_ts",ye=1800*1e3,$=null,U=0,Y=!0;Qt=60*1e3,Ie=0;me=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=Jt(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){Y=e,Ie=0}static isStorageAllowed(){return Y}config;queue=[];errorCount=0;flushTimer=null;boundFlushBeacon;boundVisibilityChange;isEnabled=!1;boundPbjsHandlers=[];pageUrl="";deduper=new me;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;constructor(e){e.storageAllowed!==void 0&&i.setStorageAllowed(e.storageAllowed);let t=e.endpoint||"",n=!t||Kt(t)?t:"";this.config={endpoint:n,propertyId:e.propertyId||"",pageviewId:e.pageviewId||q(),sessionId:e.sessionId||Zt(),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:Vt},this.logger=ne({prefix:"[bidkernel][prebid-analytics]",logLevel:this.config.logLevel}),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),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)<qt)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:"")||q(),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>$t;){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>=Wt;){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>jt;){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 S=(this.slotRefreshIndices.get(b)??(h?h.refreshIndex:0))+1;this.slotRefreshIndices.set(b,S),this.slotLastAuctionIds.set(b,d),h&&(h.refreshIndex=S,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=Pt[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}navigate(e,t){if(this.disable(),this.slotRefreshIndices.clear(),this.pendingThresholdListeners.clear(),this.config.pageviewId=e||q(),t)try{let n=new URL(t);this.pageUrl=n.origin+n.pathname}catch{this.pageUrl=t}else this.pageUrl="";this.logger.resetTiming(),Xe(),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: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(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===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(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 S=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,S,m,h.creativeId)||(n&&this.markImpressionEmitted(n,S,m,h.creativeId),this.enqueue(I.IMPRESSION,"impression",{auctionId:m,transactionId:A,adUnitCode:n,bid:h,metadata:{refresh_index:String(S)}})),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:S})}}isDuplicate(e,t){return this.deduper.isDuplicate(e,t)}enqueue(e,t,n,r){if(!this.isEnabled||!this.shouldSample(e,r))return;Xe();let o={eventId:F(q()),timestampMs:Date.now(),type:e,eventName:e===I.ERROR?t:"",auctionId:F(String(n.auctionId||"")),transactionId:F(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=Yt(s);Object.keys(d).length>0&&(o.metadata=d),this.queue.push(o),this.queue.length>=K?(this.flush(),this.queue.length>K&&this.queue.splice(0,this.queue.length-K)):Ft.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>xt?!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>K&&this.queue.splice(0,this.queue.length-K))}drainBatch(){if(this.queue.length===0||!this.config.endpoint)return null;let e=typeof window<"u"?window.location.hostname:"",t=n=>({propertyId:F(this.config.propertyId),pageviewId:F(this.config.pageviewId),sessionId:F(this.config.sessionId),pageUrl:this.pageUrl,country:this.config.country,region:this.config.region,deviceType:this.config.deviceType,userId:F(this.config.userId),domain:e,events:n});for(;;){if(this.queue.length===0)return null;let n=this.queue,r=fe.encode(t(n)).finish();for(;n.length>1&&r.byteLength>pe;)n=n.slice(0,Math.floor(n.length/2)),r=fe.encode(t(n)).finish();if(r.byteLength>pe){let[o]=this.queue.splice(0,1);this.log("WARN",`Dropping oversized event (type ${o?.type}, ${r.byteLength} bytes exceeds the ${pe}-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),kt);this.nextSendAllowedAt=Date.now()+t,this.consecutiveSendFailures<=Dt?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`${J}${encodeURIComponent(this.config.propertyId)}_`}persistBatch(e){if(!Y)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(J)&&t++}if(t>=Mt)return null;let n=`${this.pendingKeyPrefix()}${Date.now()}_${Math.floor(Math.random()*1e6)}`;return localStorage.setItem(n,Ht(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)},Nt))}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(J)||(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>Ut)continue;let d;try{d=Gt(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)}},be=ne({prefix:"[bidkernel]",logLevel:"INFO"})});function tn(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 nt(i,e,t){let n=ee(i),{err:r,message:o,metadata:s}=tn(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 nn(i,e){if(!i||typeof i!="object"||Ze.has(i))return;Ze.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=rt(r,{mediaType:"video"});nt(r,n,{adStarted:!1,adUnitCode:o?.adUnitCode||"video",auctionId:o?.auctionId,transactionId:o?.transactionId,bid:o?.bidTrace})}catch{}})}catch{}}function Je(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 et(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 tt(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(nn(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 z(i){if(!(!i||typeof i!="object"))try{i.AdsManagerLoadedEvent&&Je(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,Je(o)}})}catch{}}i.AdsLoader&&tt(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,tt(o)}})}catch{}}i.AdsManager&&et(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,et(o)}})}catch{}}}catch{}}function it(){if(typeof window>"u")return;let i=window;if(i.google?.ima&&z(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,z(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&&z(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,z(s)}})}catch{}}}}})}catch{}}}function rt(i,e){let t=ee(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 ot(i,e,t){let n=ee(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=rt(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 _=c(v),O=t?.slotId&&t.slotId!=="video"?t.slotId:t?.adUnitCode&&t.adUnitCode!=="video"?t.adUnitCode:_?.adUnitCode||t?.slotId||t?.adUnitCode||"video",at=t?.adUnitCode&&t.adUnitCode!=="video"?t.adUnitCode:_?.adUnitCode||O,ct=a||_?.auctionId||"",lt=l||_?.transactionId||"",we={..._?.rawBid||t?.bid,mediaType:"video",creativeId:v.creativeId||_?.bidTrace?.creativeId||t?.bid?.creativeId||""};if(n.recordImpression(O,{adUnitCode:at,auctionId:ct,transactionId:lt,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(O,{ad:u,bid:we})}catch(ut){n.log("ERROR","Error in onImpression callback",ut)}},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,_=nt(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(_)}catch(O){n.log("ERROR","Error in onError callback",O)}},E=typeof window<"u"?window.google?.ima:void 0,L=E?.AdEvent?.Type||{},S=E?.AdErrorEvent?.Type||{},T=[{type:L.STARTED||"started",handler:h},{type:L.IMPRESSION||"impression",handler:h},{type:L.FIRST_QUARTILE||"firstQuartile",handler:()=>m("firstQuartile")},{type:L.MIDPOINT||"midpoint",handler:()=>m("midpoint")},{type:L.THIRD_QUARTILE||"thirdQuartile",handler:()=>m("thirdQuartile")},{type:L.COMPLETE||"complete",handler:()=>m("complete")},{type:L.CLICK||"click",handler:A},{type:S.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 rn(i,e,t){let n=ee(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 ot(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(O){n.log("ERROR","Error in onImpression callback",O)}},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(),_=u?`HTML5 video error code ${u.code}: ${u.message}`:"Video playback error";if(n.log("WARN",_),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:_,...u?.code?{error_code:String(u.code)}:{}},error:u?new Error(_):void 0}),t?.onError)try{t.onError(u)}catch(O){n.log("ERROR","Error in onError callback",O)}},L=g=>{g.addEventListener("playing",m),g.addEventListener("play",m),g.addEventListener("timeupdate",A),g.addEventListener("ended",p),g.addEventListener("error",E)},S=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&&L(c),r&&r.tagName?.toLowerCase()!=="video"&&typeof MutationObserver<"u"&&(T=new MutationObserver(()=>{let g=r.querySelector("video");g&&g!==c&&(c&&S(c),c=g,c&&L(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&&S(c),n.videoDetachCleanups.delete(k)};return n.videoDetachCleanups.add(k),k}var ee,Ee,Ze,on,st=R(()=>{"use strict";Te();he();ee=i=>i,Ee=new WeakMap,Ze=new WeakSet;typeof window<"u"&&it();C.prototype.attachImaAdsManager=function(i,e){return ot(this,i,e)};C.prototype.attachVideoPlayer=function(i,e){return rn(this,i,e)};on=C.prototype.enable;C.prototype.enable=function(){on.call(this),typeof window<"u"&&(it(),window.google?.ima&&z(window.google.ima))}});var dn=ft(()=>{Te();st();var dt="https://by.bidkernel.io/t",sn=window._bidkernelPbjsGlobal||"pbjs";ve(sn,{endpoint:dt});window.bidkernelPrebidAnalytics={...window.bidkernelPrebidAnalytics,register:(i,e)=>ve(i,{endpoint:dt,...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 dn();})();
|
package/dist/index.d.mts
CHANGED
|
@@ -69,7 +69,6 @@ interface SlotObserveOptions {
|
|
|
69
69
|
bid?: any;
|
|
70
70
|
metadata?: Record<string, string>;
|
|
71
71
|
refreshIndex?: number;
|
|
72
|
-
emitRefreshEvent?: boolean;
|
|
73
72
|
}
|
|
74
73
|
interface CachedWinningBid {
|
|
75
74
|
bidTrace: BidTrace;
|
|
@@ -257,6 +256,15 @@ declare class BidkernelPrebidAnalytics {
|
|
|
257
256
|
navigate(pageviewId: string, pageUrl: string): void;
|
|
258
257
|
private handleAuctionInit;
|
|
259
258
|
private handleAuctionEnd;
|
|
259
|
+
/**
|
|
260
|
+
* The render cycle an auction ending now would fill for an ad unit: 0 for
|
|
261
|
+
* a slot that has never rendered on this pageview, otherwise one past the
|
|
262
|
+
* cycle it last rendered. The index only advances when a creative renders,
|
|
263
|
+
* so two unfilled refresh auctions in a row report the same cycle; both
|
|
264
|
+
* count as refreshes, which is the point. Stamped on AUCTION_END bidder
|
|
265
|
+
* outcomes in enqueue; there is no per-refresh event.
|
|
266
|
+
*/
|
|
267
|
+
private auctionCycleIndex;
|
|
260
268
|
private handleBidRequested;
|
|
261
269
|
private handleBidResponse;
|
|
262
270
|
private handleBidTimeout;
|
package/dist/index.d.ts
CHANGED
|
@@ -69,7 +69,6 @@ interface SlotObserveOptions {
|
|
|
69
69
|
bid?: any;
|
|
70
70
|
metadata?: Record<string, string>;
|
|
71
71
|
refreshIndex?: number;
|
|
72
|
-
emitRefreshEvent?: boolean;
|
|
73
72
|
}
|
|
74
73
|
interface CachedWinningBid {
|
|
75
74
|
bidTrace: BidTrace;
|
|
@@ -257,6 +256,15 @@ declare class BidkernelPrebidAnalytics {
|
|
|
257
256
|
navigate(pageviewId: string, pageUrl: string): void;
|
|
258
257
|
private handleAuctionInit;
|
|
259
258
|
private handleAuctionEnd;
|
|
259
|
+
/**
|
|
260
|
+
* The render cycle an auction ending now would fill for an ad unit: 0 for
|
|
261
|
+
* a slot that has never rendered on this pageview, otherwise one past the
|
|
262
|
+
* cycle it last rendered. The index only advances when a creative renders,
|
|
263
|
+
* so two unfilled refresh auctions in a row report the same cycle; both
|
|
264
|
+
* count as refreshes, which is the point. Stamped on AUCTION_END bidder
|
|
265
|
+
* outcomes in enqueue; there is no per-refresh event.
|
|
266
|
+
*/
|
|
267
|
+
private auctionCycleIndex;
|
|
260
268
|
private handleBidRequested;
|
|
261
269
|
private handleBidResponse;
|
|
262
270
|
private handleBidTimeout;
|
package/dist/index.js
CHANGED
|
@@ -334,7 +334,6 @@ var TraceEventType = {
|
|
|
334
334
|
VIEWABLE: 6,
|
|
335
335
|
/** TIME_IN_VIEW - accumulated in-viewport duration (once per render cycle end) */
|
|
336
336
|
TIME_IN_VIEW: 7,
|
|
337
|
-
REFRESH: 8,
|
|
338
337
|
ERROR: 9,
|
|
339
338
|
SLOT_DEFINED: 10,
|
|
340
339
|
SLOT_DESTROYED: 11,
|
|
@@ -757,7 +756,7 @@ var TraceEvent_MetadataEntry = {
|
|
|
757
756
|
}
|
|
758
757
|
};
|
|
759
758
|
function createBaseBidderOutcomeEntry() {
|
|
760
|
-
return { adUnitCode: "", outcome: 0, bid: void 0 };
|
|
759
|
+
return { adUnitCode: "", outcome: 0, bid: void 0, refreshIndex: 0 };
|
|
761
760
|
}
|
|
762
761
|
var BidderOutcomeEntry = {
|
|
763
762
|
encode(message, writer = new import_wire.BinaryWriter()) {
|
|
@@ -770,6 +769,9 @@ var BidderOutcomeEntry = {
|
|
|
770
769
|
if (message.bid !== void 0) {
|
|
771
770
|
BidTrace.encode(message.bid, writer.uint32(50).fork()).join();
|
|
772
771
|
}
|
|
772
|
+
if (message.refreshIndex !== void 0 && message.refreshIndex !== 0) {
|
|
773
|
+
writer.uint32(56).int32(message.refreshIndex);
|
|
774
|
+
}
|
|
773
775
|
return writer;
|
|
774
776
|
},
|
|
775
777
|
decode(input, length) {
|
|
@@ -800,6 +802,13 @@ var BidderOutcomeEntry = {
|
|
|
800
802
|
message.bid = BidTrace.decode(reader, reader.uint32());
|
|
801
803
|
continue;
|
|
802
804
|
}
|
|
805
|
+
case 7: {
|
|
806
|
+
if (tag !== 56) {
|
|
807
|
+
break;
|
|
808
|
+
}
|
|
809
|
+
message.refreshIndex = reader.int32();
|
|
810
|
+
continue;
|
|
811
|
+
}
|
|
803
812
|
}
|
|
804
813
|
if ((tag & 7) === 4 || tag === 0) {
|
|
805
814
|
break;
|
|
@@ -986,7 +995,6 @@ var EVENT_NAME_TO_TYPE = {
|
|
|
986
995
|
adRenderFailed: TraceEventType.AD_RENDER_FAILED,
|
|
987
996
|
click: TraceEventType.CLICK,
|
|
988
997
|
impression: TraceEventType.IMPRESSION,
|
|
989
|
-
refresh: TraceEventType.REFRESH,
|
|
990
998
|
timeInView: TraceEventType.TIME_IN_VIEW,
|
|
991
999
|
viewable: TraceEventType.VIEWABLE
|
|
992
1000
|
};
|
|
@@ -1650,8 +1658,7 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
1650
1658
|
const record = this.slotViewabilityRecords.get(slotId);
|
|
1651
1659
|
if (record && record.element !== element) {
|
|
1652
1660
|
this.observeSlot(element, slotId, {
|
|
1653
|
-
refreshIndex: record.refreshIndex
|
|
1654
|
-
emitRefreshEvent: false
|
|
1661
|
+
refreshIndex: record.refreshIndex
|
|
1655
1662
|
});
|
|
1656
1663
|
}
|
|
1657
1664
|
}
|
|
@@ -1839,18 +1846,6 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
1839
1846
|
this.flushSlotTimeInView(resolvedSlotId);
|
|
1840
1847
|
const nextRefreshIndex = options?.refreshIndex !== void 0 ? options.refreshIndex : (this.slotRefreshIndices.get(resolvedSlotId) ?? existing.refreshIndex) + 1;
|
|
1841
1848
|
this.slotRefreshIndices.set(resolvedSlotId, nextRefreshIndex);
|
|
1842
|
-
if (options?.emitRefreshEvent !== false) {
|
|
1843
|
-
this.enqueue(TraceEventType.REFRESH, "refresh", {
|
|
1844
|
-
auctionId: options?.auctionId || existing.auctionId,
|
|
1845
|
-
transactionId: options?.transactionId || existing.transactionId,
|
|
1846
|
-
adUnitCode: resolvedSlotId,
|
|
1847
|
-
bid: options?.bid ?? existing.bidPayload,
|
|
1848
|
-
metadata: {
|
|
1849
|
-
...options?.metadata,
|
|
1850
|
-
refresh_index: String(nextRefreshIndex)
|
|
1851
|
-
}
|
|
1852
|
-
});
|
|
1853
|
-
}
|
|
1854
1849
|
if (existing.dwellTimer) {
|
|
1855
1850
|
clearTimeout(existing.dwellTimer);
|
|
1856
1851
|
existing.dwellTimer = null;
|
|
@@ -2113,16 +2108,6 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
2113
2108
|
rec.viewableFired = false;
|
|
2114
2109
|
rec.accumulatedTimeInViewMs = 0;
|
|
2115
2110
|
}
|
|
2116
|
-
this.enqueue(TraceEventType.REFRESH, "refresh", {
|
|
2117
|
-
auctionId,
|
|
2118
|
-
transactionId,
|
|
2119
|
-
adUnitCode: targetSlot,
|
|
2120
|
-
bid: bidTrace,
|
|
2121
|
-
metadata: {
|
|
2122
|
-
...options?.metadata,
|
|
2123
|
-
refresh_index: String(nextRefreshIndex)
|
|
2124
|
-
}
|
|
2125
|
-
});
|
|
2126
2111
|
} else if (targetSlot) {
|
|
2127
2112
|
if (auctionId) {
|
|
2128
2113
|
this.slotLastAuctionIds.set(targetSlot, auctionId);
|
|
@@ -2298,6 +2283,19 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
2298
2283
|
bidderOutcomes
|
|
2299
2284
|
});
|
|
2300
2285
|
}
|
|
2286
|
+
/**
|
|
2287
|
+
* The render cycle an auction ending now would fill for an ad unit: 0 for
|
|
2288
|
+
* a slot that has never rendered on this pageview, otherwise one past the
|
|
2289
|
+
* cycle it last rendered. The index only advances when a creative renders,
|
|
2290
|
+
* so two unfilled refresh auctions in a row report the same cycle; both
|
|
2291
|
+
* count as refreshes, which is the point. Stamped on AUCTION_END bidder
|
|
2292
|
+
* outcomes in enqueue; there is no per-refresh event.
|
|
2293
|
+
*/
|
|
2294
|
+
auctionCycleIndex(adUnitCode) {
|
|
2295
|
+
if (!adUnitCode) return 0;
|
|
2296
|
+
const last = this.slotRefreshIndices.get(adUnitCode) ?? this.slotViewabilityRecords.get(adUnitCode)?.refreshIndex;
|
|
2297
|
+
return last === void 0 ? 0 : last + 1;
|
|
2298
|
+
}
|
|
2301
2299
|
handleBidRequested(data) {
|
|
2302
2300
|
if (this.isDuplicate("bidRequested", data)) return;
|
|
2303
2301
|
this.log("DEBUG", "bidRequested", data);
|
|
@@ -2507,13 +2505,6 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
2507
2505
|
record.viewableFired = false;
|
|
2508
2506
|
record.accumulatedTimeInViewMs = 0;
|
|
2509
2507
|
}
|
|
2510
|
-
this.enqueue(TraceEventType.REFRESH, "refresh", {
|
|
2511
|
-
auctionId: resolvedAuctionId,
|
|
2512
|
-
transactionId: resolvedTransactionId,
|
|
2513
|
-
adUnitCode,
|
|
2514
|
-
bid: bidTrace,
|
|
2515
|
-
metadata: { refresh_index: String(nextRefreshIndex) }
|
|
2516
|
-
});
|
|
2517
2508
|
} else if (adUnitCode) {
|
|
2518
2509
|
if (resolvedAuctionId) {
|
|
2519
2510
|
this.slotLastAuctionIds.set(adUnitCode, resolvedAuctionId);
|
|
@@ -2589,8 +2580,7 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
2589
2580
|
transactionId: resolvedTransactionId,
|
|
2590
2581
|
mediaType: resolvedMediaType,
|
|
2591
2582
|
bid: bidTrace,
|
|
2592
|
-
refreshIndex: currentRefreshIndex
|
|
2593
|
-
emitRefreshEvent: false
|
|
2583
|
+
refreshIndex: currentRefreshIndex
|
|
2594
2584
|
});
|
|
2595
2585
|
}
|
|
2596
2586
|
}
|
|
@@ -2635,7 +2625,12 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
2635
2625
|
protoEvent.viewableDurationMs = Number.isFinite(data.viewableDurationMs) ? data.viewableDurationMs : 0;
|
|
2636
2626
|
}
|
|
2637
2627
|
if (data.bidderOutcomes && Array.isArray(data.bidderOutcomes)) {
|
|
2638
|
-
protoEvent.bidderOutcomes = data.bidderOutcomes
|
|
2628
|
+
protoEvent.bidderOutcomes = data.bidderOutcomes.map(
|
|
2629
|
+
(entry) => ({
|
|
2630
|
+
...entry,
|
|
2631
|
+
refreshIndex: entry.refreshIndex ?? this.auctionCycleIndex(entry.adUnitCode || "")
|
|
2632
|
+
})
|
|
2633
|
+
);
|
|
2639
2634
|
}
|
|
2640
2635
|
const metadata = { ...data.metadata };
|
|
2641
2636
|
if (data.error !== void 0 && data.error !== null) {
|
|
@@ -3764,8 +3759,7 @@ function attachVideoPlayer(analytics, target, options) {
|
|
|
3764
3759
|
transactionId: transactionId || cachedInitial?.transactionId,
|
|
3765
3760
|
mediaType: "video",
|
|
3766
3761
|
bid: cachedInitial?.bidTrace || options?.bid,
|
|
3767
|
-
metadata: options?.metadata
|
|
3768
|
-
emitRefreshEvent: false
|
|
3762
|
+
metadata: options?.metadata
|
|
3769
3763
|
});
|
|
3770
3764
|
}
|
|
3771
3765
|
const cleanup = () => {
|
package/dist/index.mjs
CHANGED
|
@@ -297,7 +297,6 @@ var TraceEventType = {
|
|
|
297
297
|
VIEWABLE: 6,
|
|
298
298
|
/** TIME_IN_VIEW - accumulated in-viewport duration (once per render cycle end) */
|
|
299
299
|
TIME_IN_VIEW: 7,
|
|
300
|
-
REFRESH: 8,
|
|
301
300
|
ERROR: 9,
|
|
302
301
|
SLOT_DEFINED: 10,
|
|
303
302
|
SLOT_DESTROYED: 11,
|
|
@@ -720,7 +719,7 @@ var TraceEvent_MetadataEntry = {
|
|
|
720
719
|
}
|
|
721
720
|
};
|
|
722
721
|
function createBaseBidderOutcomeEntry() {
|
|
723
|
-
return { adUnitCode: "", outcome: 0, bid: void 0 };
|
|
722
|
+
return { adUnitCode: "", outcome: 0, bid: void 0, refreshIndex: 0 };
|
|
724
723
|
}
|
|
725
724
|
var BidderOutcomeEntry = {
|
|
726
725
|
encode(message, writer = new BinaryWriter()) {
|
|
@@ -733,6 +732,9 @@ var BidderOutcomeEntry = {
|
|
|
733
732
|
if (message.bid !== void 0) {
|
|
734
733
|
BidTrace.encode(message.bid, writer.uint32(50).fork()).join();
|
|
735
734
|
}
|
|
735
|
+
if (message.refreshIndex !== void 0 && message.refreshIndex !== 0) {
|
|
736
|
+
writer.uint32(56).int32(message.refreshIndex);
|
|
737
|
+
}
|
|
736
738
|
return writer;
|
|
737
739
|
},
|
|
738
740
|
decode(input, length) {
|
|
@@ -763,6 +765,13 @@ var BidderOutcomeEntry = {
|
|
|
763
765
|
message.bid = BidTrace.decode(reader, reader.uint32());
|
|
764
766
|
continue;
|
|
765
767
|
}
|
|
768
|
+
case 7: {
|
|
769
|
+
if (tag !== 56) {
|
|
770
|
+
break;
|
|
771
|
+
}
|
|
772
|
+
message.refreshIndex = reader.int32();
|
|
773
|
+
continue;
|
|
774
|
+
}
|
|
766
775
|
}
|
|
767
776
|
if ((tag & 7) === 4 || tag === 0) {
|
|
768
777
|
break;
|
|
@@ -949,7 +958,6 @@ var EVENT_NAME_TO_TYPE = {
|
|
|
949
958
|
adRenderFailed: TraceEventType.AD_RENDER_FAILED,
|
|
950
959
|
click: TraceEventType.CLICK,
|
|
951
960
|
impression: TraceEventType.IMPRESSION,
|
|
952
|
-
refresh: TraceEventType.REFRESH,
|
|
953
961
|
timeInView: TraceEventType.TIME_IN_VIEW,
|
|
954
962
|
viewable: TraceEventType.VIEWABLE
|
|
955
963
|
};
|
|
@@ -1613,8 +1621,7 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
1613
1621
|
const record = this.slotViewabilityRecords.get(slotId);
|
|
1614
1622
|
if (record && record.element !== element) {
|
|
1615
1623
|
this.observeSlot(element, slotId, {
|
|
1616
|
-
refreshIndex: record.refreshIndex
|
|
1617
|
-
emitRefreshEvent: false
|
|
1624
|
+
refreshIndex: record.refreshIndex
|
|
1618
1625
|
});
|
|
1619
1626
|
}
|
|
1620
1627
|
}
|
|
@@ -1802,18 +1809,6 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
1802
1809
|
this.flushSlotTimeInView(resolvedSlotId);
|
|
1803
1810
|
const nextRefreshIndex = options?.refreshIndex !== void 0 ? options.refreshIndex : (this.slotRefreshIndices.get(resolvedSlotId) ?? existing.refreshIndex) + 1;
|
|
1804
1811
|
this.slotRefreshIndices.set(resolvedSlotId, nextRefreshIndex);
|
|
1805
|
-
if (options?.emitRefreshEvent !== false) {
|
|
1806
|
-
this.enqueue(TraceEventType.REFRESH, "refresh", {
|
|
1807
|
-
auctionId: options?.auctionId || existing.auctionId,
|
|
1808
|
-
transactionId: options?.transactionId || existing.transactionId,
|
|
1809
|
-
adUnitCode: resolvedSlotId,
|
|
1810
|
-
bid: options?.bid ?? existing.bidPayload,
|
|
1811
|
-
metadata: {
|
|
1812
|
-
...options?.metadata,
|
|
1813
|
-
refresh_index: String(nextRefreshIndex)
|
|
1814
|
-
}
|
|
1815
|
-
});
|
|
1816
|
-
}
|
|
1817
1812
|
if (existing.dwellTimer) {
|
|
1818
1813
|
clearTimeout(existing.dwellTimer);
|
|
1819
1814
|
existing.dwellTimer = null;
|
|
@@ -2076,16 +2071,6 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
2076
2071
|
rec.viewableFired = false;
|
|
2077
2072
|
rec.accumulatedTimeInViewMs = 0;
|
|
2078
2073
|
}
|
|
2079
|
-
this.enqueue(TraceEventType.REFRESH, "refresh", {
|
|
2080
|
-
auctionId,
|
|
2081
|
-
transactionId,
|
|
2082
|
-
adUnitCode: targetSlot,
|
|
2083
|
-
bid: bidTrace,
|
|
2084
|
-
metadata: {
|
|
2085
|
-
...options?.metadata,
|
|
2086
|
-
refresh_index: String(nextRefreshIndex)
|
|
2087
|
-
}
|
|
2088
|
-
});
|
|
2089
2074
|
} else if (targetSlot) {
|
|
2090
2075
|
if (auctionId) {
|
|
2091
2076
|
this.slotLastAuctionIds.set(targetSlot, auctionId);
|
|
@@ -2261,6 +2246,19 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
2261
2246
|
bidderOutcomes
|
|
2262
2247
|
});
|
|
2263
2248
|
}
|
|
2249
|
+
/**
|
|
2250
|
+
* The render cycle an auction ending now would fill for an ad unit: 0 for
|
|
2251
|
+
* a slot that has never rendered on this pageview, otherwise one past the
|
|
2252
|
+
* cycle it last rendered. The index only advances when a creative renders,
|
|
2253
|
+
* so two unfilled refresh auctions in a row report the same cycle; both
|
|
2254
|
+
* count as refreshes, which is the point. Stamped on AUCTION_END bidder
|
|
2255
|
+
* outcomes in enqueue; there is no per-refresh event.
|
|
2256
|
+
*/
|
|
2257
|
+
auctionCycleIndex(adUnitCode) {
|
|
2258
|
+
if (!adUnitCode) return 0;
|
|
2259
|
+
const last = this.slotRefreshIndices.get(adUnitCode) ?? this.slotViewabilityRecords.get(adUnitCode)?.refreshIndex;
|
|
2260
|
+
return last === void 0 ? 0 : last + 1;
|
|
2261
|
+
}
|
|
2264
2262
|
handleBidRequested(data) {
|
|
2265
2263
|
if (this.isDuplicate("bidRequested", data)) return;
|
|
2266
2264
|
this.log("DEBUG", "bidRequested", data);
|
|
@@ -2470,13 +2468,6 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
2470
2468
|
record.viewableFired = false;
|
|
2471
2469
|
record.accumulatedTimeInViewMs = 0;
|
|
2472
2470
|
}
|
|
2473
|
-
this.enqueue(TraceEventType.REFRESH, "refresh", {
|
|
2474
|
-
auctionId: resolvedAuctionId,
|
|
2475
|
-
transactionId: resolvedTransactionId,
|
|
2476
|
-
adUnitCode,
|
|
2477
|
-
bid: bidTrace,
|
|
2478
|
-
metadata: { refresh_index: String(nextRefreshIndex) }
|
|
2479
|
-
});
|
|
2480
2471
|
} else if (adUnitCode) {
|
|
2481
2472
|
if (resolvedAuctionId) {
|
|
2482
2473
|
this.slotLastAuctionIds.set(adUnitCode, resolvedAuctionId);
|
|
@@ -2552,8 +2543,7 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
2552
2543
|
transactionId: resolvedTransactionId,
|
|
2553
2544
|
mediaType: resolvedMediaType,
|
|
2554
2545
|
bid: bidTrace,
|
|
2555
|
-
refreshIndex: currentRefreshIndex
|
|
2556
|
-
emitRefreshEvent: false
|
|
2546
|
+
refreshIndex: currentRefreshIndex
|
|
2557
2547
|
});
|
|
2558
2548
|
}
|
|
2559
2549
|
}
|
|
@@ -2598,7 +2588,12 @@ var BidkernelPrebidAnalytics = class _BidkernelPrebidAnalytics {
|
|
|
2598
2588
|
protoEvent.viewableDurationMs = Number.isFinite(data.viewableDurationMs) ? data.viewableDurationMs : 0;
|
|
2599
2589
|
}
|
|
2600
2590
|
if (data.bidderOutcomes && Array.isArray(data.bidderOutcomes)) {
|
|
2601
|
-
protoEvent.bidderOutcomes = data.bidderOutcomes
|
|
2591
|
+
protoEvent.bidderOutcomes = data.bidderOutcomes.map(
|
|
2592
|
+
(entry) => ({
|
|
2593
|
+
...entry,
|
|
2594
|
+
refreshIndex: entry.refreshIndex ?? this.auctionCycleIndex(entry.adUnitCode || "")
|
|
2595
|
+
})
|
|
2596
|
+
);
|
|
2602
2597
|
}
|
|
2603
2598
|
const metadata = { ...data.metadata };
|
|
2604
2599
|
if (data.error !== void 0 && data.error !== null) {
|
|
@@ -3727,8 +3722,7 @@ function attachVideoPlayer(analytics, target, options) {
|
|
|
3727
3722
|
transactionId: transactionId || cachedInitial?.transactionId,
|
|
3728
3723
|
mediaType: "video",
|
|
3729
3724
|
bid: cachedInitial?.bidTrace || options?.bid,
|
|
3730
|
-
metadata: options?.metadata
|
|
3731
|
-
emitRefreshEvent: false
|
|
3725
|
+
metadata: options?.metadata
|
|
3732
3726
|
});
|
|
3733
3727
|
}
|
|
3734
3728
|
const cleanup = () => {
|
package/package.json
CHANGED