mmRequestCallbacks[1]({"Scripts":[{"Name":"UserSegment Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var triggerPCsetUp = function (val) {\n  \tevents.trigger('UserSegment_set', {\n    \tpcVal: val,\n    });\n};\n\nvar setUserSegment = function (property) {\n\tvar pcValue = property.toLowerCase();\n  \tif (visitor.getAttr('UserSegment') === pcValue) {\n    \ttriggerPCsetUp(pcValue);\n    } else {\n    \tvisitor.storeAttr('UserSegment', pcValue);   \n    \tvisitor\n        \t.requestPage('Store PC')\n    \t\t.done(function () {\n      \t\t\ttriggerPCsetUp(pcValue);\t\n        \t});\n    }\n};\n\nvar timeOut = false;\nvar waitForUserSegment = setTimeout(function () {\n\ttimeOut = true;\n}, 15000);\n\nwhen(function () {\n\treturn window.kaspersky && window.kaspersky.userSegment;\n\t}, function () {\n\t    return timeOut;\n    })\n    .done(function () {\n  \t\tclearTimeout(waitForUserSegment);\n        setUserSegment(window.kaspersky.userSegment);\n    });","Order":2000,"HighLevelApiVersion":"1.25"},{"Name":"criteria","Type":"script","Attrs":{"type":"text/javascript"},"Data":"//Initialization object for list of PC deffereds\nsite.scope.persCriteria = {};\n\nfunction getParameterByName(name, url) {\n    name = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\n    var regex = new RegExp(\"[\\\\?&]\" + name + \"=([^&#]*)\"),\n        results = regex.exec(url || location.search);\n    return results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n}\n\n// BusinessSegment\n(function () {\n    var pcValue = 'Unidentified',\n        pcValueObj = {\n            'Consumer Acquisition':     [\n                '/home-security',\n                '/total-security',\n                '/security-cloud',\n                '/multi-device-security',\n                '/internet-security',\n                '/antivirus',\n                '/mac-security',\n                '/android-security',\n                '/safe-kids',\n                '/password-manager',\n                '/free-software-updater',\n                '/free-mac-virus-scan',\n                '/mac-virus-scan',\n                '/free-virus-scan',\n                '/downloads',\n                '/downloads/total-security-multi-device',\n                '/downloads/multi-device-security',\n                '/downloads/internet-security',\n                '/downloads/antivirus',\n                '/downloads/password-manager',\n                '/downloads/mac-security',\n                '/downloads/android-security',\n                '/downloads/safe-kids',\n                '/downloads/free-software-updater',\n                '/downloads/security-scan',\n                '/downloads/total-security-multi-device-free-trial',\n                '/downloads/multi-device-security-free-trial',\n                '/downloads/internet-security-free-trial',\n                '/downloads/antivirus-free-trial',\n                '/downloads/mac-security-free-trial',\n                '/downloads/android-security-free-trial',\n                '/downloads/thank-you/total-security-free-trial',\n                '/downloads/thank-you/multi-device-security-free-trial',\n                '/downloads/thank-you/internet-security-free-trial',\n                '/downloads/thank-you/antivirus-free-trial',\n                '/downloads/thank-you/mac-security-free-trial',\n                '/downloads/thank-you/android-security-free-trial',\n                '/trial-center/home/',\n                '/trial-center/home/kts',\n                '/trial-center/home/kis-md',\n                '/trial-center/home/kis',\n                '/trial-center/home/kav',\n                '/trial-center/home/kis-mac',\n                '/trial-center/home/kis-android',\n                '/lrc/kts_t',\n                '/lrc/kis_t',\n                '/lrc/kav_t',\n                '/lrc/kismac_t',\n                '/lrc/kisandroid_t',\n                '/lrc/other_nfr'\n            ],\n            'Consumer Retention':       [\n                '/renew',\n                '/renewal-center/home/',\n                '/renewal-center/home/kts',\n                '/renewal-center/home/kis-md',\n                '/renewal-center/home/kis',\n                '/renewal-center/home/kav',\n                '/renewal-center/home/kis-mac',\n                '/renewal-center/home/kis-android',\n                '/lrc/kts_nfr',\n                '/lrc/kis_nfr',\n                '/lrc/kav_nfr',\n                '/lrc/kismac_nfr',\n                '/lrc/kisandroid_nfr',\n                '/lrc/kts_B',\n                '/lrc/kis_B',\n                '/lrc/kav_B',\n                '/lrc/kismac_B',\n                '/lrc/kisandroid_B',\n                '_retail',\n                '/lrc/kts',\n                '/lrc/kts',\n                '/lrc/kis',\n                '/lrc/kis',\n                '/lrc/kav',\n                '/lrc/kav',\n                '/lrc/kismac',\n                '/lrc/kismac',\n                '/lrc/kisandroid',\n                '/lrc/kisandroid'\n            ],\n            'Very Small Business':      [\n                '/small-business-security',\n                '/small-office-security',\n                '/small-business-security/downloads',\n                '/small-business-security/small-office-security',\n                '/small-business-security/small-office-security-free-trial',\n                '/small-business-security/renew',\n                '/renewal-center/vsb',\n                '/renewal-center/vsb/ksos',\n                '/trial-center/vsb',\n                '/trial-center/vsb/ksos'\n            ],\n            'Small to Medium Business': [\n                '/small-to-medium-business-security',\n                '/small-to-medium-business-security/endpoint-core',\n                '/small-to-medium-business-security/endpoint-select',\n                '/small-to-medium-business-security/endpoint-advanced',\n                '/small-to-medium-business-security/total',\n                '/small-to-medium-business-security/applications',\n                '/small-to-medium-business-security/targeted-solutions',\n                '/small-to-medium-business-security/free-trials/endpoint-core',\n                '/small-to-medium-business-security/free-trials/endpoint-select',\n                '/small-to-medium-business-security/free-trials/endpoint-advanced',\n                '/small-to-medium-business-security/free-trials/total',\n                '/small-to-medium-business-security/mail-server',\n                '/small-to-medium-business-security/file-server',\n                '/small-to-medium-business-security/mobile',\n                '/small-to-medium-business-security/internet-gateway',\n                '/small-to-medium-business-security/virtualization',\n                '/small-to-medium-business-security/collaboration',\n                '/small-to-medium-business-security/systems-management',\n                '/small-to-medium-business-security/storage',\n                '/small-to-medium-business-security/fraud-prevention',\n                '/small-to-medium-business-security/ddos-protection',\n                '/small-to-medium-business-security/endpoint-security-cryptolocker',\n                '/small-to-medium-business-security/downloads',\n                '/small-to-medium-business-security/how-to-buy',\n                '/small-to-medium-business-security/services',\n                '/small-to-medium-business-security/windows-workstation',\n                '/small-to-medium-business-security/endpoint-linux',\n                '/small-to-medium-business-security/endpoint-mac',\n                '/small-to-medium-business-security/security-center',\n                '/small-to-medium-business-security/endpoint-windows',\n                '/small-to-medium-business-security/linux-file-server',\n                '/small-to-medium-business-security/windows-server-security',\n                '/small-to-medium-business-security/mobile-device',\n                '/small-to-medium-business-security/linux-mail-server',\n                '/small-to-medium-business-security/mail-security-appliance',\n                '/small-to-medium-business-security/microsoft-exchange-server',\n                '/small-to-medium-business-security/lotus-notes-domino',\n                '/small-to-medium-business-security/proxy-server',\n                '/small-to-medium-business-security/microsoft-isa-server',\n                '/small-to-medium-business-security/microsoft-sharepoint',\n                '/small-to-medium-business-security/virtualization-agentless',\n                '/small-to-medium-business-security/virtualization-light-agent',\n                '/small-to-medium-business-security/downloads/mail-server-free-trial',\n                '/small-to-medium-business-security/file-server-free-trial',\n                '/small-to-medium-business-security/mobile-free-trial',\n                '/small-to-medium-business-security/internet-gateway-free-trial',\n                '/small-to-medium-business-security/virtualization-free-trial',\n                '/small-to-medium-business-security/collaboration-free-trial',\n                '/small-to-medium-business-security/systems-management-free-trial',\n                '/small-to-medium-business-security/storage-free-trial',\n                '/small-to-medium-business-security/contact-us',\n                '/small-to-medium-business-security/contact-us/fraud-prevention',\n                '/small-to-medium-business-security/contact-us/ddos-protection'\n            ],\n            'VSB Retention':            [\n                '/lrc/ksos_t',\n                '/lrc/ksos_nfr',\n                '/lrc/ksos_B',\n                '/lrc/ksos',\n                '/lrc/ksos'\n            ],\n            'SMB Retention':            [\n                '/lrc/kesbadvanced_t',\n                '/lrc/kesbcore_nfr',\n                '/lrc/kesbselect_nfr',\n                '/lrc/kesbadvanced_nfr',\n                '/lrc/kesbcore',\n                '/lrc/kesbcore',\n                '/lrc/kesbselect',\n                '/lrc/kesbselect',\n                '/lrc/kesbadvanced',\n                '/lrc/kesbadvanced'\n            ],\n            'Consumer OEM Retention':   [\n                '/lrc/kis',\n                '/lrc/kav'\n            ],\n            'SMB OEM Retention':        [\n\n                '/lrc/kesbselect'\n            ],\n            'Help Me Choose':           [\n                '/help-me-choose'\n            ],\n            'Consumer Support':         [\n                '/home-security/support'\n            ],\n            'B2B Support':              [\n                '/small-business-security/support'\n            ]\n        },\n        pcArr = Object.keys(pcValueObj),\n        cookiesPCVal = cookies.get('mm_BusinessSeg');\n\n    if (cookiesPCVal) {\n        visitor.storeAttr('NGBusinessSeg', cookiesPCVal);\n    }\n\n    if (window.location.pathname !== '/') {\n        pcArr.forEach(function (val) {\n            if (new RegExp('^(' + pcValueObj[val].join('|') + ')/?$').test(location.pathname)) {\n                pcValue = val;\n            }\n        });\n        if (!visitor.getAttr('NGBusinessSeg')) {\n            cookies.set('mm_BusinessSeg', pcValue);\n            visitor.storeAttr('NGBusinessSeg', pcValue);\n        }\n    }\n\n})();\n\n\n// B2x_Cart\n(function () {\n    var isCartPage = /store\\.kaspersky\\.(com|co\\.uk)\\/store/.test(location.hostname + location.pathname),\n        getCartProductType = function () {\n            var result = 'Unidentified Cart';\n            jQuery('#dr_cartTbl .dr_productName, #dr_cartTbl tr .dr_productTitle, .kl_lineItem .productDetails')\n                .each(function () {\n                    var title = jQuery(this).find('.pn_reposition, .productName').text().toLowerCase();\n                    if (/Small\\sOffice/i.test(title)) {\n                        result = 'B2B_Cart-KSOS';\n                    } else if (/endpoint/i.test(title) && /cloud/i.test(title)) {\n                        result = 'B2B_Cart-KESB_Cl';\n                    } else if (/security\\-cloud/i.test(title) && /cloud/i.test(title)) {\n                        result = 'B2B_Cart-KSC_Personal';\n                    } else if (/endpoint/i.test(title) && /select/i.test(title)) {\n                        result = 'B2B_Cart-KESB_S';\n                    } else if (/endpoint/i.test(title) && /advanced/i.test(title)) {\n                        result = 'B2B_Cart-KESB_A';\n                    } else if (/internet/i.test(title) && !(/mac|android/i.test(title))) {\n                        result = 'B2C_Cart-KIS';\n                    } else if (/mac/i.test(title)) {\n                        result = 'B2C_Cart-KISM';\n                    } else if (/android/i.test(title)) {\n                        result = 'B2C_Cart-KISA';\n                    } else if (/total/i.test(title) && !(/business/i.test(title))) {\n                        result = 'B2C_Cart-KTS';\n                    } else if (/total/i.test(title) && (/business/i.test(title))) {\n                        result = 'B2B_Cart-KTSB';\n                    } else if (/kids/i.test(title)) {\n                        result = 'B2C_Cart-KSK';\n                    } else if (/password/i.test(title)) {\n                        result = 'B2C_Cart-KPM';\n                    } else if (/anti\\-virus|antivirus/i.test(title)) {\n                        result = 'B2C_Cart-KAV ';\n                    }\n\n                    if (result !== 'Unidentified Cart') {\n                        //return false;\n                    }\n                });\n            return result;\n        },\n\n        cookiesPCVal = cookies.get('mm_B2xCart');\n    // alert(title);\n\n    if (cookiesPCVal) {\n        visitor.storeAttr('NG B2x_Cart', cookiesPCVal);\n    }\n\n    events.domReady(function () {\n        if (isCartPage) {\n            var pcVal = getCartProductType();\n            visitor.storeAttr('NG B2x_Cart', pcVal);\n            events.trigger('PC_NG_B2x_Cart_is_set', {\n                pcValue: pcVal\n            });\n            cookies.set('mm_B2xCart', pcVal);\n        }\n    });\n\n}());\n\n\n//CartSegment\n/*\n(function () {\n    site.scope.persCriteria.cartSegment = Deferred();\n    when(function () {\n        return window.dataLayer && window.dataLayer[0];\n    })\n        .done(function () {\n            var cartSegment = '',\n                country = /US/i.test(window.dataLayer[0].site_locale) ? 'US ' : /CA/i.test(window.dataLayer[0].site_locale) ? 'CA ' : /BR/i.test(window.dataLayer[0].site_locale) ? 'BR ' : '',\n                productList = document.querySelectorAll('td.dr_productName');\n\n            for (var loop = 0, max = productList.length; loop < max; loop++) {\n                (function (i) {\n                    var productName = (window.dataLayer[0].ecommerce.checkout.products[i].name || '').toLowerCase(),\n                        urlSegmentParams = getParameterByName('c_id') + getParameterByName('cid') + getParameterByName('campaign');\n\n                    if ((/renewal/g.test(productName) && /office/g.test(productName)) || (/business/g.test(productName) && /renewal/g.test(productName))) {\n                        cartSegment = 'B2B Retention';\n                    } else if (/(NAM|EMA)/g.test(urlSegmentParams) && !window.document.referrer) {\n                        cartSegment = 'Direct to Cart';\n                    } else if (/successive\\srenewal\\sdownload/i.test(productName)) {\n                        cartSegment = 'AR Self Renewal Cart';\n                    } else if (/renewal/.test(productName)) {\n                        cartSegment = country + 'Consumer Retention';\n                    } else if (/office|business/.test(productName)) {\n                        cartSegment = 'B2B Acquisition Cart';\n                    } else if (/kaspersky/.test(productName)) {\n                        cartSegment = country + 'Consumer Acquisition Cart';\n                    }\n\n                }(loop));\n            }\n\n            site.scope.persCriteria.cartSegment.resolve(cartSegment);\n            if (cartSegment !== '') {\n                visitor.storeAttr('CartSegment', cartSegment);\n            }\n        });\n}());\n*/\n\n(function () {\n    site.scope.persCriteria.cartSegment = Deferred();\n    when(function () {\n        return window.dataLayer && window.dataLayer[0];\n    })\n        .done(function () {\n            var cartSegment = '',\n                country = /US/i.test(window.dataLayer[0].site_locale) ? 'US ' : /CA/i.test(window.dataLayer[0].site_locale) ? 'CA ' : /BR/i.test(window.dataLayer[0].site_locale) ? 'BR ' : '',\n                productList = document.querySelectorAll('td.dr_productName'),\n                productListJoined = [];\n\n            for (var loop = 0, max = productList.length; loop < max; loop++) {\n                var productName = (window.dataLayer[0].ecommerce.checkout.products[loop].name || '').toLowerCase(),\n                    urlSegmentParams = getParameterByName('c_id') + getParameterByName('cid') + getParameterByName('campaign'),\n                    directToCart = (/(NAM|EMA)/g.test(urlSegmentParams) && !window.document.referrer);\n\n                productListJoined.push(productName);\n            }\n\n            productListJoined.join('');\n\n            if (/renewal/.test(productListJoined) && /office|business/.test(productListJoined)) {\n                cartSegment = 'B2B Retention';\n            } else if (/Successive\\sRenewal\\sDownload\\sPack/i.test(productListJoined) && !directToCart) {\n                cartSegment = 'AR Self Renewal Cart';\n            } else if (/affiliate=dremail/.test(location.href.toLowerCase())) {\n                cartSegment = 'Email';\n            } else if (/renewal/.test(productListJoined) && !directToCart) {\n                cartSegment = 'Consumer Retention Cart';\n            } else if (/office|business|endpoint/.test(productListJoined) && !directToCart) {\n                cartSegment = 'B2B Acquisition Cart';\n            } else {\n                cartSegment = 'Consumer Acquisition Cart';\n            }\n\n            /*      for (var loop = 0, max = productList.length; loop < max; loop++) {\n                    (function(i) {\n                      var productName = (window.dataLayer[0].ecommerce.checkout.products[i].name || '').toLowerCase(),\n                        urlSegmentParams = getParameterByName('c_id') + getParameterByName('cid') + getParameterByName('campaign'),\n                        directToCart = (/(NAM|EMA)/g.test(urlSegmentParams) && !window.document.referrer);\n                      //b2bRetention = ((/renewal/g.test(productName) && /office/g.test(productName)) || (/business/g.test(productName) && /renewal/g.test(productName)));\n\n\n                      if (/renewal/.test(productName) && /office|business/.test(productName)) {\n                        cartSegment = 'B2B Retention';\n                      } else if (/Successive\\sRenewal\\sDownload\\sPack/i.test(productName) && !directToCart) {\n                        cartSegment = 'AR Self Renewal Cart';\n                      } else if (/renewal/.test(productName) && !directToCart) {\n                        cartSegment = 'Consumer Retention Cart';\n                      } else if (/office|business/.test(productName) && !directToCart) {\n                        cartSegment = 'B2B Acquisition Cart';\n                      } else {\n                        cartSegment = 'Consumer Acquisition Cart';\n                      }\n\n                      /*if (b2bRetention) {\n                                    cartSegment = 'B2B Retention';\n                                } else if (/successive\\srenewal\\sdownload/i.test(productName) && !directToCart && !b2bRetention) {\n                                    cartSegment = 'AR Self Renewal Cart';\n                                } else if (/renewal/.test(productName) && !directToCart && !b2bRetention) {\n                                    cartSegment = country + 'Consumer Retention';\n                                } else if (/office|business/.test(productName) && !directToCart && !b2bRetention) {\n                                    cartSegment = 'B2B Acquisition Cart';\n                                } else if (/kaspersky/.test(productName)) {\n                                    cartSegment = country + 'Consumer Acquisition Cart';\n\n\n                    }(loop));\n                  }\n                  */\n\n            console.log('----');\n            console.log(cartSegment);\n            console.log('----');\n\n            site.scope.persCriteria.cartSegment.resolve(cartSegment);\n            if (cartSegment !== '') {\n                visitor.storeAttr('CartSegment', cartSegment);\n                events.trigger('PC_CartSegment_is_set', {\n                    pcValue: cartSegment,\n                });\n            }\n        });\n}());","Order":-50,"HighLevelApiVersion":"1.25"},{"Name":"IntegrationModule","Type":"script","Attrs":{"type":"text/javascript"},"Data":"\n/*!\n *\tintegrations-module 0.10.1\n *\t-- Maxymiser Integrations Module provides a standardized approach to develop and deploy 3rd party integrations.\n *\t-- Built on 2017-11-16\n */\n\n!function(){function e(){var e={},u={errors:{missingRegisterName:\"Invalid integration reigstration. Name argument is required.\",missingRegisterExec:\"Missing `exec` for integration registration\",alreadyRegistered:\"Integration has already been registered\",missingRunName:\"Missing `name` for `integration.run`\",unregisteredIntegration:\"Unknown integration name\",noCampaignExperience:\"Integration was run before the campaign has generated\",noRedirectCampaign:\"Redirect Integration is not in a valid campaign scope\",noRedirectCampaignData:\"Redirect Integration is not on a generation page\",campaignRequired:\"Integration must be deployed within a campaign script\",failedToSaveRedirectData:\"Failed to save redirect data\"},HALFHOUR:1/48,isProduction:function(){function e(e){for(var n,r={},i=\"\",a=0;n=t(e+a++);)i+=n;if(i){i=decodeURIComponent(i);try{r=JSON.parse(i)}catch(e){console.log(e)}return r}return\"\"}function t(e){var t=new RegExp(\"(?:^|; )\"+encodeURIComponent(e).replace(/([.$?*|{}()[\\]\\\\/+^])/g,\"\\\\$1\")+\"=([^;]+)\");return(document.cookie.match(t)||[\"\",\"\"])[1]}var n=mmsystem.getConfig().storageType;if(\"cookie-key-value\"===n||\"cookie-key-value-secure\"===n)return!/mmapi.p.cfgid/i.test(document.cookie)&&!/mmapi.p.un/i.test(document.cookie);for(var r=[e(\"mmcore.store.p.\")||{},e(\"mmcore.store.s.\")||{},e(\"mmapi.store.p.\")||{},e(\"mmapi.store.s.\")||{}],i={\"mmparams.p\":1,\"mmparams.d\":1},a={un:1,cfgID:1,pruh:1},o=r.length;o--;){var s=r[o];for(var u in i||{})for(var c in a||{})if((s[u]||{})[c])return!1}return!0},isValidIntegrationName:function(e){return\"string\"==typeof e&&/^\\w+/.test(e)},isCampaignScope:function(e){return!!(i(e)&&e.getName&&e.getExperience)},getCampaignExperience:function(e){var t={};return u.isCampaignScope(e)&&(t=e.getExperience&&e.getExperience()||{}),!!Object.keys(t)&&u.formatCampaignExperience(t)},formatCampaignExperience:function(e){e=i(e)?e:{};var t=[];for(var n in e)t.push(n+\":\"+e[n]);return t.join(\"|\")},getData:function(e){e=(e||\"\").toLowerCase();var t=visitor.getData(\"Integrations\");return t=i(t)?t:{},e&&(t[e]=t[e]||{}),t},setRedirectData:function(e,t){if(e=(e||\"\").toLowerCase(),!u.isCampaignScope(t))return!1;var n=u.getData(e),r=t.getName();return n[e][r]=n[e][r]||{},n[e][r].redirectData=t.getExperience(),visitor.setData(\"Integrations\",n,u.HALFHOUR),!0},removeRedirectData:function(e,t){if(e=(e||\"\").toLowerCase(),!u.isCampaignScope(t))return!1;var n=u.getData(e),r=t.getName();return n[e][r]=n[e][r]||{},n[e][r].redirectData=null,visitor.setData(\"Integrations\",n,u.HALFHOUR),!0},getRedirectData:function(e,t){if(e=(e||\"\").toLowerCase(),!u.isCampaignScope(t))return!1;var n=u.getData(e),r=t.getName();if(n[e][r]=n[e][r]||{},!n[e]||!n[e][r])return n[e]=n[e]||{},n[e][r]=n[e][r]||{},n[e][r].redirectData=null,visitor.setData(\"Integrations\",n,u.HALFHOUR),!1;for(var i in n[e])if(i===r)return n[e][i].redirectData;return!1},getSessionDate:function(e,t){return(u.getData(e)[e][t.getName()]||{}).sessionDate},setSessionDate:function(e,t){var n=u.getData(e),r=t.getName();n[e][r]=n[e][r]||{},n[e][r].sessionDate=(new Date).getTime(),visitor.setData(\"Integrations\",n,u.HALFHOUR)},resolve:function(e,t){return e.resolve(t),e.promise()},reject:function(e,t){var n=e.integrationName||\"unknown name\";return t=t||\"unknown reason\",o(\"Integration [\"+n+\"]: \"+t.toString()),e.reject(t),e.promise()},validateCampaignRequired:function(e,t){if(!e.campaignRequired)return e.oncePerSession?\"campaign option is required when using the oncePerSession option\":!e.redirect||\"campaign option is required when using the redirect option\";var n=e.campaign,r=\"\";return!0!==u.isCampaignScope(n)?u.errors.campaignRequired:(e.campaignExperience=u.getCampaignExperience(n),!1!==e.campaignExperience||e.redirect?e.oncePerSession&&!e.redirect&&e.oncePerSession&&(r=u.getSessionDate(e.name,n),u.setSessionDate(e.name,n),(new Date).getTime()-u.HALFHOUR>r)?(o(\"Integration [\"+e.name+\"]: data has already been sent this session\"),u.resolve(t,e),!0):!e.redirect||(function(){var e=n.getElements();for(var t in e)return!0;return!1}()?n.isDefault()?!(e.oncePerSession&&(r=u.getSessionDate(e.name,n),u.setSessionDate(e.name,n),(new Date).getTime()-u.HALFHOUR>r))||(o(\"Integration [\"+e.name+\"]: data has already been sent this session\"),u.resolve(t,e),!0):u.setRedirectData(e.name,n)?(u.resolve(t,e),!0):u.errors.failedToSaveRedirectData:e.oncePerSession&&(r=u.getSessionDate(e.name,n),u.setSessionDate(e.name,n),(new Date).getTime()-u.HALFHOUR>r)?(o(\"Integration [\"+e.name+\"]: data has already been sent this session\"),u.resolve(t,e),!0):(e.campaignExperience=u.getRedirectData(e.name,n),e.campaignExperience=u.formatCampaignExperience(e.campaignExperience),u.removeRedirectData(e.name,n),!!e.campaignExperience||u.errors.noRedirectCampaignData)):u.errors.noCampaignExperience(e.name))},setFailTimeout:function(e,t){!function(t){setTimeout(function(){setTimeout(function(){if(\"pending\"===t.state())return u.reject(t,\"Integration timed out after \"+e.timeout+\"ms\")},0)},e.timeout+1)}(t)},isValidAttributeMap:function(e){if(!e)return\"Missing required attributeMap parameter\";if(!i(e)||!Object.keys(e).length)return\"The attributeMap parameter is empty or not an object\";for(var t in e){var n=e[t];if(\"string\"!=typeof t||!/^[a-zA-Z]+/.test(t))return\"Invalid attribute name in the attributeMap\";if(!i(n))return\"attributeMap values must be stored in an object\";if(!Object.keys(n).length)return\"attributeMap attribute object is empty\";for(var r in n)if(!/^\\w+$/.test(r)&&\"default\"!==r)return\"Invalid attribute ID in attributeMap\"}return!0},check:function(e){var n=new Deferred,r=!1;return function i(){var a=e.check.call(this,e);t(a)?setTimeout(function(){a.done(function(){return n.resolve()}).fail(function(e){return n.reject(e)})},0):a?setTimeout(function(){n.resolve()},0):r||setTimeout(i,e.interval)}(),setTimeout(function(){r=!0},e.timeout),n.promise()},exec:function(e){var n=new Deferred,r=e.exec.call(this,e);return t(r)?(setTimeout(function(){r.done(function(e){return n.resolve(e)}).fail(function(e){return n.reject(e)})},0),n.promise()):(!0===r?u.resolve(n,e.result):u.reject(n,r),n.promise())}};return{register:function(t,c){function m(e){return t=t||\"\",o(\"Integrations.register(\"+t+\"): \"+(e||\"\").toString())}var g,f;return c=i(c)?c:{},(t=(\"string\"==typeof t?t:\"\").toLowerCase().replace(/^\\s+|\\s+$/g,\"\"))?e[t]?(m(u.errors.alreadyRegistered),null):(c.name=t,g=s(c,{}),f={validate:n(g.validate)?g.validate:a,check:n(g.check)?g.check:a,interval:r(g.interval)?g.interval:50,timeout:r(g.timeout)?g.timeout:2e3,exec:n(g.exec)?g.exec:a,options:g},g=s(f,g),e[t]=g):(m(u.errors.missingRegisterName),null)},run:function(t,n){n=i(n)?n:{};var r,a,o,c=new Deferred;if(t=(t||\"\").toLowerCase(),c.integrationName=t,!e[t])return u.reject(c,u.errors.unregisteredIntegration);if(r=s(e[t],{}),r=s(n,r),!0!==(a=r.validate(r)))return u.reject(c,a);if(!0!==(o=u.validateCampaignRequired(r,c)))return u.reject(c,o);if(r.isProduction=u.isProduction(),r.attributeMapRequired){var m=u.isValidAttributeMap(r.attributeMap);if(!0!==m)return u.reject(c,m)}return\"pending\"!==c.state()?c.promise():(\"never\"!==r.timeout&&u.setFailTimeout(r,c),u.check(r).then(function(){return u.exec(r)}).then(function(e){return r.result=e,u.resolve(c,r)}).fail(function(e){return u.reject(c,e)}),c.promise())},setDefaults:function(t,n){t=(t||\"\").toLowerCase();var r=e[t];return!!r&&(n=i(n)?n:{},e[t]=s(n,r),this)},get:function(t){if(!t)return e;var n=(t||\"\").toLowerCase();return e[n]}}}function t(e){return i(e)&&n(e.then)}function n(e){return\"function\"==typeof e}function r(e){return\"number\"==typeof e&&e>0}function i(e){return\"object\"==typeof e&&!!e}function a(){return!0}function o(e){window.mm_error=window.mm_error||\"\",window.mm_error+=e+\"\\n\"}function s(e,t){e=i(e)?e:{},t=i(t)?t:{};var n={};for(var r in t)n[r]=t[r];for(var a in e)n[a]=e[a];return n}if(\"object\"==typeof modules&&\"function\"==typeof modules.define){var u={autoDefine:!0,singleton:!0};modules.define(\"Integrations\",u,e)}else modules={require:function(){return new e}}}();","Order":-100,"HighLevelApiVersion":"1.25"},{"Name":"Plugin_StoreCookie","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/**\n * @summary Cross-domain cookie storing interface\n * @usage Must be mapped site wide with order -100\n */\n\n(function Plugin_StoreCookie() {\n    var saveCookiesCrossDomain = function () {\n\n        var arrayOfCookiesToSave = site.scope.arrayOfCookiesToSave || [],\n            i = arrayOfCookiesToSave.length,\n            cookieName, cookieValue, cookieExpiration,\n            serializedCrossDomainData = '',\n            escapeSequence = 'mmCookies',\n            serialize = function (a) {\n                var i = 0, l = a.length;\n                for (; i < l; i += 1)a[i] = escape(a[i]);\n                return '<' + escape([].join.call(a, ',')) + '>';\n            },\n            processingRegExp = new RegExp('\\\\|\\\\*' + escapeSequence + '(.*)' + escapeSequence + '\\\\*\\\\|');\n\n        if (i) {\n            for (; i--;) {\n\n                // Name of cookie\n                cookieName = arrayOfCookiesToSave[i];\n\n                // Expiry date of cookie\n                if (cookieName.indexOf('[s]') === 0) {\n                    cookieExpiration = 0;\n                    cookieName = cookieName.replace(/^\\[s\\]/, '');\n                } else {\n                    cookieExpiration = 365;\n                }\n\n                // Value of cookie\n                cookieValue = cookies.get(cookieName);\n\n                if (cookieValue) {\n                    serializedCrossDomainData += serialize([cookieName, escape(cookieValue), cookieExpiration]);\n                }\n            }\n\n            window.name = window.name.replace(processingRegExp, '');\n            window.name += ('|*' + escapeSequence + serializedCrossDomainData + escapeSequence + '*|');\n        }\n    };\n\n    /**\n     * @name arrayOfCookiesToSave\n     * @summary List of cookies to be transferred to another domain\n     * @usage Push a cookie name to the array. By the default expiration is 1 year. Add [s] prefix to the name to define session expiration.\n     * @examples site.scope.arrayOfCookiesToSave.push(\"mm_t01_data\");\n     */\n\n    site.scope.arrayOfCookiesToSave = ['mm_BusinessSeg', 'mm_B2xCart', 'mm_t11_generated', 'mm_t12_generated', 'mm_lastAddedProduct', 'mm_t87_popUpHide'];\n\n    window.addEventListener('beforeunload', function () {\n        saveCookiesCrossDomain();\n    }, false);\n\n    window.addEventListener('pagehide', function () {\n        saveCookiesCrossDomain();\n    }, false);\n})();\n","Order":-100,"HighLevelApiVersion":"1.25"},{"Name":"Router","Type":"script","Attrs":{"type":"text/javascript"},"Data":"// Single-page routing module v1.0.5.0\n\"undefined\" === typeof router && function () {\n    function b(a) {\n        a && c !== a && (c = a, events.trigger(\"routeChange\", {\n            newUrl: a\n        }));\n    }\n\n    function getAbsoluteUrl(url) {\n        if (!node) {\n            node = document.createElement('a');\n        }\n\n        node.href = url;\n        return node.href;\n    }\n\n    function e(a) {\n        return function () {\n            b(getAbsoluteUrl(arguments[2]));\n            return a.apply(this, arguments);\n        };\n    }\n\n    var c, node;\n    modules.define(\"router\", {\n        autoDefine: !0,\n        singleton:  !0\n    }, function () {\n        this.onRouteChange = function (a) {\n            var b = function (b) {\n                for (var c = 0; c < a.urls.length; c++) {\n                    var d = b.newUrl;\n                    if (d && d.match && d.match(a.urls[c])) {\n                        a.handler && a.handler(d);\n                        break;\n                    }\n                }\n            };\n            b({\n                newUrl: window.location.href\n            });\n            events.on(\"routeChange\", b);\n            return this;\n        };\n        this.triggerRouteChange = function (a) {\n            c = a;\n            events.trigger(\"routeChange\", {\n                newUrl: a\n            });\n            return this;\n        };\n        this.data = {};\n    });\n    history.pushState = e(history.pushState);\n    history.replaceState = e(history.replaceState);\n    window.addEventListener(\"popstate\", function (a) {\n        b(window.location.href);\n    });\n    window.addEventListener(\"hashchange\", function (a) {\n        b(a.newURL ? getAbsoluteUrl(a.newURL) : window.location.href);\n    });\n}();\n","Order":-100,"HighLevelApiVersion":"1.25"},{"Name":"Plugin_ExtractPrices","Type":"script","Attrs":{"type":"text/javascript"},"Data":"site.scope.extractPrices = function (priceString) {\n\tvar clearPrices = [];\n\n\t(priceString || '').toString().replace(/(\\d{1,3}(?:\\D?\\d{3})*(?:\\D(\\d{0,2})|))(?:\\D|$)/gm, function () {\n\t\tvar d = arguments[2];\n\t\tvar zeros = !d ? \"00\" : (d.length == 1 ? \"0\" : \"\");\n\n\t\tclearPrices.push((arguments[1].replace(/\\D/g, \"\") + zeros) * 1);\n\t});\n\n\treturn clearPrices;\n};\n","Order":-100,"HighLevelApiVersion":"1.25"},{"Name":"Integrations_Adobe","Type":"script","Attrs":{"type":"text/javascript"},"Data":"\n/*!\n *\tAdobeAnalytics 1.4.1\n *\t-- Maxymiser Adobe Analytics custom integration\n *\t-- Built on 2018-09-13\n */\n!function(){var e={version:\"1.4.1\",oncePerSession:!1,campaignRequired:!0,render:!1,append:!1,timeout:6e4,validate:function(e){return!0},check:function(e){return!!e.sync||\"function\"==typeof window.trackMaxymiser&&\"object\"==typeof window.s&&window.s.tl},exec:function(e){return e.sync?n.populateSyncData(e):n.send(e)}},n={errors:{missingParameters:\"The `eVar` and/or `prop` option are required and missing\",invalidEvar:function(e){return\"Invalid eVar provided [\"+(e||\"\").toString()+\"]\"},invalidProp:function(e){return\"Invalid prop provided [\"+(e||\"\").toString()+\"]\"},invalidSVariable:function(e){return\"Invalid sVariable provided [\"+(e||\"\").toString()+\"] (must be `string` or `s object`)\"},missingTrackingServer:function(){return\"Missing trackingServer option\"},invalidRenderFormat:function(e){return\"Campaign name is in an invalid format to utilize the Render flag: \"+e},invalidAdditionalParams:function(e){return\"additionalParams are not formatted correctly: \"+e}},checkAdditionalParams:function(e){return!!Array.isArray(e)},filterAdditionalParams:function(e,n){return e.filter(function(e){if(n[e])return e}).join()},checkValidRenderFormat:function(e){return-1!==e.indexOf(\"_\")},renderFormat:function(e){return e.split(\"_\")[0]},isSVariable:function(e){return\"string\"==typeof e?/^[A-Za-z0-9_\\-$]+$/.test(e):\"object\"==typeof e&&n.isSObject(e)},isSObject:function(e){return\"object\"==typeof e&&\"function\"==typeof e.t},getSVariable:function(e){return e&&\"string\"!=typeof e?!!n.isSObject(e)&&e:!!n.isSObject(window[e||\"s\"])&&window[e||\"s\"]},isNumber:function(e){return e&&(+e).toFixed(0)>0},append:function(e,n){var r,t=\"\";return\"page\"===e.append?(r=(t=window.mmsystem.AdobeAppendData||\"\")?t+\"~\"+n:n,window.mmsystem.AdobeAppendData=r):\"session\"===e.append&&(r=(t=visitor.getData(\"AdobeAppendData\")||\"\")?t+\"~\"+n:n,visitor.setData(\"AdobeAppendData\",r)),r},send:function(e){var r=e.campaign.getName(),t=\"\";return r=e.render?n.renderFormat(r):r+\"=\"+e.campaignExperience,t=e.append?n.append(e,r):r,t=(e.isProduction?\"MM_Live_\":\"MM_QA_\")+t,window.trackMaxymiser(t),!0},getParams:function(e){var n=[];return e.eVar&&n.push(\"eVar\"+e.eVar),e.prop&&n.push(\"prop\"+e.prop),n},populateSyncData:function(e){var r=n.getParams(e),t=e.campaign.getName();window.mm_adobe_data=window.mm_adobe_data||{},t=e.render?n.renderFormat(t):t+\"=\"+e.campaignExperience;for(var i=r.length;i--;)e.append?window.mm_adobe_data[r[i]]=n.append(e,t):window.mm_adobe_data[r[i]]=t;return!0}};\"object\"==typeof modules&&\"function\"==typeof modules.define&&modules.require(\"Integrations\").register(\"Adobe Analytics\",e)}();","Order":-90,"HighLevelApiVersion":"1.25"},{"Name":"IntegrationGU","Type":"script","Attrs":{"type":"text/javascript"},"Data":"(function() {\n    var GU = {\n        version: '1.0.7',\n\n        campaignRequired: true,\n\n        timeout: 60000,\n\n        validate: function(integration) {\n            if (!integration.dimension) {\n                return helpers.errors.missingDimension;\n            }\n            if (!helpers.isDimension(integration.dimension)) {\n                return helpers.errors.invalidDimension(integration.dimension);\n            }\n            return true;\n        },\n\n        check: function(integration) {\n            // use provided variable, or defined variable, or default 'ga'\n            var ga = window[integration.gaVariable] || window[window.GoogleAnalyticsObject] || window.ga;\n            return ga && typeof ga.getAll === 'function';\n        },\n\n        exec: function(integration) {\n            return helpers.send(integration);\n        }\n    };\n    var helpers = {\n        errors: {\n            missingAccount: 'Missing Google Universal Account Number',\n            invalidAccount: function(account) {\n                return 'Invalid Google Universal Account Number provided [' + account.toString() + ']';\n            },\n            missingDimension: 'Missing Google Universal Dimension',\n            invalidDimension: function(dimension) {\n                return 'Invalid Google Universal Dimension provided [' + dimension.toString() + ']';\n            }\n        },\n        send: function(integration) {\n            var mode = integration.isProduction ? 'Maxymiser' : 'Maxymiser QA',\n                ga = window[integration.gaVariable] || window[window.GoogleAnalyticsObject] || window.ga,\n                namespace = '';\n            var name = integration.campaign.getName() + (integration.isProduction ? '' : ' QA');\n\n            integration.campaignExperience = integration.campaign.getName() + '=' + integration.campaignExperience;\n\n            if (integration.persist) {\n                integration.campaignExperience = helpers.getPersist(integration).campaignInfo;\n            }\n\n            if (integration.account) {\n                namespace = 'mm_' + integration.account.replace(/\\W/g, '');\n                ga('create', integration.account, 'auto', {\n                    'name': namespace\n                });\n                ga(namespace + '.set', 'dimension' + integration.dimension, name + '=' + helpers.getExperienceData(integration));\n                ga(namespace + '.send', 'event', mode, integration.campaign.getName(), helpers.getExperienceData(integration), {\n                    'nonInteraction': 1\n                });\n            } else {\n                var tr = ga.getAll(),\n                    trCnt = tr.length,\n                    gtmName;\n\n                while (trCnt--) {\n                    gtmName = tr[trCnt].get('name');\n\n                    if ((/^gtm/).test(gtmName)) {\n                        namespace = tr[trCnt].get('name') + '.';\n                    }\n                }\n\n                ga(namespace + 'set', 'dimension' + integration.dimension, name + '=' + helpers.getExperienceData(integration));\n                ga(namespace + 'send', 'event', mode, integration.campaign.getName(), helpers.getExperienceData(integration), {\n                    'nonInteraction': 1\n                });\n            }\n\n            return true;\n        },\n\n        getPersist: function(integration) {\n            var config = {\n                    maxDataSize: 150,\n                    cookieName: 'mm-if-site-persist-ua-' + integration.dimension\n                },\n\n                data = {\n                    campaign: integration.campaign.getName(),\n                    campaignInfo: integration.campaignExperience\n                },\n\n                getCampaignIndex = function(dataArr) {\n                    var i;\n\n                    for (i = dataArr.length; i--;) {\n                        if (new RegExp('(' + data.campaign + ')' + '=').test(dataArr[i])) {\n                            return i;\n                        }\n                    }\n\n                    return -1;\n                },\n\n                concatCampaigns = function() {\n                    var storedInfo = getFromStorage(config.cookieName),\n                        parsedInfo = storedInfo ? JSON.parse(storedInfo) : [],\n                        i = getCampaignIndex(parsedInfo);\n\n                    if (i !== -1) {\n                        parsedInfo[i] = data.campaignInfo;\n                    } else {\n                        parsedInfo.push(data.campaignInfo);\n                    }\n\n                    return parsedInfo.join('&');\n                },\n\n                getFromStorage = function() {\n                    return cookies.get(config.cookieName);\n                },\n\n                saveToStorage = function(concatData) {\n                    var concatDataArr = concatData.split('&');\n                    cookies.set(config.cookieName, JSON.stringify(concatDataArr), {expires: 365});\n                },\n\n                removeOldestCampaigns = function(concatData) {\n                    var parsedData = concatData.split('&');\n                    var flag = true;\n\n                    while (flag) {\n                        if (parsedData.join('&').length >= config.maxDataSize) {\n                            parsedData.shift();\n                        } else {\n                            flag = false;\n                            return parsedData.join('&');\n                        }\n                    }\n                },\n\n                updateCampaignInfo = function(concatData) {\n                    data.campaignInfo = concatData;\n                };\n\n            return (function() {\n                var concatData = concatCampaigns();\n\n                concatData = removeOldestCampaigns(concatData);\n                updateCampaignInfo(concatData);\n                saveToStorage(concatData);\n\n                return data;\n            })();\n        },\n        getExperienceData: function (integration) {\n            var delimiter = integration.campaignExperience.indexOf('=');\n            return (delimiter > 0 ? integration.campaignExperience.substring(delimiter + 1) : '');\n        },\n\n        isAccountNumber: function(account) {\n            return account && /^UA-\\d{5,}-\\d{1,3}$/.test(account.toString());\n        },\n\n        isDimension: function(dimension) {\n            return dimension && dimension > 0 && dimension <= 200;\n        }\n    };\n    // Register and export\n    if (typeof modules === 'object' && typeof modules.define === 'function') {\n        modules.require('Integrations').register('Google Universal', GU);\n    }\n})();\n","Order":-90,"HighLevelApiVersion":"1.25"},{"Name":"int_contentSquare","Type":"script","Attrs":{"type":"text/javascript"},"Data":"(function() {\n    var CS = {\n        version: '3.0.0',\n        campaignRequired: true,\n        validate: function(integration) {    \n            return true;\n        },\n        check: function(integration) {\n            return true;\n        },\n        timeout: 60000,\n        exec: function(integration) {\n            return helpers.send(integration);\n        }\n    };\n    var helpers = {\n        send: function(integration) {\n            var csPrefix = 'AB_Maxymiser_';\n            var mode = integration.isProduction ? '_MM_Prod' : '_MM_Sand';\n            var csKey = csPrefix + integration.campaign.getName() + mode;\n            var csValue = integration.campaignExperience;\n            window._uxa = window._uxa || [];\n            window._uxa.push([\"trackDynamicVariable\", {key: decodeURI(csKey), value: decodeURI(csValue)} ]);\n            return true;\n        }\n    };\n    // Register and export\n    if (typeof modules === 'object' && typeof modules.define === 'function') {\n        modules.require('Integrations').register('Content Square', CS);\n    }\n})();","Order":-90,"HighLevelApiVersion":"1.25"},{"Name":"CurrencyData_Global","Type":"script","Attrs":{"type":"text/javascript"},"Data":"site.scope.currencyData = {\n    'AFN': 77.07, // Afghan Afghani\n    'ALL': 101.52, // Albanian Lek\n    'DZD': 132.96, // Algerian Dinar\n    'AOA': 657.40, // Angolan Kwanza\n    'ARS': 85.63, // Argentine Peso\n    'AMD': 526.88, // Armenian Dram\n    'AWG': 1.79, // Aruban or Dutch Guilder\n    'AUD': 1.29, // Australian Dollar\n    'AZN': 1.70, // Azerbaijan Manat\n    'BSD': 1.00, // Bahamian Dollar\n    'BHD': 0.38, // Bahraini Dinar\n    'BDT': 84.71, // Bangladeshi Taka\n    'BBD': 2.00, // Barbadian or Bajan Dollar\n    'LSL': 15.21, // Basotho Loti\n    'BYN': 2.57, // Belarusian Ruble\n    'BZD': 2.01, // Belizean Dollar\n    'BMD': 1.00, // Bermudian Dollar\n    'BTN': 73.15, // Bhutanese Ngultrum\n    'BOB': 6.87, // Bolivian Bolíviano\n    'BAM': 1.61, // Bosnian Convertible Marka\n    'BWP': 11.04, // Botswana Pula\n    'BRL': 5.27, // Brazilian Real\n    'GBP': 0.73, // British Pound\n    'BND': 1.33, // Bruneian Dollar\n    'BGN': 1.61, // Bulgarian Lev\n    'MMK': 1329.11, // Burmese Kyat\n    'BIF': 1940.27, // Burundian Franc\n    'KHR': 4058.11, // Cambodian Riel\n    'CAD': 1.27, // Canadian Dollar\n    'CVE': 90.98, // Cape Verdean Escudo\n    'KYD': 0.82, // Caymanian Dollar\n    'XAF': 541.21, // Central African CFA Franc BEAC\n    'XOF': 541.21, // CFA Franc\n    'XPF': 98.46, // CFP Franc\n    'CLP': 737.97, // Chilean Peso\n    'CNY': 6.47, // Chinese Yuan Renminbi\n    'COP': 3479.82, // Colombian Peso\n    'KMF': 405.91, // Comorian Franc\n    'CDF': 1970.08, // Congolese Franc\n    'CRC': 612.96, // Costa Rican Colon\n    'HRK': 6.24, // Croatian Kuna\n    'CUC': 1.00, // Cuban Convertible Peso\n    'CUP': 26.50, // Cuban Peso\n    'CZK': 21.61, // Czech Koruna\n    'DKK': 6.14, // Danish Krone\n    'DJF': 177.84, // Djiboutian Franc\n    'DOP': 58.19, // Dominican Peso\n    'ANG': 1.79, // Dutch Guilder\n    'XCD': 2.70, // East Caribbean Dollar\n    'EGP': 15.67, // Egyptian Pound\n    'AED': 3.67, // Emirati Dirham\n    'ERN': 15.00, // Eritrean Nakfa\n    'ETB': 39.42, // Ethiopian Birr\n    'EUR': 0.83, // Euro\n    'FKP': 0.73, // Falkland Island Pound\n    'FJD': 2.03, // Fijian Dollar\n    'GMD': 51.70, // Gambian Dalasi\n    'GEL': 3.29, // Georgian Lari\n    'GHS': 5.83, // Ghanaian Cedi\n    'GIP': 0.73, // Gibraltar Pound\n    'XAU': 0.00, // Gold Ounce\n    'GTQ': 7.79, // Guatemalan Quetzal\n    'GGP': 0.73, // Guernsey Pound\n    'GNF': 10205.68, // Guinean Franc\n    'GYD': 209.36, // Guyanese Dollar\n    'HTG': 71.88, // Haitian Gourde\n    'HNL': 24.09, // Honduran Lempira\n    'HKD': 7.75, // Hong Kong Dollar\n    'HUF': 297.13, // Hungarian Forint\n    'ISK': 129.21, // Icelandic Krona\n    'XDR': 0.69, // IMF Special Drawing Rights\n    'INR': 73.15, // Indian Rupee\n    'IDR': 14071.87, // Indonesian Rupiah\n    'IRR': 41964.86, // Iranian Rial\n    'IQD': 1459.62, // Iraqi Dinar\n    'IMP': 0.73, // Isle of Man Pound\n    'ILS': 3.19, // Israeli Shekel\n    'JMD': 142.58, // Jamaican Dollar\n    'JPY': 104.06, // Japanese Yen\n    'JEP': 0.73, // Jersey Pound\n    'JOD': 0.71, // Jordanian Dinar\n    'KZT': 419.81, // Kazakhstani Tenge\n    'KES': 110.08, // Kenyan Shilling\n    'KWD': 0.30, // Kuwaiti Dinar\n    'KGS': 83.82, // Kyrgyzstani Som\n    'LAK': 9278.52, // Lao Kip\n    'LBP': 1507.50, // Lebanese Pound\n    'LRD': 168.12, // Liberian Dollar\n    'LYD': 4.43, // Libyan Dinar\n    'MOP': 7.99, // Macau Pataca\n    'MKD': 50.68, // Macedonian Denar\n    'MGA': 3768.31, // Malagasy Ariary\n    'MWK': 772.09, // Malawian Kwacha\n    'MYR': 4.04, // Malaysian Ringgit\n    'MVR': 15.41, // Maldivian Rufiyaa\n    'MRU': 36.49, // Mauritanian Ouguiya\n    'MUR': 39.43, // Mauritian Rupee\n    'MXN': 19.87, // Mexican Peso\n    'MDL': 17.20, // Moldovan Leu\n    'MNT': 2849.63, // Mongolian Tughrik\n    'MAD': 8.88, // Moroccan Dirham\n    'MZN': 74.67, // Mozambican Metical\n    'NAD': 15.21, // Namibian Dollar\n    'NPR': 117.60, // Nepalese Rupee\n    'NZD': 1.39, // New Zealand Dollar\n    'NIO': 108.07, // Nicaraguan Cordoba\n    'NGN': 34.84, // Nigerian Naira\n    'VUV': 394.75, // Ni-Vanuatu Vatu\n    'KPW': 900.06, // North Korean Won\n    'NOK': 8.52, // Norwegian Krone\n    'OMR': 0.38, // Omani Rial\n    'PKR': 160.47, // Pakistani Rupee\n    'XPD': 0.00, // Palladium Ounce\n    'PAB': 1.00, // Panamanian Balboa\n    'PGK': 3.51, // Papua New Guinean Kina\n    'PYG': 6885.90, // Paraguayan Guarani\n    'PEN': 3.61, // Peruvian Sol\n    'PHP': 48.04, // Philippine Peso\n    'XPT': 0.00, // Platinum Ounce\n    'PLN': 3.75, // Polish Zloty\n    'QAR': 3.64, // Qatari Riyal\n    'RON': 4.02, // Romanian Leu\n    'RUB': 73.53, // Russian Ruble\n    'RWF': 991.29, // Rwandan Franc\n    'SHP': 0.73, // Saint Helenian Pound\n    'SVC': 8.75, // Salvadoran Colon\n    'WST': 2.51, // Samoan Tala\n    'STN': 20.19, // Sao Tomean Dobra\n    'SAR': 3.75, // Saudi Arabian Riyal\n    'SPL': 0.17, // Seborgan Luigino\n    'RSD': 97.02, // Serbian Dinar\n    'SCR': 21.20, // Seychellois Rupee\n    'SLL': 10228.88, // Sierra Leonean Leone\n    'XAG': 0.04, // Silver Ounce\n    'SGD': 1.33, // Singapore Dollar\n    'SBD': 8.03, // Solomon Islander Dollar\n    'SOS': 576.01, // Somali Shilling\n    'ZAR': 15.21, // South African Rand\n    'KRW': 1097.56, // South Korean Won\n    'LKR': 192.52, // Sri Lankan Rupee\n    'SDG': 55.30, // Sudanese Pound\n    'SRD': 14.15, // Surinamese Dollar\n    'SZL': 15.21, // Swazi Lilangeni\n    'SEK': 8.35, // Swedish Krona\n    'CHF': 0.89, // Swiss Franc\n    'SYP': 512.81, // Syrian Pound\n    'TWD': 28.03, // Taiwan New Dollar\n    'TJS': 11.30, // Tajikistani Somoni\n    'TZS': 2318.77, // Tanzanian Shilling\n    'THB': 30.03, // Thai Baht\n    'TOP': 2.27, // Tongan Pa'anga\n    'TTD': 6.77, // Trinidadian Dollar\n    'TND': 2.70, // Tunisian Dinar\n    'TRY': 7.39, // Turkish Lira\n    'TMT': 3.51, // Turkmenistani Manat\n    'TVD': 1.29, // Tuvaluan Dollar\n    'UGX': 3700.73, // Ugandan Shilling\n    'UAH': 28.06, // Ukrainian Hryvnia\n    'UYU': 42.50, // Uruguayan Peso\n    'USD': 1.00, // US Dollar\n    'UZS': 10478.52, // Uzbekistani Som\n    'VEF': 9.99, // Venezuelan Bolívar\n    'VES': 1496728.50, // Venezuelan Bolívar\n    'VND': 23079.69, // Vietnamese Dong\n    'YER': 250.06, // Yemeni Rial\n    'ZMW': 21.32, // Zambian Kwacha\n    'ZWD': 361.90, // Zimbabwean Dollar\n};","Order":-80,"HighLevelApiVersion":"1.25"},{"Name":"Event_PageName","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var B2CPages = /Home > Home Products|Startseite > Produkte für Privatanwender|Home > Consumenten producten|Página inicial > Produtos domésticos|Hjem > Produkter til hjemmet|Hjem > Produkter til hjemmebruk|Hem > Hemprodukter|Inicio > Productos para el hogar/;\nvar getPageName = function () {\n    return window.kaspersky && (window.kaspersky.pageName || window.kaspersky.pagename);\n};\nvar triggerPageName = function () {\n    var name = getPageName();\n    events.trigger('pageNameDefined', {\n        pageName: name,\n        isB2C:    B2CPages.test(name),\n    });\n};\n\nevents.on('routeChange', function () {\n    var prevPage = getPageName();\n    when(function () {\n        var page = getPageName();\n        return page && page !== prevPage;\n    }).done(triggerPageName);\n});\n\nwhen(function () {\n    var page = getPageName();\n    return page && page !== '[NULL]';\n}).done(triggerPageName);","Order":-80,"HighLevelApiVersion":"1.25"},{"Name":"Integr_AdobeDefaults","Type":"script","Attrs":{"type":"text/javascript"},"Data":"Integrations.setDefaults('Adobe Analytics', {\n    sVariable: 'sng',\n});","Order":-80,"HighLevelApiVersion":"1.25"},{"Name":"Act_VisitorBreakdown","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var attrObj = {\n    'B2B Visitor':     [\n        '/small-business-security/small-office-security',\n        '/small-to-medium-business-security/cloud',\n        '/small-to-medium-business-security/endpoint-select',\n        '/small-to-medium-business-security/endpoint-advanced',\n        '/small-to-medium-business-security/total',\n        '/small-to-medium-business-security/microsoft-office-365-security',\n        '/small-to-medium-business-security/virtualization-hybrid-cloud',\n        '/small-to-medium-business-security/mail-server',\n        '/small-to-medium-business-security/internet-gateway',\n        '/small-to-medium-business-security/systems-management',\n        '/small-to-medium-business-security/storage',\n        '/small-to-medium-business-security/ddos-protection',\n        '/enterprise-security/embedded-security-internet-of-things',\n        '/enterprise-security/cloud-security',\n        '/enterprise-security/endpoint',\n        '/enterprise-security/threat-management-defense-solution',\n        '/enterprise-security/industrial-solution',\n        '/enterprise-security/fraud-prevention',\n        '/enterprise-security/cybersecurity-services',\n        '/enterprise-security/security-awareness',\n        '/enterprise-security/apt-intelligence-reporting',\n        '/enterprise-security/threat-intelligence',\n        '/small-to-medium-business-security',\n        '/enterprise-security',\n        '/enterprise-security/endpoint-product',\n        '/enterprise-security/endpoint-detection-response-edr',\n        '/enterprise-security/anti-targeted-attack-platform',\n        '/enterprise-security/microsoft-office-365',\n        '/enterprise-security/embedded-systems',\n        '/enterprise-security/private-security-network',\n        '/enterprise-security/mail-server-security',\n        '/enterprise-security/mobile',\n        '/enterprise-security/storage-security',\n        '/enterprise-security/aws-hybrid-cloud-security',\n        '/enterprise-security/azure-hybrid-cloud-security',\n        '/enterprise-security/cyber-security-training',\n        '/enterprise-security/premium-support',\n        '/enterprise-security/professional-services',\n        '/enterprise-security/managed-detection-and-response',\n        '/enterprise-security/security-assessment',\n        '/enterprise-security/threat-hunting',\n        '/enterprise-security/incident-response',\n        '/enterprise-security/penetration-testing',\n        '/enterprise-security/application-security',\n        '/enterprise-security/payment-system-security',\n        '/enterprise-security/ics-security',\n        '/enterprise-security/smart-technologies-and-iot',\n        '/small-business-security',\n    ],\n    'B2C Visitor':     [\n        '/downloads',\n        '/home-security',\n        '/antivirus',\n        '/internet-security',\n        '/total-security',\n        '/security-cloud',\n        '/safe-kids',\n        '/vpn-secure-connection',\n        '/password-manager',\n        '/android-security',\n        '/mac-security',\n        '/free-antivirus',\n        '/basic-security',\n        '/standard-security',\n        '/plus-security',\n        '/premium-security'\n],\n    'Renewal Visitor': [\n        '/renewal-center/home',\n        '/renewal-center/vsb',\n        '/new-renewal-center/home',\n        '/renewal-center/kav',\n        '/renewal-center/kis',\n        '/renewal-center/kts',\n    ],\n};\n\nObject.keys(attrObj).forEach(function (userType) {\n    if (attrObj[userType].some(function (page) {\n        return page === location.pathname;\n    })) {\n        actions.send('Visitor Breakdown', 1, userType);\n    }\n});\n","Order":0,"HighLevelApiVersion":"1.25"}],"Campaigns":[{"Name":"GDS_NAM_CWD_HP_DiscountPopup","Type":"ABnMVT","CSName":"","HighLevelApiVersion":"1.25","PagePrefix":"MDY2Nzg5","Scripts":[{"Name":"Rendering","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var config = {\n    \"selectorsToHide\": null,\n    \"useSecondRequest\": true,\n    \"elements\": [\n        {\n            \"includedUrls\": [\n                \"https://usa.kaspersky.com?popupdisplay=1*\",\n                \"https://usa.kaspersky.com/?popupdisplay=1*\"\n            ],\n            \"excludedUrls\": [],\n            \"selectors\": \"\"\n        }\n    ]\n};\n\nif (config.useSecondRequest) {\n    activateCampaign();\n} else {\n    render();\n}\n\ncampaign.events.on('urlChange', activateCampaign);\n\nfunction activateCampaign() {\n    if (isRenderRequired()) {\n        var selectorsToHide = getSelectorsToHide();\n        hide(selectorsToHide);\n        when(isVisitorQualified())\n            .done(function () {\n                renderer.getContent().always(function () {\n                    render();\n                    show(selectorsToHide);\n                });\n            })\n            .fail(function () {\n                show(selectorsToHide);\n            });\n    }\n}\n\nfunction isRenderRequired() {\n    if (config.elements === null) {\n        return true;\n    }\n\n    var url = window.deproxy ? window.deproxy(window.location).href : window.location.href;\n    for (var index in config.elements) {\n        if (isUrlMatched(url, config.elements[index].includedUrls, config.elements[index].excludedUrls)) {\n            return true;\n        }\n    }\n    return false;\n}\n\nfunction hide(selectorsToHide) {\n    if (selectorsToHide) {\n        renderer.hide(selectorsToHide, 'ucb');\n    }\n}\n\nfunction show(selectorsToHide) {\n    if (selectorsToHide) {\n        renderer.show('ucb');\n    }\n}\n\nfunction getSelectorsToHide() {\n    if (config.elements === null) {\n        return config.selectorsToHide;\n    }\n\n    var url = window.deproxy ? window.deproxy(window.location).href : window.location.href;\n    var selectors = \"\";\n    for (var index in config.elements) {\n        if (isUrlMatched(url, config.elements[index].includedUrls, config.elements[index].excludedUrls)) {\n            selectors += \" \" + config.elements[index].selectors;\n        }\n    }\n    return selectors;\n}\n\nfunction render() {\n    renderCss();\n    renderJs();\n    campaign.events.trigger('lastRequest');\n}\n\nfunction renderJs() {\n    var elementsToRender = campaign.getElements();\n    for (var i in elementsToRender) {\n        if (elementsToRender.hasOwnProperty(i)) {\n            var element = elementsToRender[i];\n            renderer.runVariantJs(element);\n        }\n    }\n}\n\nfunction renderCss() {\n    var styles = campaign.getStyles();\n    if (styles.length) {\n        dom.addCss(styles);\n    }\n}\n\nfunction isVisitorQualified() {\n    if (window.isCampaignDesignMode) {\n        return true;\n    }\n    var rules = campaign.scope.qualificationRules || [];\n    var results = [];\n    for (var i = 0; i < rules.length; i++) {\n        var result = rules[i]();\n        if (typeof result.then !== 'function') {\n            result = Deferred()[result ? 'resolve' : 'reject']().promise();\n        }\n        results.push(result);\n    }\n    return when.apply(this, results);\n}\n\nfunction isUrlMatched(url, includedUrls, excludedUrls) {\n    var isIncluded = isMasksMatch(url, includedUrls);\n    var isExcluded = isMasksMatch(url, excludedUrls);\n    return isIncluded && !isExcluded;\n}\n\nfunction isMasksMatch(url, masks) {\n    if (!url) {\n        return false;\n    }\n    url = url.toLowerCase();\n    var matchedMasks = 0;\n\n    for (var maskKey in masks) {\n      \tif (masks.hasOwnProperty(maskKey)) {\n            var mask = masks[maskKey].toLowerCase();\n            if (isMaskMatch(url, window.deproxy({\n                    href: mask\n                }).href)) {\n                matchedMasks = matchedMasks + 1;\n            }\n        }\n    };\n    return matchedMasks > 0;\n}\n\nfunction isMaskMatch(url, originalMask) {\n    var mask = '^';\n    var pos = 0;\n    while (originalMask.length > pos) {\n        var char = originalMask[pos];\n        if (char == '*') {\n            mask = mask + '.*';\n            pos = pos + 1;\n        } else if (char == '(') {\n            var posClosing = originalMask.indexOf(')', pos + 1);\n            var posNextOpening = originalMask.indexOf('(', pos + 1);\n            if (posClosing > pos && (posNextOpening < 0 || posClosing < posNextOpening)) {\n                mask = mask + '.*';\n                pos = posClosing + 1;\n            } else {\n                return false;\n            }\n        } else {\n            mask = mask + char;\n            pos = pos + 1;\n        }\n    }\n    mask = mask + '$';\n    mask = mask.replace('?', \"\\\\?\");\n    var r = new RegExp(mask);\n    return r.test(url);\n}","Order":5999,"HighLevelApiVersion":"1.25"},{"Name":"Routing","Type":"script","Attrs":{"type":"text/javascript"},"Data":"(function () {\n    if(!window.isCampaignDesignMode) {\n       window.deproxy = function(location) {\n           return location;\n       }\n    }\n    var lastUrl = window.deproxy(window.location.href);\n\n    function forceTriggerRouteChange(url) {\n        lastUrl = url;\n        campaign.events.trigger('urlChange', {\n            url: url\n        });\n    }\n\n    function triggerRouteChange(url) {\n        if (url && lastUrl !== url) {\n            forceTriggerRouteChange(url);\n        }\n    }\n\n    function createRouteChange(fn) {\n        return function () {\n            var result = fn.apply(this, arguments);\n            triggerRouteChange(window.deproxy(window.location.href));\n            return result;\n        };\n    }\n\n    history.pushState = createRouteChange(history.pushState);\n\n    history.replaceState = createRouteChange(history.replaceState);\n\n    window.addEventListener('popstate', function (event) {\n        triggerRouteChange(window.deproxy(window.location.href));\n    });\n\n    window.addEventListener('hashchange', function (event) {\n        triggerRouteChange(window.deproxy(window.location.href));\n    });\n})();","Order":5000,"HighLevelApiVersion":"1.25"},{"Name":"Google Universal","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n    \"trackerName\": \"gtmunivSep2015\",\n    \"customDimensions\": \"34\"\n}\ntry { if (window.self !== window.top) { return; } }\ncatch (e) { return; }\ncampaign.events.on('lastRequest', function() {\n    if (!isNewGeneration()) { return; }\n    waitForGA(function() {\n        if (config.customDimensions) { setDimension(); }\n        sendEvent();\n    });\n});\nfunction isNewGeneration() {\n    var experienceData = getExperienceData();\n    if (campaign.getData('GoogleUniversalExperience') === experienceData) {\n        return false;\n    }\n    campaign.setData('GoogleUniversalExperience', experienceData);\n    return true;\n}\nfunction waitForGA(callback) {\n    var timeout = false;\n    when(function(){\n        return typeof window[window['GoogleAnalyticsObject']] === 'function';\n    }, function(){\n        return timeout;\n    }).done(function(){\n        callback();\n    });\n    setTimeout(function(){\n        timeout = true;\n    }, 10e3);\n}\nfunction setDimension(){\n    var set = (config.trackerName ? config.trackerName + '.' : '') + 'set';\n    var name = campaign.getName() + (isProduction() ? '' : ' QA');\n    window[window['GoogleAnalyticsObject']](set, 'dimension' + config.customDimensions, name + '=' + getExperienceData());\n}\nfunction sendEvent(){\n    var send = (config.trackerName ? config.trackerName + '.' : '') + 'send';\n    var category = 'Maxymiser' + (isProduction() ? '': ' QA');\n    var action = campaign.getName();\n    window[window['GoogleAnalyticsObject']](send, 'event', category, action, getExperienceData(), {'nonInteraction': 1});\n}\nfunction getExperienceData(){\n    var experience = campaign.getExperience();\n    var variants = [];\n    for(var element in experience) {\n        variants.push(element + ':' + experience[element]);\n    }\n    return variants.join('|');\n}\nfunction isProduction(){\n    if (location.search.toLowerCase().indexOf('mmcore.') > -1) {\n        return false;\n    }\n    function removeExpiration(v) {\n        return v ? v.replace(/^\\d\\|/, '') : '';\n    }\n    var storage = mmsystem.getConfig().storageType;\n    if (storage === 'cookie-key-value' || storage === 'cookie-key-value-secure') {\n        if (/mmapi.p.cfgid/i.test(document.cookie) || /mmapi.p.un/i.test(document.cookie)) {\n            return false;\n        } else {\n            return true;\n        }\n    }\n    var mmcoreP = readCookieStorage('mmcore.store.p.') || {};\n    var mmcoreS = readCookieStorage('mmcore.store.s.') || {};\n    var mmapiP = readCookieStorage('mmapi.store.p.') || {};\n    var mmapiS = readCookieStorage('mmapi.store.s.') || {};\n    var storageTypes = [mmcoreP, mmcoreS, mmapiP, mmapiS];\n    var storageKeys = {\n        'mmparams.p': 1,\n        'mmparams.d': 1\n    };\n    var utils = {\n        'un': 1,\n        'cfgID': 1,\n        'pruh': 1\n    };\n    for (var l = storageTypes.length; l--;) {\n        var storageType = storageTypes[l];\n        for (var storageKey in (storageKeys || {})) {\n            for (var util in (utils || {})) {\n                if ((storageType[storageKey] || {})[util]) {\n                    return false;\n                }\n            }\n        }\n    }\n    function readCookieStorage(name) {\n        var res = {},\n            whole = '',\n            i = 0,\n            chunk;\n        while ((chunk = getCookie(name + i++))) {\n            whole += chunk;\n        }\n        whole = decodeURIComponent(whole);\n        try {\n            res = JSON.parse(whole);\n        } catch (e) {}\n        return res;\n    }\n    function getCookie(name) {\n        var r = new RegExp('(?:^|; )' + encodeURIComponent(name).replace(/([.$?*|{}()\\[\\]\\\\\\/+^])/g, '\\\\$1') + '=([^;]+)'),\n            value = (document.cookie.match(r) || ['', ''])[1];\n        return value;\n    }\n    return true;\n}","Order":5000,"HighLevelApiVersion":"1.25"},{"Name":"C612965518","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"ClickedGetDiscount\",\n\t\"selectorsDefault\": {\n\t\t\"#lightbox1540310306097 > .lightbox-dismiss.vcb-me-dismiss:eq(1) > .link1.pointer\": {\n\t\t\t\"value\": 1,\n\t\t\t\"attr\": \"\"\n\t\t}\n\t},\n\t\"selectorsAfter\": {},\n\t\"urls\": {\n\t\t\"includedUrls\": [\n\t\t\t\"https://usa.kaspersky.com/\",\n\t\t\t\"https://usa.kaspersky.com/?*\"\n\t\t],\n\t\t\"excludedUrls\": []\n\t}\n};\n/*configuration block end*/\n\nvar domReadyDeferred = Deferred();\nevents.domReady(function(){\n    domReadyDeferred.resolve();\n});\n\nvar isUrlMatched = function(url, includedUrls, excludedUrls) {\n    var isIncluded = isMasksMatch(url, includedUrls);\n    var isExcluded = isMasksMatch(url, excludedUrls);\n    return isIncluded && !isExcluded;\n};\n\nvar isMasksMatch = function(url, masks) {\n    if (!url) {\n        return false;\n    }\n    url = url.toLowerCase();\n\n    for (var i = 0; i < masks.length; i++) {\n        var mask = masks[i].toLowerCase();\n        if (isMaskMatch(url, window.deproxy ? window.deproxy({\n            href: mask\n        }).href : mask)) {\n            return true;\n        }\n    }\n    return false;\n};\n\nvar isMaskMatch = function(url, originalMask) {\n    var mask = '^';\n    var pos = 0;\n    while (originalMask.length > pos) {\n        var char = originalMask[pos];\n        if (char == '*') {\n            mask = mask + '.*';\n            pos = pos + 1;\n        } else if (char == '(') {\n            var posClosing = originalMask.indexOf(')', pos + 1);\n            var posNextOpening = originalMask.indexOf('(', pos + 1);\n            if (posClosing > pos && (posNextOpening < 0 || posClosing < posNextOpening)) {\n                mask = mask + '.*';\n                pos = posClosing + 1;\n            } else {\n                return false;\n            }\n        } else {\n            mask = mask + char;\n            pos = pos + 1;\n        }\n    }\n    mask = mask + '$';\n    mask = mask.replace('?', \"\\\\?\");\n    var r = new RegExp(mask);\n    return r.test(url);\n};\n\nvar waitForElement = function(elementSelector, timeoutValue){\n    var elementDeferred = Deferred();\n    var timeout = false;\n    domReadyDeferred.promise().then(function(){\n        setTimeout(function () {\n            timeout = true;\n        }, timeoutValue);\n    });\n\n    renderer.when(function(){\n        return timeout || dom.find(elementSelector).length;\n    })\n        .done(function(){ elementDeferred.resolve(); })\n        .fail(function(){ elementDeferred.reject(); });\n\n    return elementDeferred.promise();\n};\n\nvar getActionElement = function(selector, data) {\n    var deferred = Deferred();\n\n    if (selector) {\n        waitForElement(selector, 2000)\n            .done(function(){\n                var elements = dom.find(selector);\n                if (elements.length) {\n                    var elementData = {\n                        selector: selector,\n                        data: data\n                    };\n                    deferred.resolveWith(this, [elements[0], elementData]);\n                } else {\n                    deferred.reject();\n                }\n            })\n            .fail(function(){\n                deferred.reject();\n            });\n    } else {\n        deferred.reject();\n    }\n\n    return deferred.promise();\n};\n\nvar getCurrentUrl = function() {\n    return window.deproxy\n        ? window.deproxy(window.location).href\n        : window.location.href;\n};\n\nvar isActionRequired = function() {\n    return !config.urls\n        ? true\n        : !!isUrlMatched(\n            getCurrentUrl(),\n            config.urls.includedUrls,\n            config.urls.excludedUrls);\n};\n\nvar trackClicksAction = function(selectors) {\n    if (isActionRequired()) {\n        for(var selector in selectors){\n            getActionElement(selector, selectors[selector]).done(function (element, elementData){\n                if(element && (!element.attachedActions || !element.attachedActions[config.actionName])){\n                    actions.trackClicks(elementData.selector, {name: config.actionName, value:elementData.data.value, attribute:elementData.data.attr});\n                    if (!element.attachedActions) { element.attachedActions = {}; }\n                    element.attachedActions[config.actionName] = true;\n                }\n            });\n        }\n    }\n};\n\ntrackClicksAction(config.selectorsDefault);\n\ncampaign.events.on('urlChange', function(){ trackClicksAction(config.selectorsDefault); });\n\ncampaign.events.variantJsExecuted(function(elementName, variantName){\n    var selectorsAfter = (config.selectorsAfter[elementName] || {})[variantName.toLowerCase()] || {};\n    trackClicksAction(selectorsAfter);\n});\n","Order":4000,"HighLevelApiVersion":"1.25"},{"Name":"C807862731","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"ClickedExitCross\",\n\t\"selectorsDefault\": {\n\t\t\"#lightbox1540310306097 > .lightbox-dismiss.vcb-me-dismiss:eq(0) > svg\": {\n\t\t\t\"value\": 1,\n\t\t\t\"attr\": \"\"\n\t\t}\n\t},\n\t\"selectorsAfter\": {},\n\t\"urls\": {\n\t\t\"includedUrls\": [\n\t\t\t\"https://usa.kaspersky.com/\",\n\t\t\t\"https://usa.kaspersky.com/?*\"\n\t\t],\n\t\t\"excludedUrls\": []\n\t}\n};\n/*configuration block end*/\n\nvar domReadyDeferred = Deferred();\nevents.domReady(function(){\n    domReadyDeferred.resolve();\n});\n\nvar isUrlMatched = function(url, includedUrls, excludedUrls) {\n    var isIncluded = isMasksMatch(url, includedUrls);\n    var isExcluded = isMasksMatch(url, excludedUrls);\n    return isIncluded && !isExcluded;\n};\n\nvar isMasksMatch = function(url, masks) {\n    if (!url) {\n        return false;\n    }\n    url = url.toLowerCase();\n\n    for (var i = 0; i < masks.length; i++) {\n        var mask = masks[i].toLowerCase();\n        if (isMaskMatch(url, window.deproxy ? window.deproxy({\n            href: mask\n        }).href : mask)) {\n            return true;\n        }\n    }\n    return false;\n};\n\nvar isMaskMatch = function(url, originalMask) {\n    var mask = '^';\n    var pos = 0;\n    while (originalMask.length > pos) {\n        var char = originalMask[pos];\n        if (char == '*') {\n            mask = mask + '.*';\n            pos = pos + 1;\n        } else if (char == '(') {\n            var posClosing = originalMask.indexOf(')', pos + 1);\n            var posNextOpening = originalMask.indexOf('(', pos + 1);\n            if (posClosing > pos && (posNextOpening < 0 || posClosing < posNextOpening)) {\n                mask = mask + '.*';\n                pos = posClosing + 1;\n            } else {\n                return false;\n            }\n        } else {\n            mask = mask + char;\n            pos = pos + 1;\n        }\n    }\n    mask = mask + '$';\n    mask = mask.replace('?', \"\\\\?\");\n    var r = new RegExp(mask);\n    return r.test(url);\n};\n\nvar waitForElement = function(elementSelector, timeoutValue){\n    var elementDeferred = Deferred();\n    var timeout = false;\n    domReadyDeferred.promise().then(function(){\n        setTimeout(function () {\n            timeout = true;\n        }, timeoutValue);\n    });\n\n    renderer.when(function(){\n        return timeout || dom.find(elementSelector).length;\n    })\n        .done(function(){ elementDeferred.resolve(); })\n        .fail(function(){ elementDeferred.reject(); });\n\n    return elementDeferred.promise();\n};\n\nvar getActionElement = function(selector, data) {\n    var deferred = Deferred();\n\n    if (selector) {\n        waitForElement(selector, 2000)\n            .done(function(){\n                var elements = dom.find(selector);\n                if (elements.length) {\n                    var elementData = {\n                        selector: selector,\n                        data: data\n                    };\n                    deferred.resolveWith(this, [elements[0], elementData]);\n                } else {\n                    deferred.reject();\n                }\n            })\n            .fail(function(){\n                deferred.reject();\n            });\n    } else {\n        deferred.reject();\n    }\n\n    return deferred.promise();\n};\n\nvar getCurrentUrl = function() {\n    return window.deproxy\n        ? window.deproxy(window.location).href\n        : window.location.href;\n};\n\nvar isActionRequired = function() {\n    return !config.urls\n        ? true\n        : !!isUrlMatched(\n            getCurrentUrl(),\n            config.urls.includedUrls,\n            config.urls.excludedUrls);\n};\n\nvar trackClicksAction = function(selectors) {\n    if (isActionRequired()) {\n        for(var selector in selectors){\n            getActionElement(selector, selectors[selector]).done(function (element, elementData){\n                if(element && (!element.attachedActions || !element.attachedActions[config.actionName])){\n                    actions.trackClicks(elementData.selector, {name: config.actionName, value:elementData.data.value, attribute:elementData.data.attr});\n                    if (!element.attachedActions) { element.attachedActions = {}; }\n                    element.attachedActions[config.actionName] = true;\n                }\n            });\n        }\n    }\n};\n\ntrackClicksAction(config.selectorsDefault);\n\ncampaign.events.on('urlChange', function(){ trackClicksAction(config.selectorsDefault); });\n\ncampaign.events.variantJsExecuted(function(elementName, variantName){\n    var selectorsAfter = (config.selectorsAfter[elementName] || {})[variantName.toLowerCase()] || {};\n    trackClicksAction(selectorsAfter);\n});\n","Order":4000,"HighLevelApiVersion":"1.25"},{"Name":"C1688196676","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"ClickedNoThanks\",\n\t\"selectorsDefault\": {\n\t\t\"#lightbox1540310306097 > .bottomNoLink.pointer.lightbox-dismiss.vcb-me-dismiss\": {\n\t\t\t\"value\": 1,\n\t\t\t\"attr\": \"\"\n\t\t}\n\t},\n\t\"selectorsAfter\": {},\n\t\"urls\": {\n\t\t\"includedUrls\": [\n\t\t\t\"https://usa.kaspersky.com/\",\n\t\t\t\"https://usa.kaspersky.com/?*\"\n\t\t],\n\t\t\"excludedUrls\": []\n\t}\n};\n/*configuration block end*/\n\nvar domReadyDeferred = Deferred();\nevents.domReady(function(){\n    domReadyDeferred.resolve();\n});\n\nvar isUrlMatched = function(url, includedUrls, excludedUrls) {\n    var isIncluded = isMasksMatch(url, includedUrls);\n    var isExcluded = isMasksMatch(url, excludedUrls);\n    return isIncluded && !isExcluded;\n};\n\nvar isMasksMatch = function(url, masks) {\n    if (!url) {\n        return false;\n    }\n    url = url.toLowerCase();\n\n    for (var i = 0; i < masks.length; i++) {\n        var mask = masks[i].toLowerCase();\n        if (isMaskMatch(url, window.deproxy ? window.deproxy({\n            href: mask\n        }).href : mask)) {\n            return true;\n        }\n    }\n    return false;\n};\n\nvar isMaskMatch = function(url, originalMask) {\n    var mask = '^';\n    var pos = 0;\n    while (originalMask.length > pos) {\n        var char = originalMask[pos];\n        if (char == '*') {\n            mask = mask + '.*';\n            pos = pos + 1;\n        } else if (char == '(') {\n            var posClosing = originalMask.indexOf(')', pos + 1);\n            var posNextOpening = originalMask.indexOf('(', pos + 1);\n            if (posClosing > pos && (posNextOpening < 0 || posClosing < posNextOpening)) {\n                mask = mask + '.*';\n                pos = posClosing + 1;\n            } else {\n                return false;\n            }\n        } else {\n            mask = mask + char;\n            pos = pos + 1;\n        }\n    }\n    mask = mask + '$';\n    mask = mask.replace('?', \"\\\\?\");\n    var r = new RegExp(mask);\n    return r.test(url);\n};\n\nvar waitForElement = function(elementSelector, timeoutValue){\n    var elementDeferred = Deferred();\n    var timeout = false;\n    domReadyDeferred.promise().then(function(){\n        setTimeout(function () {\n            timeout = true;\n        }, timeoutValue);\n    });\n\n    renderer.when(function(){\n        return timeout || dom.find(elementSelector).length;\n    })\n        .done(function(){ elementDeferred.resolve(); })\n        .fail(function(){ elementDeferred.reject(); });\n\n    return elementDeferred.promise();\n};\n\nvar getActionElement = function(selector, data) {\n    var deferred = Deferred();\n\n    if (selector) {\n        waitForElement(selector, 2000)\n            .done(function(){\n                var elements = dom.find(selector);\n                if (elements.length) {\n                    var elementData = {\n                        selector: selector,\n                        data: data\n                    };\n                    deferred.resolveWith(this, [elements[0], elementData]);\n                } else {\n                    deferred.reject();\n                }\n            })\n            .fail(function(){\n                deferred.reject();\n            });\n    } else {\n        deferred.reject();\n    }\n\n    return deferred.promise();\n};\n\nvar getCurrentUrl = function() {\n    return window.deproxy\n        ? window.deproxy(window.location).href\n        : window.location.href;\n};\n\nvar isActionRequired = function() {\n    return !config.urls\n        ? true\n        : !!isUrlMatched(\n            getCurrentUrl(),\n            config.urls.includedUrls,\n            config.urls.excludedUrls);\n};\n\nvar trackClicksAction = function(selectors) {\n    if (isActionRequired()) {\n        for(var selector in selectors){\n            getActionElement(selector, selectors[selector]).done(function (element, elementData){\n                if(element && (!element.attachedActions || !element.attachedActions[config.actionName])){\n                    actions.trackClicks(elementData.selector, {name: config.actionName, value:elementData.data.value, attribute:elementData.data.attr});\n                    if (!element.attachedActions) { element.attachedActions = {}; }\n                    element.attachedActions[config.actionName] = true;\n                }\n            });\n        }\n    }\n};\n\ntrackClicksAction(config.selectorsDefault);\n\ncampaign.events.on('urlChange', function(){ trackClicksAction(config.selectorsDefault); });\n\ncampaign.events.variantJsExecuted(function(elementName, variantName){\n    var selectorsAfter = (config.selectorsAfter[elementName] || {})[variantName.toLowerCase()] || {};\n    trackClicksAction(selectorsAfter);\n});\n","Order":4000,"HighLevelApiVersion":"1.25"},{"Name":"C1323968435","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"ClickedB2B\",\n\t\"selectorsDefault\": {\n\t\t\"#lightbox1540310306097 > .lightbox-dismiss.vcb-me-dismiss:eq(2) > .link50.pointer\": {\n\t\t\t\"value\": 1,\n\t\t\t\"attr\": \"1-50 Employees\"\n\t\t},\n\t\t\"#lightbox1540310306097 > .lightbox-dismiss.vcb-me-dismiss:eq(3) > .link999.pointer\": {\n\t\t\t\"value\": 1,\n\t\t\t\"attr\": \"51-999 Employees\"\n\t\t},\n\t\t\"#lightbox1540310306097 > .lightbox-dismiss.vcb-me-dismiss:eq(4) > .pointer\": {\n\t\t\t\"value\": 1,\n\t\t\t\"attr\": \"1000+ Employees\"\n\t\t}\n\t},\n\t\"selectorsAfter\": {},\n\t\"urls\": {\n\t\t\"includedUrls\": [\n\t\t\t\"https://usa.kaspersky.com/\",\n\t\t\t\"https://usa.kaspersky.com/?*\"\n\t\t],\n\t\t\"excludedUrls\": []\n\t}\n};\n/*configuration block end*/\n\nvar domReadyDeferred = Deferred();\nevents.domReady(function(){\n    domReadyDeferred.resolve();\n});\n\nvar isUrlMatched = function(url, includedUrls, excludedUrls) {\n    var isIncluded = isMasksMatch(url, includedUrls);\n    var isExcluded = isMasksMatch(url, excludedUrls);\n    return isIncluded && !isExcluded;\n};\n\nvar isMasksMatch = function(url, masks) {\n    if (!url) {\n        return false;\n    }\n    url = url.toLowerCase();\n\n    for (var i = 0; i < masks.length; i++) {\n        var mask = masks[i].toLowerCase();\n        if (isMaskMatch(url, window.deproxy ? window.deproxy({\n            href: mask\n        }).href : mask)) {\n            return true;\n        }\n    }\n    return false;\n};\n\nvar isMaskMatch = function(url, originalMask) {\n    var mask = '^';\n    var pos = 0;\n    while (originalMask.length > pos) {\n        var char = originalMask[pos];\n        if (char == '*') {\n            mask = mask + '.*';\n            pos = pos + 1;\n        } else if (char == '(') {\n            var posClosing = originalMask.indexOf(')', pos + 1);\n            var posNextOpening = originalMask.indexOf('(', pos + 1);\n            if (posClosing > pos && (posNextOpening < 0 || posClosing < posNextOpening)) {\n                mask = mask + '.*';\n                pos = posClosing + 1;\n            } else {\n                return false;\n            }\n        } else {\n            mask = mask + char;\n            pos = pos + 1;\n        }\n    }\n    mask = mask + '$';\n    mask = mask.replace('?', \"\\\\?\");\n    var r = new RegExp(mask);\n    return r.test(url);\n};\n\nvar waitForElement = function(elementSelector, timeoutValue){\n    var elementDeferred = Deferred();\n    var timeout = false;\n    domReadyDeferred.promise().then(function(){\n        setTimeout(function () {\n            timeout = true;\n        }, timeoutValue);\n    });\n\n    renderer.when(function(){\n        return timeout || dom.find(elementSelector).length;\n    })\n        .done(function(){ elementDeferred.resolve(); })\n        .fail(function(){ elementDeferred.reject(); });\n\n    return elementDeferred.promise();\n};\n\nvar getActionElement = function(selector, data) {\n    var deferred = Deferred();\n\n    if (selector) {\n        waitForElement(selector, 2000)\n            .done(function(){\n                var elements = dom.find(selector);\n                if (elements.length) {\n                    var elementData = {\n                        selector: selector,\n                        data: data\n                    };\n                    deferred.resolveWith(this, [elements[0], elementData]);\n                } else {\n                    deferred.reject();\n                }\n            })\n            .fail(function(){\n                deferred.reject();\n            });\n    } else {\n        deferred.reject();\n    }\n\n    return deferred.promise();\n};\n\nvar getCurrentUrl = function() {\n    return window.deproxy\n        ? window.deproxy(window.location).href\n        : window.location.href;\n};\n\nvar isActionRequired = function() {\n    return !config.urls\n        ? true\n        : !!isUrlMatched(\n            getCurrentUrl(),\n            config.urls.includedUrls,\n            config.urls.excludedUrls);\n};\n\nvar trackClicksAction = function(selectors) {\n    if (isActionRequired()) {\n        for(var selector in selectors){\n            getActionElement(selector, selectors[selector]).done(function (element, elementData){\n                if(element && (!element.attachedActions || !element.attachedActions[config.actionName])){\n                    actions.trackClicks(elementData.selector, {name: config.actionName, value:elementData.data.value, attribute:elementData.data.attr});\n                    if (!element.attachedActions) { element.attachedActions = {}; }\n                    element.attachedActions[config.actionName] = true;\n                }\n            });\n        }\n    }\n};\n\ntrackClicksAction(config.selectorsDefault);\n\ncampaign.events.on('urlChange', function(){ trackClicksAction(config.selectorsDefault); });\n\ncampaign.events.variantJsExecuted(function(elementName, variantName){\n    var selectorsAfter = (config.selectorsAfter[elementName] || {})[variantName.toLowerCase()] || {};\n    trackClicksAction(selectorsAfter);\n});\n","Order":4000,"HighLevelApiVersion":"1.25"}],"Elements":[],"Recommendations":[]},{"Name":"NAV_DACH_B2C_serving","Type":"ABnMVT","CSName":"","HighLevelApiVersion":"1.25","PagePrefix":"","Scripts":[{"Name":"C848507510","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"NAM_Nav_NoBounce 4\",\n\t\"value\": 1,\n\t\"attr\": \"\"\n};\n/*configuration block end*/\n\nif (campaign.getData('NoBounce') && !campaign.scope.testPage) {\n    actions.send(config.actionName, config.value);\n  }","Order":4000,"HighLevelApiVersion":"1.25"}],"Elements":[],"Recommendations":[]}],"MRRules":[],"PersistData":[{"Name":"srv","IsGlobal":false,"Value":"prodiadcgeu04","Expiration":365},{"Name":"bid","IsGlobal":false,"Value":"prodiadcgeu04","Expiration":0.00694},{"Name":"pd","IsGlobal":false,"Value":"GxzIT1tAoiyFtRBi0EYK7usoGHzMc_CtDLDpW68G8LM=|AQAAAApDH4sIAAAAAAAEAGNhiNrOKXJG9NE_BubMxBRGIQZGJ4adcrNfMDIEe2s7npe55QGjGYDgPxQwsLlkFqUmlzCeEWUEiYMBTBJEMzAwMTxlYWQwcU9jZEgDSjO6AgCFrZ-rawAAAA==","Expiration":365}],"SiteInfo":[{"Url":"kaspersky.com","ID":481}],"SystemData":[{"Version":"1.0","RequestId":1,"ResponseId":1}],"GenInfo":{},"ServerAttributes":{},"Iteration":"7GL24U1QViGZhSZBOTjhqc2hd-Y","Packages":["mmpackage-1.25.js"]});