/** * Create the AppMeasurementBridge object that will contain both AppMeasurement * Analytics support. (Video Heartbeat library is instantiated when calling setVideoPlayer). * Values passed through params: * contentUrl: path to THIS file (without filename). Required when used with custom page. * * @param params List of parameters passed to the sdk. * @constructor */ var AppMeasurementBridge = function(params) { if (params && params.hasOwnProperty("contentUrl")) { this.contentUrl = params["contentUrl"]; } else { this.contentUrl = ""; } this.viewerType = 0; this.assetName = ""; this.appMeasurement = new AppMeasurement(); var appMeasurement = this.appMeasurement; appMeasurement.account="lclaemassets"; appMeasurement.visitor = Visitor.getInstance(""); appMeasurement.visitor.trackingServer = "lcljoefresh.sc.omtrdc.net"; /************************** CONFIG SECTION **************************/ /* You may add or alter any code config here. */ appMeasurement.charSet="UTF-8"; /* Conversion Config */ appMeasurement.currencyCode="USD"; /* Link Tracking Config */ appMeasurement.trackDownloadLinks=true; appMeasurement.trackExternalLinks=true; appMeasurement.trackInlineStats=true; appMeasurement.linkDownloadFileTypes="exe,zip,wav,mp3,mov,mpg,avi,wmv,doc,pdf,xls"; appMeasurement.linkInternalFilters="javascript:,."; appMeasurement.linkLeaveQueryString=false; appMeasurement.linkTrackVars="None"; appMeasurement.linkTrackEvents="None"; appMeasurement.visitorNamespace="lcljoefresh"; appMeasurement.trackingServer="lcljoefresh.sc.omtrdc.net"; this.heartbeatLibraryLoaded = false; // should only be set to true in load callback }; /** * Instantiate Heartbeat video tracking. * @private */ AppMeasurementBridge.prototype.initVideo = function() { var self = this; function VideoPlayerPluginDelegate() {} VideoPlayerPluginDelegate.prototype.getVideoInfo = function() { var videoInfo = new ADB.va.plugins.videoplayer.VideoInfo(); videoInfo.id = self.videoAsset; videoInfo.name = self.videoAsset; // a nicer name is not available (trim path off?) videoInfo.length = self.videoDuration; videoInfo.streamType = ADB.va.plugins.videoplayer.AssetType.ASSET_TYPE_VOD; videoInfo.playerName = self.playerName; videoInfo.playhead = this.getCurrentPlayhead(); // e.g. 115 (obtained from the video player) return videoInfo; }; VideoPlayerPluginDelegate.prototype.getAdBreakInfo = function() { return null; }; VideoPlayerPluginDelegate.prototype.getAdInfo = function() { return null; }; VideoPlayerPluginDelegate.prototype.getChapterInfo = function() { return null; }; VideoPlayerPluginDelegate.prototype.getQoSInfo = function() { return null; }; VideoPlayerPluginDelegate.prototype.getCurrentPlayhead = function () { if (self._videoPlayer) { var e = self._videoPlayer.videoElement; var currentTime = 0; if (e && e.hasOwnProperty("currentTime") && isFinite(e.currentTime)) { currentTime = e.currentTime; } else { currentTime = self._videoPlayer.getCurrentTime(); } if (isNaN(currentTime)) { return 0; // in case _videoPlayer.getCurrentTime() returns nan } // S7-3268: decimal points occasionally are lost // causing reporting to be exponentially wrong. return Math.round(currentTime / 1000); } return 0; }; // Video Player plugin var vpPluginDelegate = new VideoPlayerPluginDelegate(); this.videoPlayerPlugin = new ADB.va.plugins.videoplayer.VideoPlayerPlugin(vpPluginDelegate); var vpPluginConfig = new ADB.va.plugins.videoplayer.VideoPlayerPluginConfig(); vpPluginConfig.debugLogging = this.analyticsDebugging; this.videoPlayerPlugin.configure(vpPluginConfig); /*** Set up an AppMeasurement instance for Heartbeat tracking. ***/ this.appMeasurementHeartbeat = new AppMeasurement(); this.appMeasurementHeartbeat.account= "lclaemassets"; this.appMeasurementHeartbeat.visitor = Visitor.getInstance("", { trackingServer: "lcljoefresh.sc.omtrdc.net", marketingCloudServer: "lcljoefresh.sc.omtrdc.net" }); this.appMeasurementHeartbeat.visitorID = "s7video"; this.appMeasurementHeartbeat.charSet="UTF-8"; this.appMeasurementHeartbeat.visitorNamespace="lcljoefresh"; this.appMeasurementHeartbeat.trackingServer="lcljoefresh.sc.omtrdc.net"; this.appMeasurementHeartbeat.loadModule("Media"); this.appMeasurementHeartbeat.Media.trackUsingContextData = true; this.appMeasurementHeartbeat.Media.contextDataMapping = null; this.appMeasurementHeartbeat.Media.channel = window.location.hostname; // Heartbeat setup var aaPlugin = new ADB.va.plugins.aa.AdobeAnalyticsPlugin(this.appMeasurementHeartbeat); var aaPluginConfig = new ADB.va.plugins.aa.AdobeAnalyticsPluginConfig(); aaPluginConfig.channel = window.location.hostname; aaPluginConfig.debugLogging = this.analyticsDebugging; aaPlugin.configure(aaPluginConfig); // Adobe Heartbeat plugin var ahPlugin = new ADB.va.plugins.ah.AdobeHeartbeatPlugin(this.appMeasurementHeartbeat); var ahPluginConfig = new ADB.va.plugins.ah.AdobeHeartbeatPluginConfig(document.location.protocol + "//aem.hb.omtrdc.net", "aem"); ahPluginConfig.ovp = null; ahPluginConfig.sdk = null; ahPluginConfig.ssl = document.location.protocol.indexOf("https") == 0; ahPluginConfig.playerName = this.playerName; ahPluginConfig.debugLogging = this.analyticsDebugging; ahPlugin.configure(ahPluginConfig); // Heartbeat var plugins = [this.videoPlayerPlugin, aaPlugin, ahPlugin]; var heartbeatDelegate = new ADB.va.HeartbeatDelegate(); this.heartbeat = new ADB.va.Heartbeat(heartbeatDelegate, plugins); var heartbeatConfig = new ADB.va.HeartbeatConfig(); heartbeatConfig.debugLogging = this.analyticsDebugging; this.heartbeat.configure(heartbeatConfig); this.isOpened = false; this.isLoaded = false; this.videoAsset = null; }; AppMeasurementBridge.prototype.dispose = function() { if (this.appMeasurement) { // AppMeasurement does not have a dispose or destroy API. this.appMeasurement = null; } if (this.heartbeat) { this.heartbeat.destroy(); this.heartbeat = null; this.appMeasurementHeartbeat = null; this.isOpened = false; this.videoAsset = null; } }; /** * find the asset value within the query fragment * */ AppMeasurementBridge.prototype.findProductParam = function(query) { if (typeof rolloverInfo != "undefined") { return rolloverInfo; } if (!query) return ""; var dQuery; try { dQuery = decodeURIComponent(query); } catch (e) { dQuery = query; } var lQuery = dQuery.toLowerCase(); var params = ["rolloverkey", "rollover_key", "p", "productkey", "pid"]; for (var n in params) { if (!params.hasOwnProperty(n)) continue; var m1 = lQuery.indexOf(params[n]+'='); if (m1 == undefined || m1 == -1) continue; m1 += params[n].length + 1; var m2 = lQuery.indexOf("&", m1); lQuery = lQuery.replace("');void(0);"); return (m2 > m1) ? dQuery.substring(m1, m2) : dQuery.substr(m1); } return ""; }; /** * Internal tracking handler for user defined tracking configuration. * * @ignore * @param eventType * @param params */ AppMeasurementBridge.prototype.customTrack = function(eventType, params) { this.appMeasurement.clearVars(); if (eventType == "SWATCH") eventType = "PAGE"; if (eventType == "SPIN") eventType = "PAGE"; if (eventType == "TARG") eventType = "TARGET"; if (eventType == "RELOAD") eventType = "SWAP"; // Preprocess event data if (eventType == "LOAD") { this.lastFrame = this.viewerFrame = ""; if (params.length > 1) { this.viewerType = params[1]; var assetPos = 6; // S7SDK asset position if (params.length >= assetPos) { this.assetName = params[assetPos]+''; } } } else if (eventType == "PAGE") { this.pageName = params[2]; this.lastFrame = this.viewerFrame; this.viewerFrame = params[1]; } else if (eventType == "SWAP") { this.lastFrame = this.viewerFrame; this.viewerFrame = params[1]; if (params.length >= 2) { this.assetName = params[2]; } } if (eventType == "PAUSE") { this.appMeasurement.tl(this, 'o', eventType); return; } if (eventType == "ITEM") { this.appMeasurement.tl(this, 'o', eventType); return; } if (eventType == "PLAY") { this.appMeasurement.tl(this, 'o', eventType); return; } if (eventType == "SWAP") { this.appMeasurement.tl(this, 'o', eventType); return; } if (eventType == "LOAD") { this.appMeasurement.t(); return; } if (eventType == "STOP") { this.appMeasurement.tl(this, 'o', eventType); return; } if (eventType == "HREF") { this.appMeasurement.tl(this, 'o', eventType); return; } if (eventType == "PAGE") { this.appMeasurement.tl(this, 'o', eventType); return; } if (eventType == "MILESTONE") { this.appMeasurement.tl(this, 'o', eventType); return; } }; AppMeasurementBridge.prototype.videoTrack = function(eventType, params) { if (this.heartbeatLibraryLoaded) { this.videoTrackInternal(eventType, params); } else { // cache event if (!this.eventQueue) { this.eventQueue = {}; this.eventQueueCount = 0; } this.eventQueue[this.eventQueueCount++] = {"eventType": eventType, "params": params}; } } /** * Internal tracking handler for video Heartbeat tracking. * * @ignore * @param eventType eventType is a UserEvent type * @param params Event specific parameters. */ AppMeasurementBridge.prototype.videoTrackInternal = function(eventType, params) { if (eventType == "LOAD") { // The AppMeasurement.Media.open api requires the video length // which is not available with the LOAD event data, so open is called // in METADATA event. if (params.length > 2) { this.playerName = params[2]; } else { this.playerName = window.location.pathname.split('/').pop(); this.playerName = this.playerName.split('.')[0]; } } else if (eventType == "METADATA") { if (params[1] == "DURATION") { var newVideo = decodeURIComponent(this._videoPlayer.getAsset()); this.videoDuration = paramToSeconds(params[2]); if (this.videoDuration > 0) { if (newVideo != this.videoAsset) { this.videoAsset = newVideo; if (this._videoPlayer.autoplay) { this.isOpened = true; this.trackVideoLoadOnce(true); } } if (this.pendingPlay) { this.videoPlayerPlugin.trackPlay(); this.pendingPlay = false; } } } else if (params[1] == "SEEK") { this.videoPlayerPlugin.trackSeekStart(); this.videoPlayerPlugin.trackSeekComplete(); } } else if (eventType == "SWAP") { if (this.isOpened) { this.isOpened = false; this.videoPlayerPlugin.trackVideoUnload(); this.isLoaded = false; } // Video tracking is driven by METADATA events, not LOAD and SWAP // so there is no other notification required. (Next asset may not // be a video). } else if (eventType == "PLAY") { if (!this.isOpened) { if (!this.videoDuration || isNaN(this.videoDuration)) { if (this._videoPlayer && this._videoPlayer.getDuration) { this.videoDuration = Math.round(this._videoPlayer.getDuration()/1000); } } if (this.videoDuration && !isNaN(this.videoDuration)) { this.videoAsset = decodeURIComponent(this._videoPlayer.getAsset()); this.trackVideoLoadOnce(true); this.isOpened = true; this.videoPlayerPlugin.trackPlay(); } else { this.pendingPlay = true; } } else if (!this.isPlaying) { // pause condition this.isPlaying = true; this.videoPlayerPlugin.trackPlay(); } } else if (eventType == "STOP") { if (this.isOpened) { this.isOpened = false; this.videoPlayerPlugin.trackPause(); } this.videoPlayerPlugin.trackComplete(); this.videoPlayerPlugin.trackVideoUnload(); this.isLoaded = false; this.pendingPlay = false; this.isPlaying = false; } else if (eventType == "PAUSE" || eventType == "STALLED") { if (this.isOpened) { this.videoPlayerPlugin.trackPause(); } this.pendingPlay = false; this.isPlaying = false; } // params come in as milliseconds function paramToSeconds(p) { if (null == p) { return 0; } var n = parseInt(p); if (isNaN(n)) { return 0; } return Math.round(n/1000); } }; /** * Tracking the load event requires data that is available at different times during the * viewer loading process. trackVideoLoadOnce will only send the load event when all the * correct data elements are available. * @param force {Boolean} If force is true, send the load event without duration data. */ AppMeasurementBridge.prototype.trackVideoLoadOnce = function(force) { if (!force) { if (!this.videoDuration || isNaN(this.videoDuration)) { return; } } if (!this.videoAsset) { return; // maybe worth logging } if (!this.heartbeatLibraryLoaded) { return; } if (!this.isLoaded || (this.loadedVideoAsset != this.videoAsset)) { this.appMeasurementHeartbeat.Media.playerName = this.playerName; this.videoPlayerPlugin.trackVideoLoad(); this.isLoaded = true; this.loadedVideoAsset = this.videoAsset; } }; /** * Send tracking data to tracking server. * * This function can be passed to TrackingManager.setCallback as the parameters * are the same. The only parameter used by AppMeasurementBridge is eventInfo which * contains a comma separated list of event data. The first element in the list is * the event type (such as "LOAD" or "PLAY"). The AppMeasurementBridge.track function * then passes the data to Adobe Analytics servers. * * @param instName {String} Container component name. Not used. * @param compClass {String} Component CSS class name. Not used. * @param timeStamp {String} Event timestamp. Not used. * @param objID {String} Component id. Not used. * @param eventInfo {String} Comma separated ordered list of event data. */ AppMeasurementBridge.prototype.track = function(objID, compClass, instName, timeStamp, eventInfo) { var eventValues = eventInfo.split(','); var eventType = eventValues[0].toString(); var params = []; var paramsRaw = eventInfo.split(","); for (var param in paramsRaw) { if (paramsRaw.hasOwnProperty(param)) { params.push(decodeURIComponent(paramsRaw[param])+''); } } // Heartbeat tracking this.videoTrack(eventType, params); // Legacy user defined tracking this.customTrack(eventType, params); }; /** * Connects the VideoPlayer component to the AppMeasurement Heartbeat tracking * system. * @param videoPlayer VideoPlayer component to be tracked. */ AppMeasurementBridge.prototype.setVideoPlayer = function(videoPlayer) { var self = this; this._videoPlayer = videoPlayer; this.loadScript(this.contentUrl + "../AppMeasurement/VideoHeartbeat.min.js", callback); function callback() { self.heartbeatLibraryLoaded = true; self.initVideo(); if (self.eventQueue) { for (var idx = 0; idx < self.eventQueueCount; idx++) { var event = self.eventQueue[idx]; // run cached event self.videoTrackInternal(event.eventType, event.params); } self.eventQueue = null; } // In case the VideoPlayer has emitted the LOAD UserEvent before // the VideoHeartbeat library has loaded, call trackVideoLoadOnce() // again. self.trackVideoLoadOnce(false); } }; /** * Old interface with existing s7 tracking systems (should go away in 2.6 sdk). * @param eventInfo * @param rolloverInfo * @ignore */ function s7track(eventInfo, rolloverInfo) { if (!this.bridge) { this.bridge = new AppMeasurementBridge(); } this.bridge.track(eventInfo); } /** * Load a script and call a function afterwards. Used for VideoHeartbeat library, * but may be used for all libraries if necessary. * @param url Url for library to be loaded. * @param callback Function to call after library is loaded. */ AppMeasurementBridge.prototype.loadScript = function(url, callback) { var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.onreadystatechange = function() { if (script.readyState == "loaded") { //head.appendChild(script); } else if (script.readyState == "complete") { callback(); } }; script.onload = callback; script.type = 'text/javascript'; script.src = url; head.appendChild(script); } /* ============== DO NOT ALTER ANYTHING BELOW THIS LINE ! ============ Adobe Visitor API for JavaScript version: 1.5.7 Copyright 1996-2015 Adobe, Inc. All Rights Reserved More info available at http://www.omniture.com */ function Visitor(m,t){if(!m)throw"Visitor requires Adobe Marketing Cloud Org ID";var a=this;a.version="1.5.7";var l=window,i=l.Visitor;i.version=a.version;l.s_c_in||(l.s_c_il=[],l.s_c_in=0);a._c="Visitor";a._il=l.s_c_il;a._in=l.s_c_in;a._il[a._in]=a;l.s_c_in++;a.pa={Ka:[]};var o=l.document,h=i.Ma;h||(h=null);var z=i.Na;z||(z=void 0);var j=i.ja;j||(j=!0);var k=i.La;k||(k=!1);a.S=function(a){var c=0,b,e;if(a)for(b=0;ba;a++)f=Math.floor(Math.random()*g),b+=c.substring(f,f+1),f=Math.floor(Math.random()*g),e+=c.substring(f,f+1),g=16;return b+"-"+e}for(a=0;19>a;a++)f=Math.floor(Math.random()*n),b+=c.substring(f,f+1),0==a&&9==f?n=3:(1==a||2==a)&&10!=n&&2>f?n=10:2f?h=10:2=c[b].length&&(2==c[b-1].length||0>",ac,ad,ae,af,ag,ai,al,am,an,ao,aq,ar,as,at,au,aw,ax,az,ba,bb,be,bf,bg,bh,bi,bj,bm,bo,br,bs,bt,bv,bw,by,bz,ca,cc,cd,cf,cg,ch,ci,cl,cm,cn,co,cr,cu,cv,cw,cx,cz,de,dj,dk,dm,do,dz,ec,ee,eg,es,et,eu,fi,fm,fo,fr,ga,gb,gd,ge,gf,gg,gh,gi,gl,gm,gn,gp,gq,gr,gs,gt,gw,gy,hk,hm,hn,hr,ht,hu,id,ie,im,in,io,iq,ir,is,it,je,jo,jp,kg,ki,km,kn,kp,kr,ky,kz,la,lb,lc,li,lk,lr,ls,lt,lu,lv,ly,ma,mc,md,me,mg,mh,mk,ml,mn,mo,mp,mq,mr,ms,mt,mu,mv,mw,mx,my,na,nc,ne,nf,ng,nl,no,nr,nu,nz,om,pa,pe,pf,ph,pk,pl,pm,pn,pr,ps,pt,pw,py,qa,re,ro,rs,ru,rw,sa,sb,sc,sd,se,sg,sh,si,sj,sk,sl,sm,sn,so,sr,st,su,sv,sx,sy,sz,tc,td,tf,tg,th,tj,tk,tl,tm,tn,to,tp,tr,tt,tv,tw,tz,ua,ug,uk,us,uy,uz,va,vc,ve,vg,vi,vn,vu,wf,ws,yt,".indexOf(","+ c[b]+","))&&e--;if(0=e;)a=c[b]+(a?".":"")+a,b--}return a};a.cookieRead=function(a){var a=encodeURIComponent(a),c=(";"+o.cookie).split(" ").join(";"),b=c.indexOf(";"+a+"="),e=0>b?b:c.indexOf(";",b+1);return 0>b?"":decodeURIComponent(c.substring(b+2+a.length,0>e?c.length:e))};a.cookieWrite=function(d,c,b){var e=a.cookieLifetime,f,c=""+c,e=e?(""+e).toUpperCase():"";b&&"SESSION"!=e&&"NONE"!=e?(f=""!=c?parseInt(e?e:0,10):-60)?(b=new Date,b.setTime(b.getTime()+1E3*f)):1==b&&(b=new Date,f= b.getYear(),b.setYear(f+2+(1900>f?1900:0))):b=0;return d&&"NONE"!=e?(o.cookie=encodeURIComponent(d)+"="+encodeURIComponent(c)+"; path=/;"+(b?" expires="+b.toGMTString()+";":"")+(a.cookieDomain?" domain="+a.cookieDomain+";":""),a.cookieRead(d)==c):0};a.g=h;a.A=function(a,c){try{"function"==typeof a?a.apply(l,c):a[1].apply(a[0],c)}catch(b){}};a.ra=function(d,c){c&&(a.g==h&&(a.g={}),a.g[d]==z&&(a.g[d]=[]),a.g[d].push(c))};a.m=function(d,c){if(a.g!=h){var b=a.g[d];if(b)for(;0g;){try{e=(e=o.getElementsByTagName(0g;){try{f=o.createElement(0=1E3*n||e&&!a.cookieRead(a.sessionCookieName))))a.d||(a.d={}),a.d[f]=j}if(!a.b(p)&&(b=a.cookieRead("s_vi")))b=b.split("|"),1c?(a.d||(a.d={}),a.d[d]=j):a.d&&(a.d[d]=k);b&&(a.cookieRead(a.sessionCookieName)||a.cookieWrite(a.sessionCookieName,"1"))};a.Q=function(a){if(a&&("object"==typeof a&&(a=a.d_mid?a.d_mid:a.visitorID?a.visitorID:a.id?a.id:a.uuid?a.uuid:""+a),a&&(a=a.toUpperCase(),"NOTARGET"==a&&(a= r)),!a||a!=r&&!a.match(/^[0-9a-fA-F\-]+$/)))a="";return a};a.i=function(d,c){a.ka(d);a.h!=h&&(a.h[d]=k);if(d==B){var b=a.b(s);if(!b){b="object"==typeof c&&c.mid?c.mid:a.Q(c);if(!b){if(a.v){a.getAnalyticsVisitorID(h,k,j);return}b=a.r()}a.c(s,b)}if(!b||b==r)b="";"object"==typeof c&&((c.d_region||c.dcs_region||c.d_blob||c.blob)&&a.i(y,c),a.v&&c.mid&&a.i(A,{id:c.id}));a.m(s,[b])}if(d==y&&"object"==typeof c){b=604800;c.id_sync_ttl!=z&&c.id_sync_ttl&&(b=parseInt(c.id_sync_ttl,10));var e=a.b(w);e||((e=c.d_region)|| (e=c.dcs_region),e&&(a.k(w,b),a.c(w,e)));e||(e="");a.m(w,[e]);e=a.b(q);if(c.d_blob||c.blob)(e=c.d_blob)||(e=c.blob),a.k(q,b),a.c(q,e);e||(e="");a.m(q,[e]);!c.error_msg&&a.t&&a.c(C,a.t)}if(d==A){b=a.b(p);b||((b=a.Q(c))?b!==r&&a.k(q,-1):b=r,a.c(p,b));if(!b||b==r)b="";a.m(p,[b])}a.idSyncDisableSyncs?u.ba=j:(u.ba=k,b={},b.ibs=c.ibs,b.subdomain=c.subdomain,u.Ia(b));c===Object(c)&&(b=r,c.d_optout&&c.d_optout instanceof Array&&(b=c.d_optout.join(",")),e=parseInt(c.d_ottl,10),isNaN(e)&&(e=7200),a.k(x,e,!0), a.c(x,b),a.m(x,[b]))};a.h=h;a.n=function(d,c,b,e){var f="",g;if(a.isAllowed()&&(a.f(),f=a.b(d),!f&&(d==s||d==x?g=B:d==w||d==q?g=y:d==p&&(g=A),g))){if(c&&(a.h==h||!a.h[g]))a.h==h&&(a.h={}),a.h[g]=j,a.oa(g,c,function(){if(!a.b(d)){var b="";d==s?b=a.r():g==y&&(b={error_msg:"timeout"});a.i(g,b)}});a.ra(d,b);c||a.i(g,{id:r});return""}if((d==s||d==p)&&f==r)f="",e=j;b&&e&&a.A(b,[f]);return f};a._setMarketingCloudFields=function(d){a.f();a.i(B,d)};a.setMarketingCloudVisitorID=function(d){a._setMarketingCloudFields(d)}; a.v=k;a.getMarketingCloudVisitorID=function(d,c){if(a.isAllowed()){a.marketingCloudServer&&0>a.marketingCloudServer.indexOf(".demdex.net")&&(a.v=j);var b=a.s("_setMarketingCloudFields");return a.n(s,b,d,c)}return""};a.qa=function(){a.getAudienceManagerBlob()};i.AuthState={UNKNOWN:0,AUTHENTICATED:1,LOGGED_OUT:2};a.q={};a.P=k;a.t="";a.setCustomerIDs=function(d){if(a.isAllowed()&&d){a.f();var c,b;for(c in d)if(!Object.prototype[c]&&(b=d[c]))if("object"==typeof b){var e={};b.id&&(e.id=b.id);b.authState!= z&&(e.authState=b.authState);a.q[c]=e}else a.q[c]={id:b};var d=a.getCustomerIDs(),e=a.b(C),f="";e||(e=0);for(c in d)Object.prototype[c]||(b=d[c],f+=(f?"|":"")+c+"|"+(b.id?b.id:"")+(b.authState?b.authState:""));a.t=a.S(f);a.t!=e&&(a.P=j,a.qa())}};a.getCustomerIDs=function(){a.f();var d={},c,b;for(c in a.q)Object.prototype[c]||(b=a.q[c],d[c]||(d[c]={}),b.id&&(d[c].id=b.id),d[c].authState=b.authState!=z?b.authState:i.AuthState.UNKNOWN);return d};a._setAnalyticsFields=function(d){a.f();a.i(A,d)};a.setAnalyticsVisitorID= function(d){a._setAnalyticsFields(d)};a.getAnalyticsVisitorID=function(d,c,b){if(a.isAllowed()){var e="";b||(e=a.getMarketingCloudVisitorID(function(){a.getAnalyticsVisitorID(d,j)}));if(e||b){var f=b?a.marketingCloudServer:a.trackingServer,g="";a.loadSSL&&(b?a.marketingCloudServerSecure&&(f=a.marketingCloudServerSecure):a.trackingServerSecure&&(f=a.trackingServerSecure));f&&(g="http"+(a.loadSSL?"s":"")+"://"+f+"/id?d_visid_ver="+a.version+"&callback=s_c_il%5B"+a._in+"%5D._set"+(b?"MarketingCloud": "Analytics")+"Fields&mcorgid="+encodeURIComponent(a.marketingCloudOrgID)+(e?"&mid="+encodeURIComponent(e):"")+(a.idSyncDisable3rdPartySyncing?"&d_coppa=true":""));return a.n(b?s:p,g,d,c)}}return""};a._setAudienceManagerFields=function(d){a.f();a.i(y,d)};a.s=function(d){var c=a.audienceManagerServer,b="",e=a.b(s),f=a.b(q,j),g=a.b(p),g=g&&g!=r?"&d_cid_ic=AVID%01"+encodeURIComponent(g):"";a.loadSSL&&a.audienceManagerServerSecure&&(c=a.audienceManagerServerSecure);if(c){var b=a.getCustomerIDs(),h,i;if(b)for(h in b)Object.prototype[h]|| (i=b[h],g+="&d_cid_ic="+encodeURIComponent(h)+"%01"+encodeURIComponent(i.id?i.id:"")+(i.authState?"%01"+i.authState:""));d||(d="_setAudienceManagerFields");b="http"+(a.loadSSL?"s":"")+"://"+c+"/id?d_visid_ver="+a.version+"&d_rtbd=json&d_ver=2"+(!e&&a.v?"&d_verify=1":"")+"&d_orgid="+encodeURIComponent(a.marketingCloudOrgID)+"&d_nsid="+(a.idSyncContainerID||0)+(e?"&d_mid="+encodeURIComponent(e):"")+(a.idSyncDisable3rdPartySyncing?"&d_coppa=true":"")+(f?"&d_blob="+encodeURIComponent(f):"")+g+"&d_cb=s_c_il%5B"+ a._in+"%5D."+d}return b};a.getAudienceManagerLocationHint=function(d,c){if(a.isAllowed()&&a.getMarketingCloudVisitorID(function(){a.getAudienceManagerLocationHint(d,j)})){var b=a.b(p);b||(b=a.getAnalyticsVisitorID(function(){a.getAudienceManagerLocationHint(d,j)}));if(b)return b=a.s(),a.n(w,b,d,c)}return""};a.getAudienceManagerBlob=function(d,c){if(a.isAllowed()&&a.getMarketingCloudVisitorID(function(){a.getAudienceManagerBlob(d,j)})){var b=a.b(p);b||(b=a.getAnalyticsVisitorID(function(){a.getAudienceManagerBlob(d, j)}));if(b)return b=a.s(),a.P&&a.k(q,-1),a.n(q,b,d,c)}return""};a.o="";a.u={};a.D="";a.F={};a.getSupplementalDataID=function(d,c){!a.o&&!c&&(a.o=a.r(1));var b=a.o;a.D&&!a.F[d]?(b=a.D,a.F[d]=j):b&&(a.u[d]&&(a.D=a.o,a.F=a.u,a.o=b=!c?a.r(1):"",a.u={}),b&&(a.u[d]=j));return b};i.OptOut={GLOBAL:"global"};a.getOptOut=function(d,c){if(a.isAllowed()){var b=a.s("_setMarketingCloudFields");return a.n(x,b,d,c)}return""};a.isOptedOut=function(d,c,b){return a.isAllowed()?(c||(c=i.OptOut.GLOBAL),(b=a.getOptOut(function(b){a.A(d, [b==i.OptOut.GLOBAL||0<=b.indexOf(c)])},b))?b==i.OptOut.GLOBAL||0<=b.indexOf(c):h):k};var v={l:!!l.postMessage,ha:1,O:864E5};a.Oa=v;a.X={postMessage:function(a,c,b){var e=1;c&&(v.l?b.postMessage(a,c.replace(/([^:]+:\/\/[^\/]+).*/,"$1")):c&&(b.location=c.replace(/#.*$/,"")+"#"+ +new Date+e++ +"&"+a))},K:function(a,c){var b;try{if(v.l)if(a&&(b=function(b){if("string"===typeof c&&b.origin!==c||"[object Function]"===Object.prototype.toString.call(c)&&!1===c(b.origin))return!1;a(b)}),window.addEventListener)window[a? "addEventListener":"removeEventListener"]("message",b,!1);else window[a?"attachEvent":"detachEvent"]("onmessage",b)}catch(e){}}};var G={Y:function(){if(o.addEventListener)return function(a,c,b){a.addEventListener(c,function(a){"function"===typeof b&&b(a)},k)};if(o.attachEvent)return function(a,c,b){a.attachEvent("on"+c,function(a){"function"===typeof b&&b(a)})}}(),map:function(a,c){if(Array.prototype.map)return a.map(c);if(void 0===a||a===h)throw new TypeError;var b=Object(a),e=b.length>>>0;if("function"!== typeof c)throw new TypeError;for(var f=Array(e),g=0;g=i&&(a.splice(h,1), h--);return{xa:e,ya:f}},Da:function(a){if(a.join("*").length>this.N)for(a.sort(function(a,b){return parseInt(a.split("-")[1],10)-parseInt(b.split("-")[1],10)});a.join("*").length>this.N;)a.shift()},G:function(d){var c=encodeURIComponent;this.z.push((a.Qa?c("---destpub-debug---"):c("---destpub---"))+d)},ea:function(){var d=this,c;this.z.length?(c=this.z.shift(),a.X.postMessage(c,this.url,this.Ba.contentWindow),this.Ea.push(c),setTimeout(function(){d.ea()},this.ca)):this.L=k},K:function(a){var c=/^---destpub-to-parent---/; "string"===typeof a&&c.test(a)&&(c=a.replace(c,"").split("|"),"canSetThirdPartyCookies"===c[0]&&(this.$="true"===c[1]?j:k,this.da=j,this.p()),this.Fa.push(a))},Ia:function(d){this.url===h&&(this.e="string"===typeof a.W&&a.W.length?a.W:d.subdomain||"",this.url=this.Aa());d.ibs instanceof Array&&d.ibs.length&&(this.H=j);if(!a.idSyncDisable3rdPartySyncing&&(this.H||a.la)&&this.e&&"nosubdomainreturned"!==this.e&&!this.M)(i.ga||"complete"===o.readyState||"loaded"===o.readyState)&&this.Z();"function"=== typeof a.idSyncIDCallResult?a.idSyncIDCallResult(d):this.p(d);"function"===typeof a.idSyncAfterIDCallResult&&a.idSyncAfterIDCallResult(d)},ua:function(d,c){return a.Ra||!d||c-d>v.ha}};a.Pa=u;0>m.indexOf("@")&&(m+="@AdobeOrg");a.marketingCloudOrgID=m;a.cookieName="AMCV_"+m;a.sessionCookieName="AMCVS_"+m;a.cookieDomain=a.ma();a.cookieDomain==l.location.hostname&&(a.cookieDomain="");a.loadSSL=0<=l.location.protocol.toLowerCase().indexOf("https");a.loadTimeout=500;a.marketingCloudServer=a.audienceManagerServer= "dpm.demdex.net";if(t&&"object"==typeof t){for(var E in t)!Object.prototype[E]&&(a[E]=t[E]);a.idSyncContainerID=a.idSyncContainerID||0;a.f();E=a.b(F);var H=Math.ceil((new Date).getTime()/v.O);!a.idSyncDisableSyncs&&u.ua(E,H)&&(a.k(q,-1),a.c(F,H));a.getMarketingCloudVisitorID();a.getAudienceManagerLocationHint();a.getAudienceManagerBlob()}if(!a.idSyncDisableSyncs){u.va();G.Y(window,"load",function(){var d=u;i.ga=j;!a.idSyncDisable3rdPartySyncing&&(d.H||a.la)&&d.e&&"nosubdomainreturned"!==d.e&&d.url&& !d.M&&d.Z()});try{a.X.K(function(a){u.K(a.data)},u.I)}catch(I){}}}Visitor.getInstance=function(m,t){var a,l=window.s_c_il,i;0>m.indexOf("@")&&(m+="@AdobeOrg");if(l)for(i=0;ie.length&&h.substring(0,e.length)==e?h.substring(e.length):"";l=b.contextDataMapping[h];if("string"==typeof l)for(q=l.split(","),s=0;se&&(e=1==a.k&&0e&&(e=0),a.offset=e,0a.c&&(a.c=e),y=a.D,m.name=d,m.ad=a.l,m.length=a.length,m.openTime=new Date,m.openTime.setTime(1E3*a.timestamp),m.offset=a.offset,m.percent=a.e,m.playerName=a.playerName,m.mediaEvent=0>a.g?"OPEN":1==c?"PLAY":2==c?"STOP":3==c?"MONITOR": 4==c?"TRACK":5==c?"COMPLETE":7==c?"CLICK":"CLOSE",2=c||5<=c)&&0<=a.g&&(r=!1,q=s="None",a.g!=e)){h=a.g;h>e&&(h=a.c,h>e&&(h=e));p=u?u.split(","):0;if(0=h)for(n=0;n=g&&(r=!0,n=p.length,m.mediaEvent="MILESTONE",a.p=m.milestone=g);if((p=v?v.split(","):0)&&e>=h)for(n=0;n=g&&(r=!0,n=p.length,m.mediaEvent= "OFFSET_MILESTONE",a.q=m.offsetMilestone=g)}if(a.L||!f){if(w&&u&&0=c||3==c&&!a.k)a.n+=(1==c||3==c?"S":"E")+Math.floor(e),a.k=3==c?1:c;!r&&0<=a.g&&3>=c&&(t=t?t:0)&&a.a>=t&&(r=!0,m.mediaEvent="SECONDS");a.u=l;a.c=e}if(!c||3>=c&&100<=a.e)2!=a.k&&(a.n+="E"+Math.floor(e)),c=0,q=s="None",m.mediaEvent="CLOSE";7==c&&(r=m.clicked=a.r=!0);if(5==c||b.completeByCloseOffset&&(!c||100<=a.e)&&0=a.length-b.completeCloseOffsetThreshold)r=m.complete=a.complete=!0;l=m.mediaEvent;"MILESTONE"==l?l+="_"+m.milestone:"OFFSET_MILESTONE"==l&&(l+= "_"+m.offsetMilestone);a.I[l]?m.eventFirstTime=!1:(m.eventFirstTime=!0,a.I[l]=1);m.event=m.mediaEvent;m.timePlayed=a.C;m.segmentNum=a.m;m.segment=a.f;m.segmentLength=a.B;b.monitor&&4!=c&&b.monitor(b.s,m);b.Heartbeat&&b.Heartbeat.enabled&&0<=a.g&&(r=!1);0==c&&b.M(d);r&&a.D==y&&(d={contextData:{}},d.linkTrackVars=q,d.linkTrackEvents=s,d.linkTrackVars||(d.linkTrackVars=""),d.linkTrackEvents||(d.linkTrackEvents=""),b.P(d,a),d.linkTrackVars||(d["!linkTrackVars"]=1),d.linkTrackEvents||(d["!linkTrackEvents"]= 1),b.s.track(d),a.F?(a.m=k,a.f=f,a.A=!0,a.F=!1):0d&&(d=c.currentTime),b.O(e,h,a, d,c))}),c=function(){b.o(d,1,-1)},e=function(){b.o(d,1,-1)},b.j(d,"play",c),b.j(d,"pause",e),b.j(d,"seeking",e),b.j(d,"seeked",c),b.j(d,"ended",function(){b.o(d,0,-1)}),b.j(d,"timeupdate",c),k=function(){d.paused||d.ended||d.seeking||b.o(d,3,-1);setTimeout(k,1E3)},k())};b.j=function(b,c,e){b.attachEvent?b.attachEvent("on"+c,e):b.addEventListener&&b.addEventListener(c,e,!1)};void 0==b.completeByCloseOffset&&(b.completeByCloseOffset=1);void 0==b.completeCloseOffsetThreshold&&(b.completeCloseOffsetThreshold= 1);b.Heartbeat={};b.N=function(){var d,c;if(b.autoTrack&&(d=b.s.d.getElementsByTagName("VIDEO")))for(c=0;ca.indexOf(b)?a:a.split(b).join(d)};a.escape=function(c){var b,d;if(!c)return c;c=encodeURIComponent(c);for(b=0;7>b;b++)d="+~!*()'".substring(b,b+1),0<=c.indexOf(d)&&(c=a.replace(c,d,"%"+d.charCodeAt(0).toString(16).toUpperCase()));return c};a.unescape=function(c){if(!c)return c;c=0<=c.indexOf("+")?a.replace(c,"+"," "):c;try{return decodeURIComponent(c)}catch(b){}return unescape(c)};a.kb=function(){var c=k.location.hostname,b=a.fpCookieDomainPeriods,d;b||(b=a.cookieDomainPeriods);if(c&&!a.cookieDomain&& !/^[0-9.]+$/.test(c)&&(b=b?parseInt(b):2,b=2d?"":a.unescape(b.substring(d+2+c.length,0>f?b.length:f));return"[[B]]"!=c?c:""};a.c_w=a.cookieWrite=function(c,b,d){var f=a.kb(),e=a.cookieLifetime,g;b=""+b;e=e?(""+e).toUpperCase():"";d&&"SESSION"!= e&&"NONE"!=e&&((g=""!=b?parseInt(e?e:0):-60)?(d=new Date,d.setTime(d.getTime()+1E3*g)):1==d&&(d=new Date,g=d.getYear(),d.setYear(g+5+(1900>g?1900:0))));return c&&"NONE"!=e?(a.d.cookie=c+"="+a.escape(""!=b?b:"[[B]]")+"; path=/;"+(d&&"SESSION"!=e?" expires="+d.toGMTString()+";":"")+(f?" domain="+f+";":""),a.cookieRead(c)==b):0};a.H=[];a.ea=function(c,b,d){if(a.wa)return 0;a.maxDelay||(a.maxDelay=250);var f=0,e=(new Date).getTime()+a.maxDelay,g=a.d.visibilityState,m=["webkitvisibilitychange","visibilitychange"]; g||(g=a.d.webkitVisibilityState);if(g&&"prerender"==g){if(!a.fa)for(a.fa=1,d=0;dc){a.H.unshift(d);setTimeout(a.delayReady, parseInt(a.maxDelay/2));break}a.wa=1;a[d.m].apply(a,d.a);a.wa=0}};a.setAccount=a.sa=function(c){var b,d;if(!a.ea("setAccount",arguments))if(a.account=c,a.allAccounts)for(b=a.allAccounts.concat(c.split(",")),a.allAccounts=[],b.sort(),d=0;de.indexOf(".contextData."))switch(k=m.substring(0,4),w=m.substring(4),m){case "transactionID":m="xact";break;case "channel":m="ch";break;case "campaign":m="v0";break;default:a.Da(w)&&("prop"== k?m="c"+w:"eVar"==k?m="v"+w:"list"==k?m="l"+w:"hier"==k&&(m="h"+w,p=p.substring(0,255)))}g+="&"+a.escape(m)+"="+a.escape(p)}}""!=g&&(g+="&."+c)}return g};a.mb=function(){var c="",b,d,f,e,g,m,p,k,n="",r="",s=e="";if(a.lightProfileID)b=a.L,(n=a.lightTrackVars)&&(n=","+n+","+a.ja.join(",")+",");else{b=a.e;if(a.pe||a.linkType)n=a.linkTrackVars,r=a.linkTrackEvents,a.pe&&(e=a.pe.substring(0,1).toUpperCase()+a.pe.substring(1),a[e]&&(n=a[e].Bb,r=a[e].Ab));n&&(n=","+n+","+a.C.join(",")+",");r&&(r=","+r+",", n&&(n+=",events,"));a.events2&&(s+=(""!=s?",":"")+a.events2)}if(a.visitor&&1.5<=parseFloat(a.visitor.version)&&a.visitor.getCustomerIDs){e=q;if(g=a.visitor.getCustomerIDs())for(d in g)Object.prototype[d]||(f=g[d],e||(e={}),f.id&&(e[d+".id"]=f.id),f.authState&&(e[d+".as"]=f.authState));e&&(c+=a.p("cid",e))}a.AudienceManagement&&a.AudienceManagement.isReady()&&(c+=a.p("d",a.AudienceManagement.getEventCallConfigParams()));for(d=0;dd||0<=f&&d>f||0<=e&&d>e)&&(f=a.protocol&&1d?0:d)+"/":"")+b);return b};a.I=function(c){var b=a.B(c),d,f,e="",g=0;return b&& (d=c.protocol,f=c.onclick,!c.href||"A"!=b&&"AREA"!=b||f&&d&&!(0>d.toLowerCase().indexOf("javascript"))?f?(e=a.replace(a.replace(a.replace(a.replace(""+f,"\r",""),"\n",""),"\t","")," ",""),g=2):"INPUT"==b||"SUBMIT"==b?(c.value?e=c.value:c.innerText?e=c.innerText:c.textContent&&(e=c.textContent),g=3):c.src&&"IMAGE"==b&&(e=c.src):e=a.za(c),e)?{id:e.substring(0,100),type:g}:0};a.Db=function(c){for(var b=a.B(c),d=a.I(c);c&&!d&&"BODY"!=b;)if(c=c.parentElement?c.parentElement:c.parentNode)b=a.B(c),d=a.I(c); d&&"BODY"!=b||(c=0);c&&(b=c.onclick?""+c.onclick:"",0<=b.indexOf(".tl(")||0<=b.indexOf(".trackLink("))&&(c=0);return c};a.vb=function(){var c,b,d=a.linkObject,f=a.linkType,e=a.linkURL,g,m;a.ka=1;d||(a.ka=0,d=a.clickObject);if(d){c=a.B(d);for(b=a.I(d);d&&!b&&"BODY"!=c;)if(d=d.parentElement?d.parentElement:d.parentNode)c=a.B(d),b=a.I(d);b&&"BODY"!=c||(d=0);if(d&&!a.linkObject){var p=d.onclick?""+d.onclick:"";if(0<=p.indexOf(".tl(")||0<=p.indexOf(".trackLink("))d=0}}else a.ka=1;!e&&d&&(e=a.za(d));e&& !a.linkLeaveQueryString&&(g=e.indexOf("?"),0<=g&&(e=e.substring(0,g)));if(!f&&e){var n=0,r=0,q;if(a.trackDownloadLinks&&a.linkDownloadFileTypes)for(p=e.toLowerCase(),g=p.indexOf("?"),m=p.indexOf("#"),0<=g?0<=m&&mv)return 0}return 1};a.N=function(c,b){var d, f,e,g,m,k;for(d=0;2>d;d++)for(f=0d;d++)for(f=0c.indexOf("-")){for(c=0;16>c;c++)f=Math.floor(Math.random()*f),b+="0123456789ABCDEF".substring(f,f+1),f=Math.floor(Math.random()*e),d+="0123456789ABCDEF".substring(f,f+1),f=e=16;c=b+"-"+d}a.cookieWrite("s_fid",c,1)||(c=0);return c};a.t=a.track=function(c,b){var d,f=new Date,e="s"+Math.floor(f.getTime()/108E5)%10+Math.floor(1E13*Math.random()),g=f.getYear(),g="t="+a.escape(f.getDate()+"/"+f.getMonth()+"/"+(1900>g?g+1900:g)+" "+f.getHours()+":"+f.getMinutes()+":"+f.getSeconds()+" "+ f.getDay()+" "+f.getTimezoneOffset());a.visitor&&(a.visitor.jb&&(a.authState=a.visitor.jb()),!a.supplementalDataID&&a.visitor.getSupplementalDataID&&(a.supplementalDataID=a.visitor.getSupplementalDataID("AppMeasurement:"+a._in,a.expectSupplementalData?!1:!0)));a.l("_s");a.Ta(c)||(b&&a.N(b),c&&(d={},a.La(d,0),a.N(c)),a.qb()&&!a.visitorOptedOut&&(a.analyticsVisitorID||a.marketingCloudVisitorID||(a.fid=a.lb()),a.vb(),a.usePlugins&&a.doPlugins&&a.doPlugins(a),a.account&&(a.abort||(a.trackOffline&&!a.timestamp&& (a.timestamp=Math.floor(f.getTime()/1E3)),f=k.location,a.pageURL||(a.pageURL=f.href?f.href:f),a.referrer||a.Ma||(a.referrer=r.document.referrer),a.Ma=1,a.referrer=a.ib(a.referrer),a.l("_g")),a.nb()&&!a.abort&&(a.ob(),g+=a.mb(),a.ub(e,g),a.l("_t"),a.referrer=""))),c&&a.N(d,1));a.abort=a.supplementalDataID=a.timestamp=a.pageURLRest=a.linkObject=a.clickObject=a.linkURL=a.linkName=a.linkType=k.s_objectID=a.pe=a.pev1=a.pev2=a.pev3=a.c=a.lightProfileID=0};a.tl=a.trackLink=function(c,b,d,f,e){a.linkObject= c;a.linkType=b;a.linkName=d;e&&(a.j=c,a.u=e);return a.track(f)};a.trackLight=function(c,b,d,f){a.lightProfileID=c;a.lightStoreForSeconds=b;a.lightIncrementBy=d;return a.track(f)};a.clearVars=function(){var c,b;for(c=0;ca.K&&a.Ha(a.g),a.oa(500);else{var c=a.bb();if(0=a.offlineThrottleDelay)return 0;c=a.A()-a.Ga;return a.offlineThrottleDelaya.K&&a.Ha(a.g);a.ca(); a.oa(500)};b.onreadystatechange=function(){4==b.readyState&&(200==b.status?b.pa():b.ya())};a.Ga=a.A();if(1==d||2==d){var e=c.indexOf("?");f=c.substring(0,e);e=c.substring(e+1);e=e.replace(/&callback=[a-zA-Z0-9_.\[\]]+/,"");1==d?(b.open("POST",f,!0),b.send(e)):2==d&&(b.open("POST",f),b.send(e))}else if(b.src=c,3==d){if(a.Ea)try{f.removeChild(a.Ea)}catch(g){}f.firstChild?f.insertBefore(b,f.firstChild):f.appendChild(b);a.Ea=a.v}b.timeout=setTimeout(function(){b.timeout&&(b.complete?b.pa():(a.trackOffline&& b.abort&&b.abort(),b.ya()))},5E3);a.fb=c;a.v=k["s_i_"+a.replace(a.account,",","_")]=b;if(a.useForcedLinkTracking&&a.G||a.u)a.forcedLinkTrackingTimeout||(a.forcedLinkTrackingTimeout=250),a.da=setTimeout(a.ca,a.forcedLinkTrackingTimeout)};a.gb=function(){if(a.na()&&!(a.Fa>a.K))try{k.localStorage.removeItem(a.la()),a.Fa=a.A()}catch(c){}};a.Ha=function(c){if(a.na()){a.Ja();try{k.localStorage.setItem(a.la(),k.JSON.stringify(c)),a.K=a.A()}catch(b){}}};a.Ja=function(){if(a.trackOffline){if(!a.offlineLimit|| 0>=a.offlineLimit)a.offlineLimit=10;for(;a.g.length>a.offlineLimit;)a.xa()}};a.forceOffline=function(){a.ma=!0};a.forceOnline=function(){a.ma=!1};a.la=function(){return a.offlineFilename+"-"+a.visitorNamespace+a.account};a.A=function(){return(new Date).getTime()};a.Ca=function(a){a=a.toLowerCase();return 0!=a.indexOf("#")&&0!=a.indexOf("about:")&&0!=a.indexOf("opera:")&&0!=a.indexOf("javascript:")?!0:!1};a.setTagContainer=function(c){var b,d,f;a.yb=c;for(b=0;b(""+f[b]).indexOf("s_c_il"))&&(c[b]=f[b]);if(d.mmq)for(b=0;b=n;n++)76>n&&(a.e.push("prop"+n),a.L.push("prop"+n)),a.e.push("eVar"+n),a.L.push("eVar"+n),6>n&&a.e.push("hier"+n),4>n&&a.e.push("list"+n);n="pe pev1 pev2 pev3 latitude longitude resolution colorDepth javascriptVersion javaEnabled cookiesEnabled browserWidth browserHeight connectionType homepage pageURLRest".split(" ");a.e=a.e.concat(n);a.C=a.C.concat(n);a.ssl=0<=k.location.protocol.toLowerCase().indexOf("https");a.charSet="UTF-8";a.contextData={};a.offlineThrottleDelay=0;a.offlineFilename= "AppMeasurement.offline";a.Ga=0;a.ia=0;a.K=0;a.Fa=0;a.linkDownloadFileTypes="exe,zip,wav,mp3,mov,mpg,avi,wmv,pdf,doc,docx,xls,xlsx,ppt,pptx";a.w=k;a.d=k.document;try{if(a.Ka=!1,navigator){var y=navigator.userAgent;if("Microsoft Internet Explorer"==navigator.appName||0<=y.indexOf("MSIE ")||0<=y.indexOf("Trident/")&&0<=y.indexOf("Windows NT 6"))a.Ka=!0}}catch(z){}a.ca=function(){a.da&&(k.clearTimeout(a.da),a.da=q);a.j&&a.G&&a.j.dispatchEvent(a.G);a.u&&("function"==typeof a.u?a.u():a.j&&a.j.href&&(a.d.location= a.j.href));a.j=a.G=a.u=0};a.Ia=function(){a.b=a.d.body;a.b?(a.r=function(c){var b,d,f,e,g;if(!(a.d&&a.d.getElementById("cppXYctnr")||c&&c["s_fe_"+a._in])){if(a.ua)if(a.useForcedLinkTracking)a.b.removeEventListener("click",a.r,!1);else{a.b.removeEventListener("click",a.r,!0);a.ua=a.useForcedLinkTracking=0;return}else a.useForcedLinkTracking=0;a.clickObject=c.srcElement?c.srcElement:c.target;try{if(!a.clickObject||a.J&&a.J==a.clickObject||!(a.clickObject.tagName||a.clickObject.parentElement||a.clickObject.parentNode))a.clickObject= 0;else{var m=a.J=a.clickObject;a.ha&&(clearTimeout(a.ha),a.ha=0);a.ha=setTimeout(function(){a.J==m&&(a.J=0)},1E4);f=a.Aa();a.track();if(f