mmRequestCallbacks[1]({"Scripts":[{"Name":"Plugin_IntModule","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*!\n *\tintegrations-module 0.9.4\n *\t-- Maxymiser Integrations Module provides a standardized approach to develop and deploy 3rd party integrations.\n *\t-- https://gitlab.com/maxymiser-integrations/integrations-module/raw/master/src/integrations-module.min.js\n *\t-- git+ssh://git@gitlab.com/maxymiser-integrations/integrations-module.git\n *\t-- Built on 2015-10-30\n */\n!function(){function a(){function a(a,b){function i(b){return a=a||\"\",g(\"Integrations.register(\"+a+\"): \"+(b||\"\").toString())}var j,k;return b=e(b)?b:{},(a=(\"string\"==typeof a?a:\"\").toLowerCase().replace(/^\\s+|\\s+$/g,\"\"))?l[a]?(i(m.errors.alreadyRegistered),null):(b.name=a,j=h(b,{}),k={validate:c(j.validate)?j.validate:f,check:c(j.check)?j.check:f,interval:d(j.interval)?j.interval:50,timeout:d(j.timeout)?j.timeout:2e3,exec:c(j.exec)?j.exec:f,options:j},j=h(k,j),l[a]=j):(i(m.errors.missingRegisterName),null)}function i(a,b){b=e(b)?b:{};var c,d,f,g,i=new Deferred;if(a=(a||\"\").toLowerCase(),i.integrationName=a,!l[a])return m.reject(i,m.errors.unregisteredIntegration);if(c=h(l[a],{}),c=h(b,c),(f=c.validate(c))!==!0)return m.reject(i,f);if(d=c.campaign,(g=m.validateCampaignRequired(c,i))!==!0)return m.reject(i,g);if(c.isProduction=m.isProduction(),c.attributeMapRequired){var j=m.isValidAttributeMap(c.attributeMap);if(j!==!0)return m.reject(i,j)}return\"pending\"!==i.state()?i.promise():(\"never\"!==c.timeout&&m.setFailTimeout(c,i),m.check(c).then(function(){return m.exec(c)}).then(function(a){return c.result=a,m.resolve(i,c)}).fail(function(a){return m.reject(i,a)}),i.promise())}function j(a,b){a=(a||\"\").toLowerCase();var c=l[a];return c?(b=e(b)?b:{},l[a]=h(b,c),this):!1}function k(a){if(!a)return l;var b=(a||\"\").toLowerCase();return l[b]}var l={},m={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 a(a){for(var c,d={},e=\"\",f=0;c=b(a+f++);)e+=c;e=decodeURIComponent(e);try{d=JSON.parse(e)}catch(g){}return d}function b(a){var b=new RegExp(\"(?:^|; )\"+encodeURIComponent(a).replace(/([.$?*|{}()\\[\\]\\\\\\/+^])/g,\"\\\\$1\")+\"=([^;]+)\"),c=(document.cookie.match(b)||[\"\",\"\"])[1];return decodeURIComponent(c)}for(var c=a(\"mmcore.store.p.\")||{},d=a(\"mmcore.store.s.\")||{},e=a(\"mmapi.store.p.\")||{},f=a(\"mmapi.store.s.\")||{},g=[c,d,e,f],h={\"mmparams.p\":1,\"mmparams.d\":1},i={un:1,cfgID:1,pruh:1},j=g.length;j--;){var k=g[j];for(var l in h||{})for(var m in i||{})if((k[l]||{})[m])return!1}return!0},isValidIntegrationName:function(a){return\"string\"==typeof a&&/^\\w+/.test(a)},isCampaignScope:function(a){return e(a)&&a.getName&&a.getExperience?!0:!1},getCampaignExperience:function(a){var b={};return m.isCampaignScope(a)&&(b=a.getExperience&&a.getExperience()||{}),Object.keys(b)?m.formatCampaignExperience(b):!1},formatCampaignExperience:function(a){a=e(a)?a:{};var b=[];for(var c in a)b.push(c+\":\"+a[c]);return b.join(\"|\")},getData:function(a){a=(a||\"\").toLowerCase();var b=visitor.getData(\"Integrations\");return b=e(b)?b:{},a&&(b[a]=b[a]||{}),b},setRedirectData:function(a,b){if(a=(a||\"\").toLowerCase(),!m.isCampaignScope(b))return!1;var c=m.getData(a),d=b.getName();return c[a][d]=c[a][d]||{},c[a][d].redirectData=b.getExperience(),visitor.setData(\"Integrations\",c,m.HALFHOUR),!0},removeRedirectData:function(a,b){if(a=(a||\"\").toLowerCase(),!m.isCampaignScope(b))return!1;var c=m.getData(a),d=b.getName();return c[a][d]=c[a][d]||{},c[a][d].redirectData=null,visitor.setData(\"Integrations\",c,m.HALFHOUR),!0},getRedirectData:function(a,b){if(a=(a||\"\").toLowerCase(),!m.isCampaignScope(b))return!1;var c=m.getData(a),d=b.getName();if(c[a][d]=c[a][d]||{},!c[a]||!c[a][d])return c[a]=c[a]||{},c[a][d]=c[a][d]||{},c[a][d].redirectData=null,visitor.setData(\"Integrations\",c,m.HALFHOUR),!1;for(var e in c[a])if(e===d)return c[a][e].redirectData;return!1},getSessionDate:function(a,b){var c=m.getData(a),d=c[a][b.getName()]||{},e=d.sessionDate;return e},setSessionDate:function(a,b){var c=m.getData(a),d=b.getName();c[a][d]=c[a][d]||{},c[a][d].sessionDate=(new Date).getTime(),visitor.setData(\"Integrations\",c,m.HALFHOUR)},resolve:function(a,b){return a.resolve(b),a.promise()},reject:function(a,b){var c=a.integrationName||\"unknown name\";return b=b||\"unknown reason\",g(\"Integration [\"+c+\"]: \"+b.toString()),a.reject(b),a.promise()},validateCampaignRequired:function(a,b){if(!a.campaignRequired)return a.oncePerSession?\"campaign option is required when using the oncePerSession option\":a.redirect?\"campaign option is required when using the redirect option\":!0;var c=a.campaign,d=m.isCampaignScope(c);if(d!==!0)return m.errors.campaignRequired;if(a.campaignExperience=m.getCampaignExperience(c),a.campaignExperience===!1&&!a.redirect)return m.errors.noCampaignExperience(a.name);if(a.oncePerSession){var e=m.getSessionDate(a.name,c);if(m.setSessionDate(a.name,c),(new Date).getTime()-m.HALFHOUR>e)return g(\"Integration [\"+a.name+\"]: data has already been sent this session\"),m.resolve(b,a),!0}if(a.redirect){var f=function(){var a=c.getElements();for(var b in a)return!0;return!1}();return f?c.isDefault()?!0:m.setRedirectData(a.name,c)?(m.resolve(b,a),!0):m.errors.failedToSaveRedirectData:(a.campaignExperience=m.getRedirectData(a.name,c),a.campaignExperience=m.formatCampaignExperience(a.campaignExperience),m.removeRedirectData(a.name,c),a.campaignExperience?!0:m.errors.noRedirectCampaignData)}return!0},setFailTimeout:function(a,b){!function(b){setTimeout(function(){setTimeout(function(){return\"pending\"===b.state()?m.reject(b,\"Integration timed out after \"+a.timeout+\"ms\"):void 0},0)},a.timeout+1)}(b)},isValidAttributeMap:function(a){if(!a)return\"Missing required attributeMap parameter\";if(!e(a)||!Object.keys(a).length)return\"The attributeMap parameter is empty or not an object\";for(var b in a){var c=a[b];if(\"string\"!=typeof b||!/^[a-zA-Z]+/.test(b))return\"Invalid attribute name in the attributeMap\";if(!e(c))return\"attributeMap values must be stored in an object\";if(!Object.keys(c).length)return\"attributeMap attribute object is empty\";for(var d in c)if(!/^\\w+$/.test(d)&&\"default\"!==d)return\"Invalid attribute ID in attributeMap\"}return!0},check:function(a){var c=new Deferred,d=!1;return function e(){var f=a.check.call(this,a);return b(f)?void setTimeout(function(){f.done(function(){return c.resolve()}).fail(function(a){return c.reject(a)})},0):f?void setTimeout(function(){c.resolve()},0):void(d||setTimeout(e,a.interval))}(),setTimeout(function(){d=!0},a.timeout),c.promise()},exec:function(a){var c=new Deferred,d=a.exec.call(this,a);return b(d)?(setTimeout(function(){d.done(function(a){return c.resolve(a)}).fail(function(a){return c.reject(a)})},0),c.promise()):(d===!0?m.resolve(c,a.result):m.reject(c,d),c.promise())}};return{register:a,run:i,setDefaults:j,get:k}}function b(a){return e(a)&&c(a.then)}function c(a){return\"function\"==typeof a}function d(a){return\"number\"==typeof a&&a>0}function e(a){return\"object\"==typeof a&&!!a}function f(){return!0}function g(a){window.mm_error=window.mm_error||\"\",window.mm_error+=a+\"\\n\"}function h(a,b){a=e(a)?a:{},b=e(b)?b:{};var c={};for(var d in b)c[d]=b[d];for(var f in a)c[f]=a[f];return c}if(\"object\"==typeof modules&&\"function\"==typeof modules.define){var i={autoDefine:!0,singleton:!0};modules.define(\"Integrations\",i,a)}else modules={require:function(){return new a}}}();","Order":-100,"HighLevelApiVersion":"1.4"},{"Name":"IM_AdobeAnalytics","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*!\n *\tAdobeAnalytics 1.1.0\n *\t-- Maxymiser Adobe Analytics integration\n *\t-- https://gitlab.com/maxymiser-integrations/AdobeAnalytics/raw/master/src/AdobeAnalytics.min.js\n *\t-- git+ssh://git@gitlab.com/maxymiser-integrations/AdobeAnalytics.git\n *\t-- Built on 2015-12-11\n */\n!function(){var a={version:\"1.1.0\",validate:function(a){return a.eVar&&!b.isNumber(a.eVar)?b.errors.invalidEvar(a.eVar):a.prop&&!b.isNumber(a.prop)?b.errors.invalidProp(a.prop):a.sVariable&&!b.isSVariable(a.sVariable)?b.errors.invalidSVariable(a.sVariable):b.getParams(a).length?a.trackingServer?!0:b.errors.missingTrackingServer:b.errors.missingParameters},oncePerSession:!1,campaignRequired:!0,check:function(a){var c=b.getSVariable(a.sVariable);return c&&c.trackingServer===a.trackingServer},timeout:7e3,exec:function(a){return a.sync?(b.populateSyncData(a),!0):b.send(a)}},b={errors:{missingParameters:\"The `eVar` and/or `prop` option are required and missing\",invalidEvar:function(a){return\"Invalid eVar provided [\"+(a||\"\").toString()+\"]\"},invalidProp:function(a){return\"Invalid prop provided [\"+(a||\"\").toString()+\"]\"},invalidSVariable:function(a){return\"Invalid sVariable provided [\"+(a||\"\").toString()+\"] (must be `string` or `s object`)\"},missingTrackingServer:function(){return\"Missing trackingServer option\"}},isSVariable:function(a){return\"string\"==typeof a?/^\\w+/.test(a):\"object\"==typeof a?b.isSObject(a):!1},isSObject:function(a){return\"object\"==typeof a&&\"function\"==typeof a.t},getSVariable:function(a){return a&&\"string\"!=typeof a?b.isSObject(a)?a:!1:b.isSObject(window[a||\"s\"])?window[a||\"s\"]:!1},isNumber:function(a){return a&&(+a).toFixed(0)>0},send:function(a){var c=b.getParams(a),d=b.getSVariable(a.sVariable);d.linkTrackVars=c.join(\",\");for(var e=0;e<c.length;e++)d[c[e]]=a.campaign.getName()+\"=\"+a.campaignExperience;return d.tl(!0,\"o\",\"Maxymiser \"+(a.isProduction?\"Live\":\"QA\")),!0},getParams:function(a){var b=[];return a.eVar&&b.push(\"eVar\"+a.eVar),a.prop&&b.push(\"prop\"+a.prop),b},populateSyncData:function(a){var c=b.getParams(a);window.mm_adobe_data=window.mm_adobe_data||{};for(var d=c.length;d--;)window.mm_adobe_data[c[d]]=a.campaignExperience}};\"object\"==typeof modules&&\"function\"==typeof modules.define&&modules.require(\"Integrations\").register(\"Adobe Analytics\",a)}();","Order":-90,"HighLevelApiVersion":"1.4"},{"Name":"IM_Defaults","Type":"script","Attrs":{"type":"text/javascript"},"Data":"Integrations.setDefaults('Adobe Analytics', {\n\ttrackingServer: 'stats.economist.com',\n\tclientID: 'economistcomprod',\n\teVar: 51,\n\tprop: 51\n});","Order":-80,"HighLevelApiVersion":"1.4"}],"Campaigns":[{"Name":"T41_FullWidthSlider","Type":"ABnMVT","CSName":"","HighLevelApiVersion":"1.4","Scripts":[{"Name":"T41_Checker","Type":"script","Attrs":{"type":"text/javascript"},"Data":";(function T41_Checker() {\n\tif (window.startPopUp) {\n\t\twindow.startPopUp = (function(startPopUp) {\n\t\t\treturn function() {\n\t\t\t\tif (jQuery('#subscription_slider').length) {\n\t\t\t\t\trenderer\n\t\t\t\t\t\t.unhideAfter('never')\n\t\t\t\t\t\t.hide('#subscription_slider', 't41_hidden_style')\n\t\t\t\t\t\t.getContent('T41').then(function() {\n\t\t\t\t\t\t\tcookies.set('mm_t41_view_campaign', 1, {\n\t\t\t\t\t\t\t\texpires: 180\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tcookies.set('mm_t41_Session', 1);\n\t\t\t\t\t\t\tactions.send('T41_SliderTrigger', 1);\n\t\t\t\t\t\t\tif (campaign.isDefault()) {\n\t\t\t\t\t\t\t\trenderer.show('t41_hidden_style');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tvar result = startPopUp.apply(this, arguments);\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}(window.startPopUp));\n\t}\n\n\n\tvar COOKIE_NAME = 'mm_t41_return_visit';\n\tif (!cookies.get('mm_t41_Session') && cookies.get('mm_t41_view_campaign')) {\n\t\tcookies.set('mm_t41_Session', 1);\n\t\tvar visitNum = 1 + (Number(cookies.get(COOKIE_NAME, 1)) || 0);\n\t\tif (!isNaN(visitNum)) {\n\t\t\tcookies.set(COOKIE_NAME, visitNum, {\n\t\t\t\texpires: 180\n\t\t\t});\n\t\t\tactions.send('T41_ReturnVisit', 1, 'Visit' + visitNum);\n\t\t}\n\t}\n})();","Order":10,"HighLevelApiVersion":"1.4"}],"Elements":[],"Recommendations":[]}],"MRRules":[],"PersistData":[{"Name":"srv","IsGlobal":false,"Value":"nycvwcgeu03","Expiration":365},{"Name":"pd","IsGlobal":false,"Value":"-211951499|AQAAAAoBQsofVB8IDZJDzmoBAJfFkrSAOdNIDwAAAJfFkrSAOdNIAAAAAP//////////AAZEaXJlY3QBCA0BAAAAAAAAAAEAAP///////////////wEAa0oAAABOWKBsCA0Ato0AAAUIDQgN//8BAAABAAAAAAFO5AAAoiUBAAAAAAABRQ==","Expiration":365},{"Name":"mmid","IsGlobal":true,"Value":"-220262788|AQAAAArKH1QfCA0AAA==","Expiration":365}],"SiteInfo":[{"Url":"economist.com","ID":550}],"SystemData":[{"Version":"1.0","RequestId":1}],"GenInfo":{"T20_Master_copy":{"element1":"t20_welov_copy"}},"ServerAttributes":{},"mmcoreResponse":"mmcore.SetCookie('mmid','-220262788|AQAAAArKH1QfCA0AAA==',365,1);mmcore.SetCookie('pd','-211951499|AQAAAAoBQsofVB8IDZJDzmoBAJfFkrSAOdNIDwAAAJfFkrSAOdNIAAAAAP//////////AAZEaXJlY3QBCA0BAAAAAAAAAAEAAP///////////////wEAa0oAAABOWKBsCA0Ato0AAAUIDQgN//8BAAABAAAAAAFO5AAAoiUBAAAAAAABRQ==',365);mmcore.SetCookie('srv','nycvwcgeu03',365);(function(){if(typeof(mmcore.GenInfo)!='object')mmcore.GenInfo={};mmcore.EH=function(e){var s=e.message+'\\r\\n';if(!window.mm_error)window.mm_error=s;else window.mm_error+=s;};\r\nmmcore.GenInfo['T20_Master_copy']={'element1':'t20_welov_copy'};\r\ntry{\r\n//Essentials\n// Maxymiser Core - Try Catch v0.0.0 http://gitlab.maxymiser.net/gts/mmcore-try-catch/tree/master\n(function(){'use strict';mmcore.tryCatch=function(){return function b(c,d){var e=arguments.length;return function(){try{return c.apply(this,arguments)}catch(a){try{mmcore.EH(a)}finally{1<e&&b(d)(a)}}}}}()})();\n\n// Maxymiser Essentials - Deferred v0.0.1\n(function(){var n,r,e,t,u,i,o,l,c,s,a,f,p=[].slice;r=\"pending\",t=\"resolved\",e=\"rejected\",l=function(n,r){return null!=n?n.hasOwnProperty(r):void 0},c=function(n){return l(n,\"length\")&&l(n,\"callee\")},s=function(n){return l(n,\"promise\")&&\"function\"==typeof(null!=n?n.promise:void 0)},o=function(n){return c(n)?o(Array.prototype.slice.call(n)):Array.isArray(n)?n.reduce(function(n,r){return Array.isArray(r)?n.concat(o(r)):(n.push(r),n)},[]):[n]},u=function(n,r){return 0>=n?r():function(){return--n<1?r.apply(this,arguments):void 0}},a=function(n,r){return function(){var e;return e=[n].concat(Array.prototype.slice.call(arguments,0)),r.apply(this,e)}},i=function(n,r,e){var t,u,i,l,c;for(l=o(n),c=[],u=0,i=l.length;i>u;u++)t=l[u],c.push(t.call.apply(t,[e].concat(p.call(r))));return c},n=function(){var u,l,c,a,f,h,g;return g=r,a=[],f=[],h=[],c={resolved:{},rejected:{},pending:{}},this.promise=function(u){var l,y;return u=u||{},u.state=function(){return g},y=function(n,e,t){return function(){return g===r&&e.push.apply(e,o(arguments)),n()&&i(arguments,c[t]),u}},u.done=y(function(){return g===t},a,t),u.fail=y(function(){return g===e},f,e),u.progress=y(function(){return g!==r},h,r),u.always=function(){var n;return(n=u.done.apply(u,arguments)).fail.apply(n,arguments)},l=function(r,e,t){var i,o;return o=new n,i=function(n,r,e){return u[n](e?function(){var n,t;return n=1<=arguments.length?p.call(arguments,0):[],t=e.apply(null,n),s(t)?t.done(o.resolve).fail(o.reject).progress(o.notify):o[r](t)}:o[r])},i(\"done\",\"resolve\",r),i(\"fail\",\"reject\",e),i(\"progress\",\"notify\",t),o},u.pipe=l,u.then=l,null==u.promise&&(u.promise=function(){return u}),u},this.promise(this),u=this,l=function(n,e,t){return function(){return g===r?(g=n,c[n]=arguments,i(e,c[n],t),u):this}},this.resolve=l(t,a),this.reject=l(e,f),this.notify=l(r,h),this.resolveWith=function(n,r){return l(t,a,n).apply(null,r)},this.rejectWith=function(n,r){return l(e,f,n).apply(null,r)},this.notifyWith=function(n,e){return l(r,h,n).apply(null,e)},this},f=function(){var r,e,t,i,l,c,a;if(e=o(arguments),1===e.length)return s(e[0])?e[0]:(new n).resolve(e[0]).promise();if(l=new n,!e.length)return l.resolve().promise();for(i=[],t=u(e.length,function(){return l.resolve.apply(l,i)}),e.forEach(function(n,r){return s(n)?n.done(function(){var n;return n=1<=arguments.length?p.call(arguments,0):[],i[r]=n.length>1?n:n[0],t()}):(i[r]=n,t())}),c=0,a=e.length;a>c;c++)r=e[c],s(r)&&r.fail(l.reject);return l.promise()},mmcore.Deferred=function(){return new n},mmcore.when=f}).call(this);\n\n// Maxymiser Essentials - Wait for v0.1.1\n!function(){\"use strict\";mmcore.waitFor=function(e,t){var i,o;return o=mmcore.Deferred(),o.isComplete=function(){return\"pending\"!==o.state()},t=t||{},t.interval=t.interval||50,t.isNotStoppedOnDocumentReadiness=t.isNotStoppedOnDocumentReadiness||!1,t.isNotPeriodicallyChecked=t.isNotPeriodicallyChecked||!1,i=function(){o.isComplete()||(e.call(o)&&o.resolve(),o.isComplete()||(!t.isNotStoppedOnDocumentReadiness&&(mmcore.$&&mmcore.$.isReady||!mmcore.$&&\"complete\"===document.readyState)?o.reject():t.isNotPeriodicallyChecked||setTimeout(i,t.interval)))},t.hasOwnProperty(\"initializer\")&&t.initializer.call(o),i(),o.isComplete()||(t.hasOwnProperty(\"timeout\")&&!function(){var e=setTimeout(o.reject,t.timeout);o.always(function(){clearTimeout(e)})}(),t.isNotStoppedOnDocumentReadiness||mmcore.AddDocLoadHandler(t.isNotPeriodicallyChecked?o.reject:i)),o.promise()}}();\n\n// Maxymiser Core - Campaign v0.3.0 http://gitlab.maxymiser.net/gts/mmcore-campaign/tree/master\n(function(){\"use strict\";function e(e,t){var n=false;for(var r=0;r<t.length;r++){if(t[r]===e){n=true}}return n}function n(e,t,n){this.name=e;this.maxyboxNames=t;this.prefix=n;this.preventDefaultRendering();this.preventDefaultHiding()}mmcore.Campaign=n;var t=function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++){r=!!t(e[s],s);if(n!==r){i.push(e[s])}}return i};n.prototype.preventDefaultRendering=function(){var e=mmcore._r_mbs;var t=this.maxyboxNames;var n=t.length;while(n--){e[t[n]]=1}};n.prototype.preventDefaultHiding=function(){var n=this;mmcore.HideMaxyboxes=function(r){return function(){var i=arguments;mmcore.tryCatch(function(){i=t(i,function(t){return e(t,n.maxyboxNames)})})();if(i.length){return r.apply(this,i)}}}(mmcore.HideMaxyboxes)};n.prototype.hideContent=function(e,t){var n;var r;var i;var s;var o=document.getElementsByTagName(\"html\")[0];var u=o.getAttribute(\"class\");this.hidingClass=this.prefix+\"-hidden-content\";if(u!==null&&u===\"\"){u=this.hidingClass}else{u=u+\" \"+this.hidingClass}o.setAttribute(\"class\",u);if(arguments.length<2){t=\"left: -33554430px; position: absolute; top: -33554430px;\"}n=this.hidingClass;s=e.split(\",\");i=s.length;r=\"\";while(i--){r+=\".\"+n+\" \"+s[i]+\"{\"+t+\"}\"}mmcore.AttachStyle(r)};n.prototype.showContent=function(){if(this.hasOwnProperty(\"hidingClass\")){var e=document.getElementsByTagName(\"html\")[0];var t=e.getAttribute(\"class\");if(t!==null&&t!==\"\"){t=t.replace(this.hidingClass,\"\");e.setAttribute(\"class\",t)}}};n.prototype.getExperience=function(){return mmcore.GenInfo.hasOwnProperty(this.name)?mmcore.GenInfo[this.name]:null};n.prototype.hasNonDefaultExperience=function(){var e,t;e=this.getExperience();if(!e){return false}t=false;for(var n in e){if(e.hasOwnProperty(n)&&e[n]!==\"Default\"){t=true;return false}}return t};n.prototype.hasMaxybox=function(){return this.hasNonDefaultExperience()};n.prototype.renderMaxyboxes=function(){var n;var r;var i;r=this.maxyboxNames;if(arguments.length){r=t(arguments,function(t){return!e(t,r)})}n=this;for(i in mmcore._renderers){if(e(i,r)&&typeof mmcore._renderers[i]===\"function\"){mmcore._renderers[i].call(n)}}}})();\n\n// Maxymiser Essentials - Mediator 0.2.0\n(function(){\"use strict\";function e(){var e=function(){return((1+Math.random())*65536|0).toString(16).substring(1)};return e()+e()+\"-\"+e()+\"-\"+e()+\"-\"+e()+\"-\"+e()+e()+e()}function t(n,r,i){if(!(this instanceof t)){return new t(n,r,i)}this.id=e();this.fn=n;this.options=r;this.context=i;this.channel=null}function n(e,t){if(!(this instanceof n)){return new n(e)}this.namespace=e||\"\";this._subscribers=[];this._channels=[];this._parent=t;this.stopped=false}function r(){if(!(this instanceof r)){return new r}this._channels=new n(\"\")}t.prototype={update:function(e){if(e){this.fn=e.fn||this.fn;this.context=e.context||this.context;this.options=e.options||this.options;if(this.channel&&this.options&&this.options.priority!==undefined){this.channel.setPriority(this.id,this.options.priority)}}}};n.prototype={addSubscriber:function(e,n,r){var i=new t(e,n,r);if(n&&n.priority!==undefined){n.priority=n.priority>>0;if(n.priority<0){n.priority=0}if(n.priority>=this._subscribers.length){n.priority=this._subscribers.length-1}this._subscribers.splice(n.priority,0,i)}else{this._subscribers.push(i)}i.channel=this;return i},stopPropagation:function(){this.stopped=true},getSubscriber:function(e){var t=0,n=this._subscribers.length;for(t,n;t<n;t++){if(this._subscribers[t].id===e||this._subscribers[t].fn===e){return this._subscribers[t]}}},setPriority:function(e,t){var n=0,r=0,i,s,o,u;for(r=0,u=this._subscribers.length;r<u;r++){if(this._subscribers[r].id===e||this._subscribers[r].fn===e){break}n++}i=this._subscribers[n];s=this._subscribers.slice(0,n);o=this._subscribers.slice(n+1);this._subscribers=s.concat(o);this._subscribers.splice(t,0,i)},addChannel:function(e){this._channels[e]=new n((this.namespace?this.namespace+\":\":\"\")+e,this)},hasChannel:function(e){return this._channels.hasOwnProperty(e)},returnChannel:function(e){return this._channels[e]},removeSubscriber:function(e){var t=this._subscribers.length-1;if(!e){this._subscribers=[];return}for(t;t>=0;t--){if(this._subscribers[t].fn===e||this._subscribers[t].id===e){this._subscribers[t].channel=null;this._subscribers.splice(t,1)}}},publish:function(e){var t=0,n=this._subscribers.length,r=false,i,s,o,u;for(t,n;t<n;t++){r=false;if(!this.stopped){i=this._subscribers[t];if(i.options!==undefined&&typeof i.options.predicate===\"function\"){if(i.options.predicate.apply(i.context,e)){i.fn.apply(i.context,e);r=true}}else{o=this._subscribers.length;i.fn.apply(i.context,e);u=this._subscribers.length;n=u;if(u===o-1){t--}r=true}}if(r&&i.options&&i.options!==undefined){i.options.calls--;if(i.options.calls<1){this.removeSubscriber(i.id);n--;t--}}}if(this._parent){this._parent.publish(e)}this.stopped=false}};r.prototype={getChannel:function(e){var t=this._channels,n=e.split(\":\"),r=0,i=n.length;if(e===\"\"){return t}if(n.length>0){for(r,i;r<i;r++){if(!t.hasChannel(n[r])){t.addChannel(n[r])}t=t.returnChannel(n[r])}}return t},subscribe:function(e,t,n,r){var i=this.getChannel(e);n=n||{};r=r||{};return i.addSubscriber(t,n,r)},once:function(e,t,n,r){n=n||{};n.calls=1;return this.subscribe(e,t,n,r)},getSubscriber:function(e,t){return this.getChannel(t||\"\").getSubscriber(e)},remove:function(e,t){this.getChannel(e).removeSubscriber(t)},publish:function(e){var t=Array.prototype.slice.call(arguments,1),n=this.getChannel(e);t.push(n);this.getChannel(e).publish(t)}};r.prototype.on=r.prototype.subscribe;r.prototype.bind=r.prototype.subscribe;r.prototype.emit=r.prototype.publish;r.prototype.trigger=r.prototype.publish;r.prototype.off=r.prototype.remove;r.Channel=n;r.Subscriber=t;mmcore.mediator=new r})();\n\n\n// Media\n\n// Maxymiser Essentials - Request (Media team's fork) v0.3.0\n!function(){\"use strict\";var d,a=\"mmevents\",b=1e3,c=6*b,e=function(){d=mmcore.Deferred(),mmcore.request.promise=d.promise()};mmcore.request=function(b,f,g){var h=d;return e(),arguments.length||(b=a),mmcore.SetPageID(b),mmcore._async=!f,mmcore.CGRequest(h.resolve),setTimeout(mmcore.tryCatch(h.reject),g||c),h.promise()},e()}();\n\n// Maxymiser Essentials - GenInfoChanged event (Media team's fork) v0.0.0\n// Dependency: mmcore.mediator\n(function(){if(typeof window.JSON!=\"object\"){mmcore.EH(new Error(\"Plugin_Essentials.js says: 'GenInfoChanged' event won't fire, reason: native JSON object is not supported by browser\"));return}var e=function(){var e=mmcore.GenInfo,t=mmcore.GIStorage||{},n=[];mmcore.GIStorage=JSON.parse(JSON.stringify(e));for(var r in e){if(e.hasOwnProperty(r)){if(t[r]){for(var i in e[r]){if(e[r].hasOwnProperty(i)){if(t[r][i]!==e[r][i]){n.push(r);break}}}}else{n.push(r)}}}if(n.length){mmcore.mediator.trigger(\"GenInfoChanged\",n)}};mmcore.CGRequest=function(t){return function(n){n=n||function(){};return t.call(this,function(){e();n()})}}(mmcore.CGRequest);e()})();\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\n;(function act_ReturnVisits() {\n\tvar COOKIE_NAME = 'mm_return_visit';\n\tif (!mmcore.GetCookie('mm_Session', 1)) {\n\t\tsetTimeout(function() { // wait all requests\n\t\t\tvar visitNum = 1 + Number(mmcore.GetCookie(COOKIE_NAME, 1));\n\n\t\t\tif (!isNaN(visitNum)) {\n\t\t\t\tmmcore.SetCookie(COOKIE_NAME, visitNum, 180, 1);\n\t\t\t\tmmcore.SetAction('ReturnVisit', 1, 'Visit' + visitNum);\n\t\t\t\tmmcore._async = true;\n\t\t\t\tmmcore.SetPageID('mmevents');\n\t\t\t\tmmcore.CGRequest();\n\t\t\t}\n\t\t}, 2000);\n\t}\n}());\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\n/**\n* Receiving message from RegWall iframe to click \"Login or register\" link\n*/\n;(function ($) {\n\tfunction listener(event) {\n\t\tif (event.data == 'mm-t25-click-login') {\n\t\t\t$('.show-login').trigger('click');\n\t\t}\n\t}\n\tif (window.addEventListener) {\n\t\twindow.addEventListener(\"message\", listener);\n\t} else {\n\t\t// IE8\n\t\twindow.attachEvent(\"onmessage\", listener);\n\t}\n})(window.jQuery);\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\n(function ( window, mmcore, undefined ) {\n\n\t'use strict';\n\n\tvar $ = window.jQuery,\n\t\tecOmnitureUserSubCookie = mmcore.GetCookie( 'ec_omniture_user_sub', 1 ),\n\t\tlogInState,\n\t\tsubscriber,\n\t\tregState;\n\n\t/**\n\t * Name: setCustomPersCrit function\n\t * Description: adding pers criterion to the mmcore.uat cookie.\n\t * Author: Edward Shveday\n\t */\n\tfunction setCustomPersCrit( name, val) {\n\t\tif (mmcore.SetPersistentCriterion) {\n\t\t\tmmcore.SetPersistentCriterion(name, val)\n\t\t} else {\n\n\t\t\tvar _m = mmcore,\n\t\t\t\t_old = _m.GetCookie( 'uat' ),\n\t\t\t\t_f = _old.indexOf( name + '=' ) + 1,\n\t\t\t\t_re = new RegExp( name + \"=[^;]*\" ),\n\t\t\t\t_new = name + '=' + val;\n\n\t\t\t_m.SetCookie( 'uat', _old ? (_f ? _old.replace( _re, _new ) : _old + ';' + _new) : _new, 30 )\n\n\t\t}\n\t}\n\n\tfunction getPaywallPersCritVal( val, type ) {\n\t\tswitch ( val.toString() ) {\n\t\t\tcase '1':\n\t\t\t\treturn type + '1';\n\n\t\t\tcase '2':\n\t\t\t\treturn type + '2';\n\n\t\t\tcase '3':\n\t\t\t\treturn type + '3';\n\n\t\t\tcase '4':\n\t\t\t\treturn type + '4';\n\n\t\t\tcase '5':\n\t\t\t\treturn type + '5';\n\n\t\t\tcase '6':\n\t\t\tcase '7':\n\t\t\t\treturn type + '6-7';\n\n\t\t\tcase '8':\n\t\t\tcase '9':\n\t\t\t\treturn type + '8-9';\n\n\t\t\tcase '10':\n\t\t\tdefault:\n\t\t\t\treturn type + '10plus';\n\t\t}\n\t}\n\n\tfunction handlePaywall( paywallName ) {\n\t\tvar oldCookieVal,\n\t\t\tnewCookieVal,\n\t\t\ttype;\n\n\t\toldCookieVal = mmcore.GetCookie( 'mm_' + paywallName, 1 );\n\t\toldCookieVal = parseInt( oldCookieVal, 10 );\n\t\ttype = paywallName.substring( 0, 3 );\n\n\t\tif ( !oldCookieVal ) {\n\t\t\toldCookieVal = 0;\n\t\t}\n\n\t\tnewCookieVal = oldCookieVal + 1;\n\n\t\tmmcore.SetCookie( 'mm_' + paywallName, newCookieVal, 1, -1 );\n\t\tsetCustomPersCrit( paywallName, getPaywallPersCritVal( newCookieVal, type ) );\n\t}\n\n\tfunction setPaywallPersCrit() {\n\t\tvar val;\n\n\t\ttry {\n\t\t\tval = window.Drupal.settings.ec_wallpage.ec_wallpage_paywall_name.toLowerCase();\n\t\t\tif ( val === 'article paywall anonymous' ) {\n\t\t\t\thandlePaywall( 'RegwallViews' );\n\t\t\t} else if ( val === 'article paywall registered' ) {\n\t\t\t\thandlePaywall( 'SubwallViews' );\n\t\t\t}\n\t\t} catch ( err ) { /* silence */ }\n\t}\n\n\tlogInState = JSON.parse( mmcore.GetCookie( 'Econ.user.user', 1 ) || '{\"name\": null}' ).name === null ? 'LoggedOut' : 'LoggedIn';\n\tregState = 'NotRegistered';\n\n\tswitch ( true ) {\n\t\t/*case 'bulk-ip':\n\t\t\tsubscriber = 'BulkIP';\n\t\t\tbreak;\n\n\t\tcase 'bulk-referrer':\n\t\t\tsubscriber = 'BulkReferrer';\n\t\t\tbreak;\n\n\t\tcase 'subscriber':\n\t\t\tsubscriber = 'DigitalPrint';\n\t\t\tbreak;\n\n\t\tcase 'print-subscriber':\n\t\t\tsubscriber = 'Print';\n\t\t\tbreak;\n\n\t\tcase 'digital-subscriber':\n\t\t\tsubscriber = 'Digital';\n\t\t\tbreak;\n        */\n\t\tcase (ecOmnitureUserSubCookie.toLowerCase().indexOf( 'ex-subscriber') !== -1):\n\t\tcase (ecOmnitureUserSubCookie.toLowerCase().indexOf( 'registered') !== -1):\n\t\t\tregState = 'Registered';\n            subscriber = 'NotSubscribed';\n            break;\n        case (!ecOmnitureUserSubCookie):\n            subscriber = 'NotSubscribed';\n            break;\n\t\tdefault:\n\t\t\tsubscriber = 'Subscribed';\n\t\t\tbreak;\n\t}\n\n\tsetCustomPersCrit( 'LogInState', logInState );\n\tsetCustomPersCrit( 'Subscriber', subscriber );\n\tsetCustomPersCrit( 'RegState', regState );\n\tsetPaywallPersCrit();\n\n\n\t// -----------------------------------\n\t// New Pers Criterions\n\t// -----------------------------------\n\t(function ( m ) {\n\t\tvar obj, PCs, temp, nowTime, filterAfterPoint;\n\n\t\tPCs = {\n\t\t\tClickDepth: 0,\n\t\t\tRecency: 0,\n\t\t\tLoyalty: 0,\n\t\t\tBrand: 0,\n\t\t\tInteraction: 0,\n\t\t\tSignedIn: 0\n\t\t};\n\n\t\tobj = m.GetCookie( 'mm_PCObj', 1 );\n\n\t\tfilterAfterPoint = function ( number ) {\n\t\t\tnumber = Math.round( number * 100 ) * 0.01;\n\t\t\tnumber = (function () {\n\t\t\t\tswitch ( true ) {\n\t\t\t\t\tcase number < 0.05:\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\tcase number < 0.15:\n\t\t\t\t\t\treturn 0.1;\n\t\t\t\t\tcase number < 0.25:\n\t\t\t\t\t\treturn 0.2;\n\t\t\t\t\tcase number < 0.35:\n\t\t\t\t\t\treturn 0.3;\n\t\t\t\t\tcase number < 0.45:\n\t\t\t\t\t\treturn 0.4;\n\t\t\t\t\tcase number < 0.55:\n\t\t\t\t\t\treturn 0.5;\n\t\t\t\t\tcase number < 0.65:\n\t\t\t\t\t\treturn 0.6;\n\t\t\t\t\tcase number < 0.75:\n\t\t\t\t\t\treturn 0.7;\n\t\t\t\t\tcase number < 0.85:\n\t\t\t\t\t\treturn 0.8;\n\t\t\t\t\tcase number < 0.95:\n\t\t\t\t\t\treturn 0.9;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t}());\n\n\t\t\treturn number;\n\t\t};\n\n\t\tif ( obj ) {\n\t\t\tobj = JSON.parse( obj );\n\t\t} else {\n\t\t\tobj = {\n\t\t\t\twFV: false,\n\t\t\t\tsD: [],\n\t\t\t\tss: [],\n\t\t\t\tcD: 0\n\t\t\t};\n\t\t}\n\n\t\tif ( !m.GetCookie( 'mm_Session', 1 ) ) {\n\t\t\t//\tm.SetCookie( 'mm_Session', 1, 5 / (24 * 60), 1 );\n\t\t\tm.SetCookie( 'mm_Session', 1, 0, 1 );\n\n\t\t\ttemp = {\n\t\t\t\tt: new Date().getTime(),\n\t\t\t\tr: 0,\n\t\t\t\ti: 0,\n\t\t\t\ts: 0\n\t\t\t};\n\n\t\t\ttry {\n\t\t\t\tif ( JSON.parse( m.GetCookie( 'Econ.user.user', 1 ) ).name ) {\n\t\t\t\t\ttemp.s = 1;\n\t\t\t\t}\n\t\t\t} catch ( e ) { }\n\n\t\t\tif ( document.referrer ) { temp.r = 1; }\n\t\t\tobj.ss.push( temp );\n\n\t\t\tif ( obj.wFV ) {\n\t\t\t\tobj.sD.push( obj.cD );\n\t\t\t\tobj.cD = 0;\n\t\t\t}\n\t\t} else {\n\t\t\tobj.cD += 1;\n\t\t}\n\n\t\tobj.wFV = 1;\n\n\t\tif ( location.href.indexOf( '/comments' ) + 1 ) {\n\t\t\tobj.ss[obj.ss.length - 1].i = 1;\n\t\t}\n\n\t\t// is it first visit\n\t\tif ( obj.sD.length ) {\n\t\t\t// -----------------------------------\n\t\t\t// ClickDepth\n\t\t\t// -----------------------------------\n\t\t\ttemp = 0;\n\t\t\t$.each( obj.sD, function ( idx, val ) {\n\t\t\t\tif ( val < 4 ) { return; }\n\t\t\t\ttemp += 1;\n\t\t\t} );\n\n\t\t\ttemp = temp / obj.sD.length;\n\t\t\tPCs.ClickDepth = temp;\n\t\t\ttemp = filterAfterPoint( temp );\n\t\t\tsetCustomPersCrit( 'ClickDepth', 'Ci' + temp );\n\n\t\t\t// -----------------------------------\n\t\t\t// Recency\n\t\t\t// -----------------------------------\n\t\t\ttemp = 1;\n\t\t\tif ( obj.ss.length > 1 ) {\n\t\t\t\ttemp = 0;\n\t\t\t\ttemp = obj.ss.slice( -2 );\n\t\t\t\ttemp = (temp[1].t - temp[0].t) / (1000 * 60 * 60 * 24);\n\t\t\t\tif ( temp < 1 ) {\n\t\t\t\t\ttemp = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttemp = 1 / temp;\n\t\t\tPCs.Recency = temp;\n\t\t\ttemp = filterAfterPoint( temp );\n\t\t\ttemp = 'Ri' + temp;\n\t\t\tsetCustomPersCrit( 'Recency', temp );\n\n\t\t\t// -----------------------------------\n\t\t\t// Loyalty\n\t\t\t// -----------------------------------\n\t\t\ttemp = 0;\n\t\t\tnowTime = new Date().getTime();\n\t\t\t$.each( obj.ss, function ( idx, val ) {\n\t\t\t\tvar difference = (nowTime - val.t) / (1000 * 60 * 60 * 24);\n\t\t\t\tif ( difference > 28 ) { return; }\n\t\t\t\t//\t\t\t\tvar difference = (nowTime - val.t) / (1000 * 60);\n\t\t\t\t//\t\t\t\tif ( difference > 30 ) { return; }\n\t\t\t\ttemp += 1;\n\t\t\t} );\n\t\t\tif ( !temp ) { temp = 1; }\n\t\t\ttemp = 1 - 1 / temp;\n\t\t\tPCs.Loyalty = temp;\n\t\t\ttemp = filterAfterPoint( temp );\n\t\t\tsetCustomPersCrit( 'Loyalty', 'Li' + temp );\n\n\t\t\t// -----------------------------------\n\t\t\t// Interaction\n\t\t\t// -----------------------------------\n\t\t\ttemp = 0;\n\t\t\t$.each( obj.ss, function ( idx, val ) {\n\t\t\t\tif ( obj.ss.length - 1 === idx ) { return; }\n\t\t\t\tif ( !val.i ) { return; }\n\t\t\t\ttemp += 1;\n\t\t\t} );\n\t\t\ttemp = temp / (obj.ss.length - 1);\n\t\t\tPCs.Interaction = temp;\n\t\t\ttemp = filterAfterPoint( temp );\n\t\t\tsetCustomPersCrit( 'Interaction', 'Ii' + temp );\n\t\t} else {\n\t\t\tsetCustomPersCrit( 'ClickDepth', 'New' );\n\t\t\tsetCustomPersCrit( 'Recency', 'New' );\n\t\t\tsetCustomPersCrit( 'Loyalty', 'New' );\n\t\t\tsetCustomPersCrit( 'Interaction', 'New' );\n\t\t}\n\n\t\t// -----------------------------------\n\t\t// Brand\n\t\t// -----------------------------------\n\t\ttemp = 0;\n\t\t$.each( obj.ss, function ( idx, val ) {\n\t\t\tif ( val.r ) { return; }\n\t\t\ttemp += 1;\n\t\t} );\n\t\ttemp = temp / obj.ss.length;\n\t\tPCs.Brand = temp;\n\t\ttemp = filterAfterPoint( temp );\n\t\tsetCustomPersCrit( 'Brand', 'Bi' + temp );\n\n\t\t// -----------------------------------\n\t\t// SignedIn\n\t\t// -----------------------------------\n\t\ttemp = 0;\n\t\tif ( obj.ss.length > 0 ) {\n\t\t\t$.each( obj.ss, function ( idx, val ) {\n\t\t\t\tif ( !val.s ) { return; }\n\t\t\t\ttemp += 1;\n\t\t\t} );\n\t\t\ttemp = temp / obj.ss.length;\n\t\t}\n\t\ttemp = filterAfterPoint( temp );\n\t\tPCs.SignedIn = temp;\n\t\tsetCustomPersCrit( 'SignedIn', 'Si' + temp );\n\n\t\tif ( obj.sD.length ) {\n\t\t\t// -----------------------------------\n\t\t\t// VEI\n\t\t\t// -----------------------------------\n\t\t\ttemp = 0;\n\t\t\t$.each( PCs, function ( idx, val ) {\n\t\t\t\tif ( val ) {\n\t\t\t\t\ttemp += val;\n\t\t\t\t}\n\t\t\t} );\n\t\t\ttemp = filterAfterPoint( temp / 6 );\n\t\t\tsetCustomPersCrit( 'VEI', 'VEI' + temp );\n\t\t} else {\n\t\t\tsetCustomPersCrit( 'VEI', 'New' );\n\t\t}\n\n\t\tobj.sD = obj.sD.slice( obj.sD.length - 25, obj.sD.length );\n\t\tobj.ss = obj.ss.slice( obj.ss.length - 25, obj.ss.length );\n\n\t\tm.SetCookie( 'mm_PCObj', JSON.stringify( obj ), 365, 1 );\n\n\t}( window.mmcore ));\n\n\t/*\n\t * Referrer\n\t * */\n\n\tvar drf = document.referrer;\n\n\tswitch ( true ) {\n\t\t// referrer contains terms: “yahoo”, “google” or “bing”\n\t\t// THEN set PC [Referrer] = Search\n        case drf === \"\" :\n        {\n            setCustomPersCrit( 'Referrer', 'TypedBM' );\n            break;\n        }\n\t\tcase !!drf.match( /^https?:\\/\\/[^?\\/]*(yahoo|google|bing)\\.\\w{1,3}(\\.\\w{2})?/i ) :\n\t\t{\n\t\t\tsetCustomPersCrit( 'Referrer', 'Search' );\n\t\t\tbreak;\n\t\t}\n\t\tcase !!drf.match( /^https?:\\/\\/[^?\\/]*(facebook|reddit|digg)\\.\\w{1,3}(\\.\\w{2})?/i ) || !!drf.match( /^https?:\\/\\/t\\.co\\/\\w+/i ):\n\t\t{\n\t\t\tsetCustomPersCrit( 'Referrer', 'Social' );\n\t\t\tbreak;\n\t\t}\n\t\tcase !drf.match( /^https?:\\/\\/[^?\\/]*economist.com/i ) :\n\t\t{\n\t\t\tsetCustomPersCrit( 'Referrer', 'External' );\n\t\t\tbreak;\n\t\t}\n\t\tcase !!drf.match( /^https?:\\/\\/[^?\\/]*economist.com/i ) :\n\t\t{\n\t\t\tsetCustomPersCrit( 'Referrer', 'Internal' );\n\t\t\tbreak;\n\t\t}\n\t\tdefault :\n\t\t{\n\t\t\tsetCustomPersCrit( 'Referrer', 'TypedBM' );\n\t\t}\n\t}\n\n\t/*\n\t * Referrer [end]\n\t * */\n\n\t/*\n\t * Entry\n\t * */\n\t(function () {\n\t\tvar wlh = window.location.href,\n\t\t\tentryAttr = null,\n\t\t\t$mediator = $( {} );\n\n\t\tvar checkIsCategory = function ( $body ) {\n\t\t\tvar isCategory = false,\n\t\t\t\tclassNames = [\n\t\t\t\t\t'page-all-blogs',\n\t\t\t\t\t'node-type-mtblog-site',\n\t\t\t\t\t//'page-latest-updates',\n\t\t\t\t\t'page-sections',\n                    'path-printedition-specialreports',\n\t\t\t\t\t//'node-type-channel',\n\t\t\t\t\t//'node-type-guest-network-forum',\n\t\t\t\t\t//'page-economics-a-to-z',\n\t\t\t\t\t'node-type-special-report',\n\t\t\t\t\t'page-topics'//,\n\t\t\t\t\t//'node-type-page',\n\t\t\t\t\t//'node-type-guest-network-forum',\n\t\t\t\t\t//'node-type-issue'\n\t\t\t\t];\n\n\t\t\t$.each( classNames, function ( index, className ) {\n\t\t\t\tif ( $body.hasClass( className ) ) {\n\t\t\t\t\tisCategory = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn isCategory;\n\t\t};\n\n\t\tvar checkIsBlogArticle = function () {\n\t\t\treturn Boolean( wlh.match( /https?:\\/\\/www\\.economist\\.com\\/blogs.*/i ) );\n\t\t};\n\n\t\tvar runWaiter = function () {\n\t\t\t\tvar $body = $( 'body' );\n\n\t\t\t\tif ( $body.length ) {\n\t\t\t\t\tentryAttr = (function () {\n\t\t\t\t\t\tvar isCategory =  checkIsCategory($body);\n\n\t\t\t\t\t\tswitch ( true ) {\n\t\t\t\t\t\t\tcase $body.hasClass( 'node-type-article' ):\n\t\t\t\t\t\t\t\treturn 'Article';\n\n\t\t\t\t\t\t\tcase isCategory:\n\t\t\t\t\t\t\t\treturn 'Category';\n\n\t\t\t\t\t\t\tcase !isCategory && checkIsBlogArticle():\n\t\t\t\t\t\t\t\treturn 'Blogs';\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\treturn 'Blank';\n\t\t\t\t\t\t}\n\t\t\t\t\t})();\n\t\t\t\t\t$mediator.trigger( 'finishWait' );\n\t\t\t\t} else {\n\t\t\t\t\tsetTimeout( runWaiter, 19 );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( /https?:\\/\\/www\\.economist\\.com(\\/|#.*|\\?.*|\\/#.*|\\/\\?.*)?$/i.test(wlh) ) {\n\t\t\tentryAttr = 'Homepage';\n\t\t} else if ( /https?:\\/\\/subscriptions\\.economist\\.com.*/i.test(wlh) ) {\n\t\t\tentryAttr = 'SubsPage';\n\t\t} else {\n\t\t\trunWaiter();\n\t\t}\n\n\n        //set PC entry only once per session\n        if (!mmcore.GetCookie('mm_entry_session', true)) {\n            if ( entryAttr === null ) {\n                $mediator.bind( 'finishWait', function () {\n                    setCustomPersCrit( 'Entry', entryAttr );\n                    mmcore.SetCookie('mm_entry_session', entryAttr, 0, true);\n                } );\n            } else {\n                setCustomPersCrit( 'Entry', entryAttr );\n                mmcore.SetCookie('mm_entry_session', entryAttr, 0, true);\n            }\n        } else {\n            setCustomPersCrit('Entry', mmcore.GetCookie('mm_entry_session', true));\n        }\n\t})();\n    \n    \n    // Detecting site version (Mobile or Desktop) Andrey Cherepovskiy 4 Nov 2014\n    (function() {\n        \n        var siteVersionAttr = 'Desktop';\n        \n        if (mmcore.GetCookie('ec_device',1) == 'mobile-phone' || navigator.userAgent.toLowerCase().indexOf('iphone') !== -1) {\n            \n            siteVersionAttr = 'Mobile';\n            \n        }\n        \n        setCustomPersCrit('SiteVersion', siteVersionAttr);\n        \n        \n    })();\n\n    /*\n    * optlyEconomist added on 30.04.2015 by Yuliya Pshinko\n    * */\n    if(mmcore.GetCookie('optly_economist_test', 1) === 'true') {\n        setCustomPersCrit('OptlyEconomist', 'True');\n    } else {\n        setCustomPersCrit('OptlyEconomist', 'False');\n    }\n\n})( window, window.mmcore );\n\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\n// Actions tracking:\n// \"MobLogins\"\n// \"MobsSubsArrivals\"\n\n/*----------------------------------------------------------------------\n * Edited by Yuliya Pshinko on 06.04.2015\n *\n * Added action MobSubsByType\n * Track subscriptions with a product breakdown.\n Assign attributes based on product bought.\n ------------------------------------------------------------------------\n * */\n\n(function () {\n\n    var $document = $(document),\n        isSubscriptionProcess = window.location.hostname.indexOf('subscriptions.economist.com') !== -1,\n        isSubscriptionConfirmation = isSubscriptionProcess && window.location.pathname.indexOf('index.php') !== -1,\n        isPageReloadedByF5 = (mmcore.GetCookie('mm-subs', true) === location.pathname);\n\n    var getPrice = function (priceString) {\n        var clearPrices = [];\n        (priceString || '').toString().replace(/(\\d{1,3}(?:\\D?\\d{3})*(?:\\D(\\d{0,2})|))(?:\\D|$)/gm, function () {\n            var d = arguments[2];\n            var zeros = !d ? \"00\" : (d.length == 1 ? \"0\" : \"\");\n            clearPrices.push((arguments[1].replace(/\\D/g, \"\") + zeros) * 1);\n        });\n        return clearPrices;\n    };\n\n    var getRevenue = function ($holder) {\n        var result;\n\n        result = getPrice($holder.text());\n\n        return result;\n    };\n\n    var convertValues = function ($currencyText, revenue) {\n        var exchangeRates, currentRate, finalPrice;\n\n        currentRate = 1; // default value\n        exchangeRates = {\n            'HK$': '0.078754',\n            'US$': '0.610604',\n            'NZ$': '0.500276',\n            'A$': '0.540821',\n            'C$': '0.569724',\n            'S$': '0.482690',\n            '$': '0.610604',\n            '£': '1',\n            '¥': '0.005868',\n            '€': '0.834636',\n            'NZD': '0.500276',\n            'CHF': '0.681384',\n            'CNY': '0.100576',\n            'DKK': '0.111876',\n            'INR': '0.009816',\n            'MYR': '0.186665',\n            'NOK': '0.099609',\n            'PHP': '0.013740',\n            'R': '0.059091',\n            'SEK': '0.093306',\n            'TWD': '0.020469',\n            'W': '0.000577'\n        };\n\n        $.each(exchangeRates, function (currencySign, exchangeRate) {\n            if (~$currencyText.indexOf(currencySign)) {\n                currentRate = exchangeRate;\n                return false;\n            }\n        });\n\n        finalPrice = Math.ceil(revenue * currentRate);\n        finalPrice = isNaN(finalPrice) ? revenue : finalPrice;\n\n        return finalPrice;\n    };\n\n    var trackAction = function (actionName, actionValue, attribute) {\n        mmcore._async = true;\n        mmcore.SetAction(actionName, actionValue, attribute);\n        mmcore.SetPageID('mmevents');\n        mmcore.CGRequest();\n    };\n\n    var getAttrForMobSubsByTypeAction = function () {\n        /*Attributes should have the following structure: UserProductTerm:\n\n         First (User) Parameter\n         Reg - User purchases a regular subscription\n         Stu - User purchases a student subscription\n         Gift - User purchases a gift subscription\n\n         Second (Product) Parameter\n         PrintDig - User purchases a print and digital subscription\n         Print - User purchases a print only subscription\n         Dig - User purchases a digital only subscription\n\n         Third (Term) Parameter\n         12w - User purchases a 12 week subscription\n         1y - User purchases a 1 year subscription\n         2y - User purchases a 2 year subscription\n         3y - User purchases a 3 year subscription\n         */\n        var subType = $('#sub_type_id').val(),\n            userParam = 'Gift',\n            productType = $('.css3_labelb:contains(Subscription type)').parent().text().toLowerCase(),\n            productParam = 'Dig',\n            productTerm = $('.css3_labelb:contains(Subscription term)').parent().text().toLowerCase(),\n            termParam = '3y';\n\n        if (subType === 'personal') {\n            userParam = 'Reg';\n        } else if (subType === 'student') {\n            userParam = 'Stu';\n        }\n\n        if (productType.match('print') && productType.match('digital')) {\n            productParam = 'PrintDig';\n        } else if (productType.match('print')) {\n            productParam = 'Print';\n        }\n\n        if (productTerm.match('12 weeks')) {\n            termParam = '12w';\n        } else if (productTerm.match('1 year')) {\n            termParam = '1y';\n        } else if (productTerm.match('2 year')) {\n            termParam = '2y';\n        } else if (productTerm.match('6 months')) {\n            termParam = '6m';\n        }\n\n        return userParam + productParam + termParam;\n    };\n\n    var trackMobLogins = function () {\n\n        // For all pages except subscription process\n        if (!isSubscriptionProcess) {\n\n            // Login buttons handling\n            var userName = JSON.parse(mmcore.GetCookie('Econ.user.user', 1) || '{\"name\": null}').name;\n            if (!mmcore.GetCookie('mm-logged-in-state', true) || !userName) {\n                mmcore.SetCookie('mm-logged-in-state', userName, 365, true);\n            }\n            if (userName && mmcore.GetCookie('mm-logged-in-state', true) !== userName.toString()) {\n                trackAction('MobLogins', 1);\n                mmcore.SetCookie('mm-logged-in-state', userName, 365, true);\n            }\n\n            // For subscription pages only\n        } else {\n\n            $(document).ajaxComplete(function (event, xhr, settings) {\n                if (settings.url.indexOf('api_request.php') !== -1) {\n                    var data = $.parseJSON(xhr.responseText);\n                    if (data.status === 200 && data.api_uid && data.api_email) {\n                        trackAction('MobLogins', 1);\n                    }\n                }\n            });\n\n        }\n\n    };\n\n    var trackMobsSubsArrivals = function () {\n\n        // For all pages except subscription process\n        var isOrderInfoPage = $('.css3_labelb:contains( Order tracking number)').length;\n\n        if (!isSubscriptionProcess && $document.delegate) {\n\n            $document.delegate('#paybarrier_subscription_link', 'click', function () {\n\n                var attr = '',\n                    paywallName = '';\n\n                if (\n                    window.Drupal &&\n                    window.Drupal.settings &&\n                    window.Drupal.settings.ec_wallpage &&\n                    window.Drupal.settings.ec_wallpage.ec_wallpage_paywall_name\n                    ) {\n\n                    paywallName = window.Drupal.settings.ec_wallpage.ec_wallpage_paywall_name;\n\n                    if (paywallName === 'Article Paywall Anonymous') {\n                        attr = 'Regwall'\n                    } else if (paywallName === 'Article Paywall Registered') {\n                        attr = 'Subwall'\n                    }\n\n                }\n\n                mmcore.SetCookie('mm-mob-subs-arrivals-attr', attr, 0, true);\n                mmcore.SetCookie('mm-mob-subs-entry-attr', attr, 0, true);\n            });\n\n            $document.delegate('a:contains(Subscribe)', 'touchstart', function () {\n                mmcore.SetCookie('mm-mob-subs-arrivals-attr', 'Masthead', 0, true);\n                mmcore.SetCookie('mm-mob-subs-entry-attr', 'Masthead', 0, true);\n            });\n\n            $document.delegate('#view-subscription', 'touchstart', function () {\n                mmcore.SetCookie('mm-mob-subs-arrivals-attr', 'Overlay', 0, true);\n                mmcore.SetCookie('mm-mob-subs-entry-attr', 'Overlay', 0, true);\n            });\n\n            // For all subscription process pages except confirmation page\n        } else if (isSubscriptionProcess && !isSubscriptionConfirmation) {\n\n            var attr = mmcore.GetCookie('mm-mob-subs-arrivals-attr', true) || '';\n            if (window.location.search.indexOf('tagsrc=/GLB/RPWMA') !== -1) {\n                attr = 'Regwall';\n            }\n            if (window.location.search.indexOf('tagsrc=/GLB/SPWMA') !== -1) {\n                attr = 'Subwall';\n            }\n\n            mmcore.mediator.trigger('MobsSubsArrivals', {\n                path: attr\n            });\n\n            trackAction('MobsSubsArrivals', 1, attr);\n            mmcore.SetCookie('mm-mob-subs-arrivals-attr', '', -1, true);\n\n            //if user came from iframe (regwall or subwall)\n            if (attr === 'Regwall' || attr === 'Subwall') {\n                mmcore.SetCookie('mm-mob-subs-entry-attr', attr, 0, true);\n            }\n        } else {\n            //or thankYouID selector\n            if (isOrderInfoPage) {\n                if (!isPageReloadedByF5) {\n                    var subscriptionRevenueHolder = $('.css3_labelb:contains(\"Subscription charge:\")').parent(),\n                        subscriptionRevenue = getRevenue(subscriptionRevenueHolder)[0] || 0,\n                        convertedRevenueValue = convertValues(subscriptionRevenueHolder.text(), subscriptionRevenue);\n\n                    mmcore.SetAction('MobSubsByEntry', convertedRevenueValue, mmcore.GetCookie('mm-mob-subs-entry-attr', true) || '');\n                    mmcore.SetAction('MobSubsByType', convertedRevenueValue, getAttrForMobSubsByTypeAction());\n                    mmcore.mediator.trigger('MobSubsByEntry', {\n                        revenue: convertedRevenueValue,\n                        path: mmcore.GetCookie('mm-mob-subs-entry-attr', true)\n                    });\n                    mmcore\n                        .request()\n                        .done(function () {\n                            mmcore.SetCookie('mm-mob-subs-entry-attr', true, -1, true);\n                        });\n                }\n            }\n        }\n        mmcore.SetCookie('mm-subs', location.pathname, 1, true);\n\n    };\n\n    mmcore.AddDocLoadHandler(function () {\n        try {\n            trackMobLogins();\n            trackMobsSubsArrivals();\n        } catch (error) {\n            if (typeof mmcore.EH === 'function') {\n                mmcore.EH(new Error('Acts_MobileGlobal.js: something went wrong during action tracking. Possible reason: ' + error));\n            }\n        }\n    });\n\n})();\n\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\nmmcore._IntegrationFactory=mmcore._IntegrationFactory||function(e){var t=mmcore._IntegrationFactory,n=function(e){mmcore.EH({message:\"[\"+(r?r:\"Integration\")+\"] \"+e})};if(!e||!e.name)return n(\"Missing build parameters.\");var r=e.name,i=e.validate,s=e.check,o=e.timeout||1e4,u=e.interval||50,a=e.exec,f=e.defaults||{};if(!r)return n(\"Invalid integration build, name is required.\");if(!a)return n(\"Invalid integration build, exec is required.\");t._version=\"1.0.7\";if(t[r])return t[r];var l=function(r){r=typeof r==\"object\"?r:{};for(var l in this.defaults)r.hasOwnProperty(l)||(r[l]=this.defaults[l]);for(var c in f)r.hasOwnProperty(c)||(r[c]=f[c]);r._verifyVersion=function(e){var n=t._version.match(/\\d+/g),r=e.match(/\\d+/g),i=Math.max(n.length,r.length);for(var s=0;s<i;s++)if(+n[s]<+r[s])return!1;return!0};if(r.campaign){var h=mmcore.GenInfo[r.campaign];if(r.redirect)if(h){for(var p in h);if(h[p].toLowerCase()!=\"default\")return mmcore.SetCookie(\"mm_redir_\"+r.campaign,JSON.stringify(h),0,1)}else try{h=JSON.parse(mmcore.GetCookie(\"mm_redir_\"+r.campaign,1))}catch(d){}if(!h)return n(\"Campaign not found: \"+r.campaign);var v=[],m=[],g=[];for(var y in h){var b=h[y];m.push(y),g.push(b),v.push(y+\":\"+b)}r.campaignInfo=r.campaign+\"=\"+v.join(\"|\"),r.elements=m,r.variants=g}r.isProduction=function(){var e=[\"cfgid\",\"opc.enabled\",\"opc.vis\",\"pt.enabled\",\"un\"];for(var t=0;t<e.length;t++)if(!!mmcore.GetParam(e[t]))return!1;return!0}();if(i){var w=i.call(e,r);if(w!==!0)return n(\"Data validation failed: \"+w)}var E=function(){if(r.modifiers)for(var t in r.modifiers)r.modifiers[t].call(this,r,e);var i=a.call(e,r);i!==!0&&n(\"Execution failed: \"+i)};if(s)if(s.call(e,r))E();else{var S=!1,x=setInterval(function(){s.call(e,r)&&(clearInterval(x),S=!0,E())},r.interval||u);mmcore.AddDocLoadHandler(function(){setTimeout(function(){if(S)return;clearInterval(x);var e=\"Integration timed out. Checks not passed.\";\"function\"==typeof r.fail&&r.fail(e),n(e)},r.timeout||o)})}else E()};return l._version=e._version,l.defaults={},mmcore._IntegrationFactory[r]=l,l},mmcore.Integrate=function(e,t){var n=mmcore._IntegrationFactory[e];n?n.call(n,t):mmcore.EH({message:\"Integration not installed: \"+e})}\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\n// Maxymiser Core - Attach Style v0.0.0 http://gitlab.maxymiser.net/gts/mmcore-attach-style/tree/master\n(function(){'use strict';mmcore.AttachStyle=function(){var c={STYLE_ID:\"mm-style\",createStyle:function(){var b=document.createElement(\"style\");b.type=\"text/css\";return b},appendCssToStyle:function(){var b,a;\"styleSheet\"in c.createStyle()?(b=function(a){return a.styleSheet.cssText},a=function(a,b){a.styleSheet.cssText=b}):(b=function(a){return a.innerHTML},a=function(a,b){a.innerHTML=b});return(c.appendCssToStyle=function(c,d){a(d,b(d)+c)}).apply(this,arguments)}};return function(b){var a=document.getElementById(c.STYLE_ID);a||(a=c.createStyle(),a.id=c.STYLE_ID,function(){this.parentNode.insertBefore(a,this)}.call(document.getElementsByTagName(\"head\")[0].lastChild));c.appendCssToStyle(b,a)}}()})();\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\n/**\n * Prevent function execution on page refresh.\n * 21.01.2015\n * Alexander Tytskiy\n */\n\n/**\n * Refresh plugin.\n * Exports mmcore.oncePerPageLoad() function.\n *\n * Execute function once per page load. Rule user left page defined by timeout in milliseconds.\n *\n * @author   gts media team\n * @version  0.1.0\n *\n * @param verbalID {String}   Verbal identifier to store our function as done\n * @param callback {Function} Function to execute once per page load\n * @param timeout  {Number}   Timeout in milliseconds (5000 per default)\n *\n * Example:\n *     mmcore.oncePerPageLoad('say1', function () {say(1)});\n *     mmcore.oncePerPageLoad('say2', function () {say(2)}, 7000);\n */\n(function () {\n\t/* jshint strict: false */\n\t/* jshint maxlen: false */\n\tvar mmcore = window.mmcore,\n\t\tSECOND = 1000;\n\n\tvar getCurrentTimestamp = function () {\n\t\treturn new Date().getTime();\n\t};\n\n\tvar manager = {\n\t\t_stack: [],\n\t\t_preventeds: {},\n\n\t\t_timestamp: getCurrentTimestamp(),\n\t\t_timeout: 5 * SECOND,\n\t\t_oldOnunloadFn: window.onunload,\n\t\t_isLocalStorageAvailable: false,\n\n\t\t_storage: window.localStorage,\n\t\t_keyName: 'mm_prevent_f5',\n\n\t\tgetCurrentTimestamp: getCurrentTimestamp,\n\n\t\t// Main API.\n\t\toncePerPageLoad: function (verbalID, callback, timeout) {\n\t\t\tvar item;\n\n\t\t\tverbalID = 'fn_' + verbalID;\n\t\t\ttimeout = timeout || 0;\n\n\t\t\tif (!manager._preventeds[verbalID]) {\n\t\t\t\tcallback.call(null);\n\t\t\t}\n\n\t\t\titem = manager._constructItem(verbalID, timeout);\n\n\t\t\tmanager._stack.push(item);\n\n\t\t\treturn manager;\n\t\t},\n\n\t\tinitialize: function () {\n\t\t\tmanager._isLocalStorageAvailable = manager.testLocalStorage();\n\n\t\t\tmanager\n\t\t\t\t._fillPreventeds()\n\t\t\t\t._cleanExpired()\n\t\t\t\t._bindEvents();\n\t\t},\n\n\t\ttestLocalStorage: function () {\n\t\t\tvar key = 'mm_test';\n\n\t\t\ttry {\n\t\t\t\tmanager._storage.setItem(key, key);\n\t\t\t\tmanager._storage.removeItem(key);\n\t\t\t\treturn true;\n\t\t\t} catch (error) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tisEmptyObj: function (obj) {\n\t\t\tfor (var prop in obj) {\n\t\t\t\tif (obj.hasOwnProperty(prop)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\t\t_fillPreventeds: function () {\n\t\t\ttry {\n\t\t\t\tif (manager._isLocalStorageAvailable) {\n\t\t\t\t\tmanager._preventeds = JSON.parse(manager._storage.getItem(manager._keyName)) || {};\n\t\t\t\t} else {\n\t\t\t\t\tmanager._preventeds = JSON.parse(mmcore.GetCookie(manager._keyName, true)) || {};\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tmanager._preventeds = {};\n\t\t\t}\n\n\t\t\treturn manager;\n\t\t},\n\n\t\t_bindEvents: function () {\n\t\t\twindow.onunload = function () {\n\t\t\t\tvar splitten;\n\n\t\t\t\tfor (var i = 0, len = manager._stack.length; i < len; i++) {\n\t\t\t\t\tsplitten = manager._stack[i].split(':');\n\t\t\t\t\tsplitten[1] = parseInt(splitten[1], 10);\n\n\t\t\t\t\tif (splitten[1]) {\n\t\t\t\t\t\tmanager._preventeds[splitten[0]] = {\n\t\t\t\t\t\t\ttimestamp: manager.getCurrentTimestamp(),\n\t\t\t\t\t\t\ttimeout: splitten[1]\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmanager._preventeds[splitten[0]] = {\n\t\t\t\t\t\t\ttimestamp: manager.getCurrentTimestamp()\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (manager.isEmptyObj(manager._preventeds)) {\n\t\t\t\t\tif (manager._isLocalStorageAvailable) {\n\t\t\t\t\t\tmanager._storage.removeItem(manager._keyName);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmmcore.SetCookie(manager._keyName, '', -1, true);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (manager._isLocalStorageAvailable) {\n\t\t\t\t\t\tmanager._storage.setItem(manager._keyName, JSON.stringify(manager._preventeds));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmmcore.SetCookie(manager._keyName, JSON.stringify(manager._preventeds), 0, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (manager._oldOnunloadFn) {\n\t\t\t\t\treturn manager._oldOnunloadFn.apply(this, arguments);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn manager;\n\t\t},\n\n\t\t_cleanExpired: function () {\n\t\t\tvar isExpired = false,\n\t\t\t\ttimeout = 0;\n\n\t\t\tfor (var prop in manager._preventeds) {\n\t\t\t\tif (manager._preventeds.hasOwnProperty(prop)) {\n\t\t\t\t\ttimeout = manager._preventeds[prop].timeout || manager._timeout;\n\t\t\t\t\tisExpired = Boolean((+ manager._preventeds[prop].timestamp + timeout < manager._timestamp));\n\n\t\t\t\t\tif (isExpired) {\n\t\t\t\t\t\tdelete manager._preventeds[prop];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn manager;\n\t\t},\n\n\t\t_constructItem: function (id, timestamp) {\n\t\t\treturn (id + ':' + timestamp);\n\t\t},\n\n\t\t// Debug.\n\t\t_cleanRefreshManager: function () {\n\t\t\tmanager._preventeds = {};\n\t\t\tmanager._stack = [];\n\n\t\t\tif (manager._isLocalStorageAvailable) {\n\t\t\t\tmanager._storage.removeItem(manager._keyName);\n\t\t\t} else {\n\t\t\t\tmmcore.SetCookie(manager._keyName, '', -1, true);\n\t\t\t}\n\t\t}\n\t};\n\n\ttry {\n\t\tmanager.initialize();\n\n\t\tmmcore.oncePerPageLoad = manager.oncePerPageLoad;\n\n\t\t// Export this only for debugging.\n\t\tmmcore._cleanRefreshManager = manager._cleanRefreshManager;\n\t} catch (error) {\n\t\t// Anyway execute callback if something broken.\n\t\tmmcore.oncePerPageLoad = function (verbalID, callback) {\n\t\t\tcallback.call(null);\n\t\t\tmmcore.EH(new Error('Plugin_Refresh.js: something went wrong on plugin initialization. Executed possible prevented action. Possible reason: ' + error));\n\t\t};\n\t}\n}());\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\nmmcore._IntegrationFactory({\n    name: 'CrazyEgg',\n    defaults: {\n        modifiers: {\n            Persist: function(data, buildParams){\n                if(data.persist && data.persistentCount > 0){\n                    try {\n                        var storedList = JSON.parse(mmcore.GetCookie('mm_iPersist', 1) || '[]');\n                    } catch (e) {\n                        var storedList = [];\n                    }\n                    var searchFor = data.campaign + '=';\n                    for(var i = storedList.length; i--;){\n                        if(!storedList[i].indexOf(searchFor))\n                            storedList.splice(i, 1);\n                    }\n                    storedList.push(data.campaignInfo);\n                    while(storedList.length > data.persistentCount)\n                        storedList.shift();\n\n                    mmcore.SetCookie('mm_iPersist', JSON.stringify(storedList), 365, 1);\n                    data.campaignInfo = storedList.join('&');\n                }\n            }\n        },\n        persistentCount: 10\n    },\n    validate: function(data){  \n        if(!data.campaign)\n            return 'No campaign.';\n\n        return true;  \n    },\n    check: function(data){  \n        return typeof window.jQuery === 'function';\n    },  \n    exec: function(data){\n        window.CE_SNAPSHOT_NAME = data.campaignInfo;\n\n        if(data.callback) data.callback();\n        return true;\n    },\n    _version: '1.0.7'\n});\n\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\n;(function (mmcore) {\n\n\tmmcore\n\t\t.waitFor(function () {\n\t\t\treturn (\n\t\t\t\twindow.utag_data &&\n\t\t\t\twindow.utag_data.node_type &&\n\t\t\t\t(\n\t\t\t\t\twindow.utag_data.node_type === 'article' ||\n\t\t\t\t\twindow.utag_data.node_type === 'essay' ||\n\t\t\t\t\twindow.utag_data.node_type === 'mtblog'\n\t\t\t\t)\n\t\t\t);\n\t\t})\n\t\t.done(function () {\n\t\t\tmmcore.HideMaxyboxes = function() {};\n\t\t\tmmcore._async = true;\n\t\t\tmmcore.SetPageID('ArticlePage');\n\t\t\tmmcore.CGRequest();\n\t\t});\n\n}(window.mmcore));\n\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\n// 26.01.2015. Alexander Tytskiy. Note: Please read TODO.\n\n// Actions for successful registration completions\n\n// - MobRegistrations\n// - Registrations2 (possible attributes: Regwall, Overlay, Comment, Activate, Newsletter)\n\n\n;(function() {\n\n\tvar $ = window.jQuery;\n\tvar m = window.mmcore;\n\tvar wlpn = window.location.pathname;\n\n\t$(function() {\n\t\t// Registrations2 - Regwall and Overlay\n\t\t$(document).ajaxComplete(function(e, xhr, settings) {\n\t\t\tvar welcomeHeading;\n\t\t\t\n\t\t\tif ((settings.url.indexOf('/js/ec_wallpage_js_reg_form') !== -1 || settings.url.indexOf('/ec_overlay_reg_form') !== -1)\n\t\t\t\t&& xhr.responseText.indexOf('Thank you for registering') !== -1) {\n\t\t\t\twelcomeHeading = $('.overlay-header h2').text().toLowerCase().indexOf('welcome to the economist') > -1;\n\n\t\t\t\tm.$Action('MobRegistrations', '1', '');\n\t\t\t\tm.$Action('Registrations2', '1', welcomeHeading ? 'Overlay' : 'Regwall');\n\t\t\t\tm._async = true;\n\t\t\t\tm.SetPageID('mmevents');\n\t\t\t\tm.CGRequest();\n\t\t\t\t// TODO: once T19 finished move triggering one line up.\n\t\t\t\t// For now i leave it to not breaks the test.\n\t\t\t\t// Use another event if you need auto-request to CG.\n\t\t\t\tm.mediator.trigger('Registrations');\n\t\t\t}\n\t\t} );\n\n\t\t// Registrations2 - Comment\n\t\t$('form.context-user_register_comment').live('submit', function() {\n\t\t\tm.SetCookie('mm_regComment', '1', 0, 1);\n\t\t});\n\n\t\tif (!$('form.context-user_register_comment').length && m.GetCookie('mm_regComment', 1)) {\n\t\t\tm.SetAction('MobRegistrations', '1');\n\t\t\tm.SetAction('Registrations2', '1', 'Comment');\n\t\t\tm._async = true;\n\t\t\tm.SetPageID('mmevents');\n\t\t\tm.CGRequest();\n\t\t\tm.SetCookie('mm_regComment', '', -1, 1);\n\t\t}\n\t});\n\n\tif ( m.GetCookie('mmRegisterTry', 1) !== '' && m.GetCookie('ec_omniture_user_sub', 1) ) {\n\t\tmmcore.waitFor(function () {\n\t\t\treturn $('footer').length;\n\t\t})\n\t\t\t.done(function () {\n\t\t\t\tvar isErrorPresent = $('.messages-error').length,\n\t\t\t\t\tisNoErrorField = $('#user-register .form-item-error:visible').size() === 0;\n\n\t\t\t\tif (!isErrorPresent && isNoErrorField) {\n\t\t\t\t\t(function () {\n\t\t\t\t\t\tvar attr = '';\n\t\t\t\t\t\tif (m.GetCookie('mm_regActivate', 1)) {\n\t\t\t\t\t\t\tattr = 'Activate';\n\t\t\t\t\t\t} else if (m.GetCookie('mm_regNewsletter', 1)) {\n\t\t\t\t\t\t\tattr = 'Newsletter';\n\t\t\t\t\t\t} else if (m.GetCookie('mmRWused', 1)) {\n\t\t\t\t\t\t\tattr = 'Regwall';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tm.$Action('MobRegistrations', '1', '');\n\t\t\t\t\t\tm.$Action('Registrations2', '1', attr);\n\t\t\t\t\t}());\n\n\t\t\t\t\tm._async = true;\n\t\t\t\t\tm.SetPageID('mmevents');\n\t\t\t\t\tm.CGRequest();\n\n\t\t\t\t\tm.SetCookie('mm_regNewsletter', '', -1, 1);\n\t\t\t\t\tm.SetCookie('mm_regActivate', '', -1, 1);\n\t\t\t\t\tm.SetCookie('mmRegisterTry', '', -1, 1);\n\t\t\t\t\tm.SetCookie('mmRWused', '', -1, 1);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t// Logic 2\n\tif (wlpn === '/user/register') {\n\t\t$(function() {\n\n\t\t\tvar NOerrors;\n\n\t\t\tNOerrors = $('#user-register .form-item-error:visible').size() === 0;\n\n\t\t\tsetTimeout(function() {\n\n\t\t\t\t$('#user-register').submit(function() {\n\n\t\t\t\t\tNOerrors = $('#user-register .form-item-error:visible').size() === 0;\n\n\t\t\t\t\tif (NOerrors) {\n\n\t\t\t\t\t\tm.SetCookie('mmRegisterTry', true, 0, 1);\n\n\t\t\t\t\t\tif (location.href.indexOf( 'destination=newsletters' ) + 1) {\n\t\t\t\t\t\t\tm.SetCookie('mm_regNewsletter', 1, 0, 1);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ($( '#page-title:contains(Activate digital access)').length) {\n\t\t\t\t\t\t\tm.SetCookie('mm_regActivate', 1, 0, 1);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (location.search.indexOf( 'rp=paywall' ) + 1) {\n\t\t\t\t\t\t\tm.SetCookie('mmRWused', 1, 0, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t}, 1000);\n\n\t\t\tif ( NOerrors === false ) {\n\t\t\t\tm.SetCookie( 'mm_regNewsletter', '', -1, 1 );\n\t\t\t\tm.SetCookie( 'mm_regActivate', '', -1, 1 );\n\t\t\t\tm.SetCookie( 'mmRegisterTry', '', -1, 1 );\n\t\t\t\tm.SetCookie( 'mmRWused', '', -1, 1 );\n\t\t\t}\n\t\t} );\n\t}\n\n})();\n\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\n// Actions tracking:\n// - Logins\n// - Logins2\n\n// To Do:\n// - \"Logins\" should be removed in future after T5 CID (MaxPredict) campaign update\n\n;\n(function () {\n\n\tmmcore.AddDocLoadHandler(function () {\n\n\t\tvar userCookieObject,\n\t\t\tuserAlreadyExists = false;\n\n\t\tvar trackLoginAction = function (actionName, actionAttribute, cookieName) {\n\n\t\t\tif (userAlreadyExists) {\n\n\t\t\t\t// Action setting\n\t\t\t\tmmcore._async = true;\n\t\t\t\tmmcore.SetPageID('events');\n\t\t\t\tmmcore.SetAction(actionName, '1', actionAttribute);\n\t\t\t\tmmcore.CGRequest();\n\n\t\t\t\t// Cookie clearance\n\t\t\t\tmmcore.SetCookie(cookieName, '', -1, 1)\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Checking for user already exists\n\t\ttry {\n\t\t\tuserCookieObject = JSON.parse(mmcore.GetCookie('Econ.user.user', 1) || '{}');\n\t\t\tuserAlreadyExists = userCookieObject.name\n\t\t} catch (e) {\n\t\t\tmmcore.EH(\n\t\t\t\tnew Error(\"Acts_LoginProcess.js says: parsing client's cookie 'Econ.user.user' failed : \" + e)\n\t\t\t)\n\t\t}\n\n\n\t\t// ----------------------------------------\n\t\t// processing standard login via form start\n\t\t// ----------------------------------------\n\n\t\t// Function gathering cookie for standard login attribute.\n\t\t// Possible cookie values: Blank, Activate, Comment, Regwall\n\t\tvar loginAttributeToCookie = function (definiteAttr) {\n\t\t\tmmcore.SetCookie('mm_loginForm', definiteAttr, 7, 1)\n\t\t};\n\n\t\t// Function that binds to all possible standard login events\n\t\tvar standardLoginAttributeDetection = function () {\n\n\t\t\t// Covering login forms on \"/user\" pages\n\t\t\tif (window.location.pathname.indexOf('/user') + 1) {\n\n\t\t\t\t$('#user-login-block input[type=\"submit\"], #user-login input[type=\"submit\"]').live('click', function () {\n\n\t\t\t\t\t// If validation was passed\n\t\t\t\t\tif (!$(this).closest('form').find('.ec-error-msg').length) {\n\n\t\t\t\t\t\tif ($('#page-title:contains(Activate digital access)').length) {\n\t\t\t\t\t\t\tloginAttributeToCookie('Activate')\n\t\t\t\t\t\t} else if ($('.short-reg-comment-preview').length) {\n\t\t\t\t\t\t\tloginAttributeToCookie('Comment')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Some unpredictable cases are tracked with blank attribute\n\t\t\t\t\t\t\tloginAttributeToCookie('Blank')\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t})\n\n\t\t\t\t// Covering login forms on all other pages\n\t\t\t} else {\n\t\t\t\t// Added check on regwall click from test25 (by Andrey Cherepovskiy)\n\t\t\t\t$('.show-login').live('click', function () {\n\t\t\t\t\tif (mmcore.T25 &&\n\t\t\t\t\t\tmmcore.T25.isRegwallLoginClicked) {\n\t\t\t\t\t\tmmcore.T25.isRegwallLoginClicked = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t$('form[action*=\"www.economist.com/user/login?\"]').live('submit', function () {\n\n\t\t\t\t\tif (mmcore.T25 &&\n\t\t\t\t\t\tmmcore.T25.isRegwallLoginClicked) {\n\t\t\t\t\t\tloginAttributeToCookie('Regwall');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tloginAttributeToCookie('Blank');\n\t\t\t\t\t}\n\n\t\t\t\t});\n\n\n\n\t\t\t\t// Added case by Yulis Pshinko to track Regwall attribute from regwall or subwall popups\n\t\t\t\tif ($.fn.ajaxComplete) {\n\t\t\t\t\t$(document).ajaxComplete(function (e, xhr, settings) {\n\t\t\t\t\t\tif (/\\/ec-homepage\\/regov\\/js|\\/js\\/ec_wallpage_js_login_form/.test(settings.url) &&\n\t\t\t\t\t\t\txhr.responseText.indexOf('You will be redirected shortly.') + 1) {\n\t\t\t\t\t\t\tloginAttributeToCookie('Regwall')\n\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t\t// Function that sets standard login action in case 'mm_loginForm' cookie appeared\n\t\tvar standardLoginAction = function () {\n\n\t\t\tvar standardLoginAttr = mmcore.GetCookie('mm_loginForm', 1);\n\n\t\t\tif (standardLoginAttr) {\n\n\t\t\t\tif ($('.messages-error:contains(Your account already has full digital access.)').length ||\n\t\t\t\t\tstandardLoginAttr === 'Blank') {\n\n\t\t\t\t\tstandardLoginAttr = ''\n\t\t\t\t}\n\n\t\t\t\ttrackLoginAction('Logins2', standardLoginAttr, 'mm_loginForm')\n\n\t\t\t}\n\n\t\t};\n\n\t\t// ----------------------------------------\n\t\t// processing standard login via form end\n\t\t// ----------------------------------------\n\n\n\n\n\n\t\t// ----------------------------------------\n\t\t// processing login via social links start\n\t\t// ----------------------------------------\n\n\t\t// Function that binds to all possible social links login events\n\t\tvar socialLinksLoginAttributeDetection = function () {\n\n\t\t\tif (window.janrain &&\n\t\t\t\twindow.janrain.engage &&\n\t\t\t\twindow.janrain.engage.signin &&\n\t\t\t\twindow.janrain.engage.signin.loginHandler) {\n\n\t\t\t\tvar _socialLoginHandler = window.janrain.engage.signin.loginHandler;\n\t\t\t\twindow.janrain.engage.signin.loginHandler = function () {\n\t\t\t\t\tmmcore.SetCookie('mm_socialLogin', 'true', 365, 1);\n\t\t\t\t\t_socialLoginHandler.apply(this, arguments);\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t$(document).ajaxComplete(function (event, XMLHttpRequest, ajaxOptions) {\n\t\t\t\t\tif (ajaxOptions.url.indexOf('/ajax/login') + 1) {\n\n\t\t\t\t\t\t(function waitForLoginHandler() {\n\n\t\t\t\t\t\t\tif (window.janrain &&\n\t\t\t\t\t\t\t\twindow.janrain.engage &&\n\t\t\t\t\t\t\t\twindow.janrain.engage.signin &&\n\t\t\t\t\t\t\t\twindow.janrain.engage.signin.loginHandler) {\n\n\t\t\t\t\t\t\t\tvar _socialLoginHandler = window.janrain.engage.signin.loginHandler;\n\t\t\t\t\t\t\t\twindow.janrain.engage.signin.loginHandler = function () {\n\t\t\t\t\t\t\t\t\tmmcore.SetCookie('mm_socialLogin', 'true', 365, 1);\n\t\t\t\t\t\t\t\t\t_socialLoginHandler.apply(this, arguments)\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetTimeout(waitForLoginHandler, 100)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t})()\n\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Function that sets social links login action in case 'mm_socialLogin' cookie appeared\n\t\tvar socialLinksLoginAction = function () {\n\n\t\t\tif (mmcore.GetCookie('mm_socialLogin', 1)) {\n\t\t\t\ttrackLoginAction('Logins', '', 'mm_socialLogin');\n\t\t\t\ttrackLoginAction('Logins2', '', 'mm_socialLogin')\n\t\t\t}\n\n\t\t};\n\n\t\t// ----------------------------------------\n\t\t// processing login via social links end\n\t\t// ----------------------------------------\n\n\n\n\n\t\t// ----------------------------------------\n\t\t// Initialization\n\t\t// ----------------------------------------\n\n\t\t// All these checks run on every page load throughout the site\n\t\t// These two for standard processing\n\t\tstandardLoginAttributeDetection();\n\t\tstandardLoginAction();\n\t\t// These two for social links processing\n\t\tsocialLinksLoginAttributeDetection();\n\t\tsocialLinksLoginAction()\n\n\n\t})\n\n})();\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\n(function ( m, $ ) {\n\tif ( !$ || !$.fn ) { return; }\n\n\tvar lh = window.location.href,\n\t\tdr = document.referrer;\n\n\tmmcore.AddDocLoadHandler(function () {\n\t\t// -----------------------------------\n\t\t// For action SubsByEntry\n\t\t// -----------------------------------\n\t\t$( '#reg-overlay a:contains(View subscription offers)' ).live( 'click', function () {\n\t\t\tif ( lh.indexOf( '//www.economist.com//ec-homepage/regov/start' ) + 1 ) {\n\t\t\t\tm.SetCookie( 'mm_attrSubsByEntry', 'Overlay', 0, 1 );\n\t\t\t}\n\t\t} );\n\n\t\t$( '.paywall-left-text #paybarrier_subscription_link' ).live( 'click', function () {\n\t\t\tm.SetCookie( 'mm_attrSubsByEntry', 'Subwall', 0, 1 );\n\t\t} );\n\n\t\t$( '.right-bottom #paybarrier_subscription_link, #reg-overlay .container-offer-button a' ).live( 'click', function () {\n\t\t\tif ( lh.indexOf( '//www.economist.com//ec-homepage/regov/start' ) === -1 ) {\n\t\t\t\tm.SetCookie( 'mm_attrSubsByEntry', 'Regwall', 0, 1 );\n\t\t\t}\n\t\t} );\n\n\n\t\t$( '#subslug-ad a' ).live( 'click', function () {\n\t\t\tvar attr, width;\n\n\t\t\twidth = parseFloat( $( this ).find( 'img' ).attr( 'width' ), 10 );\n\t\t\tattr = (width > 300) ? 'PencilSlugAd' : 'SlugAd';\n\n\t\t\tm.SetCookie( 'mm_attrSubsByEntry', attr, 0, 1 );\n\t\t} );\n\n\t\t(function () {\n\t\t\tvar flag;\n\n\t\t\t$( '#block-ec_ads-pencil_slug_ad' )\n\t\t\t\t.live( 'mouseover', function () {\n\t\t\t\t\tflag = true;\n\t\t\t\t} )\n\t\t\t\t.live( 'mouseout', function () {\n\t\t\t\t\tflag = false;\n\t\t\t\t} );\n\n\t\t\t$( window ).blur( function () {\n\t\t\t\tif ( !flag ) {return;}\n\t\t\t\tm.SetCookie( 'mm_attrSubsByEntry', 'PencilSlugAd', 0, 1 );\n\t\t\t} );\n\t\t}());\n\n\t\t(function () {\n\t\t\tvar flag;\n\n\t\t\t$( '#block-ec_ads-subscription_ad' )\n\t\t\t\t.live( 'mouseover', function () {\n\t\t\t\t\tflag = true;\n\t\t\t\t} )\n\t\t\t\t.live( 'mouseout', function () {\n\t\t\t\t\tflag = false;\n\t\t\t\t} );\n\n\t\t\t$( window ).blur( function () {\n\t\t\t\tif ( !flag ) {return;}\n\t\t\t\tm.SetCookie( 'mm_attrSubsByEntry', 'SlugAd', 0, 1 );\n\t\t\t} );\n\t\t}());\n\n\t\t$(\".mh-user-menu a[href$='/products/subscribe'], .show-subscribe\").live( 'click', function () {\n\t\t\tm.SetCookie( 'mm_attrSubsByEntry', 'Masthead', 0, 1 );\n\t\t} );\n\n\t\t$( '#subscription_slider #main a' ).live( 'mouseup', function () {\n\t\t\tm.SetCookie( 'mm_attrSubsByEntry', 'SliderAd', 0, 1 );\n\t\t} );\n\t\t$(\"#superhero .cover-image-container a[href$='/products/subscribe']\").live(\"click\", function() {\n\t\t\tm.SetCookie( 'mm_attrSubsByEntry', 'LatestIssue', 0, true);\n\t\t});\n\t\t$(\"aside.site-index a[href$='/products/subscribe']\").live(\"click\", function() {\n\t\t\tm.SetCookie( 'mm_attrSubsByEntry', 'Footer', 0, true);\n\t\t});\n\t\tif (-1 < lh.indexOf(\"//www.economist.com/printedition\") && !/economist\\.com\\/printedition\\/(covers|specialreports)/i.test(lh)) {\n\t\t\t$(\".issue-links a[href$='/products/subscribe']\").live(\"click\", function() {\n\t\t\t\tm.SetCookie( 'mm_attrSubsByEntry', 'PrintEd', 0, true);\n\t\t\t});\n\t\t}\n\t\tif (-1 < lh.indexOf(\"//www.economist.com/digital\")) {\n\t\t\t$(\"#ec-promotion-page a[href$='/products/subscribe']\").live(\"click\", function() {\n\t\t\t\tm.SetCookie( 'mm_attrSubsByEntry', 'DigEd', 0, true);\n\t\t\t});\n\t\t}\n\t\tif (0 < $(\"meta[property='og:type'][content='article']\").size()) {\n\t\t\t$(\"#block-ec_components-print_sub a[href$='/products/subscribe']\").live(\"click\", function() {\n\t\t\t\tm.SetCookie( 'mm_attrSubsByEntry', 'UnderArticle', 0, true);\n\t\t\t});\n\t\t}\n\n\t\t(function () {\n\t\t\tvar flag;\n\n\t\t\t$( '#paywall-slug-size-ad' )\n\t\t\t\t.live( 'mouseover', function () {\n\t\t\t\t\tflag = true;\n\t\t\t\t} )\n\t\t\t\t.live( 'mouseout', function () {\n\t\t\t\t\tflag = false;\n\t\t\t\t} );\n\n\t\t\t$( window ).blur( function () {\n\t\t\t\tif ( !flag ) {return;}\n\t\t\t\tm.SetCookie( 'mm_attrSubsByEntry', 'Regwall', 0, 1 );\n\t\t\t} );\n\t\t}());\n\n\t\t//if we are on subscription page\n\t\tif (lh.indexOf('subscriptions.economist.com') !== -1) {\n\t\t\tif (/google/.test(dr) || /bing/.test(dr) || /yahoo/.test(dr) || /ask/.test(dr)) {\n\t\t\t\tm.SetCookie( 'mm_attrSubsByEntry', 'ExternalSearch', 0, 1 );\n\t\t\t} else if (dr !== '' && !/economist\\.com/.test(dr.split( '/' )[2]) && !/subscriptions\\.economist\\.com/.test(dr.split( '/' )[2]) && lh.indexOf('tagsrc=/GLB/SLG/') === -1) {\n\t\t\t\tm.SetCookie( 'mm_attrSubsByEntry', 'ExternalOther', 0, 1 );\n\t\t\t}\n\t\t}\n\n\n\t\t// -----------------------------------\n\t\t// For action SubsByType\n\t\t// -----------------------------------\n\t\tif ( lh.indexOf( '//www.economist.com/user/password' ) + 1 ) {\n\t\t\t$( '#user-pass' ).submit( function () {\n\t\t\t\tm.SetCookie( 'mm_FPsent', 1, 0, 1 );\n\t\t\t} );\n\t\t}\n\t\tif ( lh.indexOf( '//www.economist.com/user/password-reset' ) + 1 ) {\n\t\t\tif ( m.GetCookie( 'mm_FPsent', 1 ) ) {\n\t\t\t\tm.SetCookie( 'mm_PW', 1, 0, 1 );\n\t\t\t}\n\t\t}\n\t\tm.SetCookie( 'mm_FPsent', '', -1, 1 );\n\n\n\t\t// -----------------------------------\n\t\t// For action SubsByRoute\n\t\t// -----------------------------------\n\t\t$( 'a.view-subscription-link' ).live( 'click', function () {\n\t\t\tvar $welcomeHeading = $('.overlay-header h2');\n\n\t\t\tif ($welcomeHeading.text().toLowerCase().indexOf('welcome to the economist') > -1) {\n\t\t\t\tm.SetCookie('mm_attrSubsByRoute', 1, 0, true);\n\t\t\t}\n\t\t} );\n\n\n\t\t// -----------------------------------\n\t\t// Thank you page\n\t\t// -----------------------------------\n\n\t\tif ( lh.indexOf( '//subscriptions.economist.com/GLB/ECOM/' ) === -1 ||\n\t\t\tlh.indexOf( 'index.php' ) === -1 ) {\n\t\t\tm.SetCookie( 'mm_attrUpsells', '', -1, 1 );\n\t\t\treturn;\n\t\t}\n\n\n\t\tvar getPeriod = function () {\n\t\t\tvar period;\n\t\t\tvar periodNode = $( 'td:contains(Subscription term):last' ).text().replace( 'Subscription term:', '' );\n\n\t\t\tif ( periodNode.indexOf( '12' ) + 1 ) { period = '12w'; }\n\t\t\telse if ( periodNode.indexOf( '6' ) + 1 ) { period = '6m'; }\n\t\t\telse if ( periodNode.indexOf( '3' ) + 1 ) { period = '3y'; }\n\t\t\telse if ( periodNode.indexOf( '2' ) + 1 ) { period = '2y'; }\n\t\t\telse if ( periodNode.indexOf( '1' ) + 1 ) { period = '1y'; }\n\n\t\t\treturn period;\n\t\t};\n\n\t\tvar getPaymentType = function () {\n\t\t\tvar paymentTypeNode = $( 'td:contains(Payment type):last' ).text().replace( 'Payment type:', '' );\n\t\t\treturn paymentTypeNode.indexOf( 'renewal' ) + 1 ? 'R' : 'C';\n\t\t};\n\n\t\tvar addToAttr = function ( isSecondPart ) {\n\t\t\tvar type;\n\t\t\tvar attr = m.GetCookie( 'mm_attrUpsells', 1 );\n\n\t\t\tif ( isSecondPart ) {\n\t\t\t\tif ( !attr ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttype = 'to';\n\t\t\t} else {\n\t\t\t\tattr = '';\n\t\t\t\ttype = 'F';\n\t\t\t}\n\t\t\tattr += type;\n\n\t\t\tvar period = getPeriod();\n\n\t\t\tif ( !period ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattr += period;\n\n\t\t\tattr += getPaymentType();\n\n\t\t\tm.ConfirmationDeferred = m.ConfirmationDeferred || (new m.Deferred());\n\t\t\tm.ConfirmationDeferred.promise().done(function(revenue) {\n\t\t\t\tvar upsellRevenueVal = m.GetCookie(\"mm_U_revenue\", true);\n\t\t\t\tif (!isSecondPart) {\n\t\t\t\t\tm.SetCookie( 'mm_attrUpsells', attr, 0, 1 );\n\t\t\t\t\tm.SetCookie(\"mm_U_revenue\", revenue, 0, true);\n\t\t\t\t} else {\n\t\t\t\t\tif (!!upsellRevenueVal) {\n\t\t\t\t\t\tupsellRevenueVal = revenue - parseInt(upsellRevenueVal);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tupsellRevenueVal = 1;\n\t\t\t\t\t};\n\t\t\t\t\n\t\t\t\t\tm.SetAction( 'Upsells', upsellRevenueVal, attr );\n\t\t\t\t\tm._async = true;\n\t\t\t\t\tm.SetPageID( 'events' );\n\t\t\t\t\tm.CGRequest();\n\n\t\t\t\t\tm.SetCookie( 'mm_attrUpsells', '', -1, 1 );\n\t\t\t\t\tm.SetCookie(\"mm_U_revenue\", \"\", -1, true);\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tif ( $( '#thankYouID:contains(your order is being processed)' ).length ) {\n\t\t\t(function a( b ) {\n\t\t\t\tvar c = mmcore, d = window.onunload, e = \"mm_refresh_\" + (b.suffix || \"default\");\n\t\t\t\t!c.GetCookie( e, 1 ) && \"function\" === typeof b.callback && (b.async ? c.AddDocLoadHandler( b.callback ) : b.callback());\n\t\t\t\twindow.onunload = function () {\n\t\t\t\t\tc.SetCookie( e, 1, (b.sec || 3) / 86400, 1 );\n\t\t\t\t\tif ( d ) {return d.apply( this, arguments );}\n\t\t\t\t};\n\t\t\t})\n\t\t\t( {\n\t\t\t\tcallback: function () {\n\t\t\t\t\taddToAttr( true );\n\t\t\t\t},\n\t\t\t\tsuffix: 'upsells',\n\t\t\t\tasync: false\n\t\t\t} );\n\t\t} else {\n\t\t\taddToAttr();\n\t\t}\n\n\t});\n\n}( window.mmcore, window.jQuery ));\n\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\n;(function () {\n\n\t(function (config) {\n\n\t\tvar trackOmniture = function(campaignsNamesArray, customFilterFunction) {\n\n\t\t\tvar campaignDataObject = {},\n\t\t\t\tomnitureDataObject = {},\n\t\t\t\tcampaignName = '',\n\t\t\t\tcampaignInfoArray = [],\n\t\t\t\tallCampaignsInfoString = '',\n\t\t\t\ti = 0, element,\n\t\t\t\tl = campaignsNamesArray.length;\n\n\t\t\t// Gathering string from all campaigns present\n\t\t\tfor (; i < l; i++) {\n\n\t\t\t\tcampaignInfoArray = [];\n\t\t\t\tcampaignName = campaignsNamesArray[i];\n\t\t\t\tcampaignDataObject = mmcore.GenInfo[campaignName];\n\n\t\t\t\tif (customFilterFunction && !customFilterFunction(campaignName)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Name of campaign comes first\n\t\t\t\tcampaignInfoArray.push(campaignName);\n\n\t\t\t\tfor (element in campaignDataObject) {\n\t\t\t\t\tif (campaignDataObject.hasOwnProperty(element)) {\n\t\t\t\t\t\t// Variants generated come second\n\t\t\t\t\t\tcampaignInfoArray.push(campaignDataObject[element].toLowerCase())\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tallCampaignsInfoString += ((allCampaignsInfoString ? ';' : '') + campaignInfoArray.join('|'))\n\n\t\t\t}\n\n\n\t\t\tif (allCampaignsInfoString) {\n\n\t\t\t\tomnitureDataObject[config.eVar] = allCampaignsInfoString;\n\t\t\t\tomnitureDataObject[config.prop] = allCampaignsInfoString;\n\n\t\t\t\t;(function waitSgi() {\n\n\t\t\t\t\tvar omnitureData;\n\n\t\t\t\t\tif (!window.s_gi) {\n\n\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\twaitSgi()\n\t\t\t\t\t\t}, 500);\n\n\t\t\t\t\t\treturn\n\n\t\t\t\t\t}\n\n\t\t\t\t\tomnitureData = s_gi(config.clientID);\n\t\t\t\t\tomnitureData[config.eVar] = allCampaignsInfoString;\n\t\t\t\t\tomnitureData[config.prop] = allCampaignsInfoString;\n\t\t\t\t\tomnitureData.linkTrackVars = config.prop + ',' + config.eVar;\n\n\t\t\t\t\tomnitureData.tl(true, 'o', omnitureDataObject);\n\n\t\t\t\t}());\n\t\t\t\t\n\t\t\t}\n\t\t}\n\n\t\tmmcore.AddDocLoadHandler(function() {\n\t\t\tsetTimeout(function() {\n\n\t\t\t\tvar genInfo = mmcore.GenInfo,\n\t\t\t\t\ttestName,\n\t\t\t\t\tcampaignsNamesArray = [];\n\n\t\t\t\t// Custom exclusive rules definition\n\t\t\t\tvar customFilterFunction = function(campaignName) {\n\t\t\t\t\treturn !campaignName.match(/master/i) && !campaignName.match(/^T5\\D/i)\n\t\t\t\t};\n\n\t\t\t\tfor (testName in genInfo) {\n\t\t\t\t\tif (genInfo.hasOwnProperty(testName)) {\n\t\t\t\t\t\tcampaignsNamesArray.push(testName)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// First regular Omniture request\n\t\t\t\ttrackOmniture(campaignsNamesArray, customFilterFunction);\n\n\t\t\t\t// Further optional requests, fire for new campaigns that appear only\n\t\t\t\tmmcore.mediator.on('GenInfoChanged', function(data) {\n\t\t\t\t\ttrackOmniture(data, customFilterFunction)\n\t\t\t\t})\n\n\n\t\t\t}, 1000)\n\t\t});\n\n\t}({\n\t\tclientID: 'economistcomprod',\n\t\teVar: 'eVar51',\n\t\tprop: 'prop51'\n\t}));\n\n}());\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\n(function (campaign) {\n\n    var _name = campaign.pageID.replace(/\\s/g, '_');\n    var t = 0;\n\n    var getPC = function (pcname) {\n\n        if (mmcore.GetPersistentCriterion) {\n\n            return mmcore.GetPersistentCriterion(pcname);\n\n        } else {\n\n            var uatStr = mmcore.GetCookie('uat');\n            var arr = uatStr.split(';');\n            var pcObj = {};\n\n            for (var i = 0; i < arr.length; i++) {\n                var _arr = arr[i].split(\"=\");\n                var _prop = _arr[0];\n                _arr.shift();\n                var _val = _arr.join('=');\n                pcObj[_prop] = _val;\n\n            }\n\n            if (pcObj[pcname]) {\n                return pcObj[pcname];\n\n            } else {\n                return null;\n\n            }\n        }\n\n    }\n\n\n    function wait() {\n      \n        if (getPC('ClickDepth') && getPC('Recency') && getPC('Loyalty') && getPC('Brand') && getPC('Interaction') && getPC('SignedIn') && getPC('VEI')) {\n\n            mmcore.SetPageID(campaign.pageID);\n            mmcore._async = true;\n            mmcore.CGRequest();\n\n        } else if (campaign.exit(t++)) {\n            show();\n        } else {\n            setTimeout(wait, 50);\n        }\n    };\n    \n    wait();\n\n})({\n\n    pageID: 'T5Campaign',\n\n    exit: function (t) {\n\n        return (t > 100);\n\n\n    }\n});\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\n(function ( m ) {\n\tvar acyncClick;\n\n\tacyncClick = function ( self, e ) {\n\t\thref = self.attr( 'href' );\n\t\tis_done = false;\n\n\t\tm._async = true;\n\t\tm.SetPageID( 'events' );\n\n\t\tfunction move() {\n\t\t\tis_done = true;\n\t\t\tif ( /firefox/i.test( navigator.userAgent ) ) {\n\t\t\t\tlocation.hash = 'mm';\n\t\t\t}\n\t\t\tlocation.assign( href );\n\t\t}\n\n\t\tm.CGRequest( move );\n\t\tsetTimeout( function () {\n\t\t\tif ( !is_done ) {\n\t\t\t\tmove();\n\t\t\t}\n\t\t}, 3000 );\n\n\t\te.preventDefault();\n\t};\n\n\n\t// -----------------------------------\n\t// action T5HPClicks\n\t// -----------------------------------\n\t(function () {\n\t\tvar an, sa;\n\n\t\tif ( location.pathname !== '/' || location.host.indexOf( 'www.economist.com' ) === -1 ) { return; }\n\n\t\tan = 'T5HPClicks';\n\t\tsa = function ( attr ) {\n\t\t\tm.$Action( an, 1, attr );\n\t\t};\n\n\t\t$( '#leaderboard a, .mh a' ).live( 'click', function ( e ) {\n\t\t\tvar self, href;\n\n\t\t\tself = $( this );\n\t\t\thref = self.attr( 'href' );\n\n\t\t\tsa( 'Header' );\n\n\t\t\tif ( href.indexOf( 'moreintelligentlife.com' ) + 1 || href.indexOf( 'jobs.economist.com' ) + 1 || href.indexOf( 'store.economist.com' ) + 1 ) {\n\t\t\t\tacyncClick( self, e );\n\t\t\t} else if ( self.closest( '#leaderboard-ad' ).length || self.is( ':contains(Log in or register)' ) ) {\n\t\t\t\tm._async = true;\n\t\t\t\tm.SetPageID( 'events' );\n\t\t\t\tm.CGRequest();\n\t\t\t}\n\t\t} );\n\n\t\t$( function () {\n\t\t\tvar flag;\n\n\t\t\t$( '.gstl_50' ).live( 'mouseup', function () {\n\t\t\t\tif ( !flag ) {\n\t\t\t\t\tsa( 'Header' );\n\t\t\t\t\tflag = true;\n\t\t\t\t}\n\t\t\t} );\n\t\t\t$( '#search-theme-form' ).live( 'submit', function () {\n\t\t\t\tif ( !flag ) {\n\t\t\t\t\tsa( 'Header' );\n\t\t\t\t\tflag = true;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tif ($( '#search-theme-form' )[0]) {\n\t\t\t\t$( '#search-theme-form' )[0].onsubmit = (function ( func ) {\n\t\t\t\t\treturn function () {\n\t\t\t\t\t\tif ( !flag ) {\n\t\t\t\t\t\t\tsa( 'Header' );\n\t\t\t\t\t\t\tflag = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( func ) { return func.apply( this, arguments ); }\n\t\t\t\t\t}\n\t\t\t\t}( $( '#search-theme-form' )[0].onsubmit ));\n\t\t\t}\n\t\t} );\n\n\t\t$( '#superhero .hero-superhero a' ).live( 'click', function () {\n\t\t\tsa( 'Main' );\n\t\t} );\n\n\t\t$( '#superhero .cover-image-container a' ).live( 'click', function () {\n\t\t\tsa( 'Print' );\n\t\t} );\n\t\t$( '.qtip a' ).live( 'click', function () {\n\t\t\tif ( $( this ).is( '.qtip-button' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsa( 'Print' );\n\t\t\tm._async = true;\n\t\t\tm.SetPageID( 'events' );\n\t\t\tm.CGRequest();\n\t\t} );\n\n\t\t$( '.side-box a' ).live( 'click', function () {\n\t\t\tsa( 'LHCol' );\n\t\t} );\n\n\t\t$( '.news-package a' ).live( 'click', function () {\n\t\t\tif ( $( this ).is( 'a:contains(More in Multimedia)' ) ) { return; }\n\t\t\tsa( 'CentreCol' );\n\t\t} );\n\n\t\t$( '#social-share-buttons-block a' ).live( 'click', function () {\n\t\t\tm.SetAction( an, 1, 'Follow' );\n\t\t\tm._async = true;\n\t\t\tm.SetPageID( 'events' );\n\t\t\tm.CGRequest();\n\t\t} );\n\n\t\t$( '#block-ec_blogs-ec_blogs_block_recent .latest_blogs, #block-ec_blogs-ec_blogs_block_recent a:contains(More from our blogs)' ).live( 'click', function () {\n\t\t\tsa( 'Blogs' );\n\t\t} );\n\n\t\t$( '#block-ec_mostx-mostpopular a' ).live( 'click', function () {\n\t\t\tsa( 'MostPop' );\n\t\t\tif ( $( this ).closest( '#tabs' ).length ) {\n\t\t\t\tm._async = true;\n\t\t\t\tm.SetPageID( 'events' );\n\t\t\t\tm.CGRequest();\n\t\t\t}\n\t\t} );\n\n\t\t$( function () {\n\t\t\t$( '#block-block-1 div.linked' ).unbind( 'click' ).click( function ( e ) {\n\t\t\t\tsa( 'Products' );\n\t\t\t\tacyncClick( $( this ).find( 'a.social-link' ), e );\n\t\t\t} );\n\n\t\t\t$( '#block-block-1 div.linked a' ).click( function () {\n\t\t\t\treturn false;\n\t\t\t} );\n\t\t} );\n\t}());\n\n\n\t// -----------------------------------\n\t// action T5TopNavClicks\n\t// -----------------------------------\n\t(function () {\n\t\tvar sa, attrs;\n\n\t\tsa = function ( attr ) {\n\t\t\tm.$Action( 'T5TopNavClicks', 1, attr );\n\t\t};\n\n\t\tattrs = {\n\t\t\tpolitics: 'Politics',\n\t\t\tfinance: 'Business',\n\t\t\tEconomics: 'Economics',\n\t\t\ttechnology: 'Science',\n\t\t\tCulture: 'Culture',\n\t\t\tBlogs: 'Blogs',\n\t\t\tDebate: 'Debate',\n\t\t\tMultimedia: 'Multimedia',\n\t\t\tPrint: 'PrintEdition'\n\t\t};\n\n\t\t$( '.mh-nav a' ).live( 'click', function ( e ) {\n\t\t\tvar p, text, self;\n\n\t\t\tself = $( this );\n\n\t\t\tif ( self.find( '.mh-logo' ).length ) {\n\t\t\t\tsa( 'Home' );\n\t\t\t} else {\n\t\t\t\ttext = self.closest( '.mh-nav-links > li' ).find( '> a' ).text()\n\t\t\t\tfor ( p in attrs ) {\n\t\t\t\t\tif ( attrs.hasOwnProperty( p ) ) {\n\t\t\t\t\t\tif ( text.indexOf( p ) + 1 ) {\n\t\t\t\t\t\t\tsa( attrs[p] );\n\t\t\t\t\t\t\tif ( self.attr( 'href' ).indexOf( 'moreintelligentlife.com' ) + 1 ) {\n\t\t\t\t\t\t\t\tacyncClick( self, e );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}());\n\n\n}( window.mmcore ));\n\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\n(function () {\n    var hide = function () {\n        $('html').addClass('mm-t20-hidden-content');\n        mmcore.AttachStyle(\n                '.mm-t20-hidden-content #overlay-wrapper .col.main {' +\n                'visibility: hidden;' +\n                '}');\n    };\n    mmcore.T20 = {};\n    mmcore.T20.show = function () {\n        $('html').removeClass('mm-t20-hidden-content');\n    };\n    hide();\n    mmcore.waitFor(function() {\n        return typeof $ === 'function' && $('title:contains(Overlay)').length;\n    }).done(function() {\n        mmcore._async = 1;\n        mmcore.SetPageID('T20');\n        mmcore.CGRequest(function () {\n\t\t\tif (mmcore.GenInfo && mmcore.GenInfo.T20_WelOv_copy && mmcore.GenInfo.T20_WelOv_copy.a_t20overlay === 'Default') {\n\t\t\t\tmmcore.T20.show();\n\t\t\t}\n\t\t});\n    }).fail(function () {\n        mmcore.T20.show();\n    });\n})();\r\n}catch(err){mmcore.EH(err);}\r\nif(typeof mmcore._callback=='object'&&typeof mmcore._callback[1]=='function'){try{mmcore._callback[1]();}catch(err){mmcore.EH(err);}\r\nfinally{mmcore._callback[1]=null;}}\r\n})();","Packages":["mmpackage-1.4.js"]});