{"version":3,"sources":["prebid.js","iiq.js","pricing.js","https://adncdn.net/0"],"names":["window","document","URL_PATHS_BLACKLIST","Object","freeze","adsConfig","id","size","position","isLazyLoaded","refreshIteration","sizeMapping","desktop","tablet","mobile","refreshTime","biddersWhiteList","appnexus","magnite","msft","pubmatic","rubicon","openx","unruly","country","adagio","adyoulike","amx","anyclip","contxtful","conversant","criteo","exco","fluct","gamoshi","ix","kueezrtb","medianet","oms","onetag","pixfuture","programmaticx","richaudience","rise","seedtag","sharethrough","smartadserver","smilewanted","sovrn","sparteo","ssp_geniee","teads","underdogmedia","vidazoo","yandex","getCountry","bidders","bidder","params","tagId","networkId","org","pubId","accountId","siteId","zoneId","unit","delDomain","cId","pId","site_id","filter","name","toLowerCase","replace","includes","bidderSettings","storageAllowed","adnimation","sonobi","taboola","bidderNames","endsWith","map","s2sBidders","s2sAliases","fromEntries","slice","GDPR_GEOS","needsGdpr","async","maxMs","Promise","resolve","start","Date","now","check","__tcfapi","setTimeout","isGdprRequired","pbjsConfig","s2sConfig","enabled","endpoint","syncEndpoint","timeout","extPrebid","aliases","priceGranularity","currency","adServerCurrency","conversionRateFile","defaultRates","USD","EUR","ratesTTL","floors","enforcement","enforceJS","enforcePBS","floorDeals","bidAdjustment","data","skipRate","schema","fields","values","banner","native","video","default","gvlMapping","amxS2S","magniteS2S","riseS2S","kueezrtbS2S","adagioS2S","consentManagement","gdpr","cmpApi","defaultGdprScope","actionTimeout","usp","useBidCache","schain","validation","config","ver","complete","nodes","asi","sid","hp","userSync","iframeEnabled","filterSettings","iframe","userIds","storage","type","expires","pid","partner","refreshInSeconds","detectMissingSizes","aliasSyncEnabled","auctionOptions","suppressStaleRender","version","customer","realTimeData","dataProviders","waitForIt","adServerTargeting","gtag","dataLayer","push","arguments","pbjs","que","googletag","cmd","pubads","addEventListener","onImpressionViewable","setConfig","collapseDiv","_taboola","GA_ID","PREBID_TIMEOUT_MS","createScript","src","preCreate","scriptEl","querySelector","console","warn","attemptLoad","createElement","fetchPriority","defer","remove","head","appendChild","pathname","location","some","path","isBlacklistedUrl","all","then","log","handleSlotRenderEnded","removeEventListener","IntentIqObject","intentIq_2072952453","adnpbjs","callback","main","timeoutInMillis","ABTestingConfigurationSource","manualWinReportEnabled","domainName","host","vrBrowserBlackList","gamParameterName","onEvent","reportExternalWin","biddingPlatformId","partnerAuctionId","auctionId","bidderCode","prebidAuctionId","cpm","originalCpm","originalCurrency","status","placementId","adUnitCode","err","error","initIiq","catch","setAttribute","adUnits","slotsMap","lazyLoader","constructor","margin","this","observer","IntersectionObserver","onIntersect","rootMargin","entries","forEach","entry","isIntersecting","cb","target","dataset","lazyCallback","unobserve","add","element","getBoundingClientRect","top","innerHeight","cbName","Math","random","toString","observe","activeSlotIds","newPbjsAdUnits","viewportType","screen","width","event","slot","slotId","getSlotElementId","adUnitPath","getAdUnitPath","adUnit","timeoutMs","adUnitToRefresh","getSlots","at","targeting","slotEl","getElementById","runBids","refresh","message","refreshAd","collectAds","length","adsEl","querySelectorAll","adPath","adpath","sizes","slotBidders","ATF","Content","BTF","Side","SideATF","Sticky","publisherId","seedtagConf","adUnitId","placement","Content2","STANDARD_SIZES","prebidSizes","viewport","Array","isArray","standardSizes","every","w","h","isNative","sw","sh","hasOnlyStandardSizes","bids","code","mediaTypes","setBidderConfig","ortb2","source","ext","pbjsBids","requestBids","adUnitCodes","bidsBackHandler","setTargetingForGPTAsync","runPrebidBids","allSettled","promise","ms","race","_","reject","Error","e","createNativeCmd","onload","performance","mark","destroyNativeCmd","footerEl","innerHTML","createNative","createAd","slotName","addSize","build","defineSlot","defineSizeMapping","addService","intent_iq_group","pbjsAdUnit","find","addAdUnits","init","enableServices","display","getConfig","disableInitialLoad","createAdCmd","destroyAd","destroySlots","idx","indexOf","splice","removeAttribute","parentElement","destroyAdCmd","createInterstitial","createInterstitialCmd","getIpInfo","cached","localStorage","getItem","JSON","parse","url","res","fetch","ok","ipInfo","json","setItem","stringify","removeItem","adn","destroyNative","observeSlots","handleAdded","node","getAttribute","handleRemoved","isAdSlot","hasAttribute","nodeList","from","nodeType","Node","ELEMENT_NODE","flatMap","concat","MutationObserver","mutations","mutation","addedNodes","removedNodes","attributeName","isStyleChanged","oldStyle","oldValue","newStyle","isVisibilityChanged","style","getComputedStyle","isDisplayed","isVisible","visibility","subtree","childList","attributes","attributeFilter","attributeOldValue","defineOutOfPageSlot","enums","OutOfPageFormat","INTERSTITIAL","callbacks","interval","setInterval","readyState","clearInterval","onDomReady","innerWidth","addCloseButton","stickyBannerSizeDiv","el","innerText","right","height","color","borderRadius","backgroundColor","cursor","fontSize","textAlign","classList","onclick","append","stickyBannerParent","justifyContent","bottom","zIndex","stickyBanner","onpage","body","flag","isEmpty","createStickyBanner","old","relaxOverflowFor","p","hops","cs","overflowX","overflowY","overflow","textContent","muts","m","n","HTMLElement","matches","documentElement","ensureAdCenteringCSS","heading","marginTop","marginBottom","minHeight","insertAdjacentElement","addTopAdUnits","addInContentRecipeHeaderAdUnits","addInContentRecipeFooterAdUnits","addAtfUnit","addSideRecipeUnit","container","addHomeSidebarUnit","href","isHome","isCategory","elements","divElement","boxSizing","scriptElement","text","parentNode","insertBefore","injectTaboolaFooterFeed","anchor","injectTaboolaSPLITArticleFooterFeed","postContent","closest","parent","nextSibling","injectTaboolaArticleFooterFeed","stack"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5HA;ACAA;CCCA,eAAgBA,EAAQC,GAMtB,MAAMC,EAAsBC,OAAOC,OAAO,CAExC,OACA,SACA,6BAGIC,EAAYF,OAAOC,OAAO,CAC9B,6CAA8C,CAC1CE,GAAM,6CACNC,KAAQ,CACJ,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,IACN,CAAC,IAAK,IACN,CAAC,IAAK,MAEVC,SAAY,MACZC,cAAgB,EAChBC,iBAAoB,EACpBC,YAAe,CACXC,QAAW,CACP,CAAC,IAAK,KACN,CAAC,IAAK,KAEVC,OAAU,CACN,CAAC,IAAK,KAEVC,OAAU,CACN,CAAC,IAAK,KACN,CAAC,IAAK,OAGdC,YAAe,KAEnB,uDAAwD,CACpDT,GAAM,uDACNC,KAAQ,CACJ,CAAC,IAAK,IACN,CAAC,IAAK,KACN,CAAC,IAAK,IACN,CAAC,IAAK,KAEVC,SAAY,SACZC,cAAgB,EAChBC,iBAAoB,EACpBC,YAAe,CACXC,QAAW,CACP,CAAC,IAAK,IACN,CAAC,IAAK,KAEVC,OA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","file":"uk33T41VoN","sourcesContent":[null,null,null,"// Last updated: 2026-10-15T10:13:57.153Z by unknown\r\n(async function(window, document) {\r\n\r\n// ----------------------------------------------\r\n  // Configuration\r\n  // ----------------------------------------------\r\n\r\n  const URL_PATHS_BLACKLIST = Object.freeze([\r\n    // Add a list of URL paths to exclude 👇\r\n    \"קורס\",\r\n    \"course\",\r\n    \"%D7%A7%D7%95%D7%A8%D7%A1\",\r\n  ]);\r\n\r\n  const adsConfig = Object.freeze({\r\n    \"/339474670,23317619946/HenInTheKitchen/ATF\": {\r\n        \"id\": \"/339474670,23317619946/HenInTheKitchen/ATF\",\r\n        \"size\": [\r\n            [300, 250],\r\n            [336, 280],\r\n            [728, 90],\r\n            [970, 90],\r\n            [970, 250]\r\n        ],\r\n        \"position\": \"ATF\",\r\n        \"isLazyLoaded\": false,\r\n        \"refreshIteration\": 0,\r\n        \"sizeMapping\": {\r\n            \"desktop\": [\r\n                [970, 250], \r\n                [970, 90], \r\n            ],\r\n            \"tablet\": [\r\n                [728, 90]\r\n            ],\r\n            \"mobile\": [\r\n                [300, 250],\r\n                [336, 280]\r\n            ]\r\n        },\r\n        \"refreshTime\": 30000\r\n    },\r\n    \"/339474670,23317619946/HenInTheKitchen/Sticky_Footer\": {\r\n        \"id\": \"/339474670,23317619946/HenInTheKitchen/Sticky_Footer\",\r\n        \"size\": [\r\n            [320, 50],\r\n            [320, 100],\r\n            [728, 90],\r\n            [970, 90]\r\n        ],\r\n        \"position\": \"Sticky\",\r\n        \"isLazyLoaded\": false,\r\n        \"refreshIteration\": 0,\r\n        \"sizeMapping\": {\r\n            \"desktop\": [\r\n                [728, 90],\r\n                [970, 90]\r\n            ],\r\n            \"tablet\": [\r\n                [728, 90]\r\n            ],\r\n            \"mobile\": [\r\n                [320, 50],\r\n                [320, 100]\r\n            ]\r\n        },\r\n        \"refreshTime\": 45000\r\n    },\r\n    \"/339474670,23317619946/HenInTheKitchen/Slim_0\": {\r\n        \"id\": \"/339474670,23317619946/HenInTheKitchen/Slim_0\",\r\n        \"size\": [\r\n            [120, 600],\r\n            [160, 600]\r\n        ],\r\n        \"position\": \"Side\",\r\n        \"isLazyLoaded\": true,\r\n        \"refreshIteration\": 0,\r\n        \"sizeMapping\": {\r\n            \"desktop\": [\r\n                [120, 600],\r\n                [160, 600]\r\n            ],\r\n            \"tablet\": [\r\n                [120, 600],\r\n            ],\r\n            \"mobile\": []\r\n        },\r\n        \"refreshTime\": 30000\r\n    },\r\n    \"/339474670,23317619946/HenInTheKitchen/Top\": {\r\n        \"id\": \"/339474670,23317619946/HenInTheKitchen/Top\",\r\n        \"size\": [\r\n            [300, 250],\r\n            [336, 280],\r\n            [728, 90]\r\n        ],\r\n        \"position\": \"Content\",\r\n        \"isLazyLoaded\": true,\r\n        \"refreshIteration\": 0,\r\n        \"sizeMapping\": {\r\n            \"desktop\": [\r\n                [728, 90],\r\n            ],\r\n            \"tablet\": [\r\n                [728, 90],\r\n            ],\r\n            \"mobile\": [\r\n                [300, 250],\r\n                [336, 280]\r\n            ]\r\n        },\r\n        \"refreshTime\": 30000\r\n    },\r\n    \"/339474670,23317619946/HenInTheKitchen/Content_0\": {\r\n        \"id\": \"/339474670,23317619946/HenInTheKitchen/Content_0\",\r\n        \"size\": [\r\n            [300, 250],\r\n            [336, 280],\r\n            [728, 90]\r\n        ],\r\n        \"position\": \"Content\",\r\n        \"isLazyLoaded\": true,\r\n        \"refreshIteration\": 0,\r\n        \"sizeMapping\": {\r\n            \"desktop\": [\r\n                [728, 90],\r\n            ],\r\n            \"tablet\": [\r\n                [728, 90],\r\n            ],\r\n            \"mobile\": [\r\n                [300, 250],\r\n                [336, 280]\r\n            ]\r\n        },\r\n        \"refreshTime\": 30000\r\n    },\r\n    \"/339474670,23317619946/HenInTheKitchen/Content_1\": {\r\n        \"id\": \"/339474670,23317619946/HenInTheKitchen/Content_1\",\r\n        \"size\": [\r\n            [300, 250],\r\n            [336, 280],\r\n            [728, 90]\r\n        ],\r\n        \"position\": \"Content\",\r\n        \"isLazyLoaded\": true,\r\n        \"refreshIteration\": 0,\r\n        \"sizeMapping\": {\r\n            \"desktop\": [\r\n                [728, 90],\r\n            ],\r\n            \"tablet\": [\r\n                [728, 90],\r\n            ],\r\n            \"mobile\": [\r\n                [300, 250],\r\n                [336, 280]\r\n            ]\r\n        },\r\n        \"refreshTime\": 30000\r\n    },\r\n    \"/339474670,23317619946/HenInTheKitchen/Content_2\": {\r\n        \"id\": \"/339474670,23317619946/HenInTheKitchen/Content_2\",\r\n        \"size\": [\r\n            [300, 250],\r\n            [336, 280],\r\n            [728, 90]\r\n        ],\r\n        \"position\": \"Content\",\r\n        \"isLazyLoaded\": true,\r\n        \"refreshIteration\": 0,\r\n        \"sizeMapping\": {\r\n            \"desktop\": [\r\n                [728, 90],\r\n            ],\r\n            \"tablet\": [\r\n                [728, 90],\r\n            ],\r\n            \"mobile\": [\r\n                [300, 250],\r\n                [336, 280]\r\n            ]\r\n        },\r\n        \"refreshTime\": 30000\r\n    }\r\n});\r\n\r\n  const biddersWhiteList = Object.freeze({\r\n    \"appnexus\":[\"US\",\"GB\",\"CA\",\"IL\",\"JP\",\"AU\",\"NZ\",\"IN\",\"BR\",\"ID\",\"EG\",\"AE\",\"SA\",\"AR\",\"CL\",\"MY\",\"PH\",\"PT\",\"HK\",\"SG\",\"NL\",\"BE\",\"IE\",\"NO\",\"SE\",\"FI\",\"DK\",\"CH\",\"DE\",\"TR\",\"PL\",\"RO\",\"CZ\",\"ZA\"],\r\n    \"magnite\":[\"US\",\"GB\",\"IL\",\"PS\",\"TR\",\"CA\",\"DE\",\"GH\",\"ZA\",\"FR\",\"ES\",\"IT\",\"AU\",\"NZ\",\"IN\",\"MX\",\"PL\",\"EC\",\"KR\",\"UA\",\"SA\",\"NL\",\"BE\",\"BD\",\"AE\",\"SG\",\"AM\",\"JP\",\"BR\",\"NG\",\"TH\",\"MY\",\"HK\",\"UZ\",\"SE\",\"AT\",\"PH\",\"VN\",\"CL\",\"IE\",\"CH\",\"NO\",\"FI\",\"DK\",\"PT\"],\r\n    \"msft\":[\"US\",\"GB\",\"CA\",\"IL\",\"JP\",\"AU\",\"NZ\",\"IN\",\"BR\",\"ID\",\"EG\",\"AE\",\"SA\",\"AR\",\"CL\",\"MY\",\"PH\",\"PT\",\"HK\",\"SG\",\"NL\",\"BE\",\"IE\",\"NO\",\"SE\",\"FI\",\"DK\",\"CH\",\"DE\",\"TR\",\"PL\",\"RO\",\"CZ\",\"ZA\"],\r\n    \"pubmatic\":[\"US\",\"CA\",\"GB\",\"IE\",\"AU\",\"NZ\",\"DE\",\"AT\",\"CH\",\"NL\",\"BE\",\"NO\",\"SE\",\"FI\",\"DK\",\"IL\",\"PR\"],\r\n    \"rubicon\":[\"US\",\"GB\",\"IL\",\"PS\",\"TR\",\"CA\",\"DE\",\"GH\",\"ZA\",\"FR\",\"ES\",\"IT\",\"AU\",\"NZ\",\"IN\",\"MX\",\"PL\",\"EC\",\"KR\",\"UA\",\"SA\",\"NL\",\"BE\",\"BD\",\"AE\",\"SG\",\"AM\",\"JP\",\"BR\",\"NG\",\"TH\",\"MY\",\"HK\",\"UZ\",\"SE\",\"AT\",\"PH\",\"VN\",\"CL\",\"IE\",\"CH\",\"NO\",\"FI\",\"DK\",\"PT\"],\r\n    \"openx\":[\"US\",\"CA\"],\r\n    \"unruly\":[\"US\",\"GB\"],\r\n  });\r\n\r\n  const biddersBlackList = Object.freeze({\r\n    \"33across\":[\"GH\",\"GB\",\"CA\",\"DE\",\"NL\",\"IL\",\"SG\",\"AU\",\"IT\",\"FR\"],\r\n    \"adagio\":[\"FR\",\"IL\",\"GB\",\"AU\",\"BE\",\"CH\",\"PH\",\"DE\",\"CN\",\"SG\"],\r\n    \"adyoulike\":[\"IL\",\"CA\",\"CN\",\"SG\",\"GB\",\"AU\",\"ZA\",\"FR\",\"IN\",\"PK\"],\r\n    \"amx\":[\"NL\",\"ID\",\"IT\",\"PH\",\"CN\",\"ES\",\"BE\",\"SO\",\"CH\",\"BR\"],\r\n    \"anyclip\":[\"GH\",\"US\",\"GB\",\"IT\",\"CA\",\"FR\",\"AT\",\"BR\",\"DE\",\"DK\"],\r\n    \"appnexus\":[\"DE\",\"CA\",\"GB\",\"FR\",\"ID\",\"AU\",\"PH\",\"BR\",\"TH\",\"SG\"],\r\n    \"contxtful\":[\"IL\",\"IN\",\"GB\",\"ID\",\"SG\",\"KR\",\"CN\",\"PH\",\"DE\",\"TH\"],\r\n    \"conversant\":[\"IL\",\"IN\",\"KR\",\"PH\",\"TH\",\"JP\",\"VN\",\"PK\",\"CN\",\"EG\"],\r\n    \"criteo\":[\"CN\",\"BD\",\"BY\",\"KZ\",\"AR\",\"MA\",\"CY\",\"CO\",\"BG\",\"CI\"],\r\n    \"exco\":[\"US\",\"SG\",\"GB\",\"DE\",\"CA\",\"AU\",\"IT\",\"PL\",\"CN\",\"BR\"],\r\n    \"fluct\":[\"US\",\"CA\",\"HK\",\"JP\",\"SG\",\"GB\",\"AU\",\"DE\",\"CN\",\"TW\"],\r\n    \"gamoshi\":[\"US\",\"GB\",\"CA\",\"DE\",\"AU\",\"PH\",\"IT\",\"SG\",\"CN\",\"MY\"],\r\n    \"ix\":[\"CN\",\"PL\",\"IE\",\"FI\",\"DK\",\"AT\",\"GR\",\"AR\",\"MA\",\"PT\"],\r\n    \"kueezrtb\":[\"IT\",\"CN\",\"ES\",\"BE\",\"UA\",\"PH\",\"CH\",\"TH\",\"SE\",\"BY\"],\r\n    \"magnite\":[\"NL\",\"IT\",\"CN\",\"BE\",\"SO\",\"CH\",\"ES\",\"UA\",\"BR\",\"PL\"],\r\n    \"medianet\":[\"CN\",\"CH\",\"MY\",\"UA\",\"VN\",\"BD\",\"AE\",\"PK\",\"TR\",\"BY\"],\r\n    \"msft\":[\"CN\",\"SO\",\"SG\",\"UA\",\"PH\",\"BY\",\"KZ\",\"KE\",\"IN\",\"IT\"],\r\n    \"oms\":[\"SG\",\"IN\",\"IL\",\"NL\",\"ID\",\"KR\",\"IT\",\"PH\",\"TH\",\"CH\"],\r\n    \"onetag\":[\"CN\",\"PL\",\"BD\",\"GR\",\"SE\",\"PK\",\"CY\",\"RO\",\"AT\",\"PT\"],\r\n    \"openx\":[\"DE\",\"NL\",\"CN\",\"IT\",\"BE\",\"SO\",\"JP\",\"ES\",\"PH\",\"SE\"],\r\n    \"pixfuture\":[\"DE\",\"CN\",\"AU\",\"FR\",\"SG\",\"TH\",\"PH\",\"ID\",\"BR\",\"JP\"],\r\n    \"programmaticx\":[\"FR\",\"SG\",\"IL\",\"GB\",\"ID\",\"IN\",\"KR\",\"DE\",\"PH\",\"JP\"],\r\n    \"richaudience\":[\"IN\",\"GB\",\"CN\",\"PK\",\"DE\",\"BD\",\"BR\",\"ZA\",\"FR\",\"TW\"],\r\n    \"rise\":[\"FR\",\"SG\",\"IN\",\"GB\",\"DE\",\"ID\",\"AU\",\"PH\",\"KR\",\"CN\"],\r\n    \"rubicon\":[\"IL\",\"CA\",\"MY\",\"GH\",\"SG\",\"AU\",\"PR\",\"GB\",\"CN\",\"DE\"],\r\n    \"seedtag\":[\"CN\",\"PH\",\"NG\",\"IN\",\"NO\",\"AT\",\"MA\",\"DK\",\"MY\",\"CI\"],\r\n    \"sharethrough\":[\"FR\",\"SG\",\"IL\",\"GB\",\"DE\",\"BE\",\"CH\",\"BR\",\"NL\",\"IT\"],\r\n    \"smartadserver\":[\"US\",\"SO\",\"GB\",\"IL\",\"CA\",\"KE\",\"SE\",\"NO\",\"NL\",\"CN\"],\r\n    \"smilewanted\":[\"DE\",\"ID\",\"CN\",\"PH\",\"NL\",\"SE\",\"IT\",\"TH\",\"CH\",\"ES\"],\r\n    \"sovrn\":[\"NL\",\"SG\",\"IT\",\"CN\",\"ES\",\"SE\",\"VN\",\"MY\",\"NG\",\"MX\"],\r\n    \"sparteo\":[\"CN\",\"PK\",\"BD\",\"RO\",\"FI\",\"CZ\",\"DZ\",\"NO\",\"HU\",\"DK\"],\r\n    \"ssp_geniee\":[\"IL\",\"GB\",\"DE\",\"NL\",\"ID\",\"IN\",\"KR\",\"IT\",\"CN\",\"ZA\"],\r\n    \"teads\":[\"CN\",\"CA\",\"SG\",\"IL\",\"AU\",\"GB\",\"FR\",\"TH\",\"DE\",\"PH\"],\r\n    \"underdogmedia\":[\"SO\",\"US\",\"CA\",\"ZA\",\"undefined\"],\r\n    \"unruly\":[\"IN\",\"ID\",\"DE\",\"AU\",\"PH\",\"KR\",\"CN\",\"SG\",\"TH\",\"JP\"],\r\n    \"vidazoo\":[\"FR\",\"SG\",\"GB\",\"IN\",\"ID\",\"DE\",\"PH\",\"CN\",\"SO\",\"TH\"],\r\n    \"yandex\":[\"IL\",\"US\",\"CA\",\"DE\",\"UA\",\"AU\",\"GB\",\"BG\",\"KZ\",\"LV\"]\r\n  });\r\n\r\n  const country = await getCountry();\r\n\r\n  const isBidderAllowed = ({ bidder }) => {\r\n    const name = bidder?.toLowerCase().replace(/s2s$/, '');\r\n    const whiteOk = !biddersWhiteList[name] || biddersWhiteList[name].includes(country);\r\n    // const blackOk = !biddersBlackList[name] || !biddersBlackList[name].includes(country);\r\n    return whiteOk;\r\n  };\r\n\r\n  const bidders = ([\r\n    \r\n    // Removing bidders based on ticket - 8/18/26\r\n    // {bidder: 'smilewanted', params: {zoneId: 'adnimation.com_hb_display',}},\r\n    // {bidder: 'contxtful',params: {placementId: 'p101162'}}, \r\n    // {bidder: \"sharethrough\", params: {pkey: \"Rc9gmOraFfIgz0qyl9jD8Dnx\"}}, \r\n    // {bidder: \"unruly\", params: {siteId: 233835}},\r\n    // {bidder: \"unrulyS2S\", params: {siteId: 233835}},   \r\n    // {bidder: \"kueezrtb\", params: {cId: \"6877b4d6645ac161cba9d2d9\", pId: \"68664d91db6072ca044c9abb\"}},\r\n\r\n    {bidder: \"amx\", params: {tagId: \"YWRuaW1hdGlvbi5jb20\"}},\r\n    {bidder: \"amxS2S\", params: {tagId: \"9k5RSyLDj\"}},    \r\n    {bidder: 'sparteo',params: {networkId: '2b124411-dc3b-4083-998e-84c8175f32cf'}},\r\n    {bidder: 'rise', params: {org: '67dae7b0eee76c00011b7cab',}},\r\n    {bidder: 'riseS2S', params: {org: '67dae7b0eee76c00011b7cab',}},    \r\n    {bidder: 'onetag',params: {pubId: '62d98ebd4882fb0'}},\r\n    {bidder: 'onetagS2S',params: {pubId: '62d98ebd4882fb0'}},    \r\n    {bidder: \"magniteS2S\", params: {accountId: 24664, siteId: 611683, zoneId: 3960055}},\r\n    {bidder: \"magnite\", params: {accountId: 24664, siteId: 611683, zoneId: 3960053}},    \r\n    {bidder: \"openx\", params: {unit: \"564014412\", delDomain: \"adnimation-d.openx.net\"}},\r\n    {bidder: \"openxS2S\", params: {unit: \"564014413\", delDomain: \"adnimation-d.openx.net\"}},\r\n    {bidder: \"adnimation\", params: {cId: \"6a05a0dccd19709c3f9fc14c\", pId: \"67wc13i392832d0041613hm9\"}},   \r\n    {bidder: 'conversant', params: { site_id: '268145'}},                \r\n\r\n    ]).filter(isBidderAllowed);\r\n\r\n  const bidderSettings = Object.freeze({\r\n    \"33across\": { \"storageAllowed\": true },\r\n    \"adagio\": { \"storageAllowed\": true },\r\n    \"adnimation\": { \"storageAllowed\": true },\r\n    \"adyoulike\": { \"storageAllowed\": true },\r\n    \"amx\": { \"storageAllowed\": true },\r\n    \"anyclip\": { \"storageAllowed\": true },\r\n    \"appnexus\": { \"storageAllowed\": true },\r\n    \"contxtful\": { \"storageAllowed\": true },\r\n    \"conversant\": { \"storageAllowed\": true },\r\n    \"criteo\": { \"storageAllowed\": true },\r\n    \"exco\": { \"storageAllowed\": true },\r\n    \"fluct\": { \"storageAllowed\": true },\r\n    \"gamoshi\": { \"storageAllowed\": true },\r\n    \"ix\": { \"storageAllowed\": true },\r\n    \"kueezrtb\": { \"storageAllowed\": true },\r\n    \"magnite\": { \"storageAllowed\": true },\r\n    \"medianet\": { \"storageAllowed\": true },\r\n    \"msft\": { \"storageAllowed\": true },\r\n    \"oms\": { \"storageAllowed\": true },\r\n    \"onetag\": { \"storageAllowed\": true },\r\n    \"openx\": { \"storageAllowed\": true },\r\n    \"pixfuture\": { \"storageAllowed\": true },\r\n    \"programmaticx\": { \"storageAllowed\": true },\r\n    \"pubmatic\": { \"storageAllowed\": true },\r\n    \"richaudience\": { \"storageAllowed\": true },\r\n    \"rise\": { \"storageAllowed\": true },\r\n    \"rubicon\": { \"storageAllowed\": true },\r\n    \"seedtag\": { \"storageAllowed\": true },\r\n    \"sharethrough\": { \"storageAllowed\": true },\r\n    \"smartadserver\": { \"storageAllowed\": true },\r\n    \"smilewanted\": { \"storageAllowed\": true },\r\n    \"sonobi\": { \"storageAllowed\": true },\r\n    \"sovrn\": { \"storageAllowed\": true },\r\n    \"sparteo\": { \"storageAllowed\": true },\r\n    \"ssp_geniee\": { \"storageAllowed\": true },\r\n    \"taboola\": { \"storageAllowed\": true },\r\n    \"teads\": { \"storageAllowed\": true },\r\n    \"underdogmedia\": { \"storageAllowed\": true },\r\n    \"unruly\": { \"storageAllowed\": true },\r\n    \"vidazoo\": { \"storageAllowed\": true },\r\n    \"yandex\": { \"storageAllowed\": true },\r\n  });\r\n\r\n  const bidderNames = bidders.filter(({bidder}) => !bidder.endsWith('S2S')).map(({bidder}) => bidder);\r\n  const s2sBidders = bidders.filter(({bidder}) => bidder.endsWith('S2S')).map(({bidder}) => bidder);\r\n  const s2sAliases = Object.fromEntries(s2sBidders.map(bidder => [bidder, bidder.slice(0, -3)]));\r\n\r\n  const GDPR_GEOS = Object.freeze(['AT','BE','BG','HR','CY','CZ','DK','EE','FI','FR','DE','GR','HU','IE','IT','LV','LT','LU','MT','NL','PL','PT','RO','SK','SI','ES','SE','IS','LI','NO','GB','CH']);\n  const CMP_WAIT_MS = 3000;\n  function waitForTcfApi(maxMs){return new Promise((resolve)=>{const start=Date.now();(function check(){if(typeof window.__tcfapi==='function')return resolve(true);if(Date.now()-start>=maxMs)return resolve(false);setTimeout(check,50);})();});}\n  async function isGdprRequired(country){const hasCmp=await waitForTcfApi(CMP_WAIT_MS);return hasCmp||GDPR_GEOS.includes(country);}\n  const needsGdpr = await isGdprRequired(await getCountry());\n\n  const pbjsConfig = Object.freeze({\r\n    's2sConfig': {\r\n      'enabled': true,\r\n      'accountId': '1001',\r\n      'bidders': s2sBidders,\r\n      'endpoint': 'https://adnpbs.com/openrtb2/auction',\r\n      'syncEndpoint': 'https://adnpbs.com/cookie_sync',\r\n      'timeout': 1500,\r\n      'extPrebid': {\r\n        'aliases': s2sAliases\r\n      }\r\n    },\r\n    'priceGranularity': 'high',\r\n    'currency': {\r\n        'adServerCurrency': 'USD',\r\n        'conversionRateFile': 'https://cdn.jsdelivr.net/gh/prebid/currency-file@1/latest.json',\r\n        'defaultRates': {\r\n        'USD': { 'EUR': 0.92, 'USD': 1 },\r\n        'EUR': { 'USD': 1.09, 'EUR': 1 }\r\n        },\r\n        'ratesTTL': 3600000\r\n    },\r\n    'floors': {\r\n      'enforcement': {\r\n        'enforceJS': true,\r\n        'enforcePBS': true,\r\n        'floorDeals': true,\r\n        'bidAdjustment': true\r\n      },\r\n      'data': {\r\n        'currency': 'USD',\r\n        'skipRate': 0,\r\n        'schema': {\r\n          'fields': [\r\n            'mediaType'\r\n          ]\r\n        },\r\n        'values': {\r\n          'banner': 0.01,\r\n          'native': 0.01,\r\n          'video': 0.01\r\n        },\r\n        'default': 0.01\r\n      }\r\n    },\r\n    'gvlMapping': {'amxS2S':737,'magniteS2S':52,'riseS2S':1043,'kueezrtbS2S':1165,'adagioS2S':617,'anyclip':1400,'exco':444},\n    'consentManagement': {\n      'gdpr': needsGdpr && {'cmpApi':'iab','defaultGdprScope':true,'timeout':500,'actionTimeout':2000},\n      'usp': { 'cmpApi':'iab', 'timeout':500 }\n    },\r\n    'useBidCache': true,\r\n    'schain': {\r\n      'validation': 'strict',\r\n      'config': {\r\n        'ver': '1.0',\r\n        'complete': 1,\r\n        'nodes': [\r\n          {\r\n            'asi': 'adnimation.com',\r\n            'sid': '20250075',\r\n            'hp': 1\r\n          }\r\n        ]\r\n      }\r\n    },\r\n    'userSync': {\r\n      'iframeEnabled': true,\r\n      'filterSettings': {\r\n        'iframe': {\r\n          'bidders': bidderNames,\r\n          'filter': 'include'\r\n        }\r\n      },\r\n      'userIds': [\r\n        {\r\n          'name': 'sharedId',\r\n          'storage': {\r\n            'type': 'html5',\r\n            'name': '_pubcid',\r\n            'expires': 365\r\n          }\r\n        },\r\n        {\r\n          'name': 'identityLink',\r\n          'params': {\r\n            'pid': '13346'\r\n          },\r\n          'storage': {\r\n            'type': 'html5',\r\n            'name': 'idl_env',\r\n            'expires': 30\r\n          }\r\n        },\r\n        {\r\n          'name': 'id5Id',\r\n          'params': {\r\n            'partner': 1262\r\n          },\r\n          'storage': {\r\n            'type': 'html5',\r\n            'name': 'id5id',\r\n            'expires': 90,\r\n            'refreshInSeconds': 28800\r\n          }\r\n        },\r\n        {\r\n          'name': '33acrossId',\r\n          'params': {\r\n            'pid': '0010b00002KBtyLAAT'\r\n          },\r\n          'storage': {\r\n            'name': '33acrossId',\r\n            'type': 'html5',\r\n            'expires': 90,\r\n            'refreshInSeconds': 28800\r\n          }\r\n        }\r\n      ]\r\n    },\r\n    'ix': {\r\n      'detectMissingSizes': true\r\n    },\r\n    'aliasSyncEnabled': true,\r\n    'auctionOptions': {\r\n      'suppressStaleRender': true\r\n    },\r\n    'contxtful': {\r\n      'version': 'v1',\r\n      'customer': 'ADNP250319'\r\n    },\r\n    'realTimeData': {\r\n      'dataProviders': [\r\n        {\r\n          'name': 'contxtful',\r\n          'waitForIt': true,\r\n          'params': {\r\n            'version': 'v1',\r\n            'customer': 'ADNP250319',\r\n            'bidders': [\r\n              'contxtful'\r\n            ],\r\n            'adServerTargeting': true\r\n          }\r\n        }\r\n      ]\r\n    }\r\n  });\r\n\r\n  // ----------------------------------------------\r\n  // Placeholders\r\n  // ----------------------------------------------\r\n\r\n  // Prebid\r\n  window.pbjs = window.pbjs || {};\r\n  window.pbjs.que = window.pbjs.que || [];\r\n\r\n  // Google Tag\r\n  window.googletag = window.googletag || {};\r\n  window.googletag.cmd = window.googletag.cmd || [];\r\n  // Manage refresh of viewable ads\r\n  window.googletag.cmd.push(() =>\r\n    window.googletag.pubads().addEventListener(\r\n      'impressionViewable', onImpressionViewable));\r\n  // Visually collapse unfilled slots\r\n  window.googletag.cmd.push(() =>\r\n    window.googletag.setConfig({ collapseDiv: 'ON_NO_FILL' }));\r\n\r\n  // Google Analytics\r\n  window.dataLayer = window.dataLayer || [];\r\n  function gtag() {\r\n    window.dataLayer.push(arguments);\r\n  }\r\n\r\n  // Taboola\r\n  window._taboola = window._taboola || [];\r\n\r\n  // ----------------------------------------------\r\n  // Constants\r\n  // ----------------------------------------------\r\n\r\n  const GA_ID = 'G-S7YJ164JTV';\r\n  const APS_TIMEOUT_MS = 2000;\r\n  const PREBID_TIMEOUT_MS = 1800;\r\n\r\n  // ----------------------------------------------\r\n  // Scripts\r\n  // ----------------------------------------------\r\n\r\n  function createScript(src, preCreate = () => {}) {\r\n    return new Promise((resolve) => {\r\n      let scriptEl = document.querySelector(`script[src=\"${src}\"]`);\r\n\r\n      if (scriptEl) {\r\n        console.warn('Script already exists:', src);\r\n        resolve(false);\r\n        return;\r\n      }\r\n\r\n      const attemptLoad = () => {\r\n        scriptEl = document.createElement('script');\r\n        scriptEl.src = src;\r\n        scriptEl.fetchPriority = 'high';\r\n        preCreate(scriptEl);\r\n        scriptEl.async = !scriptEl.defer;\r\n        scriptEl.addEventListener('load', () => resolve(true));\r\n        scriptEl.addEventListener('error', () => {\r\n          console.warn('Retrying to load script:', src);\r\n          scriptEl.remove();\r\n          setTimeout(attemptLoad, 100);\r\n        });\r\n        document.head.appendChild(scriptEl);\r\n      };\r\n\r\n      attemptLoad();\r\n    });\r\n  }\r\n\r\n  // Don't initialize anything if page URL is blacklisted\r\n  if (isBlacklistedUrl()) {\r\n    throw 'Skipping...';\r\n  }\r\n\r\n  Promise.all([\r\n    // Amazon Publisher Services\r\n    // createScript('https://c.amazon-adsystem.com/aax2/apstag.js'),\r\n\r\n    // Human anti-bot protection\r\n    //createScript('https://cadmus.script.ac/d3svkhbhkz2i0f/script.js'),\r\n  ])\r\n    .then(config)\r\n    .then(main)\r\n    .catch((err) => console.error('Failed to bootstrap scripts:', err));\r\n\r\n  // Block Through anti-adblock\r\n  createScript('https://btloader.com/tag?o=5696523966873600&upapi=true');\r\n\r\n  // Vidazoo video ads\r\n  createScript('https://static.vidazoo.com/basev/vwpt.js', (scriptEl) => {\r\n    scriptEl.setAttribute('data-widget-id', '65e9b79ebdb3a9c5732bbae8');\r\n  });\r\n\r\n  // Google Analytics\r\n  createScript(`https://www.googletagmanager.com/gtag/js?id=${GA_ID}`);\r\n\r\n  // KueezRTB cookieless solution\r\n  createScript('https://static.kueezrtb.com/latest.js', (scriptEl) => {\r\n    scriptEl.setAttribute('data-cfasync', 'false');\r\n    scriptEl.id = 'kueezrtb_latest';\r\n  });\r\n\r\n  class LazyLoader {\r\n    constructor(margin = '100px') {\r\n      this.observer = new IntersectionObserver(this.onIntersect, {\r\n        rootMargin: margin\r\n      });\r\n    }\r\n\r\n    onIntersect = (entries) => {\r\n      entries.forEach((entry) => {\r\n        if (entry.isIntersecting) {\r\n          const cb = entry.target.dataset.lazyCallback;\r\n          if (cb && window[cb]) {\r\n            window[cb](entry.target);\r\n            delete window[cb];\r\n          }\r\n          this.observer.unobserve(entry.target);\r\n        }\r\n      });\r\n    };\r\n\r\n    add(element, callback) {\r\n      if (!element || typeof callback !== 'function') return;\r\n      if (element.getBoundingClientRect().top < window.innerHeight) {\r\n        callback(element);\r\n      } else {\r\n        const cbName = 'lazy_cb_' + Math.random().toString(36).slice(2);\r\n        window[cbName] = callback;\r\n        element.dataset.lazyCallback = cbName;\r\n        this.observer.observe(element);\r\n      }\r\n    }\r\n  }\r\n\r\n  // ----------------------------------------------\r\n  // App\r\n  // ----------------------------------------------\r\n\r\n  const adUnits = [];\r\n  const slotsMap = [];\r\n  const lazyLoader = new LazyLoader();\r\n  const activeSlotIds = [];\r\n  const newPbjsAdUnits = [];\r\n  const viewportType =\r\n    window.screen.width > 1525\r\n      ? 'desktop'\r\n      : window.screen.width > 730\r\n        ? 'tablet'\r\n        : 'mobile';\r\n\r\n  /**\r\n   * Main entry point of our tag.\r\n   */\r\n  async function main() {\r\n    const isOk = await createScript('https://securepubads.g.doubleclick.net/tag/js/gpt.js');\r\n    if (isOk) {\r\n      console.log('Starting...');\r\n    }\r\n  }\r\n\r\n  function config() {\r\n    console.log('Configuring...');\r\n    initGa();\r\n    // initAps();\r\n    initIiq();\r\n  }\r\n\r\n  function initAps() {\r\n    window.apstag.init({\r\n      pubID: '83d5088d-5f70-4acf-a888-15a83bf33932',\r\n      adServer: 'googletag',\r\n      schain: {\r\n        complete: 1, \r\n            ver: '1.0', \r\n                nodes: [\r\n                    {\r\n                        asi: 'zerodegreeads.com',\r\n                        sid: '42025LLL6',\r\n                        hp: 1\r\n                        // rid: 'string', // The request ID (optional)\r\n                        // name: 'string', // Name of the company paid for inventory under seller ID (optional)\r\n                        // domain: 'string', // Business domain of this node (optional)\r\n                    }\r\n                ]\r\n        } \r\n    });\r\n  }\r\n\r\n  function initGa() {\r\n    window.googletag.cmd.push(() => {\r\n      const handleSlotRenderEnded = () => {\r\n        gtag('js', new Date());\r\n        gtag('config', GA_ID);\r\n\r\n        googletag.pubads().removeEventListener('slotRenderEnded', handleSlotRenderEnded);\r\n      };\r\n      googletag.pubads().addEventListener('slotRenderEnded', handleSlotRenderEnded);\r\n    });\r\n  }\r\n\r\n  function initIiq() {\r\n    if (!window.IntentIqObject) {\r\n      console.log('IIQ not found - skipping initialization');\r\n      return;\r\n    }\r\n\r\n    try {\r\n      // Configure IntentIQ\r\n      window.intentIq_2072952453 = new IntentIqObject({\r\n        partner: 2072952453,\r\n        pbjs: adnpbjs,\r\n        callback: main,\r\n        timeoutInMillis: PREBID_TIMEOUT_MS,\r\n        ABTestingConfigurationSource: 'IIQServer',\r\n        manualWinReportEnabled: true,\r\n        domainName: window.location.host,\r\n        vrBrowserBlackList: ['chrome'],\r\n        gamParameterName: 'googletag', // Optional\r\n      });\r\n\r\n      adnpbjs.onEvent('bidWon', (data) => {\r\n        window.intentIq_2072952453.reportExternalWin({\r\n          biddingPlatformId: 1, // PreBid\r\n          partnerAuctionId: data.auctionId,\r\n          bidderCode: data.bidderCode,\r\n          prebidAuctionId: data.auctionId,\r\n          cpm: data.cpm,\r\n          currency: 'USD',\r\n          originalCpm: data.originalCpm,\r\n          originalCurrency: 'USD',\r\n          status: data.status,\r\n          placementId: data.adUnitCode\r\n        });\r\n      });\r\n\r\n    } catch (err) {\r\n      console.error('Failed to initialize IntentIQ:', err);\r\n      throw err;\r\n    }\r\n  }\r\n\r\n  function initAds() {\r\n    const adsEl = document.querySelectorAll('[data-onpage=\"true\"]');\r\n    adsEl.forEach(slotEl => createAd(slotEl.dataset.adpath));\r\n  }\r\n\r\n  function onImpressionViewable(event) {\r\n    const { slot } = event;\r\n    const slotId = slot.getSlotElementId();\r\n    if (!activeSlotIds.includes(slotId)) {\r\n      return;\r\n    }\r\n\r\n    const adUnitPath = slot.getAdUnitPath();\r\n    const adUnit = adsConfig[adUnitPath];\r\n    const timeoutMs = adUnit.refreshTime;\r\n\r\n    setTimeout(() => refreshAd(slot, slotId, adUnit), timeoutMs);\r\n  }\r\n\r\n  function collectAds() {\r\n    adUnits.length = 0;\r\n\r\n    const adsEl = document.querySelectorAll('[data-onpage=\"true\"]');\r\n    if (!adsEl.length) {\r\n      console.warn('No ads found to collect');\r\n      return;\r\n    }\r\n\r\n    adsEl.forEach((slotEl) => {\r\n      const adPath = slotEl.dataset.adpath;\r\n      const slot = adsConfig[adPath];\r\n      const slotId = slot?.id;\r\n      const sizes = slot?.sizeMapping[viewportType];\r\n\r\n      if (!sizes?.length) {\r\n        console.warn(\r\n          'Failed to find slot sizes for viewport - bids will be affected for',\r\n          viewportType, slotId\r\n        );\r\n        return;\r\n      }\r\n    //   const slotBidders = [...bidders];\r\n    //   const tagMap = {\r\n    //         ATF: \"ATF\",\r\n    //         Content: \"Content\",\r\n    //         BTF: \"BTF\",\r\n    //         Side: \"Side\",\r\n    //         SideATF: \"SideATF\",\r\n    //         Sticky: \"Sticky\"\r\n    //     };\r\n\r\n    //     slotBidders.push({\r\n    //         bidder: \"taboola\",\r\n    //         params: {\r\n    //             tagId: tagMap[slot.position] || \"ROS\",\r\n    //             publisherId: \"1945097\"\r\n    //         }\r\n    //     });\r\n      const slotBidders = [...bidders];\r\n      const tagMap = {\r\n            ATF: \"ATF\",\r\n            Content: \"Content\",\r\n            BTF: \"BTF\",\r\n            Side: \"Side\",\r\n            SideATF: \"SideATF\",\r\n            Sticky: \"Sticky\"\r\n        };\r\n\r\n        slotBidders.push({\r\n            bidder: \"taboola\",\r\n            params: {\r\n                tagId: tagMap[slot.position] || \"ROS\",\r\n                publisherId: \"1945097\"\r\n            }\r\n        });\r\n\r\n        // Seedtag – per-position adUnitId + placement\r\n        const seedtagMap = {\r\n            ATF:      { adUnitId: \"37841154\", placement: \"inBanner\" },\r\n            Content:  { adUnitId: \"37841150\", placement: \"inArticle\" },\r\n            BTF:      { adUnitId: \"37841151\", placement: \"inArticle\" },\r\n            Side:     { adUnitId: \"37841155\", placement: \"inBanner\" },\r\n            SideATF:  { adUnitId: \"37841156\", placement: \"inBanner\" },\r\n            Sticky:   { adUnitId: \"37841149\", placement: \"inScreen\" }, // Sticky_Footer\r\n            Content2: { adUnitId: \"37841152\", placement: \"inArticle\" }\r\n        };\r\n\r\n        const seedtagConf = seedtagMap[slot.position];\r\n        if (seedtagConf) {\r\n            slotBidders.push({\r\n                bidder: \"seedtag\",\r\n                params: {\r\n                    adUnitId: seedtagConf.adUnitId,\r\n                    publisherId: \"2781-4726-01\",\r\n                    placement: seedtagConf.placement\r\n                }\r\n            });\r\n        }    \r\n        const STANDARD_SIZES = {\r\n            desktop: [\r\n                [728, 90],\r\n                [970, 90],\r\n                [970, 250],\r\n                [300, 250],\r\n                [300, 600],\r\n                [160, 600],\r\n                [336, 280],\r\n                [320, 50],\r\n                [320, 100],\r\n                [1, 1]\r\n            ],\r\n            tablet: [\r\n                [728, 90],\r\n                [300, 250],\r\n                [300, 600],\r\n                [160, 600],\r\n                [336, 280],\r\n                [1, 1]\r\n            ],\r\n            mobile: [\r\n                [320, 50],\r\n                [320, 100],\r\n                [300, 250],\r\n                [336, 280],\r\n                [360, 360],\r\n                [1, 1]\r\n            ]\r\n        };\r\n\r\n        function hasOnlyStandardSizes(sizes, viewport) {\r\n            if (!Array.isArray(sizes) || sizes.length === 0) return false;\r\n\r\n            const standardSizes = STANDARD_SIZES[viewport] || [];\r\n\r\n            const isNative = (w, h) => w === 1 && h === 2;\r\n\r\n            return sizes.every(size => {\r\n                if (size === 'fluid') return true;\r\n                if (Array.isArray(size)) {\r\n                    const [w, h] = size;\r\n                    if (isNative(w, h)) return true;\r\n                    return standardSizes.some(([sw, sh]) => sw === w && sh === h);\r\n                }\r\n                return false;\r\n            });\r\n        }\r\n    const prebidSizes = sizes.filter(size => hasOnlyStandardSizes([size], viewportType));\r\n\r\nif (prebidSizes.length) {\r\n        adUnits.push({\r\n            bids: slotBidders,\r\n            code: slotId,\r\n            mediaTypes: {\r\n            banner: {\r\n                sizes: prebidSizes\r\n            }\r\n            }\r\n        });\r\n        console.log(`Prebid sizes for ${slotId}:`, prebidSizes);\r\n        } else {\r\n        console.log(`Skipping Prebid for ${slotId} — No compatible sizes.`);\r\n        }\r\n    });\r\n\r\n    newPbjsAdUnits.length = 0;\r\n    newPbjsAdUnits.push(...adUnits);\r\n\r\n    window.adnpbjs.que.push(() => {\r\n      window.adnpbjs.bidderSettings = bidderSettings;\r\n      window.adnpbjs.setConfig(pbjsConfig);\r\n      window.adnpbjs.setBidderConfig({\r\n        bidders: ['sparteo', 'conversant'],\r\n        config: {\r\n          ortb2: {\r\n            source: {\r\n              ext: {\r\n                schain: {\r\n                  ver: \"1.0\",\r\n                  complete: 1,\r\n                  nodes: [{\r\n                    asi: \"zerodegreeads.com\",\r\n                    sid: \"42025LLL6\",\r\n                    hp: 1\r\n                  }]\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  function runApsBids(slotEl, resolve) {\r\n    return;\r\n\r\n    const slotId = slotEl.id;\r\n    const adPath = slotEl.dataset.adpath;\r\n\r\n    const sizes = adsConfig[adPath].sizeMapping[viewportType];\r\n    if (!sizes.length) {\r\n      console.warn(\r\n        'Failed to find slot sizes for viewport - canceling APS bid for',\r\n        viewportType, slotId\r\n      );\r\n      resolve();\r\n      return;\r\n    }\r\n\r\n    const slots = [{\r\n      slotID: slotId,\r\n      slotName: adsConfig[adPath].id,\r\n      sizes\r\n    }];\r\n\r\n    window.apstag.fetchBids({ slots, timeout: APS_TIMEOUT_MS }, () => {\r\n      window.apstag.setDisplayBids();\r\n      resolve();\r\n    });\r\n  }\r\n\r\n  function runPrebidBids(slotEl, resolve) {\r\n    const slotId = slotEl.id;\r\n    window.pbjs.que.push(() =>\r\n      window.pbjs.requestBids({\r\n        timeout: PREBID_TIMEOUT_MS,\r\n        adUnitCodes: [slotId],\r\n        bidsBackHandler: () => {\r\n          window.pbjs.setTargetingForGPTAsync([slotId]);\r\n          resolve();\r\n        }\r\n      })\r\n    );\r\n  }\r\n\r\n  async function runBids(slotEl) {\r\n    try{\r\n        const slotId = slotEl.id;\r\n        // const apsBids = new Promise((resolve) => runApsBids(slotEl, resolve));\r\n        const pbjsBids = new Promise((resolve) => runPrebidBids(slotEl, resolve));\r\n        function withTimeout(promise, ms) {\r\n        return Promise.race([\r\n            promise,\r\n            new Promise((_, reject) => setTimeout(() => reject(new Error('Timeout')), ms))\r\n        ]);\r\n        }\r\n\r\n        await Promise.allSettled([\r\n          // withTimeout(apsBids, 3000),\r\n            withTimeout(pbjsBids, 3000)\r\n        ]);\r\n\r\n    }catch(e){\r\n        console.log(e);\r\n        return\r\n    }\r\n  }\r\n\r\n  async function createAdCmd(slotName) {\r\n    const slotEl = document.querySelector(`[data-adpath=\"${slotName}\"]`);\r\n    if (!slotEl) {\r\n      console.warn('Failed to find ad to create by id:', slotName);\r\n      return;\r\n    }\r\n\r\n    collectAds();\r\n\r\n    let adUnit = adsConfig[slotName];\r\n    if (!adUnit) {\r\n      console.warn('Failed to find ad with the following id:', slotName);\r\n      return;\r\n    }\r\n\r\n    const sizeMapping = googletag\r\n      .sizeMapping()\r\n      .addSize([980, 200], adUnit.sizeMapping.desktop)\r\n      .addSize([730, 200], adUnit.sizeMapping.tablet)\r\n      .addSize([0, 0], adUnit.sizeMapping.mobile)\r\n      .build();\r\n\r\n    const adPath = slotEl.dataset.adpath;\r\n    let refreshIteration = adsConfig[adPath].refreshIteration;\r\n    refreshIteration++;\r\n\r\n    const slot = googletag\r\n      .defineSlot(adUnit.id, adUnit.size)\r\n      .defineSizeMapping(sizeMapping)\r\n      .addService(window.googletag.pubads());\r\n\r\n    slot.setConfig({ targeting: { refreshIteration: refreshIteration.toString(), intent_iq_group: 'U' } });\r\n\r\n    slotEl.id = slot.getSlotElementId();\r\n\r\n    const pbjsAdUnit = newPbjsAdUnits.find(adUnit => adUnit.code === slotName);\r\n    if (pbjsAdUnit) {\r\n      pbjsAdUnit.code = slotEl.id;\r\n      window.adnpbjs.addAdUnits(pbjsAdUnit);\r\n      window.pbjs = adnpbjs;\r\n    }\r\n\r\n    slotsMap[slotEl.id] = slot;\r\n    activeSlotIds.push(slotEl.id);\r\n\r\n    const init = async () => {\r\n      try {\r\n        await runBids(slotEl);\r\n        window.googletag.enableServices();\r\n        window.googletag.display(slotEl.id);\r\n        if (googletag.getConfig('disableInitialLoad').disableInitialLoad) {\r\n          window.googletag.pubads().refresh([slot]);\r\n        }\r\n      } catch (err) {\r\n        console.error('Failed to run bids for ad slot: %s, %s', slotEl.id, err);\r\n      }\r\n    };\r\n\r\n    const isLazyLoaded = adsConfig[adPath]?.isLazyLoaded !== false;\r\n    if (isLazyLoaded) {\r\n      lazyLoader.add(slotEl, init);\r\n    } else {\r\n      init();\r\n    }\r\n  }\r\n\r\n  async function refreshAd(slot, slotId, adUnit) {\r\n    try {\r\n      const adUnitToRefresh = googletag\r\n        .pubads()\r\n        .getSlots()\r\n        .filter((slot) => slot.getSlotElementId() === slotId)\r\n        .at(0);\r\n\r\n      if (!adUnitToRefresh) {\r\n        return;\r\n      }\r\n\r\n      adUnit.refreshIteration++;\r\n      slot.setConfig({ targeting: { refreshIteration: adUnit.refreshIteration.toString() } });\r\n\r\n      const slotEl = document.getElementById(adUnitToRefresh.getSlotElementId());\r\n      await runBids(slotEl);\r\n\r\n      window.googletag.pubads().refresh([slotsMap[slotEl.id]]);\r\n    } catch (err) {\r\n      console.error('Failed to refresh ad:', slotId, err.message);\r\n    }\r\n  }\r\n\r\n  function destroyAdCmd(slotName) {\r\n    const slotEl = document.querySelector(`[data-adpath=\"${slotName}\"]`);\r\n    if (!slotEl) {\r\n      console.warn('Failed to find ad to destroy by id:', slotName);\r\n      return;\r\n    }\r\n\r\n    const slotId = slotEl.id;\r\n    if (slotId && slotsMap[slotId]) {\r\n      window.googletag.destroySlots([slotsMap[slotId]]);\r\n      delete slotsMap[slotId];\r\n      const idx = activeSlotIds.indexOf(slotId);\r\n      if (idx > -1) {\r\n        activeSlotIds.splice(idx, 1);\r\n      }\r\n    }\r\n\r\n    slotEl.innerHTML = '';\r\n    slotEl.id = '';\r\n    slotEl.removeAttribute('data-onpage');\r\n    if (slotId.toLowerCase().includes('sticky_footer')) {\r\n        slotEl.parentElement.parentElement.remove();\r\n    }\r\n  }\r\n\r\n  function createNativeCmd() {\r\n    createScript('https://cdn.taboola.com/libtrc/adnimationnetwork/loader.js', (scriptEl) => {\r\n      scriptEl.id = 'tb_loader_script';\r\n      scriptEl.onload = () => {\r\n        window.performance?.mark?.('tbl_ic');\r\n      };\r\n    });\r\n\r\n    createScript('data:text/javascript;charset=utf-8,_taboola.push({flush:true})', (scriptEl) => {\r\n      scriptEl.setAttribute('data-taboola-flush', 'true');\r\n      scriptEl.defer = true;\r\n    });\r\n  }\r\n\r\n  function destroyNativeCmd() {\r\n    const footerEl = document.querySelector('.adn-footer');\r\n    if (footerEl) {\r\n      footerEl.innerHTML = '';\r\n    }\r\n  }\r\n\r\n  function createNative() {\r\n    window.googletag.cmd.push(createNativeCmd);\r\n  }\r\n\r\n  function destroyNative() {\r\n    window.googletag.cmd.push(destroyNativeCmd);\r\n  }\r\n\r\n  function createAd(slotName) {\r\n    window.googletag.cmd.push(() => createAdCmd(slotName));\r\n  }\r\n\r\n  function destroyAd(slotName) {\r\n    window.googletag.cmd.push(() => destroyAdCmd(slotName));\r\n  }\r\n\r\n  function createInterstitial() {\r\n    window.googletag.cmd.push(createInterstitialCmd);\r\n  }\r\n\r\n  // ----------------------------------------------\r\n  // Exports\r\n  // ----------------------------------------------\r\n\r\n  window.adn = {\r\n    createAd,\r\n    destroyAd,\r\n    createNative,\r\n    destroyNative,\r\n    createInterstitial,\r\n  };\r\n\r\n  // ----------------------------------------------\r\n  // Utils\r\n  // ----------------------------------------------\r\n\r\n  async function getIpInfo() {\r\n    try {\r\n      const cached = localStorage.getItem('ipinfo');\r\n      if (cached) return JSON.parse(cached);\r\n      const key = '7c4d73767e64472ea502eacdbc47386b';\r\n      const url = `https://d2dvy74lyjayxz.cloudfront.net/?key=${key}`;\r\n      const res = await fetch(url);\r\n      if (!res.ok) throw new Error(`HTTP-${res.status}`);\r\n      const ipInfo = await res.json();\r\n      localStorage.setItem('ipinfo', JSON.stringify(ipInfo));\r\n      localStorage.removeItem('adngeo'); // Old version cleanup\r\n      return ipInfo;\r\n    } catch (err) {\r\n      console.error('Failed to get ip info:', err.message);\r\n      return null;\r\n    }\r\n  }\r\n\r\n  async function getCountry() {\r\n    const ipInfo = await getIpInfo();\r\n    return ipInfo?.country ?? 'US';\r\n  }\r\n\r\n  async function getPlatform() {\r\n    const ipInfo = await getIpInfo();\r\n    return ['ios','android','mobile','desktop'].find(k => ipInfo?.[k]) ?? 'desktop';\r\n  }\r\n\r\n  async function waitForElement(selector) {\r\n    let cnt = 0;\r\n    const timeout = 100;\r\n    const threshold = 3000 / timeout;\r\n    return new Promise((resolve) => {\r\n      let interval = setInterval(() => {\r\n        const el = document.querySelector(selector);\r\n        if (el) {\r\n          clearInterval(interval);\r\n          resolve(el);\r\n        }\r\n        if (++cnt === threshold) {\r\n          cnt = 0;\r\n          console.warn('Still waiting for selector:', selector);\r\n        }\r\n      }, timeout);\r\n    });\r\n  }\r\n\r\n  const onDomReady = (function() {\r\n    const callbacks = [];\r\n\r\n    document.addEventListener('DOMContentLoaded', () => {\r\n      callbacks.forEach((callback) => callback());\r\n      callbacks.length = 0;\r\n    });\r\n\r\n    const interval = setInterval(() => {\r\n      if (\r\n        document.readyState === 'complete' ||\r\n        document.readyState === 'interactive'\r\n      ) {\r\n        clearInterval(interval);\r\n        callbacks.forEach((callback) => callback());\r\n        callbacks.length = 0;\r\n      }\r\n    }, 100);\r\n\r\n    return (callback) => {\r\n      if (\r\n        document.readyState === 'complete' ||\r\n        document.readyState === 'interactive'\r\n      ) {\r\n        setTimeout(callback, 0);\r\n      } else {\r\n        callbacks.push(callback);\r\n      }\r\n    };\r\n  })();\r\n\r\n  // Find \"URL_PATHS_BLACKLIST\" under the \"Configuration\" section.\r\n  // There you can add any additional URL paths to blacklist.\r\n  function isBlacklistedUrl() {\r\n    const { pathname } = window.location;\r\n    const list = URL_PATHS_BLACKLIST ?? [];\r\n    const isBlacklisted = list.some((path) =>\r\n      path === '/' ? pathname === path : pathname.includes(path));\r\n    return isBlacklisted;\r\n  }\r\n\r\n  function observeSlots() {\r\n    const isVisible = (element) => {\r\n      const style = window.getComputedStyle(element);\r\n      const isDisplayed = style.display !== 'none';\r\n      const isVisible = style.visibility !== 'hidden';\r\n      return isDisplayed && isVisible;\r\n    };\r\n\r\n    const isStyleChanged = (mutation) =>\r\n      mutation.type === 'attributes' &&\r\n      (\r\n        mutation.attributeName === 'style' ||\r\n        mutation.attributeName === 'class'\r\n      );\r\n\r\n    const isVisibilityChanged = (mutation) => {\r\n      const oldStyle = mutation.oldValue || '';\r\n      const newStyle = mutation.target.getAttribute('style') || '';\r\n      const wasHidden = oldStyle.includes('hidden') || oldStyle.includes('none');\r\n      const isHidden = newStyle.includes('hidden') || newStyle.includes('none');\r\n      return wasHidden !== isHidden;\r\n    }\r\n\r\n    const handleAdded = (node) => {\r\n      const slot = node.getAttribute('data-adpath');\r\n      console.log('Added:', slot);\r\n      createAd(slot);\r\n    }\r\n\r\n    const handleRemoved = (node) => {\r\n      const slot = node.getAttribute('data-adpath');\r\n      console.log('Removed:', slot);\r\n      destroyAd(slot);\r\n    }\r\n\r\n    const isAdSlot = (node) => node.hasAttribute?.('data-adpath');\r\n\r\n    const getSlots = (nodeList) =>\r\n      Array.from(nodeList)\r\n        .filter((node) => node.nodeType === Node.ELEMENT_NODE)\r\n        .flatMap((node) => Array.from(node.querySelectorAll('[data-adpath]')).concat(node))\r\n        .filter(isAdSlot);\r\n\r\n    const handleMutations = (mutations) =>\r\n      mutations.forEach((mutation) => {\r\n        const addedNodes = getSlots(mutation.addedNodes);\r\n        const removedNodes = getSlots(mutation.removedNodes);\r\n\r\n        addedNodes.forEach(handleAdded);\r\n        removedNodes.forEach(handleRemoved);\r\n\r\n        if (\r\n          !addedNodes.includes(mutation.target) &&\r\n          !removedNodes.includes(mutation.target) &&\r\n          isStyleChanged(mutation) &&\r\n          isVisibilityChanged(mutation)\r\n        ) {\r\n          const childNodes = getSlots(mutation.target);\r\n          childNodes.forEach((node) => {\r\n            if (isVisible(node)) {\r\n              handleAdded(node);\r\n            } else {\r\n              handleRemoved(node);\r\n            }\r\n          });\r\n        }\r\n      });\r\n\r\n    const config = {\r\n      subtree: true,\r\n      childList: true,\r\n      attributes: true,\r\n      attributeFilter: ['style', 'class'],\r\n      attributeOldValue: true\r\n    };\r\n\r\n    const observer = new MutationObserver(handleMutations);\r\n    observer.observe(document, config);\r\n  }\r\n\r\n  // ----------------------------------------------\r\n  // Custom\r\n  // ----------------------------------------------\r\n\r\n function createStickyBanner() {\r\n\r\n    // // Hard guard: only run if this variant was chosen\r\n    // if (window.__taboolaStickyChoice && window.__taboolaStickyChoice !== \"sticky\") {\r\n    //     console.log(\"createStickyBanner() skipped – choice is\", window.__taboolaStickyChoice);\r\n    //     return;\r\n    // }\r\n\r\n    // console.log(\"createStickyBanner() EXECUTING\");\r\n\r\n  // --- MOBILE ONLY ---\r\n  if (window.innerWidth > 767) {\r\n    console.log(\"Sticky banner disabled on desktop/tablet\");\r\n    return;\r\n  }\r\n\r\n  const addCloseButton = (stickyBannerSizeDiv) => {\r\n    const el = document.createElement('div');\r\n    el.innerText = 'Close';\r\n    el.style.position = 'absolute';\r\n    el.style.top = '-20px';\r\n    el.style.right = '0px';\r\n    el.style.height = '20px';\r\n    el.style.width = '50px';\r\n    el.style.color = 'white';\r\n    el.style.borderRadius = '2px';\r\n    el.style.backgroundColor = '#a5b4cd';\r\n    el.style.cursor = 'pointer';\r\n    el.style.fontSize = '14px';\r\n    el.style.textAlign = 'center';\r\n    el.classList.add('closeButton');\r\n    el.onclick = function() {\r\n      this.parentElement.remove();\r\n    };\r\n    stickyBannerSizeDiv.append(el);\r\n  };\r\n\r\n  const stickyBannerParent = document.createElement('div');\r\n  stickyBannerParent.classList.add('adnSticky');\r\n  stickyBannerParent.style.position = 'fixed';\r\n  stickyBannerParent.style.display = 'flex';\r\n  stickyBannerParent.style.justifyContent = 'space-evenly';\r\n  stickyBannerParent.style.bottom = '0px';\r\n  stickyBannerParent.style.width = '100%';\r\n  stickyBannerParent.style.backgroundColor = 'transparent';\r\n  stickyBannerParent.style.zIndex = '9999999999';\r\n\r\n  const stickyBannerSizeDiv = document.createElement('div');\r\n  stickyBannerSizeDiv.style.position = 'relative';\r\n\r\n  const stickyBanner = document.createElement('div');\r\n  stickyBanner.dataset.onpage = !0;\r\n  stickyBanner.dataset.adpath =\r\n    '/339474670,23317619946/HenInTheKitchen/Sticky_Footer';\r\n\r\n  stickyBannerSizeDiv.append(stickyBanner);\r\n  stickyBannerParent.append(stickyBannerSizeDiv);\r\n  document.body.append(stickyBannerParent);\r\n\r\n  let flag = true;\r\n  googletag.cmd.push(() => {\r\n    googletag.pubads().addEventListener('slotRenderEnded', (event) => {\r\n      if (\r\n        event.slot.getSlotElementId().includes('Sticky_Footer') &&\r\n        !event.isEmpty &&\r\n        flag\r\n      ) {\r\n        flag = false;\r\n        addCloseButton(stickyBannerSizeDiv);\r\n      }\r\n    });\r\n    googletag.enableServices();\r\n  });\r\n\r\n}\r\n\r\n// 1) Call this once before/alongside your injectors\r\nfunction ensureAdCenteringCSS() {\r\n  // Remove any older patch to avoid conflicts\r\n  const old = document.getElementById('ad-centering-patch');\r\n  if (old) old.remove();\r\n\r\n  const style = document.createElement('style');\r\n  style.id = 'ad-centering-patch';\r\n  style.textContent = `\r\n\r\n    /* ============================\r\n       Base WRAPPER centering\r\n       Exclude Sticky_Footer\r\n    ============================= */\r\n    [data-onpage][data-adpath]:not([data-adpath*=\"Sticky_Footer\"]) {\r\n      width:100%;\r\n      margin:40px auto;\r\n      display:block;\r\n      text-align:center;\r\n      overflow:visible !important;\r\n      min-height:90px;\r\n    }\r\n\r\n    /* ============================\r\n       Width caps (desktop)\r\n       ============================ */\r\n    [data-adpath*=\"/ATF\"]:not([data-adpath*=\"Sticky_Footer\"]) { max-width:970px; }\r\n    [data-adpath*=\"/Content_\"]:not([data-adpath*=\"Sticky_Footer\"]) { max-width:728px; }\r\n\r\n    /* OPTIONAL: treat Top like a wide unit */\r\n    [data-adpath*=\"/Top\"]:not([data-adpath*=\"Sticky_Footer\"]) { max-width:970px; }\r\n\r\n    /* ============================\r\n       Center GPT internal elements\r\n       (added: div[id^=\"div-gpt-ad-\"])\r\n       ============================ */\r\n    [data-onpage][data-adpath]:not([data-adpath*=\"Sticky_Footer\"]) iframe,\r\n    [data-onpage][data-adpath]:not([data-adpath*=\"Sticky_Footer\"]) ins,\r\n    [data-onpage][data-adpath]:not([data-adpath*=\"Sticky_Footer\"]) div[id^=\"google_ads_iframe_\"],\r\n    [data-onpage][data-adpath]:not([data-adpath*=\"Sticky_Footer\"]) div[id^=\"aswift_\"],\r\n    [data-onpage][data-adpath]:not([data-adpath*=\"Sticky_Footer\"]) iframe[id^=\"aswift_\"],\r\n    [data-onpage][data-adpath]:not([data-adpath*=\"Sticky_Footer\"]) div[id*=\"__container__\"],\r\n    [data-onpage][data-adpath]:not([data-adpath*=\"Sticky_Footer\"]) div[id^=\"div-gpt-ad-\"],\r\n    [data-onpage][data-adpath]:not([data-adpath*=\"Sticky_Footer\"]) .google-auto-placed {\r\n      display:block !important;\r\n      margin-left:auto !important;\r\n      margin-right:auto !important;\r\n      float:none !important;\r\n    }\r\n\r\n    /* ============================\r\n       Top unit \"belt + suspenders\":\r\n       center FIRST child wrapper too\r\n       ============================ */\r\n    [data-onpage][data-adpath*=\"/HenInTheKitchen/Top\"]:not([data-adpath*=\"Sticky_Footer\"]) > * {\r\n      margin-left:auto !important;\r\n      margin-right:auto !important;\r\n      float:none !important;\r\n    }\r\n\r\n    /* ============================\r\n       Mobile relaxation\r\n       ============================ */\r\n    @media (max-width: 768px){\r\n      [data-adpath*=\"/ATF\"]:not([data-adpath*=\"Sticky_Footer\"]),\r\n      [data-adpath*=\"/Content_\"]:not([data-adpath*=\"Sticky_Footer\"]),\r\n      [data-adpath*=\"/Top\"]:not([data-adpath*=\"Sticky_Footer\"]) {\r\n        max-width:100%;\r\n      }\r\n    }\r\n  `;\r\n  document.head.appendChild(style);\r\n\r\n  /* ============================\r\n     JS overflow-relaxing logic\r\n     Exclude Sticky_Footer here too\r\n     ============================ */\r\n\r\n  function relaxOverflowFor(el){\r\n    // If this is a Sticky_Footer slot → skip entirely\r\n    if (el.dataset?.adpath && el.dataset.adpath.includes(\"Sticky_Footer\")) return;\r\n\r\n    let p = el && el.parentElement, hops = 0;\r\n    while (p && p !== document.body && hops < 12){\r\n      const cs = getComputedStyle(p);\r\n      if (cs.overflowX !== 'visible' || cs.overflowY !== 'visible'){\r\n        p.style.overflow = 'visible';\r\n      }\r\n      p = p.parentElement; \r\n      hops++;\r\n    }\r\n  }\r\n\r\n  // Initial pass (skip Sticky_Footer)\r\n  document.querySelectorAll('[data-onpage][data-adpath]:not([data-adpath*=\"Sticky_Footer\"])')\r\n    .forEach(relaxOverflowFor);\r\n\r\n  // Watch new nodes\r\n  const mo = new MutationObserver(muts => {\r\n    muts.forEach(m => {\r\n      m.addedNodes?.forEach(n => {\r\n        if (!(n instanceof HTMLElement)) return;\r\n\r\n        // Direct slot\r\n        if (n.matches?.('[data-onpage][data-adpath]:not([data-adpath*=\"Sticky_Footer\"])')) {\r\n          relaxOverflowFor(n);\r\n        }\r\n\r\n        // Slot inside subtree\r\n        const slot = n.querySelector?.('[data-onpage][data-adpath]:not([data-adpath*=\"Sticky_Footer\"])');\r\n        if (slot) relaxOverflowFor(slot);\r\n      });\r\n    });\r\n  });\r\n\r\n  mo.observe(document.documentElement, { childList:true, subtree:true });\r\n}\r\n\r\nfunction addTopAdUnits() {\r\n  //const heading = document.querySelector('.pf-content > p:nth-child(1)');\r\n  const heading = document.querySelector('#post_content > div > div.elementor-element.elementor-element-4342d303.elementor-widget-mobile__width-inherit.elementor-widget.elementor-widget-theme-post-content > div > div > p:nth-child(4)');\r\n\r\n  if (!heading) {\r\n    console.log('❌ addTopAdUnits: no pf-content > p:nth-child(1) found. Aborting.');\r\n    return;\r\n  }\r\n\r\n  const el = document.createElement('div');\r\n  el.dataset.onpage = true;\r\n  el.dataset.adpath = '/339474670,23317619946/HenInTheKitchen/Top';\r\n\r\n  // Hardening (in case theme CSS fights the patch)\r\n  el.style.width = '100%';\r\n  el.style.display = 'block';\r\n  el.style.textAlign = 'center';\r\n\r\n  el.style.marginTop = '40px';\r\n  el.style.marginBottom = '40px';\r\n  el.style.minHeight = '100px';\r\n\r\n  heading.insertAdjacentElement('afterend', el);\r\n  console.log('✅ addTopAdUnits: injected after first .pf-content > p:nth-child(1)');\r\n}\r\n\r\nfunction addInContentRecipeHeaderAdUnits() {\r\n\r\n  const heading = document.querySelector('.penci-recipe-heading');\r\n  if (!heading) {\r\n    console.log('❌ addInContentRecipeHeadingAdUnits: no .penci-recipe-heading found. Aborting.');\r\n    return;\r\n  }\r\n\r\n  const el = document.createElement('div');\r\n  el.dataset.onpage = true;\r\n  el.dataset.adpath = '/339474670,23317619946/HenInTheKitchen/Content_0';\r\n  el.style.marginTop = '40px';\r\n  el.style.marginBottom = '40px';\r\n  el.style.minHeight = '100px';\r\n\r\n    heading.insertAdjacentElement('beforebegin', el);\r\n  console.log('✅ addInContentRecipeHeadingAdUnits: injected after first .penci-recipe-heading');\r\n}\r\n\r\nfunction addInContentRecipeFooterAdUnits() {\r\n\r\n  const heading = document.querySelector('.penci-recipe-method');\r\n  if (!heading) {\r\n    console.log('❌ addInContentRecipeHeadingAdUnits: no .penci-recipe-method found. Aborting.');\r\n    return;\r\n  }\r\n\r\n  const el = document.createElement('div');\r\n  el.dataset.onpage = true;\r\n  el.dataset.adpath = '/339474670,23317619946/HenInTheKitchen/Content_1';\r\n  el.style.marginTop = '40px';\r\n  el.style.marginBottom = '40px';\r\n  el.style.minHeight = '100px';\r\n\r\n  heading.insertAdjacentElement('afterend', el);\r\n  console.log('✅ addInContentRecipeHeadingAdUnits: injected after first .penci-recipe-method');\r\n}\r\n\r\nfunction addAtfUnit() {\r\n\r\n  const target = document.querySelector(\r\n    'body > div > section.elementor-section.elementor-top-section.elementor-element.elementor-element-92017bc.elementor-section-boxed.elementor-section-height-default.elementor-section-height-default'\r\n  );\r\n  if (!target) {\r\n    console.log('❌ addAtfUnit: target selector not found. Aborting.');\r\n    return;\r\n  }\r\n\r\n  const el = document.createElement('div');\r\n  el.dataset.onpage = true;\r\n  el.dataset.adpath = '/339474670,23317619946/HenInTheKitchen/ATF';\r\n  el.style.marginTop = '40px';\r\n  el.style.marginBottom = '40px';\r\n  el.style.minHeight = '250px';\r\n\r\n  target.insertAdjacentElement('afterend', el);\r\n  console.log('✅ addAtfUnit: ad injected after target.');\r\n}\r\n\r\nfunction addSideRecipeUnit() {\r\n  // --- Desktop only ---\r\n  if (window.innerWidth < 1024) {\r\n    console.log('❌ addSideRecipeUnit: Not desktop. Aborting.');\r\n    return;\r\n  }\r\n\r\n  // --- Exclude homepage ---\r\n  const path = window.location.pathname;\r\n  if (path === '/' || path === '') {\r\n    console.log('❌ addSideRecipeUnit: Homepage detected. Aborting.');\r\n    return;\r\n  }\r\n\r\n  // --- Generic target selector based on your example ---\r\n  // body > .elementor-location-single ... .elementor-col-25 ... .elementor-widget-ucaddon_post_grid\r\n  const target = document.querySelector(\r\n    'body .elementor-location-single .elementor-column.elementor-col-25 .elementor-widget-ucaddon_post_grid'\r\n  );\r\n\r\n  if (!target) {\r\n    console.log('❌ addSideRecipeUnit: target selector not found. Aborting.');\r\n    return;\r\n  }\r\n\r\n  // --- Create ad unit ---\r\n  const el = document.createElement('div');\r\n  el.dataset.onpage = true;\r\n  el.dataset.adpath = '/339474670,23317619946/HenInTheKitchen/Slim_0';\r\n  el.style.marginTop = '20px';\r\n  el.style.marginBottom = '20px';\r\n  el.style.minHeight = '600px';\r\n\r\n  // --- Inject AFTER the target widget ---\r\n  target.insertAdjacentElement('afterend', el);\r\n  console.log('✅ addSideRecipeUnit: ad injected after post grid widget:', target);\r\n}\r\n\r\nfunction addHomeSidebarUnit() {\r\n  // --- Desktop only ---\r\n  if (window.innerWidth < 1024) {\r\n    console.log('❌ addHomeSidebarUnit: Not desktop. Aborting.');\r\n    return;\r\n  }\r\n\r\n  // --- Homepage only ---\r\n  const path = window.location.pathname;\r\n  if (path !== '/' && path !== '') {\r\n    console.log('❌ addHomeSidebarUnit: Not homepage. Aborting.');\r\n    return;\r\n  }\r\n\r\n  // Sidebar container selector (homepage)\r\n  const container = document.querySelector(\r\n    'body > div.elementor.elementor-4 > section.elementor-section.elementor-top-section.elementor-element.elementor-element-da8db87.elementor-section-full_width.elementor-section-height-default.elementor-section-height-default > div > div.elementor-column.elementor-col-66.elementor-top-column.elementor-element.elementor-element-95277d4 > div > section > div > div.elementor-column.elementor-col-50.elementor-inner-column.elementor-element.elementor-element-c08fbbb.elementor-hidden-mobile > div'\r\n  );\r\n\r\n  if (!container) {\r\n    console.log('❌ addHomeSidebarUnit: container not found. Aborting.');\r\n    return;\r\n  }\r\n\r\n  // Create ad unit\r\n  const el = document.createElement('div');\r\n  el.dataset.onpage = true;\r\n  el.dataset.adpath = '/339474670,23317619946/HenInTheKitchen/Slim_0'; \r\n  el.style.marginTop = '20px';\r\n  el.style.marginBottom = '20px';\r\n  el.style.minHeight = '600px';\r\n\r\n  // Append to sidebar container\r\n  container.appendChild(el);\r\n\r\n  console.log('✅ addHomeSidebarUnit: ad appended to homepage sidebar container.');\r\n}\r\n\r\nfunction createInterstitialCmd() {\r\n  \r\n  const slot = window.googletag.defineOutOfPageSlot(\r\n    '/339474670,23317619946/HenInTheKitchen/HenInTheKitchen_Interstitial', window.googletag.enums.OutOfPageFormat.INTERSTITIAL);\r\n\r\n  if (!slot) {\r\n    console.error('Failed to define out of page slot - Interstitial');\r\n    return;\r\n  }\r\n\r\n  slot.addService(window.googletag.pubads());\r\n  window.googletag.enableServices();\r\n  window.googletag.display(slot);\r\n  \r\n}\r\n\r\nfunction injectTaboolaFooterFeed() {\r\n\r\n    // --- Only run on homepage or category pages ---\r\n    const url = window.location.href;\r\n    const isHome = window.location.pathname === '/' || window.location.pathname === '';\r\n    const isCategory = url.includes('/category/');\r\n\r\n    if (!isHome && !isCategory) {\r\n        console.log('Taboola footer feed not injected — not home or category page.');\r\n        return;\r\n    }\r\n\r\n    // Select all <footer> elements\r\n    var elements = document.querySelectorAll('body > footer');\r\n\r\n    if (elements.length === 0) {\r\n        console.log('No elements found with the selector.');\r\n        return;\r\n    }\r\n\r\n    elements.forEach(function (element) {\r\n        // Prevent duplicate injection\r\n        if (document.getElementById('taboola-footer-feed-4x4')) {\r\n            console.log('Taboola footer feed already injected.');\r\n            return;\r\n        }\r\n\r\n        // Create the Taboola container\r\n        var divElement = document.createElement('div');\r\n        divElement.id = 'taboola-footer-feed-4x4';\r\n        divElement.style.margin = '0 auto';\r\n        divElement.style.width = '100%';\r\n        divElement.style.boxSizing = 'border-box';\r\n\r\n        // Apply max width for desktop only\r\n        var style = document.createElement('style');\r\n        style.innerHTML = `\r\n            @media (min-width: 768px) {\r\n                #taboola-footer-feed-4x4 {\r\n                    max-width: 970px;\r\n                }\r\n            }\r\n        `;\r\n        document.head.appendChild(style);\r\n\r\n        // Create the Taboola script\r\n        var scriptElement = document.createElement('script');\r\n        scriptElement.type = 'text/javascript';\r\n        scriptElement.text = `\r\n            window._taboola = window._taboola || [];\r\n            _taboola.push({\r\n                mode: 'alternating-thumbnails-a',\r\n                container: 'taboola-footer-feed-4x4',\r\n                placement: 'Footer Feed 4x4',\r\n                target_type: 'mix'\r\n            });\r\n        `;\r\n\r\n        // Insert before <footer>\r\n        element.parentNode.insertBefore(divElement, element);\r\n        element.parentNode.insertBefore(scriptElement, element);\r\n    });\r\n\r\n    console.log('Taboola footer feed injected successfully before footer.');\r\n}\r\n\r\nfunction injectTaboolaArticleFooterFeed() {\r\n\r\n    // --- Do NOT run on homepage or category pages ---\r\n    const url = window.location.href;\r\n    const isHome = window.location.pathname === '/' || window.location.pathname === '';\r\n    const isCategory = url.includes('/category/');\r\n\r\n    if (isHome || isCategory) {\r\n        console.log('Taboola article footer feed NOT injected — homepage or category page.');\r\n        return;\r\n    }\r\n\r\n    // Find #post_content\r\n    const postContent = document.querySelector('#post_content');\r\n    if (!postContent) {\r\n        console.log('#post_content not found — skipping injection.');\r\n        return;\r\n    }\r\n\r\n    // Prevent duplicate injection\r\n    if (document.getElementById('taboola-below-article-thumbnails-50')) {\r\n        console.log('Taboola article footer feed already injected.');\r\n        return;\r\n    }\r\n\r\n    // Decide where to insert: after the article wrapper if possible,\r\n    // otherwise after the parent of #post_content\r\n    const container =\r\n        postContent.closest('article') || postContent.parentElement;\r\n\r\n    if (!container || !container.parentNode) {\r\n        console.log('No valid container parent found — skipping injection.');\r\n        return;\r\n    }\r\n\r\n    // Create Taboola container\r\n    const divElement = document.createElement('div');\r\n    divElement.id = 'taboola-below-article-thumbnails-50';\r\n    divElement.style.margin = '40px auto';\r\n    divElement.style.width = '100%';\r\n    divElement.style.boxSizing = 'border-box';\r\n\r\n    // Desktop max width\r\n    const style = document.createElement('style');\r\n    style.innerHTML = `\r\n        @media (min-width: 768px) {\r\n            #taboola-below-article-thumbnails-50 {\r\n                max-width: 738px;\r\n            }\r\n        }\r\n    `;\r\n    document.head.appendChild(style);\r\n\r\n    // Taboola script\r\n    const scriptElement = document.createElement('script');\r\n    scriptElement.type = 'text/javascript';\r\n    scriptElement.text = `\r\n        window._taboola = window._taboola || [];\r\n        _taboola.push({\r\n            mode: 'alternating-thumbnails-a',\r\n            container: 'taboola-below-article-thumbnails-50',\r\n            placement: 'Below Article Thumbnails 50',\r\n            target_type: 'mix'\r\n        });\r\n    `;\r\n\r\n    // Insert AFTER the container (article or parent of #post_content)\r\n    const parent = container.parentNode;\r\n    parent.insertBefore(divElement, container.nextSibling);\r\n    parent.insertBefore(scriptElement, divElement.nextSibling);\r\n\r\n    console.log('Taboola article footer feed injected after article container.');\r\n}\r\n\r\nfunction injectTaboolaSPLITArticleFooterFeed() {\r\n  // --- Do NOT run on homepage or category pages ---\r\n  const url = window.location.href;\r\n  const isHome = window.location.pathname === '/' || window.location.pathname === '';\r\n  const isCategory = url.includes('/category/');\r\n\r\n  if (isHome || isCategory) {\r\n    console.log('Taboola SPLIT article footer feed NOT injected — homepage or category page.');\r\n    return;\r\n  }\r\n\r\n  // The exact Elementor widget element you shared\r\n  const anchor = document.querySelector(\r\n    'div.elementor-element.elementor-element-7da4698.elementor-widget.elementor-widget-shortcode'\r\n  );\r\n\r\n  if (!anchor || !anchor.parentNode) {\r\n    console.log('Anchor element not found — skipping injection.');\r\n    return;\r\n  }\r\n\r\n  // Prevent duplicate injection\r\n  if (document.getElementById('taboola-hen-in-the-kitchen-feed')) {\r\n    console.log('Taboola SPLIT article footer feed already injected.');\r\n    return;\r\n  }\r\n\r\n  // Create Taboola container\r\n  const divElement = document.createElement('div');\r\n  divElement.id = 'taboola-hen-in-the-kitchen-feed';\r\n  divElement.style.margin = '40px auto';\r\n  divElement.style.width = '100%';\r\n  divElement.style.boxSizing = 'border-box';\r\n\r\n  // Desktop max width\r\n  if (!document.getElementById('taboola-hen-in-the-kitchen-feed-style')) {\r\n    const style = document.createElement('style');\r\n    style.id = 'taboola-hen-in-the-kitchen-feed-style';\r\n    style.innerHTML = `\r\n      @media (min-width: 768px) {\r\n        #taboola-hen-in-the-kitchen-feed {\r\n          max-width: 738px;\r\n        }\r\n      }\r\n    `;\r\n    document.head.appendChild(style);\r\n  }\r\n\r\n  // Taboola script (push)\r\n  const scriptElement = document.createElement('script');\r\n  scriptElement.type = 'text/javascript';\r\n  scriptElement.text = `\r\n    window._taboola = window._taboola || [];\r\n    _taboola.push({\r\n      mode: 'alternating-thumbnails-a',\r\n      container: 'taboola-hen-in-the-kitchen-feed',\r\n      placement: 'Hen In The Kitchen Feed',\r\n      target_type: 'mix'\r\n    });\r\n  `;\r\n\r\n  // Insert BEFORE the anchor (keeps it inside the same Elementor section/container)\r\n  anchor.parentNode.insertBefore(divElement, anchor);\r\n  anchor.parentNode.insertBefore(scriptElement, anchor);\r\n\r\n  console.log('Taboola SPLIT article footer feed injected before the Elementor widget (inside main section).');\r\n}\r\n\r\nfunction injectTaboolaSidebar() {\r\n  // Desktop only\r\n  if (window.innerWidth < 1024) return;\r\n\r\n  // 1) Find ANY existing widget inside the sidebar column and grab its wrap.\r\n  let anchorWidget =\r\n    document.querySelector('body.single-post .elementor-location-single .elementor-column.elementor-col-25 .elementor-widget-wrap > .elementor-widget') ||\r\n    document.querySelector('body.single-post .elementor-location-single .elementor-column.elementor-col-33 .elementor-widget-wrap > .elementor-widget') ||\r\n    document.querySelector('body.single-post .elementor-location-single .elementor-sidebar .elementor-widget') ||\r\n    document.querySelector('body.single-post .elementor-location-single aside .elementor-widget');\r\n\r\n  if (!anchorWidget) {\r\n    console.debug('injectTaboolaSidebar: no anchor widget found in sidebar.');\r\n    return;\r\n  }\r\n\r\n  // 2) Resolve the widget wrap (the actual parent that holds widgets)\r\n  let wrap = anchorWidget.parentElement;\r\n  if (!wrap || !wrap.classList.contains('elementor-widget-wrap')) {\r\n    wrap = anchorWidget.closest('.elementor-widget-wrap');\r\n  }\r\n  if (!wrap) {\r\n    console.debug('injectTaboolaSidebar: .elementor-widget-wrap not found from anchor.');\r\n    return;\r\n  }\r\n\r\n  // 3) Duplicate guard: don’t inject twice\r\n  if (wrap.querySelector('[id^=\"taboola-right-rail-6x1\"]')) return;\r\n\r\n  // 4) Build Taboola widget as a proper Elementor widget sibling\r\n  const uid = Math.random().toString(36).slice(2, 8);\r\n  const containerId = `taboola-right-rail-6x1-${uid}`;\r\n\r\n  const widget = document.createElement('div');\r\n  widget.className = 'elementor-element elementor-widget elementor-widget-html';\r\n  widget.style.width = '100%';\r\n\r\n  const widgetContainer = document.createElement('div');\r\n  widgetContainer.className = 'elementor-widget-container';\r\n\r\n  const taboolaDiv = document.createElement('div');\r\n  taboolaDiv.id = containerId;\r\n\r\n  widgetContainer.appendChild(taboolaDiv);\r\n  widget.appendChild(widgetContainer);\r\n\r\n  const script = document.createElement('script');\r\n  script.type = 'text/javascript';\r\n  script.text = `\r\n    window._taboola = window._taboola || [];\r\n    _taboola.push({\r\n      mode: 'thumbnails-rr-6x1',\r\n      container: '${containerId}',\r\n      placement: 'Right Rail 6x1',\r\n      target_type: 'mix'\r\n    });\r\n  `;\r\n\r\n  // 5) Insert AFTER the last existing widget inside the same wrap (same parent!)\r\n  const widgets = wrap.querySelectorAll(':scope > .elementor-widget, :scope > .elementor-element.elementor-widget');\r\n  const lastWidget = widgets[widgets.length - 1] || null;\r\n\r\n  if (lastWidget) {\r\n    lastWidget.insertAdjacentElement('afterend', widget);\r\n    widget.insertAdjacentElement('afterend', script);\r\n  } else {\r\n    // Fallback: append to the wrap\r\n    wrap.appendChild(widget);\r\n    wrap.appendChild(script);\r\n  }\r\n}\r\n\r\nfunction injectTaboolaNextUpFeed() {\r\n\r\n    // // Hard guard: only run if this variant was chosen\r\n    // if (window.__taboolaStickyChoice && window.__taboolaStickyChoice !== \"taboola\") {\r\n    //     console.log(\"injectTaboolaNextUpFeed() skipped – choice is\", window.__taboolaStickyChoice);\r\n    //     return;\r\n    // }\r\n\r\n    // console.log(\"injectTaboolaNextUpFeed() EXECUTING\");\r\n\r\n    // Get the <body> element directly\r\n    var body = document.body;\r\n\r\n    if (!body) {\r\n        console.log('No <body> element found.');\r\n        return;\r\n    }\r\n\r\n    // Create the <div> element\r\n    var divElement = document.createElement('div');\r\n    divElement.id = 'taboola-trigger-next-up-now';\r\n    divElement.style.maxWidth = '970px';\r\n    divElement.style.margin = '0 auto';\r\n\r\n    // Create the <script> element\r\n    var scriptElement = document.createElement('script');\r\n    scriptElement.type = 'text/javascript';\r\n    scriptElement.text = `\r\n        window._taboola = window._taboola || [];\r\n        _taboola.push({\r\n            mode: 'thumbnails-invisible-next-up',\r\n            container: 'taboola-trigger-next-up-now',\r\n            placement: 'Trigger Next Up Now',\r\n            target_type: 'mix'\r\n        });\r\n    `;\r\n\r\n    // Append the <div> and <script> to the body\r\n    body.appendChild(divElement);\r\n    body.appendChild(scriptElement);\r\n\r\n    console.log('Taboola Next Up injected successfully.');\r\n}\r\n\r\nfunction injectTaboolaHomePageSidebar() {\r\n    // Run only on homepage\r\n    if (window.location.pathname !== '/' && window.location.pathname !== '/index.html') {\r\n        console.log('Not homepage, skipping Taboola sidebar injection.');\r\n        return;\r\n    }\r\n\r\n    // Select all elements matching the selector\r\n    var elements = document.querySelectorAll(\r\n        'body > div.elementor.elementor-4 > section.elementor-section.elementor-top-section.elementor-element.elementor-element-da8db87.elementor-section-full_width.elementor-section-height-default.elementor-section-height-default > div > div.elementor-column.elementor-col-66.elementor-top-column.elementor-element.elementor-element-95277d4 > div > section > div > div.elementor-column.elementor-col-50.elementor-inner-column.elementor-element.elementor-element-c08fbbb.elementor-hidden-mobile > div'\r\n    );\r\n\r\n    if (elements.length === 0) {\r\n        console.log('No elements found with the selector.');\r\n        return;\r\n    }\r\n\r\n    elements.forEach(function (element) {\r\n        // Create the Taboola container\r\n        var divElement = document.createElement('div');\r\n        divElement.id = 'taboola-left-rail-1x10-thumbnails';\r\n\r\n        // Create the Taboola script\r\n        var scriptElement = document.createElement('script');\r\n        scriptElement.type = 'text/javascript';\r\n        scriptElement.text = `\r\n            window._taboola = window._taboola || [];\r\n            _taboola.push({\r\n                mode: 'thumbnails-rails-1x10',\r\n                container: 'taboola-left-rail-1x10-thumbnails',\r\n                placement: 'Left Rail 1x10 Thumbnails',\r\n                target_type: 'mix'\r\n            });\r\n        `;\r\n\r\n        // ✅ Append both elements at the very end *inside* the selector\r\n        element.appendChild(divElement);\r\n        element.appendChild(scriptElement);\r\n    });\r\n}\r\n\r\nonDomReady(async () => {\r\n\r\n    try {\r\n        \r\n        createStickyBanner();\r\n        createInterstitial();\r\n        ensureAdCenteringCSS();\r\n        addTopAdUnits();\r\n        addInContentRecipeHeaderAdUnits();\r\n        addInContentRecipeFooterAdUnits();\r\n        addAtfUnit();\r\n        addSideRecipeUnit();\r\n        addHomeSidebarUnit();\r\n        createNative();\r\n        injectTaboolaFooterFeed();\r\n\r\nif (window.innerWidth <= 768) {\r\n            injectTaboolaSPLITArticleFooterFeed();\r\n        } else {\r\n            injectTaboolaArticleFooterFeed();\r\n        }\r\n\r\n// Add custom slots creation logic here 👇\r\n    } catch(err) {\r\n      console.error('Failed to create slots:', err.stack);\r\n    }\r\n\r\n    // Must be called last\r\n    initAds();\r\n    observeSlots();\r\n  });\r\n\r\n})(window, document);\r\n\r\n"]}