mmRequestCallbacks[1]({"Scripts":[],"Campaigns":[{"Name":"Use Case 2 Web page mobile testing 5g","Type":"ABnMVT","CSName":"","HighLevelApiVersion":"1.27","PagePrefix":"MDk3MTMz","Scripts":[{"Name":"Qualifying","Type":"script","Attrs":{"type":"text/javascript"},"Data":"function isQualified(){\n    return window.navigator.connection.effectiveType !== \"5g\" && cookies.get('T03_B') == undefined; // Can be a Promise, too.\n}\n\ncampaign.scope.qualificationRules = campaign.scope.qualificationRules || [];\ncampaign.scope.qualificationRules.push(isQualified);","Order":5000,"HighLevelApiVersion":"1.27"},{"Name":"Rendering","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var config = {\n    \"selectorsToHide\": \"body { visibility: hidden !important }\",\n    \"useSecondRequest\": true,\n    \"elements\": null\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) { return true; }\n\n    var url = window.deproxy ? window.deproxy(window.location).href : window.location.href;\n    for (var i = 0; i < config.elements.length; i++) {\n        if (isUrlMatched(url, config.elements[i].includedUrls, config.elements[i].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) { return config.selectorsToHide; }\n\n    var url = window.deproxy ? window.deproxy(window.location).href : window.location.href;\n    var selectors = \"\";\n    for (var i = 0; i < config.elements.length; i++) {\n        if (isUrlMatched(url, config.elements[i].includedUrls, config.elements[i].excludedUrls)) {\n            selectors += \" \" + config.elements[i].selectors;\n        }\n    }\n    return selectors;\n}\n\nfunction render() {\n    renderCss();\n    renderJs();\n    campaign.events.trigger(\"lastRequest\");\n\n    var campaignName = campaign.getName();\n    window.MMExperience = window.MMExperience || {};\n    if(!window.MMExperience[campaignName]){\n        window.MMExperience[campaignName] = campaign.getExperience();\n    }\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 i = 0; i < masks.length; i++) {\n        var mask = masks[i].toLowerCase();\n        if (isMaskMatch(url, window.deproxy({\n                href: mask\n            }).href)) {\n            matchedMasks = matchedMasks + 1;\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.27"},{"Name":"C381662225","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"Returning Users\",\n\t\"value\": 1,\n\t\"attr\": \"\"\n};\n/*configuration block end*/\n\n// actions.set(config.actionName, config.value, config.attr).send();\n\nif(window.navigator.connection.effectiveType == \"5g\"){\n actions.send('Returning Users', 1); \n}","Order":4000,"HighLevelApiVersion":"1.27"}],"Elements":[],"Recommendations":[]},{"Name":"Use Case 5 Website personalization","Type":"ABnMVT","CSName":"","HighLevelApiVersion":"1.27","PagePrefix":"MDk3MjE3","Scripts":[{"Name":"Qualifying","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var a = false;\nif(cookies.get('T03_B') == \"true\" && cookies.get('T03_A') == undefined){\n a = true; \n}\n\nfunction isQualified(){\n    return a; // Can be a Promise, too.\n}\n\ncampaign.scope.qualificationRules = campaign.scope.qualificationRules || [];\ncampaign.scope.qualificationRules.push(isQualified);","Order":5000,"HighLevelApiVersion":"1.27"},{"Name":"Rendering","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var config = {\n    \"selectorsToHide\": \"\",\n    \"useSecondRequest\": true,\n    \"elements\": null\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) { return true; }\n\n    var url = window.deproxy ? window.deproxy(window.location).href : window.location.href;\n    for (var i = 0; i < config.elements.length; i++) {\n        if (isUrlMatched(url, config.elements[i].includedUrls, config.elements[i].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) { return config.selectorsToHide; }\n\n    var url = window.deproxy ? window.deproxy(window.location).href : window.location.href;\n    var selectors = \"\";\n    for (var i = 0; i < config.elements.length; i++) {\n        if (isUrlMatched(url, config.elements[i].includedUrls, config.elements[i].excludedUrls)) {\n            selectors += \" \" + config.elements[i].selectors;\n        }\n    }\n    return selectors;\n}\n\nfunction render() {\n    renderCss();\n    renderJs();\n    campaign.events.trigger(\"lastRequest\");\n\n    var campaignName = campaign.getName();\n    window.MMExperience = window.MMExperience || {};\n    if(!window.MMExperience[campaignName]){\n        window.MMExperience[campaignName] = campaign.getExperience();\n    }\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 i = 0; i < masks.length; i++) {\n        var mask = masks[i].toLowerCase();\n        if (isMaskMatch(url, window.deproxy({\n                href: mask\n            }).href)) {\n            matchedMasks = matchedMasks + 1;\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.27"}],"Elements":[],"Recommendations":[]},{"Name":"UC5 Helper","Type":"ABnMVT","CSName":"","HighLevelApiVersion":"1.27","PagePrefix":"","Scripts":[{"Name":"C21280707","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"PL_in_same_session\",\n\t\"value\": 1,\n\t\"attr\": \"\"\n};\n/*configuration block end*/\n\n// actions.set(config.actionName, config.value, config.attr).send();\nevents.domReady(function(){\n  if(cookies.get('T03_A') == 'true' && window.location.href !== 'https://www.mtn.ng/broadband/router-plans/' && window.location.href !== 'https://www.mtn.ng/personal/data/data-plans/'){\n    var a = window.location.href;\n    actions.send('PL_in_same_session', 1, a);\n  }\n});","Order":4000,"HighLevelApiVersion":"1.27"},{"Name":"C1352337157","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"PL_in_next_session\",\n\t\"value\": 1,\n\t\"attr\": \"\"\n};\n/*configuration block end*/\n\n// actions.set(config.actionName, config.value, config.attr).send();\nevents.domReady(function(){\n  if(cookies.get('T03_A') == undefined && window.location.href !== 'https://www.mtn.ng/broadband/router-plans/' && window.location.href !== 'https://www.mtn.ng/personal/data/data-plans/'){\n    var a = window.location.href;\n    actions.send('PL_in_next_session', 1, a);\n  }\n});","Order":4000,"HighLevelApiVersion":"1.27"}],"Elements":[],"Recommendations":[]}],"MRRules":[],"PersistData":[{"Name":"srv","IsGlobal":false,"Value":"prodlhrcgeu04","Expiration":365},{"Name":"bid","IsGlobal":false,"Value":"prodlhrcgeu04","Expiration":0.00694},{"Name":"pd","IsGlobal":false,"Value":"SpLkKAYhASB1qmiGPRIs9CrQ6QloQqgpluKXnUqyRMs=|AQAAAApDH4sIAAAAAAAEAGNh2Nri271HvCiEgTkno4hRiIHRiaFvtX0aI4NitsKPmYtue8BoBiD4DwUMbC6ZRanJJYx7xBlB4mAAkwTRDAzMDLnVjAzLDoKI-7WMDD1ANYyuAB4rtHJwAAAA","Expiration":365}],"SiteInfo":[{"Url":"mtn.co.za","ID":2762}],"SystemData":[{"Version":"1.0","RequestId":1,"ResponseId":1}],"GenInfo":{},"ServerAttributes":{},"Iteration":"psyobkHvjnHtFwvVSJ3Lu_a8ewY","Packages":["mmpackage-1.27.js"]});