{"version":3,"file":"eNewsPaperPageClient_usa.js","sources":["../../../node_modules/.pnpm/ua-parser-js@1.0.37/node_modules/ua-parser-js/src/ua-parser.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/rng.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/stringify.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/native.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/v4.js","../../../packages/lib-common/src/utils/objectUtils.ts","../../../packages/lib-common/src/utils/deviceUtils.ts","../../../packages/lib-common/src/utils/logUtils.ts","../../../packages/lib-common/src/utils/numUtils.ts","../../../packages/lib-common/src/utils/typeUtils.ts","../../../packages/lib-common/src/utils/urlUtils.ts","../../../packages/lib-common/src/utils/dateTimeUtils.ts","../../../packages/lib-common/src/utils/pageUtils.ts","../../../packages/lib-common/src/utils/cookieUtils.ts","../../../packages/lib-domain-tag/src/eventSubjects/domainSubject.ts","../../../packages/lib-domain-tag/src/eventSubjects/domContentLoadedSubject.ts","../../../packages/lib-domain-tag/src/eventSubjects/tcfReadySubject.ts","../../../packages/lib-domain-tag/src/eventSubjects/domReadyStateCompleteSubject.ts","../../../packages/lib-domain-tag/src/eventSubjects/domReadyStateInteractiveSubject.ts","../../../packages/lib-domain-tag/src/eventSubjects/windowUrlChangedSubject.ts","../../../packages/lib-domain-tag/src/domain/commandArray.ts","../../../packages/lib-domain-tag/src/domain/domainTag.ts","../../../packages/lib-domain-tag/src/main.ts","../../../packages/lib-domain-tag/global.ts","../../../packages/lib-domain-tag/src/ads/adUnit.ts","../../../packages/lib-domain-tag/src/ads/eventSubjects/firstSlotRenderEndedSubject.ts","../../../packages/lib-domain-tag/src/eventSubjects/pageClientExecutionEndedSubject.ts","../../../packages/lib-domain-tag/src/ads/pageAdsBuilder.ts","../lib/pages/eNewsPaperPage/pageClient.ts"],"sourcesContent":["/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.37\n Copyright © 2012-2021 Faisal Salman \n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '1.0.37',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 500;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook',\n CHROMIUM_OS = 'Chromium OS',\n MAC_OS = 'Mac OS';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant|iemobile|slim)\\s?(?:browser)?[\\/ ]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(heytap|ovi)browser\\/([\\d\\.]+)/i, // Heytap/Ovi\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart Lenovo '+BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\n /fxios\\/([-\\w\\.]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihu|(qi?ho?o?|360)browser/i // 360\n ], [[NAME, '360 ' + BROWSER]], [\n /(oculus|sailfish|huawei|vivo)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1 ' + BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, 'Sogou Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, 'Sogou Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345Explorer)[\\/ ]?([\\w\\.]+)/i // QQBrowser/2345 Browser\n ], [NAME, VERSION], [\n /(lbbrowser)/i, // LieBao Browser\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /(Klarna)\\/([\\w\\.]+)/i, // Klarna Shopping Browser for iOS & Android\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram/Snapchat\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i, // Links\n /panasonic;(viera)/i // Panasonic Viera\n ], [NAME, VERSION], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /master.|lts./, \"\"]]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i, // Redmi Pad\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mitv-\\w{5}) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n /(quest( 2| pro)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n /\\b(libweb)/i\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i // Windows Phone\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /windows nt 6\\.2; (arm)/i, // Windows RT\n /windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, CHROMIUM_OS], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;\n var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);\n var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n var _isSelfNav = _navigator && _navigator.userAgent == _ua;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser[MAJOR] = majorize(_browser[VERSION]);\n // Brave-specific detection\n if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\n _browser[NAME] = 'Brave';\n }\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\n _device[TYPE] = MOBILE;\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\n _device[MODEL] = 'iPad';\n _device[TYPE] = TABLET;\n }\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n if (_isSelfNav && !_os[NAME] && _uach && _uach.platform != 'Unknown') {\n _os[NAME] = _uach.platform \n .replace(/chrome os/i, CHROMIUM_OS)\n .replace(/macos/i, MAC_OS); // backward compatibility\n }\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","\nimport { v4 as uuidv4 } from \"uuid\";\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace objUtil {\n export const isStrNullOrUndefined = (data?: string | null | undefined) => {\n return data === null || data === undefined || data?.trim()?.length === 0 || data?.trim() === '';\n }\n\n export const isNullOrEmpty = isStrNullOrUndefined;\n\n export const isObjNullOrUndefined = (data?: object | null | undefined): boolean => {\n return data === null || data === undefined;\n }\n export const isNumNullOrUndefined = (data?: number | null | undefined): boolean => {\n return data === null || data === undefined;\n }\n\n export const uuidStr = (): string => {\n return uuidv4();\n }\n\n}\n\n\n","import {UAParser} from \"ua-parser-js\";\nimport {typeUtil} from \"./typeUtils\";\nimport {objUtil} from \"./objectUtils\";\ntype StringOrUndefined=typeUtil.StringOrUndefined;\nconst isStrNullOrUndefined=objUtil.isStrNullOrUndefined;\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace deviceUtil {\n\n\n export const isMobileExt = (userAgent?: string | null | undefined): boolean => {\n return /Mobile|Mobi|iP(hone|od)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/i.test(userAgent ?? navigator.userAgent);\n };\n\n export enum DeviceTypeEnum {\n desktop = 'desktop',\n mobile = 'mobile',\n tablet = 'tablet',\n phone = 'phone',\n smarttv = 'smarttv'\n }\n\n export type DeviceTypeArray = Array\n\n export class DeviceTypeInfo {\n\n\n constructor() {\n const uaParser = new UAParser(window?.navigator?.userAgent);\n const ua = uaParser.getResult();\n this.model = ua.device?.model;\n this.vendor = ua.device?.vendor;\n this.osName = ua.os?.name;\n this.osVersion = ua.os?.version;\n this.type = ua.device?.type;\n if (isStrNullOrUndefined(this.type)) {\n if (isMobileExt()) {\n this.type = DeviceTypeEnum.mobile;\n } else {\n this.type = DeviceTypeEnum.desktop;\n }\n }\n\n }\n type: StringOrUndefined | DeviceTypeEnum;\n model: StringOrUndefined;\n vendor: StringOrUndefined;\n osName: StringOrUndefined;\n osVersion: StringOrUndefined;\n\n isDesktop():boolean{\n const type=this.type ?? DeviceTypeEnum.mobile;\n const result=DeviceTypeInfo.desktopDevices.some(q=>q === type)\n return result;\n }\n isMobile():boolean{\n const type=this.type ?? DeviceTypeEnum.mobile;\n const result=DeviceTypeInfo.mobileDevices.some(q=>q === type)\n return result;\n }\n\n\n public static readonly desktopDevices = [DeviceTypeEnum.desktop, DeviceTypeEnum.tablet, DeviceTypeEnum.smarttv];\n public static readonly mobileDevices = [DeviceTypeEnum.mobile, DeviceTypeEnum.phone];\n public static readonly allDevices = [\n DeviceTypeEnum.mobile,DeviceTypeEnum.phone,\n DeviceTypeEnum.desktop, DeviceTypeEnum.tablet,DeviceTypeEnum.smarttv\n ];\n\n\n }\n\n //export const deviceTypeInfo = new DeviceTypeInfo();\n\n}\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace logUtil {\n let isLoggerActive: boolean | undefined;\n const consoleBold = \"font-weight: bold\";\n const consoleNormal = \"font-weight: normal\";\n\n\n let _logPrefix = \"domain-client\";\n export const isDebug = (): boolean => {\n if (isLoggerActive != null) return isLoggerActive;\n isLoggerActive = window.location?.search?.indexOf(\"debug=true\") > 0;\n return isLoggerActive;\n }\n export const setLogPrefix = (prefix: string) => {\n _logPrefix = prefix;\n isDebug();\n }\n setLogPrefix(_logPrefix);\n\n \n\n // export const consoleLog = (message: any, ...data: any[]) => {\n // if (logger) {\n // console?.log(`%c${_logPrefix}%c`, consoleBold, consoleNormal, message, data);\n // }\n // }\n export const consoleLog = (...data:any) => {\n if (isLoggerActive) {\n console?.log(`%c${_logPrefix}%c`, consoleBold, consoleNormal,...data);\n } \n }\n\n export const consoleWarn = (...data: any) => {\n console?.warn(`%c${_logPrefix}%c`, consoleBold, consoleNormal, ...data)\n }\n\n export const consoleError = (...data: any) => {\n console?.error(`%c${_logPrefix}%c`, consoleBold, consoleNormal, ...data)\n }\n\n export const throwError = (message: string) => {\n throw new Error(message);\n\n }\n export const throwEvalError = (message: string) => {\n throw new EvalError(message);\n\n }\n\n}\n\n\n\n","// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace numUtil {\n export const getRandomInt = (): number => {\n return new Date().getTime() | 0;\n };\n}\n\n\n\n\n\n","// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace typeUtil {\n export type CallbackFunction = () => void;\n export type InitFunction = () => void;\n export type StringOrUndefined = string | undefined;\n export type NumberOrUndefined = number | undefined;\n\n export interface IObjectIndexer {\n [key: string]: T;\n }\n\n export class ObjectIndexer implements IObjectIndexer {\n [key: string]: T;\n }\n}\n\n\n\n\n\n\n","import {objUtil} from \"./objectUtils\"\nimport { typeUtil } from \"./typeUtils\";\ntype StringOrUndefined= typeUtil.StringOrUndefined;\nconst isNullOrEmpty=objUtil.isNullOrEmpty;\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace urlUtil {\n export const getUrlQueryStringValue = (name: string): StringOrUndefined => {\n const urlParams = new URLSearchParams(window.location.search)\n const data = urlParams.get(name);\n return data ? data : undefined;\n\n }\n export const getWindowUrlString = (): StringOrUndefined => {\n\n return window?.location?.toString();\n }\n\n export const getDocumentReferrer = (): StringOrUndefined => {\n const data = document?.referrer;\n return isNullOrEmpty(data) ? undefined : data;\n }\n\n export const getHostNameFromUrl = (): StringOrUndefined => {\n return window?.location?.host\n }\n\n export const getUrlQueryStringValues = (names: Array): Map => {\n const urlParams = new URLSearchParams(window.location.search)\n const result = new Map();\n names.map(q => {\n const data = urlParams.get(q);\n result.set(q, data ? data : undefined);\n })\n return result;\n }\n export const getUrlQueryStringAllParams = (): Map => {\n const result = new Map();\n const urlParams = new URLSearchParams(window.location.search)\n for (const [key, value] of urlParams) {\n result.set(key, value);\n }\n return result;\n }\n}","\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace dateUtil{\n\nexport class DateTimeHelper {\n public getTimeStamp(){\n return new Date().getTime();\n }\n\n}\n\nexport const dateTime=new DateTimeHelper();\n}","// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace pageUtil {\n export enum PageTypeEnum {\n noPageType = \"no-page-type\",\n index = 'index',\n allPosts = 'all-posts',\n postDetail = 'post',\n loadMorePost = 'load-more-post',\n authorPost = 'author-post',\n tag = 'tag',\n astrologyIndex = 'astrology-index',\n astrologyAstrologyHoroscopeReview = 'astrology-horoscope-review',\n breakingNews = 'breaking-news',\n category = 'category',\n authors = 'authors',\n authorArchive = 'author-archive',\n page = 'page',\n election = 'election',\n contract = 'contract',\n financeIndex = 'finance-index',\n financeForex = 'finance-forex',\n financeSubPage = 'finance-subpages',\n sportIndexPage = 'sport-index',\n sportSubPage = 'sport-subpages',\n dynamicPage = 'dynamic-page',\n eNewsPaper = 'enewspaper-page',\n epg = 'epg-page',//electronic program guide page\n program = 'program',\n liveStream = 'live-stream'\n\n }\n\n export type PageTypeArray = Array;\n}","// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace cookieUtil {\n export class CookieHelper {\n public doesCookieExists(cookieName: string) {\n const cookies = document.cookie.split(';');\n for (let i = 0; i < cookies.length; i++) {\n const cookie = cookies[i].trim();\n if (cookie.startsWith(cookieName + '=')) {\n return true;\n }\n }\n return false;\n }\n\n }\n\n export const cookieHelper = new CookieHelper();\n}\n\n\n\n","import { logUtil } from \"@repo/lib-common\";\n\nexport type DomainSubjectCallback = (data: T | undefined) => void;\n\nexport abstract class DomainSubject {\n\n private data?: T;\n name?: string;\n subscriptions: DomainSubjectCallback[] = new Array>;\n mustBeTriggeredOnce = false;\n isTriggered = false;\n isInitialized = false;\n constructor() {\n\n }\n setData(data?: T) {\n this.data = data;\n }\n setDataAndTrigger(data?: T) {\n this.data = data;\n this.trigger();\n }\n getData() {\n return this.data ?? {} as T;\n }\n public subscribe(fn: DomainSubjectCallback) {\n\n this.subscriptions.push(fn);\n if (this.isTriggered && fn) {\n fn(this.data);\n }\n }\n public onBeforeTrigger?: VoidFunction;\n public onAfterTrigger?: VoidFunction;\n private maxRetryCount = 3;\n private retryCount = 0;\n public trigger() {\n this.isTriggered = true;\n logUtil.consoleLog(`${this.name} is triggered, data:`, this.data);\n if (this.mustBeTriggeredOnce && this.isTriggered) return;\n if (this.subscriptions.length === 0 || this.retryCount >= this.maxRetryCount) return;\n if (this.subscriptions.length === 0) {\n this.retryCount++;\n setTimeout(() => {\n this.trigger();\n }, 2000)\n return;\n }\n logUtil.consoleLog(`${this.name} callbacks are triggered`)\n for (let i = 0; i < this.subscriptions.length; i++) {\n const fn = this.subscriptions[i];\n if (fn) {\n fn(this.data);\n }\n }\n this.retryCount = 0;\n }\n\n activate() {\n\n if (this.isInitialized) {\n logUtil.consoleLog(`${this.name} is alreaedy activated`);\n return;\n }\n this.isInitialized = true;\n this.init();\n return this;\n\n }\n\n abstract init(): void\n // init(){\n // throw Error(\"override init on derived class\");\n // };\n\n\n}\n\n\n\n\n\n","import { DomainSubject } from \"./domainSubject\";\nimport { logUtil } from \"@repo/lib-common\";\n\nexport class DomContentLoadedSubject extends DomainSubject {\n\n name = \"DomContentLoadedSubject\";\n init = () => {\n logUtil.consoleLog(\"DomContentLoadedSubject init called\");\n if (document.readyState === \"complete\") {\n logUtil.consoleLog(\"DomContentLoadedSubject fail-safe triggered when readyState:\", document.readyState);\n this.trigger();\n return;\n }\n logUtil.consoleLog(\"DomContentLoadedSubject registered when readyState:\", document.readyState);\n document.addEventListener(\"DOMContentLoaded\", (event) => {\n logUtil.consoleLog(\"DOMContentLoaded event:\", event);\n this.trigger();\n });\n return;\n\n\n\n }\n\n}\n\nconst domContentLoadedSubject = new DomContentLoadedSubject();\ndomContentLoadedSubject.activate();\n\nexport { domContentLoadedSubject };\n\n\n\n\n","// @ts-ignore\nimport { logUtil } from \"@repo/lib-common\";\nimport { DomainSubject } from \"./domainSubject\";\nimport { domContentLoadedSubject } from \"./domContentLoadedSubject\";\n\n\n\nconst maxTcfCheckCount = 5;\nexport class TcfReadySubject extends DomainSubject {\n name = \"TcfReadySubject\";\n tcfCheckCount = 0;\n checkTCF(): boolean {\n // @ts-ignore\n let isTcfLoaded = (typeof window.__tcfapi !== \"undefined\") && (typeof window.__tcfapi === \"function\") && window.__tcfapi !== \"undefined\";\n\n if (isTcfLoaded) return isTcfLoaded;\n try {\n // @ts-ignore\n isTcfLoaded = (typeof window.frames !== \"undefined\") && (typeof window.frames.__tcfapi !== \"undefined\");\n } catch (e) { /* empty */ }\n return isTcfLoaded;\n }\n init = () => {\n if (this.tcfCheckCount > maxTcfCheckCount) {\n logUtil.consoleWarn(\"tcf not found on page\");\n return;\n }\n this.tcfCheckCount++;\n if (this.checkTCF()) {\n // @ts-ignore\n __tcfapi('addEventListener', 2, (tcData) => {\n console.log(tcData);\n logUtil.consoleLog(\"tcf->tcData\", tcData);\n // @ts-ignore\n this.setDataAndTrigger(this.tcData);\n\n });\n } else {\n setTimeout(() => {\n this.init();\n }, 500);\n }\n\n }\n}\n\nconst tcfReadySubject = new TcfReadySubject();\n\n\n\n/** attach to the dom content load event */\ndomContentLoadedSubject.subscribe(() => { tcfReadySubject.activate() });\nexport { tcfReadySubject };\n\n\n\n\n","import {DomainSubject} from \"./domainSubject\";\nimport {logUtil} from \"@repo/lib-common\";\nconst complete='complete';\nexport class DomReadyStateCompleteSubject extends DomainSubject{\n name= \"DomReadyStateCompleteSubject\";\n init=()=>{\n logUtil.consoleLog(`DomReadyStateCompleteSubject init called. document.readyState: ${document.readyState}`);\n if (document.readyState === complete) {\n logUtil.consoleLog(`${this.name} document.readyState is already ${document.readyState}`);\n this.trigger();\n return;\n }\n document.addEventListener(\"readystatechange\", (event) => {\n if (document.readyState === complete) {\n logUtil.consoleLog(`${this.name} document.readyState became ${document.readyState} event:`,event);\n this.trigger();\n }\n });\n }\n}\nconst domReadyStateCompleteSubject=new DomReadyStateCompleteSubject();\ndomReadyStateCompleteSubject.activate();\nexport {domReadyStateCompleteSubject};\n\n\n\n","import {DomainSubject} from \"./domainSubject\";\nimport {logUtil} from \"@repo/lib-common\";\n\nconst interactive='interactive';\nconst complete='complete';\n\nexport class DomReadyStateInteractiveSubject extends DomainSubject{\n name= \"DomReadyStateInteractiveSubject\";\n init=()=>{\n if (document.readyState === complete || document.readyState ===interactive) {\n logUtil.consoleLog(`${this.name} document.readyState is already ${document.readyState}`);\n this.trigger();\n return;\n }\n document.addEventListener(\"readystatechange\", (event) => {\n if (document.readyState === interactive) {\n logUtil.consoleLog(`${this.name} document.readyState became ${document.readyState} event:`,event);\n this.trigger();\n }\n\n });\n }\n\n\n}\n\nconst domReadyStateInteractiveSubject=new DomReadyStateInteractiveSubject();\ndomReadyStateInteractiveSubject.activate();\nexport {domReadyStateInteractiveSubject};\n\n\n\n\n","import {logUtil} from \"@repo/lib-common\";\nimport {DomainSubject} from \"./domainSubject\";\n\nexport class WindowUrlChangedSubject extends DomainSubject{\n name = \"WindowUrlChangedSubject\";\n init=()=>{\n window?.addEventListener(\"popstate\",(event)=>{\n logUtil.consoleLog(\"popstate\",event)\n this.trigger();\n });\n window?.addEventListener(\"hashchange\",(event)=>{\n logUtil.consoleLog(\"hashchange\",event)\n this.trigger();\n });\n }\n}\n\nconst windowUrlChangedSubject=new WindowUrlChangedSubject();\nwindowUrlChangedSubject.activate();\nexport {windowUrlChangedSubject};\n","import {logUtil} from \"@repo/lib-common\";\n\nlogUtil.setLogPrefix(\"domain-client\")\n\nexport interface ICommand {\n command: VoidFunction | undefined;\n hasError: boolean;\n exception: unknown\n\n}\n\nexport class CommandArray {\n waiting: Array = [];\n executed: Array = [];\n isProcessing: boolean = false;\n canProcess:boolean=false;\n\n\n push(f: VoidFunction): number {\n const num = this.waiting.push(f);\n if (!this.isProcessing && this.canProcess) {\n this.processQueue();\n }\n return num;\n }\n\n processQueue(): void {\n if (this.isProcessing) {\n logUtil.consoleLog(\"already processing queue\");\n return;\n }\n if (this.isProcessing) {\n this.isProcessing = true;\n }\n try {\n while (this.waiting.length > 0) {\n const commandFunc = this.waiting.shift();\n let hasError = false;\n let exception = null;\n try {\n if (commandFunc) {\n commandFunc();\n }\n } catch (e) {\n hasError = true;\n exception = e;\n logUtil.consoleError(\"processQueue error\", e);\n }\n this.executed.push({command: commandFunc, hasError: hasError, exception: exception});\n }\n } catch (ex) {\n logUtil.consoleError(ex);\n } finally {\n this.isProcessing = false;\n }\n }\n\n}\n","import { CommandArray } from \"./commandArray\";\nimport { ComponentBase, Components } from \"./types\";\nimport { cookieUtil, logUtil } from \"@repo/lib-common\";\nimport { domReadyStateCompleteSubject } from \"../eventSubjects/domReadyStateCompleteSubject\";\nimport { domContentLoadedSubject } from \"../eventSubjects/domContentLoadedSubject\";\n\nexport type ExistingPrimitiveTagType = { cmd: [] };\nexport type DomainTagGlobalType = DomainTag | ExistingPrimitiveTagType | undefined\nexport class DomainTag {\n\n constructor() {\n domReadyStateCompleteSubject.subscribe(() => {\n this.cmd.canProcess = true;\n this.processQueue();\n })\n domContentLoadedSubject.subscribe(() => {\n this.cmd.canProcess = true;\n this.processQueue();\n });\n }\n\n cmd: CommandArray = new CommandArray();\n components: Components = {};\n addComponent(c: T): void {\n\n if (this.components[c.key]) {\n logUtil.consoleWarn(\"another service already exists with same key:\", c);\n }\n this.components[c.key] = c;\n logUtil.consoleLog(\"adding a new service finished\", c);\n }\n get(key: string): ComponentBase {\n const srv = this.components[key];\n return srv;\n }\n processQueue(): void {\n this.cmd.processQueue();\n }\n isInitialized: boolean = false;\n isRegen: boolean = false;\n\n doesCookieExists = cookieUtil.cookieHelper.doesCookieExists;\n\n\n\n}\n\n\n","\nimport { DomainTag, ExistingPrimitiveTagType } from \"./domain/domainTag\";\n\nlet isDomainTagInitialized = false;\n\nexport function ensureDomainTag() {\n if (isDomainTagInitialized) return;\n isDomainTagInitialized = true;\n const domainTagInstance = new DomainTag();\n domainTagInstance.isInitialized = true;\n\n const existingTag = (window.domainTag as ExistingPrimitiveTagType);\n window.domainTag = domainTagInstance;\n if (existingTag) {\n domainTagInstance.isRegen = true;\n while (existingTag.cmd && existingTag.cmd.length > 0) {\n const cmdFunc = existingTag.cmd.shift();\n if (cmdFunc) {\n domainTagInstance.cmd.push(cmdFunc);\n }\n\n }\n }\n //domainTagInstance.processQueue();\n\n}\n\n\n\n","/* eslint-disable no-var */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-namespace */\nimport { cookieUtil, deviceUtil, pageUtil } from \"@repo/lib-common\";\nimport { PageAdsBuilder } from \"./src/ads/pageAdsBuilder\";\nimport { DomainTagGlobalType } from \"./src/domain/domainTag\";\nimport { TargetingMap } from \"./src/ads/googleTypes\";\nimport { CountryEnum } from \"./countryEnum\";\nimport { ensureDomainTag } from \"./src/main\";\nimport { PageAdsBuilderForSpecialUseCases } from \"./src/ads/pageAdsBuilderForSpecialUseCases\";\n\n\nexport { }\nexport interface AdsConf {\n isEnabled: boolean;\n targetingMap: TargetingMap;\n //isSecure:boolean;\n}\n\nexport class DomainPageClient {\n adsBuilder?: PageAdsBuilderForSpecialUseCases | PageAdsBuilder;\n device?: deviceUtil.DeviceTypeInfo;\n pageType?: pageUtil.PageTypeEnum;\n doesCookieExists = cookieUtil.cookieHelper.doesCookieExists;\n\n}\n\ndeclare global {\n interface Window {\n pbjs: any;\n googletag: any;\n\n\n domainTag: DomainTagGlobalType;\n domainClient: DomainPageClient; //late init in web app runtime\n domainAdsConfForDesktop: AdsConf; //late init in web app runtime\n domainAdsConfForMobile: AdsConf; //late init in web app runtime\n domainCountry: CountryEnum; //late init in web app build\n domainDevice: deviceUtil.DeviceTypeInfo; //late init in web app build\n\n }\n}\n//@ts-ignore\nwindow.domainCountry = import.meta.env.VITE_COUNTRY;\n//ensure google tag -->\nwindow.googletag = window.googletag || { cmd: [] };\n//ensure google tag --<\n\n//ensure pbjs -->\nwindow.pbjs = window.pbjs || {};\nwindow.pbjs.que = window.pbjs.que || [];\n//ensure pbjs --<\n\n//ensure domain objects -->\nwindow.domainDevice = new deviceUtil.DeviceTypeInfo();\nwindow.domainTag = window.domainTag || { cmd: [] };\nwindow.domainAdsConfForDesktop = window.domainAdsConfForDesktop || {\n isEnabled: true,\n targetingMap: {},\n isAdxEnabled: true,\n} as AdsConf;\n\nensureDomainTag();\n//ensure domain objects --<\n\n\n","import {\n GptSlot,\n GeneralSize,\n GptImpressionViewableEvent,\n GptSlotOnloadEvent,\n GptSlotRenderEndedEvent,\n GptSlotRequestedEvent,\n GptSlotResponseReceivedEvent,\n GptSlotVisibilityChangedEvent,\n SingleSizeArray,\n GptSlotRenderEndedEventData,\n GptSlotRequestedEventData,\n GptSlotOnloadEventData,\n GptImpressionViewableEventData, GptSlotResponseReceivedEventData, GptSlotVisibilityChangedEventData,\n SingleSize\n} from \"./googleTypes\";\nimport { Bidder } from \"./bidder\";\nimport { BidderHelper } from \"./bidderHelper\";\nimport { dateUtil, deviceUtil, logUtil } from \"@repo/lib-common\";\nimport { ApsSlot, PbjsAdUnit } from \"./pbjsTypes\";\nimport { SlotRenderEndedSubject, SlotRenderEndedSubjectData } from \"./eventSubjects/slotRenderEndedSubject\";\nimport { DomainSubjectCallback } from \"../eventSubjects/domainSubject\";\n\n\n\n//#region ad unit subtypes -->\nexport abstract class AdSizes {\n private static single_300x600: SingleSize = [300, 600];\n private static single_300x250: SingleSize = [300, 250];\n private static single_970x250: SingleSize = [970, 250];\n private static single_1x1: SingleSize = [1, 1];\n\n public static general_1x1: GeneralSize = [AdSizes.single_1x1];\n public static general_300x600: GeneralSize = [AdSizes.single_300x250];\n public static general_970x250: GeneralSize = [AdSizes.single_970x250];\n public static prebid_970x250: SingleSizeArray = [AdSizes.single_970x250];\n public static prebid_300x600: SingleSizeArray = [AdSizes.single_300x600];\n public static prebid_300x250: SingleSizeArray = [AdSizes.single_300x250];\n\n public static desktop_PageSkin_Top: GeneralSize = AdSizes.general_1x1;//[[1, 1], [1230, 40]];\n public static desktop_Masthead: GeneralSize = [[1, 1], [728, 90], [960, 90], [960, 250], [970, 90], [970, 250]];\n public static desktop_Tower: GeneralSize = [[1, 1], [120, 600], [160, 600], [300, 600]];\n public static desktop_GenBodyBox: GeneralSize = [[300, 600], [300, 250], [250, 250], [200, 200]];\n public static desktop_Gen_300x250: GeneralSize = [[200, 200], [250, 250], [300, 50], [300, 100], [300, 250], [320, 50], [320, 100], [320, 150]];\n public static desktop_Widget_300x250: GeneralSize = [[336, 280], [300, 250], [250, 250], [200, 200]];\n public static desktop_Widget_336x280: GeneralSize = [[336, 280], [300, 250], [250, 250], [200, 200]];\n public static desktop_GenBodyBox_300x250: GeneralSize = [[300, 250], [250, 250], [200, 200]];\n\n public static desktop_Intext: GeneralSize = [[1, 1], [200, 200], [250, 250], [300, 250], [336, 280], [640, 480]];\n public static desktop_And_Mobile_Nativo: GeneralSize = [[1, 1], 'fluid'];\n\n public static mobile_Generic: GeneralSize = [[1, 1], [200, 200], [250, 250], [300, 50], [300, 100], [300, 250], [320, 50], [320, 100], [320, 150], 'fluid'];\n public static mobile_Generic_v2: GeneralSize = [[200, 200], [250, 250], [300, 50], [300, 100], [300, 250], [320, 50], [320, 100], [320, 150], 'fluid'];\n\n\n}\n\nexport abstract class AdSizesTv {\n private static single_300x600: SingleSize = [300, 600];\n private static single_300x250: SingleSize = [300, 250];\n private static single_970x250: SingleSize = [970, 250];\n private static single_1x1: SingleSize = [1, 1];\n\n public static general_1x1: GeneralSize = [AdSizesTv.single_1x1];\n public static general_300x600: GeneralSize = [AdSizesTv.single_300x250];\n public static general_970x250: GeneralSize = [AdSizesTv.single_970x250];\n public static prebid_970x250: SingleSizeArray = [AdSizesTv.single_970x250];\n public static prebid_300x600: SingleSizeArray = [AdSizesTv.single_300x600];\n public static prebid_300x250: SingleSizeArray = [AdSizesTv.single_300x250];\n\n public static desktop_PageSkin_Top: GeneralSize = AdSizes.general_1x1;//[[1, 1], [1230, 40]];\n public static desktop_Masthead: GeneralSize = [[970, 250]];\n //public static desktop_Masthead: GeneralSize = [[1, 1], [728, 90], [960, 90], [960, 250], [970, 90], [970, 250]];\n public static desktop_Tower: GeneralSize = [[160, 600]];\n // public static desktop_Tower: GeneralSize = [[1, 1], [120, 600], [160, 600], [300, 600]];\n public static desktop_GenBodyBox: GeneralSize = [[300, 600], [300, 250], [250, 250], [200, 200]];\n public static desktop_Gen_300x250: GeneralSize = [[200, 200], [250, 250], [300, 50], [300, 100], [300, 250], [320, 50], [320, 100], [320, 150]];\n public static desktop_Widget_300x250: GeneralSize = [[336, 280], [300, 250], [250, 250], [200, 200]];\n public static desktop_Widget_336x280: GeneralSize = [[336, 280], [300, 250], [250, 250], [200, 200]];\n public static desktop_GenBodyBox_300x250: GeneralSize = [[300, 250], [250, 250], [200, 200]];\n\n public static desktop_Intext: GeneralSize = [[1, 1], [200, 200], [250, 250], [300, 250], [336, 280], [640, 480]];\n public static desktop_And_Mobile_Nativo: GeneralSize = [[1, 1], 'fluid'];\n\n public static mobile_Generic: GeneralSize = [[1, 1], [200, 200], [250, 250], [300, 50], [300, 100], [300, 250], [320, 50], [320, 100], [320, 150], 'fluid'];\n\n\n}\nexport const enum AdUnitTypeEnum {\n banner = \"banner\",\n outOfPage_Interstitial = \"interstitial\",\n outOfPage_BottomAnchor = \"bottom-anchor\",\n outOfPage_TopAnchor = \"top-anchor\",\n\n\n}\n\n/** ad unit special use case besides type */\nexport const enum AdUnitSpecialUseCaseEnum {\n none = \"none\",\n nativo = \"nativo\",\n intext = \"intext\",\n rewarded = \"rewarded\",\n loadMore = \"loadMore\"\n}\n\n\n/** ad loading strategy */\nexport const enum AdLoadingStrategyTypeEnum {\n /** default value, if none ad unit will not be requested */\n none = \"none\",\n /** used for above the fold (viewport) initial single request architecture */\n sra = \"sra\",\n\n trigger = \"trigger\",\n /** used for below the fold (viewport) lazy load (intersection observer based) */\n intersectionObserverBasedLazyLoad = \"intersection_observer_lazy_load\",\n\n /** used for google publisher tag lazy load architecture (not implemented) */\n gptLazyLoad = \"gpt_lazy_load\",\n\n /** used for initializing ad unit after dom content loaded */\n domContentLoaded = \"dom_content_loaded\"\n\n\n}\n//#endregion\n\n//#region states\nexport class PbjsState {\n private _isPbjsInitialRequestExecuted = false;\n public get isPbjsInitialRequestExecuted() {\n return this._isPbjsInitialRequestExecuted;\n }\n public set isPbjsInitialRequestExecuted(value) {\n this._isPbjsInitialRequestExecuted = value;\n }\n private _isPbjsAdUnitAdded_TimeStame?: number | undefined;\n public get isPbjsAdUnitAdded_TimeStame(): number | undefined {\n return this._isPbjsAdUnitAdded_TimeStame;\n }\n public set isPbjsAdUnitAdded_TimeStame(value: number | undefined) {\n this._isPbjsAdUnitAdded_TimeStame = value;\n }\n private _isPbjsAdUnitAdded = false;\n public get isPbjsAdUnitAdded() {\n return this._isPbjsAdUnitAdded;\n }\n public set isPbjsAdUnitAdded(value) {\n this.isPbjsAdUnitAdded_TimeStame = dateUtil.dateTime.getTimeStamp();\n this._isPbjsAdUnitAdded = value;\n }\n\n private _lastRequestedAt?: number | undefined;\n public get lastRequestedAt(): number | undefined {\n return this._lastRequestedAt;\n }\n public set lastRequestedAt(value: number | undefined) {\n this._lastRequestedAt = value;\n }\n}\n\nexport class GptState {\n\n private _isDefineSlotExecuted = false;\n public get isDefineSlotExecuted() {\n return this._isDefineSlotExecuted;\n }\n public set isDefineSlotExecuted(value) {\n this._isDefineSlotExecuted = value;\n }\n\n private _isDisplaySlotExecuted = false;\n public get isDisplaySlotExecuted() {\n return this._isDisplaySlotExecuted;\n }\n public set isDisplaySlotExecuted(value) {\n this._isDisplaySlotExecuted = value;\n }\n\n private _refreshSlotExecutedAt?: number | undefined;\n public get refreshSlotExecutedAt(): number | undefined {\n return this._refreshSlotExecutedAt;\n }\n public set refreshSlotExecutedAt(value: number | undefined) {\n this._refreshSlotExecutedAt = value;\n }\n\n private _isRefreshSlotExecuted = false;\n public get isRefreshSlotExecuted() {\n return this._isRefreshSlotExecuted;\n }\n public set isRefreshSlotExecuted(value) {\n this.refreshSlotExecutedAt = dateUtil.dateTime.getTimeStamp();\n this._isRefreshSlotExecuted = value;\n }\n\n //#region gpt events\n private _gptSlotRenderEndedEvent?: GptSlotRenderEndedEvent | undefined;\n public get gptSlotRenderEndedEvent(): GptSlotRenderEndedEvent | undefined {\n return this._gptSlotRenderEndedEvent;\n }\n public set gptSlotRenderEndedEvent(value: GptSlotRenderEndedEvent | undefined) {\n this._gptSlotRenderEndedEvent = value;\n }\n\n private _gptSlotRequestedEvent?: GptSlotRequestedEvent | undefined;\n public get gptSlotRequestedEvent(): GptSlotRequestedEvent | undefined {\n return this._gptSlotRequestedEvent;\n }\n public set gptSlotRequestedEvent(value: GptSlotRequestedEvent | undefined) {\n this._gptSlotRequestedEvent = value;\n }\n\n private _gptSlotOnloadEvent?: GptSlotOnloadEvent | undefined;\n public get gptSlotOnloadEvent(): GptSlotOnloadEvent | undefined {\n return this._gptSlotOnloadEvent;\n }\n public set gptSlotOnloadEvent(value: GptSlotOnloadEvent | undefined) {\n this._gptSlotOnloadEvent = value;\n }\n\n private _gptImpressionViewableEvent?: GptImpressionViewableEvent | undefined;\n public get gptImpressionViewableEvent(): GptImpressionViewableEvent | undefined {\n return this._gptImpressionViewableEvent;\n }\n public set gptImpressionViewableEvent(value: GptImpressionViewableEvent | undefined) {\n this._gptImpressionViewableEvent = value;\n }\n\n private _gptSlotResponseReceivedEvent?: GptSlotResponseReceivedEvent | undefined;\n public get gptSlotResponseReceivedEvent(): GptSlotResponseReceivedEvent | undefined {\n return this._gptSlotResponseReceivedEvent;\n }\n public set gptSlotResponseReceivedEvent(value: GptSlotResponseReceivedEvent | undefined) {\n this._gptSlotResponseReceivedEvent = value;\n }\n\n private _gptSlotVisibilityChangedEvent?: GptSlotVisibilityChangedEvent | undefined;\n public get gptSlotVisibilityChangedEvent(): GptSlotVisibilityChangedEvent | undefined {\n return this._gptSlotVisibilityChangedEvent;\n }\n public set gptSlotVisibilityChangedEvent(value: GptSlotVisibilityChangedEvent | undefined) {\n this._gptSlotVisibilityChangedEvent = value;\n }\n\n //#endregion\n\n}\n\nexport class AutoRefreshState {\n\n private _isCompleted = false;\n public get isCompleted() {\n return this._isCompleted;\n }\n public set isCompleted(value) {\n this._isCompleted = value;\n }\n\n private _completedAt?: number | undefined;\n public get completedAt(): number | undefined {\n return this._completedAt;\n }\n public set completedAt(value: number | undefined) {\n this._completedAt = value;\n }\n\n}\nexport class IntersectionObserverState {\n\n private _isCompleted = false;\n public get isCompleted() {\n return this._isCompleted;\n }\n public set isCompleted(value) {\n this.completedAt = dateUtil.dateTime.getTimeStamp();\n this._isCompleted = value;\n }\n\n private _completedAt?: number | undefined;\n public get completedAt(): number | undefined {\n return this._completedAt;\n }\n public set completedAt(value: number | undefined) {\n this._completedAt = value;\n }\n\n}\n//#endregion\n\nexport class AdUnitState {\n private _isProcessLockEnabled: boolean = false;\n public get isProcessLockEnabled(): boolean {\n return this._isProcessLockEnabled;\n }\n public set isProcessLockEnabled(value: boolean) {\n this._isProcessLockEnabled = value;\n }\n}\n\nexport interface AdUnitSizeMapping {\n viewport: SingleSize;\n sizes: GeneralSize;\n}\n/** ad unit main builder class contains google and header bidding */\nexport class AdUnit {\n\n\n\n static builder(type: AdUnitTypeEnum): AdUnit {\n return new AdUnit(type);\n }\n constructor(type: AdUnitTypeEnum) {\n this.type = type;\n }\n\n\n\n\n //#region simple states\n\n gptState = new GptState();\n pbjsState = new PbjsState();\n autoRefreshState = new AutoRefreshState();\n objectState = new AdUnitState();\n intersectionObserverState = new IntersectionObserverState();\n\n\n\n\n\n\n mustBeInitialized() {\n if (this.objectState.isProcessLockEnabled) {\n logUtil.consoleLog(`adUnit ${this.divId} mustBeInitialized=false objectState.isProcessLockEnabled:`, this.objectState.isProcessLockEnabled);\n return false;\n }\n if (this.gptState.isDefineSlotExecuted) {\n logUtil.consoleLog(`adUnit ${this.divId} mustBeInitialized=false gptState.isDefineSlotExecuted:`, this.gptState.isDefineSlotExecuted);\n return false;\n }\n if (this.gptState.isDisplaySlotExecuted) {\n logUtil.consoleLog(`adUnit ${this.divId} mustBeInitialized=false gptState.isDisplaySlotExecuted:`, this.gptState.isDisplaySlotExecuted);\n return false;\n }\n\n if (this.isPreBidEnabled && this.pbjsState.isPbjsAdUnitAdded) {\n logUtil.consoleLog(`adUnit ${this.divId} mustBeInitialized=false pbjsState.isPbjsAdUnitAdded:`, this.pbjsState.isPbjsAdUnitAdded);\n return false;\n }\n if (this.isPreBidEnabled && this.pbjsState.isPbjsInitialRequestExecuted) {\n logUtil.consoleLog(`adUnit ${this.divId} mustBeInitialized=false pbjsState.isPbjsInitialRequestExecuted:`, this.pbjsState.isPbjsInitialRequestExecuted);\n return false;\n }\n if (this.gptSlot) {\n logUtil.consoleLog(`adUnit ${this.divId} mustBeInitialized=false gptSlot:`, this.gptSlot);\n return false;\n }\n logUtil.consoleLog(`adUnit ${this.divId} mustBeInitialized=true`);\n return true;\n }\n\n private refreshTimeLimitInMs = 60 * 1000; //in milliseccond\n canBeRefreshed() {\n if (!this.isAutoRefreshEnabled) {\n logUtil.consoleLog(`adUnit ${this.divId} canBeRefreshed=false, isAutoRefreshEnabled:`, this.isAutoRefreshEnabled);\n return false;\n }\n if (this.objectState.isProcessLockEnabled) {\n logUtil.consoleLog(`adUnit ${this.divId} canBeRefreshed=false, objectState.isProcessLockEnabled:`, this.objectState.isProcessLockEnabled);\n return false;\n }\n if (this.gptState.isRefreshSlotExecuted && this.gptState.refreshSlotExecutedAt) {\n const timeDif = dateUtil.dateTime.getTimeStamp() - this.gptState.refreshSlotExecutedAt;\n if (timeDif < this.refreshTimeLimitInMs) {\n logUtil.consoleLog(`adUnit ${this.divId} canBeRefreshed=false, gptState.refreshSlotExecutedAt timeDif:`, timeDif);\n return false;\n }\n }\n if (this.mustBeInitialized()) {\n logUtil.consoleLog(`adUnit ${this.divId} canBeRefreshed=false, mustBeInitialized:`, this.mustBeInitialized());\n return false;\n }\n\n if (this.gptState.gptImpressionViewableEvent && this.gptState.gptImpressionViewableEvent.eventData) {\n const timeDif = dateUtil.dateTime.getTimeStamp() - this.gptState.gptImpressionViewableEvent.createdAt.getTime();\n if (timeDif < this.refreshTimeLimitInMs) {\n logUtil.consoleLog(`adUnit ${this.divId} canBeRefreshed=false, gptState.gptImpressionViewableEvent.createdAt timeDif:`, timeDif);\n return false;\n }\n }\n if (this.gptState.gptSlotVisibilityChangedEvent && this.gptState.gptSlotVisibilityChangedEvent.eventData\n && this.gptState.gptSlotVisibilityChangedEvent.eventData?.inViewPercentage <= 0) {\n logUtil.consoleLog(`adUnit ${this.divId} canBeRefreshed=false, gptState.gptSlotVisibilityChangedEvent.eventData.inViewPercentage:`, this.gptState.gptSlotVisibilityChangedEvent.eventData?.inViewPercentage);\n return false;\n }\n\n if (this.intersectionObserverState.isCompleted && this.intersectionObserverState.completedAt) {\n const timeDif = dateUtil.dateTime.getTimeStamp() - this.intersectionObserverState.completedAt;\n if (timeDif < this.refreshTimeLimitInMs) {\n logUtil.consoleLog(`adUnit ${this.divId} canBeRefreshed=false, intersectionObserverState.completedAt timeDif:`, timeDif);\n return false;\n }\n }\n\n if (this.autoRefreshState.isCompleted && this.autoRefreshState.completedAt) {\n const timeDif = dateUtil.dateTime.getTimeStamp() - this.autoRefreshState.completedAt;\n if (timeDif < this.refreshTimeLimitInMs) {\n logUtil.consoleLog(`adUnit ${this.divId} canBeRefreshed=false, autoRefreshState.completedAt timeDif:`, timeDif);\n return false;\n }\n }\n\n logUtil.consoleLog(`adUnit ${this.divId} canBeRefreshed=true`, this);\n\n return true;\n\n\n\n\n }\n\n\n\n //#endregion\n\n //#region props\n type: AdUnitTypeEnum;\n isEnabled: boolean = true;\n adUnitPath!: string;\n sizes: GeneralSize = [];\n divId!: string;\n divStyle?: string;\n isCollapseEmptyDivEnabled: boolean = false;\n loadingStrategy: AdLoadingStrategyTypeEnum = AdLoadingStrategyTypeEnum.none;\n gptSlot?: GptSlot;\n isAutoRefreshEnabled_WhenPageUrlChanged: boolean = false;\n isAutoRefreshEnabled: boolean = false;\n specialUseCaseType: AdUnitSpecialUseCaseEnum = AdUnitSpecialUseCaseEnum.none;\n specialUseCaseIndex: number = 0;\n setSpecialUseCaseIndex(val: number) {\n this.specialUseCaseIndex = val;\n return this;\n }\n\n\n setSpecialUseCase(useCaseType: AdUnitSpecialUseCaseEnum) {\n this.specialUseCaseType = useCaseType;\n return this;\n }\n\n setIsEnabled(value: boolean): AdUnit {\n this.isEnabled = value;\n return this;\n }\n setAdUnitPath(value: string): AdUnit {\n this.adUnitPath = value;\n return this;\n }\n setSizes(value: GeneralSize): AdUnit {\n this.sizes = value;\n return this;\n }\n\n\n\n sizeMappings: Array = [];\n addSizeMapping(viewport: SingleSize, sizes: GeneralSize) {\n this.sizeMappings.push({ viewport, sizes });\n //const sizeMapping = { viewport: viewport, sizes: sizes } as AdUnitSizeMapping\n //this.sizeMappings.push(sizeMapping)\n return this;\n\n }\n setDeviceType(deviceTypes: deviceUtil.DeviceTypeArray) {\n this.allowedDevices = deviceTypes;\n return this;\n }\n\n\n\n setDivId(value: string): AdUnit {\n this.divId = value;\n return this;\n }\n setDivStyleAfterRequest(divStyle: string) {\n this.divStyle = divStyle;\n return this;\n }\n setCollapseEmptyDivEnabled(value: boolean): AdUnit {\n this.isCollapseEmptyDivEnabled = value;\n return this;\n }\n\n setLoadingStrategy(value: AdLoadingStrategyTypeEnum): AdUnit {\n this.loadingStrategy = value;\n return this;\n }\n\n setIsAutoRefreshEnabled(value: boolean): AdUnit {\n this.isAutoRefreshEnabled = value;\n return this;\n }\n\n setIsAutoRefreshEnabled_WhenPageUrlChanged(value: boolean): AdUnit {\n this.isAutoRefreshEnabled_WhenPageUrlChanged = value;\n return this;\n }\n\n\n setType(value: AdUnitTypeEnum): AdUnit {\n this.type = value;\n return this;\n }\n setGptSlot(value: GptSlot) {\n this.gptSlot = value;\n return this;\n }\n //#endregion\n\n\n\n //#region prebid -->\n /** prebid AdUnit object to be used for ad request\n * @link https://docs.prebid.org/dev-docs/adunit-reference.html#ad-unit-reference\n *\n * */\n pbjsAdUnit?: PbjsAdUnit;\n apsSlot?: ApsSlot;\n bidderHelper?: BidderHelper;\n isPreBidEnabled = false;\n prebidSizeLimits: SingleSizeArray = [];\n calculatedBidders?: Array;\n allowedDevices: deviceUtil.DeviceTypeArray = [];\n\n\n setIsPrebidEnabled(value: boolean): AdUnit {\n this.isPreBidEnabled = value;\n return this;\n }\n\n setPrebidSizeLimits(sizes: SingleSizeArray) {\n this.prebidSizeLimits = sizes;\n return this;\n }\n setBidders(bidders: Array): AdUnit {\n this.calculatedBidders = bidders;\n return this;\n }\n setBidderHelper(bidderHelper: BidderHelper) {\n this.bidderHelper = bidderHelper;\n return this;\n }\n\n setBidderCustomParam(bidderCode: string, args: any): AdUnit {\n\n if (this.isPreBidEnabled && this.bidderHelper?.bidders) {\n this.bidderHelper.bidders.forEach((q: { code: string; params: any; }) => {\n if (q.code === bidderCode) {\n q.params = { ...q.params, ...args };\n }\n });\n }\n return this;\n\n }\n //#endregion\n\n //#region subjects -->\n private slotRenderEndedSubject = new SlotRenderEndedSubject();\n onSlotRenderEnded(fn: DomainSubjectCallback) {\n this.slotRenderEndedSubject.subscribe(fn);\n return this;\n }\n //#endregion\n\n //#region gpt event data setters -->\n\n setGptSlotRenderEndedEventData(data: GptSlotRenderEndedEventData) {\n\n this.gptState.gptSlotRenderEndedEvent = new GptSlotRenderEndedEvent(data);\n const subjectData = new SlotRenderEndedSubjectData();\n subjectData.isEmpty = data.isEmpty;\n subjectData.divId = this.divId;\n this.slotRenderEndedSubject.setDataAndTrigger(subjectData);\n\n return this;\n }\n\n setGptSlotRequestedEventData(data: GptSlotRequestedEventData) {\n this.gptState.refreshSlotExecutedAt = dateUtil.dateTime.getTimeStamp();\n this.gptState.gptSlotRequestedEvent = new GptSlotRequestedEvent(data);\n return this;\n }\n\n\n setGptSlotOnloadEventData(data: GptSlotOnloadEventData) {\n this.gptState.gptSlotOnloadEvent = new GptSlotOnloadEvent(data);\n return this;\n }\n\n\n setGptImpressionViewableEventData(data: GptImpressionViewableEventData) {\n this.gptState.gptImpressionViewableEvent = new GptImpressionViewableEvent(data);\n return this;\n }\n\n\n setGptSlotResponseReceivedEventData(data: GptSlotResponseReceivedEventData) {\n this.gptState.refreshSlotExecutedAt = dateUtil.dateTime.getTimeStamp();\n this.gptState.gptSlotResponseReceivedEvent = new GptSlotResponseReceivedEvent(data);\n return this;\n }\n\n\n setGptSlotVisibilityChangedEventData(data: GptSlotVisibilityChangedEventData) {\n this.gptState.gptSlotVisibilityChangedEvent = new GptSlotVisibilityChangedEvent(data);\n return this;\n }\n\n //#endregion\n\n\n\n isDivStyleApplied = false;\n applyDivStyle() {\n if (this.isDivStyleApplied) return;\n if (this.divStyle !== undefined) {\n const elem = document.getElementById(this.divId);\n if (elem) {\n elem.setAttribute('style', this.divStyle);\n this.isDivStyleApplied = true;\n return;\n }\n logUtil.consoleWarn(`${this.divId} elem is not found and style will not be applied`);\n } else {\n logUtil.consoleWarn(`${this.divId} elem is found but style will not be applied style:`, this.divStyle);\n }\n }\n\n /** Build and validate adUnit*/\n build() {\n if (this.loadingStrategy === AdLoadingStrategyTypeEnum.none) {\n logUtil.throwError(`AdLoadingStrategy is not defined for ${this.divId} ${this.adUnitPath}`);\n return this;\n }\n if (!this.adUnitPath) {\n logUtil.consoleError(`adUnitPath not defined for ${this.divId} ${this.adUnitPath}`);\n return this;\n }\n if (!this.divId && this.type == AdUnitTypeEnum.banner) {\n logUtil.throwError(`divId not defined`);\n return this;\n }\n\n if (this.isPreBidEnabled) {\n // this.calculatedBidders = this.bidderHelper?.filterBySizeArray(this.prebidSizeLimits);\n this.calculatedBidders = this.bidderHelper?.filterBySizeAndDevice(this.prebidSizeLimits, this.allowedDevices);\n if (!(this.calculatedBidders && this.calculatedBidders?.length > 0)) {\n logUtil.throwError(`bidders could not be calculated for ${this.divId} ${this.adUnitPath}`);\n return this;\n }\n const prebid = {} as PbjsAdUnit;\n prebid.code = this.adUnitPath;\n prebid.mediaTypes = { banner: { sizes: this.prebidSizeLimits } };\n prebid.bids = this.calculatedBidders.map(q => q.toBidObj());\n this.pbjsAdUnit = prebid;\n\n\n const apsSlot = {} as ApsSlot;\n apsSlot.slotID = this.divId;\n apsSlot.slotName = this.adUnitPath;\n apsSlot.sizes = this.prebidSizeLimits;\n this.apsSlot = apsSlot;\n\n }\n\n return this;\n }\n\n\n\n\n}\n\n","\nimport { DomainSubject } from \"../../eventSubjects/domainSubject\";\nimport {SlotRenderEndedSubjectData} from \"./slotRenderEndedSubject\";\n\nexport class FirstSlotRenderEndedSubject extends DomainSubject{\n name=\"FirstSlotRenderEndedSubject\";\n mustBeTriggeredOnce=true;\n \n onAfterTrigger=()=>{\n setTimeout(()=>{\n const endEvent=new CustomEvent(\"adRunner_SlotRenderEnded\");\n dispatchEvent(endEvent);\n },6000);\n }\n init=()=>{}\n\n}\n\nconst firstSlotRenderEndedSubject=new FirstSlotRenderEndedSubject();\nfirstSlotRenderEndedSubject.activate();\n\nexport {firstSlotRenderEndedSubject};","\nimport { DomainSubject } from \"./domainSubject\";\n\nexport class PageClientSubjectData {\n eventTime = new Date();\n}\n\nexport class PageClientExecutionEndedSubject extends DomainSubject {\n name = \"PageClientExecutionEndedSubject\";\n mustBeTriggeredOnce = true;\n\n\n onAfterTrigger = () => {\n setTimeout(() => {\n const endEvent = new CustomEvent(\"adRunner_SlotRenderEnded\");\n dispatchEvent(endEvent);\n }, 6000);\n }\n\n init = () => {\n this.subscribe(() => {\n const endEvent = new CustomEvent(\"PageClientExecutionEnded\");\n dispatchEvent(endEvent);\n })\n }\n\n}\n\nconst pageClientExecutionEndedSubject = new PageClientExecutionEndedSubject();\npageClientExecutionEndedSubject.activate();\n\nexport { pageClientExecutionEndedSubject };","// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-namespace */\nimport { dateUtil, deviceUtil, logUtil, pageUtil } from \"@repo/lib-common\";\nimport { AdLoadingStrategyTypeEnum, AdUnit, AdUnitSpecialUseCaseEnum, AdUnitTypeEnum } from \"./adUnit\";\n\nimport { AdUnitMap, GptSlot, TargetingMap } from \"./googleTypes\";\nimport { pbjs_BidderSettings, pbjsConfig_ConsentManagement, pbjsConfig_Default, pbjsConfig_GvlMapping } from \"./pbjsConfigs\";\nimport { PbjsAdUnit } from \"./pbjsTypes\";\nimport { objUtil } from \"@repo/lib-common\";\n//import { domContentLoadedSubject } from \"../eventSubjects/domContentLoadedSubject\";\nimport { tcfReadySubject } from \"../eventSubjects/tcfReadySubject\";\nimport { firstSlotRenderEndedSubject } from \"./eventSubjects/firstSlotRenderEndedSubject\";\nimport { SlotRenderEndedSubjectData } from \"./eventSubjects/slotRenderEndedSubject\";\nimport { AdsConf } from \"../../global\";\nimport { PageClientSubjectData, pageClientExecutionEndedSubject } from \"../eventSubjects/pageClientExecutionEndedSubject\";\n\n\n\nconst uuidStr = objUtil.uuidStr;\n\n\nconst PREBID_TIMEOUT = 1000;\nconst PREBID_FAILSAFE_TIMEOUT = 2000;\n// eslint-disable-next-line @typescript-eslint/no-unused-vars, no-var\ndeclare var pbjs: any;\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars, no-var\ndeclare var apstag: any;\n\n/** req manager for aps and prebid **/\nexport class RequestManager {\n adserverRequestSent = false;\n aps = false;\n prebid = false;\n err_pbjsRequestIds_AlreadExists = false;\n err_pbjsResponseIds_AlreadExists = false;\n correlationId!: string;\n}\n/** page main builder class contains ad units and targeting */\nexport abstract class PageAdsBuilder {\n\n constructor(deviceType: deviceUtil.DeviceTypeEnum, pageType: pageUtil.PageTypeEnum) {\n this.pageType = pageType;\n this.deviceType = deviceType;\n this.indexer = `${this.deviceType}-${this.pageType}`\n if (!this.isEnabled) return;\n this.init();\n }\n abstract init(): void;\n deviceType: deviceUtil.DeviceTypeEnum;\n pageType: pageUtil.PageTypeEnum;\n isEnabled: boolean = true;\n indexer: string;\n targeting: TargetingMap = {};\n adUnits: AdUnitMap = {};\n\n\n\n //#region auto refresh\n isAutoRefreshEnabled = false;\n isAutoRefreshRunning = false;\n autoRefreshIntervalInMs = 45 * 1000;\n autoRefreshRefId?: number;\n adsConf?: AdsConf\n setAdsConfAndApply(val: AdsConf) {\n this.adsConf = val;\n //check if adsConf exists -->\n if (this.adsConf) {\n logUtil.consoleLog(\"custom adsConf has been applied\", this.adsConf)\n this.isEnabled = this.adsConf.isEnabled;\n this.mergeTargetingMap(this.adsConf.targetingMap)\n }\n //check if adsConf exists -->\n\n return this;\n }\n\n\n setIsAutoRefreshEnabled(val: boolean) {\n this.isAutoRefreshEnabled = val;\n return this;\n }\n getIsAutoRefreshEnabled() {\n return this.isAutoRefreshEnabled;\n }\n //#endregion\n\n\n setIsEnabled(value: boolean): PageAdsBuilder {\n this.isEnabled = value;\n return this;\n }\n\n\n setTargeting(key: string, value: string): PageAdsBuilder {\n this.targeting[key] = value;\n return this;\n }\n\n mergeTargetingMap(targtingMap: TargetingMap): PageAdsBuilder {\n if (!targtingMap) return this;\n Object.keys(targtingMap).forEach(key => {\n this.targeting[key] = targtingMap[key];\n })\n return this;\n }\n\n setTargetingMap(targetingMap: TargetingMap): PageAdsBuilder {\n this.targeting = targetingMap;\n return this;\n }\n\n applyAdUnit(adUnit: AdUnit) {\n if (!adUnit.isEnabled) {\n return false;\n }\n adUnit.setDeviceType([this.deviceType])\n if (adUnit.build()) {\n this.adUnits[adUnit.divId] = adUnit;\n return true;\n }\n logUtil.consoleError(\"adUnit could not be initialized\", adUnit)\n\n }\n\n getAdUnitByDivId(divId: string): AdUnit {\n return this.adUnits[divId];\n }\n\n private outPageAdUnitTypes = [\n AdUnitTypeEnum.outOfPage_BottomAnchor,\n AdUnitTypeEnum.outOfPage_Interstitial,\n AdUnitTypeEnum.outOfPage_TopAnchor,\n\n ];\n filterAdUnits(args?: {\n isPrebidEnabled?: boolean,\n adUnitType?: AdUnitTypeEnum,\n adUnitTypes?: Array,\n loadingStrategy?: AdLoadingStrategyTypeEnum,\n loadingStrategies?: Array,\n excludeLoadingStrategies?: Array,\n specialUseCase?: AdUnitSpecialUseCaseEnum,\n specialUseCaseIndex?: number,\n allSpecialUseCases?: boolean,\n allOutOfPages?: boolean,\n isAutoRefreshEnabled?: boolean,\n divIds?: Array,\n divId?: string,\n mustBeInitialized?: boolean,\n canBeRefreshed?: boolean,\n excludeDivIds?: Array\n }) {\n return Object.entries(this.adUnits).filter(entry => {\n const adUnit = entry[1];\n if (!adUnit.isEnabled) return false;\n\n if (args?.adUnitType && args?.adUnitType !== adUnit.type) return false;\n if (args?.adUnitTypes && args.adUnitTypes.length > 0 && !args?.adUnitTypes.includes(adUnit.type)) return false;\n if (args?.loadingStrategy && args?.loadingStrategy !== adUnit.loadingStrategy) return false;\n if (args?.excludeLoadingStrategies && args?.excludeLoadingStrategies.includes(adUnit.loadingStrategy)) return false;\n if (args?.loadingStrategies && args?.loadingStrategies.length > 0 && !args.loadingStrategies.includes(adUnit.loadingStrategy)) return false;\n if (args?.isPrebidEnabled && args?.isPrebidEnabled !== adUnit.isPreBidEnabled) return false;\n if (args?.specialUseCase && args?.specialUseCase !== adUnit.specialUseCaseType) return false;\n if (args?.allSpecialUseCases && AdUnitSpecialUseCaseEnum.none === adUnit.specialUseCaseType) return false;\n if (args?.allOutOfPages && !this.outPageAdUnitTypes.includes(adUnit.type)) return false;\n if (args?.isAutoRefreshEnabled && args?.isAutoRefreshEnabled !== adUnit.isAutoRefreshEnabled) return false;\n if (args?.excludeDivIds && args.excludeDivIds.length > 0 && args.excludeDivIds.includes(adUnit.divId)) return false;\n if (args?.divId && args.divId !== adUnit.divId) return false;\n if (args?.divIds && !args.divIds.includes(adUnit.divId)) return false;\n if (args?.mustBeInitialized && args.mustBeInitialized !== adUnit.mustBeInitialized()) return false;\n //can be refreshed conditions -->\n if (args?.canBeRefreshed && !adUnit.canBeRefreshed()) return false;\n if (args?.canBeRefreshed && !this.intersectionObserver_VisibleDivIds.has(adUnit.divId)) return false;\n //can be refreshed conditions <--\n if (args?.specialUseCaseIndex && args?.specialUseCaseIndex !== adUnit.specialUseCaseIndex) return false;\n\n return true;\n\n }\n ).map(([, q]) => q);\n\n }\n\n updateAdUnit(adUnit: AdUnit) {\n this.adUnits[adUnit.divId] = adUnit;\n }\n\n //#region gpt -->\n gptWindowObject() {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window.googletag = window.googletag || { cmd: [] };\n }\n gptIsReady() {\n return window.googletag && googletag.apiReady && googletag.pubadsReady;\n\n }\n executeAsGptCommand(cmd: VoidFunction) {\n if (this.gptIsReady()) {\n cmd();\n } else {\n googletag.cmd.push(cmd);\n }\n }\n executeAsPbjsCommand(cmd: VoidFunction) {\n if (window.pbjs && pbjs.libloaded) {\n cmd();\n } else {\n pbjs.que.push(cmd);\n }\n }\n\n\n gptRefreshAdUnits(adUnits: Array) {\n const slots = adUnits.filter(q => q.gptSlot).map(q => {\n q.gptState.isRefreshSlotExecuted = true;\n this.updateAdUnit(q);\n return q.gptSlot!\n });\n if (!slots || slots.length == 0) {\n logUtil.consoleWarn(\"gptRefreshAdUnits ad unit slots are empty\", adUnits);\n return;\n }\n googletag.pubads().refresh(slots);\n }\n\n gptDisplayAdUnit(adUnit: AdUnit) {\n logUtil.consoleLog(\"GPT: display called adUnit.divId:\", adUnit.divId);\n adUnit.gptState.isDisplaySlotExecuted = true;\n if (adUnit.gptSlot) {\n googletag.display(adUnit.gptSlot);\n } else {\n logUtil.consoleWarn(\"GPT: display canceled because slot is undefined adUnit.divId:\", adUnit.divId);\n }\n this.updateAdUnit(adUnit);\n }\n\n gptDisplayAdUnits(adUnits: Array) {\n adUnits.forEach(adUnit => {\n this.gptDisplayAdUnit(adUnit);\n });\n }\n\n gptDefineSlot(adUnit: AdUnit) {\n logUtil.consoleLog(\"GPT: define slot called adUnit.divId:\", adUnit.divId);\n if (adUnit.gptState.isDefineSlotExecuted && adUnit.gptSlot) {\n logUtil.consoleLog(`GPT: define slot already called for adUnit.divId:`, adUnit.divId);\n return;\n }\n\n adUnit.gptState.isDefineSlotExecuted = true;\n let gptSlot: GptSlot | null | undefined;\n if (adUnit.type === AdUnitTypeEnum.banner) {\n gptSlot = googletag.defineSlot(adUnit.adUnitPath, adUnit.sizes, adUnit.divId);\n if (gptSlot) {\n gptSlot.addService(googletag.pubads());\n gptSlot.setCollapseEmptyDiv(adUnit.isCollapseEmptyDivEnabled);\n if (adUnit.sizeMappings && adUnit.sizeMappings.length > 0) {\n const gm = googletag.sizeMapping();\n adUnit.sizeMappings.map(sm => {\n gm.addSize(sm.viewport, sm.sizes);\n });\n const gmBuild = gm.build();\n if (gmBuild) { gptSlot.defineSizeMapping(gmBuild!); }\n }\n\n\n logUtil.consoleLog(`gptSlot created for ${adUnit.adUnitPath}`);\n adUnit.setGptSlot(gptSlot);\n }\n\n } else if (adUnit.type === AdUnitTypeEnum.outOfPage_Interstitial) {\n //gptSlot = googletag.defineOutOfPageSlot(adUnit.adUnitPath, googletag.enums.OutOfPageFormat.INTERSTITIAL);\n gptSlot = googletag.defineOutOfPageSlot(adUnit.adUnitPath, adUnit.divId); //adm içindeki template'den dolayı bu şekilde olmalı\n if (gptSlot) {\n gptSlot.addService(googletag.pubads());\n logUtil.consoleLog(`gptSlot created for ${adUnit.adUnitPath}`);\n adUnit.setGptSlot(gptSlot);\n }\n } else if (adUnit.type === AdUnitTypeEnum.outOfPage_BottomAnchor) {\n gptSlot = googletag.defineOutOfPageSlot(adUnit.adUnitPath, googletag.enums.OutOfPageFormat.BOTTOM_ANCHOR);\n if (gptSlot) {\n gptSlot.addService(googletag.pubads());\n logUtil.consoleLog(`gptSlot created for ${adUnit.adUnitPath}`);\n adUnit.setGptSlot(gptSlot);\n }\n } else if (adUnit.type === AdUnitTypeEnum.outOfPage_TopAnchor) {\n gptSlot = googletag.defineOutOfPageSlot(adUnit.adUnitPath, googletag.enums.OutOfPageFormat.TOP_ANCHOR);\n if (gptSlot) {\n gptSlot.addService(googletag.pubads());\n logUtil.consoleLog(`gptSlot created for ${adUnit.adUnitPath}`);\n adUnit.setGptSlot(gptSlot);\n }\n }\n if (!gptSlot) {\n logUtil.consoleError(`gptSlot could not be created for ${adUnit.adUnitPath}`);\n }\n this.updateAdUnit(adUnit);\n }\n\n gptEnableServices() {\n googletag.pubads().collapseEmptyDivs(false);\n googletag.pubads().disableInitialLoad();\n googletag.pubads().enableSingleRequest();\n googletag.enableServices();\n }\n\n gptSetTargeting() {\n const targetingEntries = Object.entries(this.targeting);\n targetingEntries.forEach(entry => {\n googletag.pubads().setTargeting(entry[0], entry[1])\n });\n }\n\n gptRegisterEvents() {\n this.executeAsGptCommand(() => {\n googletag.pubads().addEventListener(\"slotRenderEnded\", (event: any): void => {\n const slot = event.slot;\n const elemId = slot.getSlotElementId();\n logUtil.consoleLog(`\"GPT:slotRenderEnded for ${elemId}`, event);\n const adUnit = this.adUnits[elemId];\n if (adUnit) {\n adUnit.setGptSlotRenderEndedEventData(event);\n this.updateAdUnit(adUnit);\n }\n if (!firstSlotRenderEndedSubject.isTriggered) {\n const firstData = new SlotRenderEndedSubjectData();\n firstData.divId = elemId;\n firstData.isEmpty = event.isEmpty;\n firstSlotRenderEndedSubject.setDataAndTrigger(firstData);\n }\n });\n\n googletag.pubads().addEventListener(\"slotVisibilityChanged\", (event: any) => {\n const slot = event.slot;\n const elemId = slot.getSlotElementId();\n logUtil.consoleLog(`\"GPT:slotVisibilityChanged for ${elemId}`, event);\n const adUnit = this.adUnits[elemId];\n if (adUnit) {\n adUnit.setGptSlotVisibilityChangedEventData(event);\n this.updateAdUnit(adUnit);\n }\n });\n\n\n googletag.pubads().addEventListener(\"slotRequested\", (event: any) => {\n const slot = event.slot;\n const elemId = slot.getSlotElementId();\n logUtil.consoleLog(`\"GPT:slotRequested for ${elemId}`, event);\n const adUnit = this.adUnits[elemId];\n if (adUnit) {\n adUnit.objectState.isProcessLockEnabled = true;\n adUnit.setGptSlotRequestedEventData(event);\n this.updateAdUnit(adUnit);\n }\n });\n googletag.pubads().addEventListener(\"slotResponseReceived\", (event: any) => {\n const slot = event.slot;\n const elemId = slot.getSlotElementId();\n logUtil.consoleLog(`\"GPT:slotResponseReceived for ${elemId}`, event);\n const adUnit = this.adUnits[elemId];\n if (adUnit) {\n adUnit.objectState.isProcessLockEnabled = false;\n adUnit.setGptSlotResponseReceivedEventData(event);\n this.updateAdUnit(adUnit);\n }\n });\n\n googletag.pubads().addEventListener(\"impressionViewable\", (event: any) => {\n const slot = event.slot;\n const elemId = slot.getSlotElementId();\n logUtil.consoleLog(`\"GPT:impressionViewable for ${elemId}`, event);\n const adUnit = this.adUnits[elemId];\n if (adUnit) {\n adUnit.setGptImpressionViewableEventData(event);\n this.updateAdUnit(adUnit);\n }\n });\n googletag.pubads().addEventListener(\"slotOnload\", (event: any) => {\n const slot = event.slot;\n const elemId = slot.getSlotElementId();\n logUtil.consoleLog(`\"GPT:slotOnload for ${elemId}`, event);\n const adUnit = this.adUnits[elemId];\n if (adUnit) {\n adUnit.setGptSlotOnloadEventData(event);\n this.updateAdUnit(adUnit);\n }\n });\n });\n\n }\n\n //#endregion\n\n //#region pbjs -->\n private pbjsRequestIds = new Set;\n private pbjsResponseIds = new Set;\n\n\n pbjsWindowObject() {\n logUtil.consoleLog(\"pbjsWindowObject called\");\n window.pbjs = window.pbjs || {};\n window.pbjs.que = window.pbjs.que || [];\n }\n\n pbjsSetDefaultConfig() {\n logUtil.consoleLog(\"pbjsSetDefaultConfig called\");\n pbjs.setConfig(pbjsConfig_Default);\n pbjs.bidderSettings = pbjs_BidderSettings;\n }\n\n pbjsSetConfig(config: any) {\n logUtil.consoleLog(\"pbjsSetConfig called\");\n this.executeAsPbjsCommand(() => {\n pbjs.setConfig(config);\n });\n }\n\n pbjsMergeConfig(config: any) {\n logUtil.consoleLog(\"pbjsMergeConfig called\");\n this.executeAsPbjsCommand(() => {\n pbjs.mergeConfig(config);\n });\n\n }\n\n pbjsEnsureAdUnitsAdded(adUnits: Array) {\n logUtil.consoleLog(\"pbjsAddAdUnits called\", adUnits);\n if (adUnits && adUnits.length > 0) {\n const pbjsInternalAdUnitCodes = (pbjs.adUnits as PbjsAdUnit[]).map(q => q.code);\n const pbjsAdUnits = adUnits.filter(adUnit => !pbjsInternalAdUnitCodes.includes(adUnit.adUnitPath)).map(adUnit => {\n adUnit.pbjsState.isPbjsAdUnitAdded = true;\n this.updateAdUnit(adUnit);\n logUtil.consoleLog(\"pbjsAddAdUnits will add\", adUnit);\n return adUnit.pbjsAdUnit;\n });\n if (pbjsAdUnits && pbjsAdUnits.length > 0) {\n pbjs.addAdUnits(pbjsAdUnits);\n }\n }\n }\n\n pbjsRefreshGptSlots(requestManager: RequestManager, correlationId: string, adUnitCodes: Array, isFailSafeCall = false) {\n\n logUtil.consoleLog(`pbjsRefreshGptSlots called correlationId: ${correlationId}, isFailSafeCall:${isFailSafeCall} adUnits:`, adUnitCodes);\n if (!this.pbjsRequestIds.has(correlationId)) {\n this.pbjsRequestIds.add(correlationId);\n logUtil.consoleLog(`first use ${this.pbjsRefreshGptSlots.name}`);\n requestManager.err_pbjsRequestIds_AlreadExists = true;\n return;\n }\n if (this.pbjsResponseIds.has(correlationId)) {\n logUtil.consoleLog(`reqRes correlation id already exists ${correlationId} isFailSafeCall:${isFailSafeCall}`);\n requestManager.err_pbjsResponseIds_AlreadExists = true;\n return;\n }\n this.pbjsResponseIds.add(correlationId);\n //apstag -->\n if (requestManager.adserverRequestSent === true) {\n return;\n }\n requestManager.adserverRequestSent = true;\n //apstag --<\n this.executeAsGptCommand(() => {\n pbjs.setTargetingForGPTAsync();\n const slots = googletag.pubads().getSlots().filter(q => adUnitCodes.includes(q.getAdUnitPath()));\n logUtil.consoleLog(\"GPT slots:\", slots);\n if (slots.length !== adUnitCodes.length) {\n logUtil.consoleError(\"adUnit codes and slots do not match\", adUnitCodes);\n }\n googletag.pubads().refresh(slots);\n })\n }\n\n apstagRefreshSlots(requestManager: RequestManager, adUnitCodes: Array, isFailSafeCall = false) {\n\n logUtil.consoleLog(`apstagRefreshSlots called correlationId: ${requestManager.correlationId}, isFailSafeCall:${isFailSafeCall} adUnits:`, adUnitCodes);\n if (!this.pbjsRequestIds.has(requestManager.correlationId)) {\n this.pbjsRequestIds.add(requestManager.correlationId);\n logUtil.consoleLog(`first use ${this.pbjsRefreshGptSlots.name}`);\n requestManager.err_pbjsRequestIds_AlreadExists = true;\n return;\n }\n if (this.pbjsResponseIds.has(requestManager.correlationId)) {\n logUtil.consoleLog(`reqRes correlation id already exists ${requestManager.correlationId} isFailSafeCall:${isFailSafeCall}`);\n requestManager.err_pbjsResponseIds_AlreadExists = true;\n return;\n }\n this.pbjsResponseIds.add(requestManager.correlationId);\n //apstag -->\n if (requestManager.adserverRequestSent === true) {\n return;\n }\n requestManager.adserverRequestSent = true;\n //apstag --<\n this.executeAsGptCommand(() => {\n apstag.setDisplayBids();\n const slots = googletag.pubads().getSlots().filter(q => adUnitCodes.includes(q.getAdUnitPath()));\n googletag.pubads().getSlots().forEach(q => console.log(q.getAdUnitPath()));\n if (slots.length !== adUnitCodes.length) {\n logUtil.consoleError(\"adUnit codes and slots do not match\", adUnitCodes);\n }\n googletag.pubads().refresh(slots);\n })\n }\n\n public pbjsRequestBidsByPbjsAdUnits(adUnits: Array) {\n logUtil.consoleLog(\"pbjsRequestBidsByPbjsAdUnits called\", adUnits);\n if (adUnits === undefined || adUnits.length <= 0) {\n logUtil.consoleError(`${this.pbjsRequestBidsByPbjsAdUnits.name} canceled. adUnits are undefined or empty`);\n return;\n }\n\n const adUnitCodes = adUnits.map(adUnit => {\n adUnit.pbjsState.lastRequestedAt = dateUtil.dateTime.getTimeStamp();\n if (!adUnit.pbjsState.isPbjsInitialRequestExecuted) {\n adUnit.pbjsState.isPbjsInitialRequestExecuted = true;\n }\n this.updateAdUnit(adUnit);\n return adUnit.adUnitPath\n });\n\n const correlationId = uuidStr();\n this.pbjsRequestIds.add(correlationId);\n\n //apstag -->\n //pbjs.setTargetingForGPTAsync();\n const requestManager = new RequestManager();\n requestManager.correlationId = correlationId;\n //apstag --<\n\n\n // APS request -->\n const apsSlots = adUnits.filter(q => q.apsSlot).map(q => q.apsSlot);\n if (apsSlots && apsSlots.length > 0) {\n this.executeAsGptCommand(() => {\n apstag.fetchBids({\n timeout: PREBID_TIMEOUT,\n slots: apsSlots\n }, (bids: any) => {\n logUtil.consoleLog(`apstag response for ${correlationId} => bids:`, bids);\n googletag.cmd.push(() => {\n apstag.setDisplayBids();\n requestManager.aps = true; // signals that APS request has completed\n this.apstagRefreshSlots(requestManager, adUnitCodes)\n });\n }\n );\n })\n }\n\n // APS request --<\n\n this.executeAsPbjsCommand(() => {\n this.pbjsEnsureAdUnitsAdded(adUnits);\n\n logUtil.consoleLog(`request sent for ${correlationId}`);\n\n\n\n pbjs.requestBids({\n timeout: PREBID_TIMEOUT,\n adUnitCodes: adUnitCodes,\n bidsBackHandler: (bids?: any, timeOut?: boolean, auctionId?: string) => {\n logUtil.consoleLog(`bisBackHandler response for ${correlationId} => timeOut:${timeOut}, auctionId:${auctionId}, bids:`, bids);\n requestManager.prebid = true;\n pbjs.setPAAPIConfigForGPT();\n this.pbjsRefreshGptSlots(requestManager, correlationId, adUnitCodes);\n }\n });\n setTimeout(() => {\n this.pbjsRefreshGptSlots(requestManager, correlationId, adUnitCodes, true);\n }, PREBID_FAILSAFE_TIMEOUT);\n });\n\n }\n\n\n //#endregion\n\n\n //#region customLazyLoad -->\n private intersectionObserver_RootMargin = \"400px\"; //\"0px\"\n private intersectionObserver_VisibleIntersectionRatio = 0.50;\n private intersectionObserver_MinInterSectionRatio = 0.01;\n private intersectionObserver_Thresholds = [this.intersectionObserver_MinInterSectionRatio, this.intersectionObserver_VisibleIntersectionRatio];\n private intersectionObserver_Options = {\n root: null,\n //root:document.body,\n rootMargin: this.intersectionObserver_RootMargin,\n threshold: this.intersectionObserver_Thresholds,\n\n };\n\n\n intersectionObserver?: IntersectionObserver;\n intersectionObserver_VisibleDivIds = new Set;\n\n initIntersectionObserver() {\n if (this.intersectionObserver) return;\n logUtil.consoleLog(\"initIntersectionObserver_ForLazyLoad called\")\n\n //all ad units to track visibility -->\n const gptDivIds = this.filterAdUnits({ excludeLoadingStrategies: [AdLoadingStrategyTypeEnum.trigger] }).map(q => q.divId);\n //all ad units to track visibility --<\n if (gptDivIds && gptDivIds.length > 0) {\n this.intersectionObserver = new IntersectionObserver((entries) => {\n // if(!this.gptIsReady()){\n // logUtil.consoleLog(\"intersectionObserver: GPT is not ready, will wait next intersection cycle\");\n // return;\n // }\n this.intersectionObserver_CallBack(entries);\n }, this.intersectionObserver_Options);\n gptDivIds.forEach(divId => {\n const elem = document.getElementById(divId);\n\n if (elem) {\n this.intersectionObserver!.observe(elem);\n }\n })\n }\n\n }\n\n intersectionObserver_CallBack(entries: IntersectionObserverEntry[]) {\n entries.forEach((entry) => {\n const elemId = entry.target.id;\n if (entry.isIntersecting) {\n logUtil.consoleLog(`intersectionObserver: ${elemId} became visible intersectionRatio: ${entry.intersectionRatio}`);\n if (this.intersectionObserver_VisibleDivIds.has(elemId)) {\n //elem is already processed\n return;\n }\n this.intersectionObserver_VisibleDivIds.add(elemId);\n\n //check adunits to be initialized\n // let filteredAdUnits = this.filterAdUnits({ divId: elemId, mustBeInitialized: true });\n // if (filteredAdUnits && filteredAdUnits.length > 0) {\n // logUtil.consoleLog(`intersectionObserver: ${elemId} ad unit found to be initialized`);\n\n // } else {\n\n // filteredAdUnits = this.filterAdUnits({ divId: elemId, canBeRefreshed: true });\n // if (filteredAdUnits && filteredAdUnits.length > 0) {\n // logUtil.consoleLog(`intersectionObserver: ${elemId} ad unit found to be refreshed`);\n // } else {\n // const adUnit = this.getAdUnitByDivId(elemId);\n // logUtil.consoleLog(`intersectionObserver: ${elemId} ad unit is not available to be initialized/refreshed `, adUnit);\n // }\n // }\n const filteredAdUnits = this.filterAdUnits({ divId: elemId, mustBeInitialized: true });\n logUtil.consoleLog(`intersectionObserver: ${elemId} ad unit found to be initialized`, filteredAdUnits);\n filteredAdUnits.forEach(adUnit => {\n\n this.refreshOrInitializeAdUnit(adUnit);\n\n });\n\n } else {\n this.intersectionObserver_VisibleDivIds.delete(elemId);\n logUtil.consoleLog(`intersectionObserver: ${elemId} is not visible and will not be requested`)\n }\n });\n }\n\n //#endregion\n disableAndStopAutoRefresh() {\n this.setIsAutoRefreshEnabled(false);\n this.autoRefreshRefId && clearInterval(this.autoRefreshRefId);\n\n }\n applyDivStyles() {\n const adUnits = this.filterAdUnits({ excludeLoadingStrategies: [AdLoadingStrategyTypeEnum.trigger] });\n adUnits.forEach(adUnit => {\n adUnit.applyDivStyle();\n });\n }\n\n\n initAutoRefresh() {\n\n logUtil.consoleLog(`initAutoRefresh called autoRefreshIntervalInMs:`, this.autoRefreshIntervalInMs);\n\n if (this.isAutoRefreshEnabled && !this.autoRefreshRefId) {\n\n this.autoRefreshRefId = setInterval(() => {\n\n logUtil.consoleLog(\"autoRefresh triggered\", new Date());\n if (!this.gptIsReady()) {\n logUtil.consoleLog(\"autoRefresh: GPT is not ready, will wait next autoRefresh cycle\");\n return;\n }\n if (this.isAutoRefreshRunning) return;\n this.isAutoRefreshRunning = true;\n const filteredAdUnits = this.filterAdUnits({ canBeRefreshed: true });\n if (filteredAdUnits && filteredAdUnits.length > 0) {\n logUtil.consoleLog(`autoRefresh: ad units found to refresh`, filteredAdUnits);\n const pbjsAdUnits = filteredAdUnits.filter(q => q.isPreBidEnabled === true);\n if (pbjsAdUnits && pbjsAdUnits.length > 0) {\n logUtil.consoleLog(`autoRefresh: pbjsAdUnits to refresh`, pbjsAdUnits);\n this.pbjsRequestBidsByPbjsAdUnits(pbjsAdUnits)\n }\n const gptAdUnits = filteredAdUnits.filter(q => q.isPreBidEnabled === false);\n if (gptAdUnits && gptAdUnits.length > 0) {\n logUtil.consoleLog(`autoRefresh: gptAdUnits to refresh`, gptAdUnits);\n this.gptRefreshAdUnits(gptAdUnits)\n }\n } else {\n logUtil.consoleLog(`autoRefresh: ad units not found to refresh`);\n }\n\n this.isAutoRefreshRunning = false;\n }, this.autoRefreshIntervalInMs);\n }\n }\n\n refreshOrInitializeAdUnit(adUnit: AdUnit) {\n if (adUnit.objectState.isProcessLockEnabled) {\n logUtil.consoleLog('refreshOrInitializeAdUnit: adunit has proc lock and will not be refreshed', adUnit.divId, adUnit);\n return;\n }\n this.executeAsGptCommand(() => {\n adUnit.objectState.isProcessLockEnabled = true;\n //if prebid enabled adunit -->\n if (adUnit.isPreBidEnabled) {\n if (!adUnit.gptState.isDefineSlotExecuted || !adUnit.gptSlot) {\n this.gptDefineSlot(adUnit);\n }\n logUtil.consoleLog('after gptDefineSlot', adUnit.divId, adUnit);\n if (!adUnit.gptState.isDisplaySlotExecuted) {\n logUtil.consoleLog('in gptDisplayAdUnit', adUnit.divId, adUnit);\n this.gptDisplayAdUnit(adUnit);\n }\n this.pbjsRequestBidsByPbjsAdUnits([adUnit]);\n\n }\n //if prebid enabled adunit <--\n //if prebid disabled adunit -->\n else {\n if (!adUnit.gptState.isDefineSlotExecuted) {\n\n this.gptDefineSlot(adUnit);\n\n }\n if (!adUnit.gptState.isDisplaySlotExecuted) {\n this.gptDisplayAdUnit(adUnit);\n }\n\n this.gptRefreshAdUnits([adUnit]);\n\n }\n //if prebid disabled adunit <--\n adUnit.objectState.isProcessLockEnabled = false;\n this.updateAdUnit(adUnit);\n });\n }\n\n isExecuteCompleted = false;\n execute() {\n\n try {\n logUtil.consoleLog(\"client execution started\");\n if (!this.isEnabled) {\n logUtil.consoleLog(\"ads are disabled, client execution stopped\");\n return;\n }\n\n\n\n\n tcfReadySubject.subscribe((tcData) => {\n if (tcData && tcData.gdprApplies) {\n const newConf = pbjsConfig_Default;\n newConf.consentManagement = pbjsConfig_ConsentManagement;\n newConf.gvlMapping = pbjsConfig_GvlMapping;\n\n this.pbjsMergeConfig(newConf);\n }\n });\n\n\n this.gptWindowObject();\n this.gptRegisterEvents();\n this.executeAsGptCommand(() => { this.gptSetTargeting(); });\n\n const singleRequestRequiredAdUnits = this.filterAdUnits({\n adUnitType: AdUnitTypeEnum.banner,\n loadingStrategy: AdLoadingStrategyTypeEnum.sra\n });\n\n //set states to avoid recurring request while waiting GPT to load/init in page. slotResponseReceived event will release lock. -->\n singleRequestRequiredAdUnits.forEach(adUnit => {\n adUnit.objectState.isProcessLockEnabled = true;\n this.updateAdUnit(adUnit);\n });\n\n //set states to avoid recurring request while waiting GPT to load/init in page. slotResponseReceived event will release lock. --<\n this.executeAsGptCommand(() => {\n //gpt define all sra ad units -->\n singleRequestRequiredAdUnits.forEach(adUnit => {\n this.gptDefineSlot(adUnit);\n });\n });\n\n this.executeAsGptCommand(() => { this.gptEnableServices(); });\n\n\n //send request to pbjs if required -->\n const pbjsAdUnits = singleRequestRequiredAdUnits\n .filter(q => q.isPreBidEnabled && q.pbjsAdUnit);\n\n\n\n if (pbjsAdUnits && pbjsAdUnits.length > 0) {\n this.pbjsWindowObject();\n this.executeAsPbjsCommand(() => { this.pbjsSetDefaultConfig(); });\n this.executeAsGptCommand(() => {\n this.gptDisplayAdUnits(pbjsAdUnits);\n });\n this.pbjsRequestBidsByPbjsAdUnits(pbjsAdUnits);\n }\n //send request to pbjs if required --<\n // call display and refresh for all gptSlots -->\n const gptAdUnits = singleRequestRequiredAdUnits\n .filter(q => !q.isPreBidEnabled);\n if (gptAdUnits && gptAdUnits.length > 0) {\n this.executeAsGptCommand(() => {\n this.gptDisplayAdUnits(gptAdUnits);\n this.gptRefreshAdUnits(gptAdUnits);\n });\n }\n document.addEventListener(\"readystatechange\", () => {\n if (document.readyState === \"complete\") {\n this.applyDivStyles();\n this.initIntersectionObserver();\n }\n });\n\n // call display for all gptSlots --<\n document.addEventListener(\"DOMContentLoaded\", () => {\n logUtil.consoleLog(\"client execution domContentLoadedSubject started\");\n\n this.applyDivStyles();\n const preExecutedDivIds = singleRequestRequiredAdUnits && singleRequestRequiredAdUnits.length > 0 ? singleRequestRequiredAdUnits.map(q => q.divId) : [];\n //init domContentLoaded ads -->\n const domContentLoadAdUnits = this.filterAdUnits({\n loadingStrategy: AdLoadingStrategyTypeEnum.domContentLoaded,\n excludeDivIds: preExecutedDivIds\n });\n\n logUtil.consoleLog(\"domContentLoadAdUnits data:\", domContentLoadAdUnits);\n if (domContentLoadAdUnits && domContentLoadAdUnits.length > 0) {\n domContentLoadAdUnits.forEach(adUnit => {\n preExecutedDivIds.push(adUnit.divId);\n this.refreshOrInitializeAdUnit(adUnit);\n });\n }\n //init domContentLoaded ads --<\n\n\n //init custom lazy loads -->\n this.initIntersectionObserver();\n //init custom lazy loads --< \n\n\n //init outOfPAge ads -->\n setTimeout(() => {\n const outOfPAgeAdUnits = this.filterAdUnits({\n adUnitTypes: [AdUnitTypeEnum.outOfPage_Interstitial, AdUnitTypeEnum.outOfPage_BottomAnchor, AdUnitTypeEnum.outOfPage_TopAnchor],\n excludeDivIds: preExecutedDivIds\n });\n logUtil.consoleLog(\"outOfPAgeAdUnits data:\", outOfPAgeAdUnits);\n if (outOfPAgeAdUnits && outOfPAgeAdUnits.length > 0) {\n outOfPAgeAdUnits.forEach(adUnit => {\n preExecutedDivIds.push(adUnit.divId);\n this.refreshOrInitializeAdUnit(adUnit);\n });\n }\n }, 500);\n //init outOfPAge ads --<\n this.initAutoRefresh();\n\n\n logUtil.consoleLog(\"client execution domContentLoadedSubject finished\");\n this.isExecuteCompleted = true;\n\n\n })\n\n } catch (error) {\n logUtil.consoleError(error);\n\n } finally {\n logUtil.consoleLog(\"client execution finished\");\n document.addEventListener(\"DOMContentLoaded\", () => {\n pageClientExecutionEndedSubject.setDataAndTrigger(new PageClientSubjectData());\n });\n }\n\n\n\n\n }\n\n\n}\n\n\n","\n\nimport { deviceUtil, pageUtil } from \"@repo/lib-common\";\nimport { DomainPageClient } from \"@repo/lib-domain-tag\";\nlet isPageClientInitiated = false;\nconst PageTypeEnum = pageUtil.PageTypeEnum;\nexport const initPageClient_eNewsPaper = function () {\n if (isPageClientInitiated) return;\n isPageClientInitiated = true;\n const device = window.domainDevice || new deviceUtil.DeviceTypeInfo();\n const pageClient = new DomainPageClient();\n pageClient.device = device;\n pageClient.pageType = PageTypeEnum.eNewsPaper;\n\n window.domainClient = pageClient;\n\n}\ninitPageClient_eNewsPaper();\n"],"names":["window","undefined","LIBVERSION","EMPTY","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","UA_MAX_LENGTH","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","EDGE","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","MAC_OS","extend","regexes","extensions","mergedRegexes","i","enumerize","arr","enums","has","str1","str2","lowerize","str","majorize","version","trim","len","rgxMapper","ua","arrays","j","k","p","q","matches","match","regex","props","strMapper","map","oldSafariMap","windowsVersionMap","UAParser","_navigator","_ua","_uach","_rgxmap","_isSelfNav","_browser","_cpu","_device","_engine","_os","module","exports","$","parser","result","prop","this","getRandomValues","rnds8","rng","byteToHex","unsafeStringify","offset","randomUUID","native","v4","options","buf","rnds","objUtil","data","_a","uuidv4","isStrNullOrUndefined","deviceUtil","userAgent","DeviceTypeEnum","_DeviceTypeInfo","_b","_c","_d","_e","_f","type","DeviceTypeInfo","logUtil","isLoggerActive","consoleBold","consoleNormal","_logPrefix","prefix","message","numUtil","typeUtil","ObjectIndexer","isNullOrEmpty","urlUtil","name","names","urlParams","key","value","dateUtil","DateTimeHelper","pageUtil","PageTypeEnum","cookieUtil","CookieHelper","cookieName","cookies","DomainSubject","fn","DomContentLoadedSubject","event","domContentLoadedSubject","maxTcfCheckCount","TcfReadySubject","tcData","isTcfLoaded","tcfReadySubject","complete","DomReadyStateCompleteSubject","domReadyStateCompleteSubject","interactive","DomReadyStateInteractiveSubject","domReadyStateInteractiveSubject","WindowUrlChangedSubject","windowUrlChangedSubject","CommandArray","f","num","commandFunc","hasError","exception","e","ex","DomainTag","c","isDomainTagInitialized","ensureDomainTag","domainTagInstance","existingTag","cmdFunc","DomainPageClient","_AdSizes","AdSizes","_AdSizesTv","AdSizesTv","FirstSlotRenderEndedSubject","endEvent","firstSlotRenderEndedSubject","PageClientExecutionEndedSubject","pageClientExecutionEndedSubject","isPageClientInitiated","initPageClient_eNewsPaper","device","pageClient"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}