Skip to content

Instantly share code, notes, and snippets.

@okabsd
Created February 28, 2016 18:20
Show Gist options
  • Save okabsd/1b695256155ac7a58ef4 to your computer and use it in GitHub Desktop.
Save okabsd/1b695256155ac7a58ef4 to your computer and use it in GitHub Desktop.
Google Tag Assistant Source, Unminified
var h, aa = this,
k = function(a) {
return void 0 !== a
},
ba = function(a) {
a.R = function() {
return a.kb ? a.kb : a.kb = new a
}
},
ca = function(a) {
var b = typeof a;
if ("object" == b)
if (a) {
if (a instanceof Array) return "array";
if (a instanceof Object) return b;
var c = Object.prototype.toString.call(a);
if ("[object Window]" == c) return "object";
if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice")) return "array";
if ("[object Function]" ==
c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) return "function"
} else return "null";
else if ("function" == b && "undefined" == typeof a.call) return "object";
return b
},
m = function(a) {
return "array" == ca(a)
},
da = function(a) {
var b = ca(a);
return "array" == b || "object" == b && "number" == typeof a.length
},
n = function(a) {
return "string" == typeof a
},
ea = function(a) {
return "number" == typeof a
},
fa = function(a) {
return "function" == ca(a)
},
ha = function(a, b, c) {
return a.call.apply(a.bind,
arguments)
},
ia = function(a, b, c) {
if (!a) throw Error();
if (2 < arguments.length) {
var d = Array.prototype.slice.call(arguments, 2);
return function() {
var c = Array.prototype.slice.call(arguments);
Array.prototype.unshift.apply(c, d);
return a.apply(b, c)
}
}
return function() {
return a.apply(b, arguments)
}
},
ja = function(a, b, c) {
ja = Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? ha : ia;
return ja.apply(null, arguments)
},
p = function(a, b) {
var c = Array.prototype.slice.call(arguments, 1);
return function() {
var b =
c.slice();
b.push.apply(b, arguments);
return a.apply(this, b)
}
},
ka = Date.now || function() {
return +new Date
},
la = function(a, b) {
var c = a.split("."),
d = aa;
c[0] in d || !d.execScript || d.execScript("var " + c[0]);
for (var e; c.length && (e = c.shift());) !c.length && k(b) ? d[e] = b : d = d[e] ? d[e] : d[e] = {}
},
q = function(a, b) {
function c() {}
c.prototype = b.prototype;
a.ha = b.prototype;
a.prototype = new c;
a.prototype.constructor = a;
a.Oc = function(a, c, f) {
for (var g = Array(arguments.length - 2), l = 2; l < arguments.length; l++) g[l - 2] = arguments[l];
return b.prototype[c].apply(a,
g)
}
};
var ma = function(a) {
if (Error.captureStackTrace) Error.captureStackTrace(this, ma);
else {
var b = Error().stack;
b && (this.stack = b)
}
a && (this.message = String(a))
};
q(ma, Error);
ma.prototype.name = "CustomError";
var na = function(a, b) {
var c = a.length - b.length;
return 0 <= c && a.indexOf(b, c) == c
},
r = function(a, b) {
for (var c = a.split("%s"), d = "", e = Array.prototype.slice.call(arguments, 1); e.length && 1 < c.length;) d += c.shift() + e.shift();
return d + c.join("%s")
},
oa = function(a) {
return /^[\s\xa0]*$/.test(a)
},
pa = String.prototype.trim ? function(a) {
return a.trim()
} : function(a) {
return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g, "")
},
qa = function(a, b) {
a.length > b && (a = a.substring(0, b - 3) + "...");
return a
},
sa = String.prototype.repeat ? function(a, b) {
return a.repeat(b)
} :
function(a, b) {
return Array(b + 1).join(a)
},
t = function(a, b) {
var c = k(void 0) ? a.toFixed(void 0) : String(a),
d = c.indexOf("."); - 1 == d && (d = c.length);
return sa("0", Math.max(0, b - d)) + c
};
var ta = function(a, b) {
b.unshift(a);
ma.call(this, r.apply(null, b));
b.shift()
};
q(ta, ma);
ta.prototype.name = "AssertionError";
var ua = function(a, b, c, d) {
var e = "Assertion failed";
if (c) var e = e + (": " + c),
f = d;
else a && (e += ": " + a, f = b);
throw new ta("" + e, f || []);
},
va = function(a, b, c) {
a || ua("", null, b, Array.prototype.slice.call(arguments, 2))
},
wa = function(a, b) {
throw new ta("Failure" + (a ? ": " + a : ""), Array.prototype.slice.call(arguments, 1));
},
xa = function(a, b, c) {
ea(a) || ua("Expected number but got %s: %s.", [ca(a), a], b, Array.prototype.slice.call(arguments, 2));
return a
},
ya = function(a, b, c) {
n(a) || ua("Expected string but got %s: %s.", [ca(a), a], b,
Array.prototype.slice.call(arguments, 2));
return a
},
za = function(a, b, c) {
m(a) || ua("Expected array but got %s: %s.", [ca(a), a], b, Array.prototype.slice.call(arguments, 2))
},
Aa = function(a, b, c) {
"boolean" == typeof a || ua("Expected boolean but got %s: %s.", [ca(a), a], b, Array.prototype.slice.call(arguments, 2))
},
Ca = function(a, b, c, d) {
a instanceof b || ua("Expected instanceof %s but got %s.", [Ba(b), Ba(a)], c, Array.prototype.slice.call(arguments, 3));
return a
},
Ba = function(a) {
return a instanceof Function ? a.displayName ||
a.name || "unknown type name" : a instanceof Object ? a.constructor.displayName || a.constructor.name || Object.prototype.toString.call(a) : null === a ? "null" : typeof a
};
var Da = Array.prototype.indexOf ? function(a, b, c) {
va(null != a.length);
return Array.prototype.indexOf.call(a, b, c)
} : function(a, b, c) {
c = null == c ? 0 : 0 > c ? Math.max(0, a.length + c) : c;
if (n(a)) return n(b) && 1 == b.length ? a.indexOf(b, c) : -1;
for (; c < a.length; c++)
if (c in a && a[c] === b) return c;
return -1
},
Ea = Array.prototype.forEach ? function(a, b, c) {
va(null != a.length);
Array.prototype.forEach.call(a, b, c)
} : function(a, b, c) {
for (var d = a.length, e = n(a) ? a.split("") : a, f = 0; f < d; f++) f in e && b.call(c, e[f], f, a)
},
Fa = function(a, b) {
for (var c = n(a) ?
a.split("") : a, d = a.length - 1; 0 <= d; --d) d in c && b.call(void 0, c[d], d, a)
},
Ga = Array.prototype.filter ? function(a, b, c) {
va(null != a.length);
return Array.prototype.filter.call(a, b, c)
} : function(a, b, c) {
for (var d = a.length, e = [], f = 0, g = n(a) ? a.split("") : a, l = 0; l < d; l++)
if (l in g) {
var z = g[l];
b.call(c, z, l, a) && (e[f++] = z)
}
return e
},
Ha = Array.prototype.some ? function(a, b, c) {
va(null != a.length);
return Array.prototype.some.call(a, b, c)
} : function(a, b, c) {
for (var d = a.length, e = n(a) ? a.split("") : a, f = 0; f < d; f++)
if (f in e && b.call(c, e[f],
f, a)) return !0;
return !1
},
Ia = function(a, b, c) {
var d = 0;
Ea(a, function(a, f, g) {
b.call(c, a, f, g) && ++d
}, c);
return d
},
Ja = function(a, b) {
var c;
a: {
c = a.length;
for (var d = n(a) ? a.split("") : a, e = 0; e < c; e++)
if (e in d && b.call(void 0, d[e], e, a)) {
c = e;
break a
}
c = -1
}
return 0 > c ? null : n(a) ? a.charAt(c) : a[c]
},
Ka = function(a, b) {
return 0 <= Da(a, b)
},
La = function(a, b) {
var c = Da(a, b),
d;
if (d = 0 <= c) va(null != a.length), Array.prototype.splice.call(a, c, 1);
return d
},
Ma = function(a) {
return Array.prototype.concat.apply(Array.prototype, arguments)
},
Na =
function(a) {
var b = a.length;
if (0 < b) {
for (var c = Array(b), d = 0; d < b; d++) c[d] = a[d];
return c
}
return []
},
Oa = function(a, b) {
for (var c = 1; c < arguments.length; c++) {
var d = arguments[c];
if (da(d)) {
var e = a.length || 0,
f = d.length || 0;
a.length = e + f;
for (var g = 0; g < f; g++) a[e + g] = d[g]
} else a.push(d)
}
},
Qa = function(a, b, c, d) {
va(null != a.length);
Array.prototype.splice.apply(a, Pa(arguments, 1))
},
Pa = function(a, b, c) {
va(null != a.length);
return 2 >= arguments.length ? Array.prototype.slice.call(a, b) : Array.prototype.slice.call(a, b, c)
},
Ra = function(a,
b) {
return a > b ? 1 : a < b ? -1 : 0
},
Sa = function(a, b, c) {
var d;
c = c || Ra;
for (var e = 0, f = a.length; e < f;) {
var g = e + f >> 1,
l;
l = c(b, a[g]);
0 < l ? e = g + 1 : (f = g, d = !l)
}
d = d ? e : ~e;
0 > d && Qa(a, -(d + 1), 0, b)
},
Ta = function(a, b) {
for (var c = {}, d = 0; d < a.length; d++) {
var e = a[d],
f = b.call(void 0, e, d, a);
k(f) && (c[f] || (c[f] = [])).push(e)
}
return c
};
var Ua = function(a) {
return function() {
return a
}
},
Va = Ua(!1),
u = Ua(!0),
Wa = Ua(null);
var Xa = !1,
$a = function() {
if (!Xa) {
for (var a in Ya) Za[a] = Ya[a];
Xa = !0
}
},
Za = {
AED: [2, "dh", "\u062f.\u0625.", "DH"],
ALL: [0, "Lek", "Lek"],
AUD: [2, "$", "AU$"],
BDT: [2, "\u09f3", "Tk"],
BGN: [2, "lev", "lev"],
BRL: [2, "R$", "R$"],
CAD: [2, "$", "C$"],
CDF: [2, "FrCD", "CDF"],
CHF: [2, "CHF", "CHF"],
CLP: [0, "$", "CL$"],
CNY: [2, "\u00a5", "RMB\u00a5"],
COP: [32, "$", "COL$"],
CRC: [0, "\u20a1", "CR\u20a1"],
CZK: [50, "K\u010d", "K\u010d"],
DKK: [50, "kr.", "kr."],
DOP: [2, "RD$", "RD$"],
EGP: [2, "\u00a3", "LE"],
ETB: [2, "Birr", "Birr"],
EUR: [2, "\u20ac", "\u20ac"],
GBP: [2,
"\u00a3", "GB\u00a3"
],
HKD: [2, "$", "HK$"],
HRK: [2, "kn", "kn"],
HUF: [34, "Ft", "Ft"],
IDR: [0, "Rp", "Rp"],
ILS: [34, "\u20aa", "IL\u20aa"],
INR: [2, "\u20b9", "Rs"],
IRR: [0, "Rial", "IRR"],
ISK: [0, "kr", "kr"],
JMD: [2, "$", "JA$"],
JPY: [0, "\u00a5", "JP\u00a5"],
KRW: [0, "\u20a9", "KR\u20a9"],
LKR: [2, "Rs", "SLRs"],
LTL: [2, "Lt", "Lt"],
MNT: [0, "\u20ae", "MN\u20ae"],
MVR: [2, "Rf", "MVR"],
MXN: [2, "$", "Mex$"],
MYR: [2, "RM", "RM"],
NOK: [50, "kr", "NOkr"],
PAB: [2, "B/.", "B/."],
PEN: [2, "S/.", "S/."],
PHP: [2, "\u20b1", "Php"],
PKR: [0, "Rs", "PKRs."],
PLN: [50, "z\u0142",
"z\u0142"
],
RON: [2, "RON", "RON"],
RSD: [0, "din", "RSD"],
RUB: [50, "\u20bd", "RUB"],
SAR: [2, "Rial", "Rial"],
SEK: [50, "kr", "kr"],
SGD: [2, "$", "S$"],
THB: [2, "\u0e3f", "THB"],
TRY: [2, "TL", "YTL"],
TWD: [2, "NT$", "NT$"],
TZS: [0, "TSh", "TSh"],
UAH: [2, "\u0433\u0440\u043d.", "UAH"],
USD: [2, "$", "US$"],
UYU: [2, "$", "$U"],
VND: [48, "\u20ab", "VN\u20ab"],
YER: [0, "Rial", "Rial"],
ZAR: [2, "R", "ZAR"]
},
Ya = {
AFN: [48, "Af.", "AFN"],
AMD: [32, "Dram", "dram"],
ANG: [2, "NAf.", "ANG"],
AOA: [2, "Kz", "Kz"],
ARS: [34, "$", "AR$"],
AWG: [2, "Afl.", "Afl."],
AZN: [34, "\u20bc",
"AZN"
],
BAM: [2, "KM", "KM"],
BBD: [2, "$", "Bds$"],
BHD: [3, "din", "din"],
BIF: [0, "FBu", "FBu"],
BMD: [2, "$", "BD$"],
BND: [2, "$", "B$"],
BOB: [2, "Bs", "Bs"],
BSD: [2, "$", "BS$"],
BTN: [2, "Nu.", "Nu."],
BWP: [2, "P", "pula"],
BYR: [48, "p.", "BYR"],
BZD: [2, "$", "BZ$"],
CUC: [1, "$", "CUC$"],
CUP: [2, "$", "CU$"],
CVE: [2, "CVE", "Esc"],
DJF: [0, "Fdj", "Fdj"],
DZD: [2, "din", "din"],
ERN: [2, "Nfk", "Nfk"],
FJD: [2, "$", "FJ$"],
FKP: [2, "\u00a3", "FK\u00a3"],
GEL: [2, "GEL", "GEL"],
GHS: [2, "GHS", "GHS"],
GIP: [2, "\u00a3", "GI\u00a3"],
GMD: [2, "GMD", "GMD"],
GNF: [0, "FG", "FG"],
GTQ: [2, "Q", "GTQ"],
GYD: [0, "$", "GY$"],
HNL: [2, "L", "HNL"],
HTG: [2, "HTG", "HTG"],
IQD: [0, "din", "IQD"],
JOD: [3, "din", "JOD"],
KES: [2, "Ksh", "Ksh"],
KGS: [2, "KGS", "KGS"],
KHR: [2, "Riel", "KHR"],
KMF: [0, "CF", "KMF"],
KPW: [0, "\u20a9KP", "KPW"],
KWD: [3, "din", "KWD"],
KYD: [2, "$", "KY$"],
KZT: [2, "\u20b8", "KZT"],
LAK: [0, "\u20ad", "\u20ad"],
LBP: [0, "L\u00a3", "LBP"],
LRD: [2, "$", "L$"],
LSL: [2, "LSL", "LSL"],
LYD: [3, "din", "LD"],
MAD: [2, "dh", "MAD"],
MDL: [2, "MDL", "MDL"],
MGA: [0, "Ar", "MGA"],
MKD: [2, "din", "MKD"],
MMK: [0, "K", "MMK"],
MOP: [2, "MOP", "MOP$"],
MRO: [0, "MRO", "MRO"],
MUR: [0, "MURs", "MURs"],
MWK: [2, "MWK", "MWK"],
MZN: [2, "MTn", "MTn"],
NAD: [2, "$", "N$"],
NGN: [2, "\u20a6", "NG\u20a6"],
NIO: [2, "C$", "C$"],
NPR: [2, "Rs", "NPRs"],
NZD: [2, "$", "NZ$"],
OMR: [3, "Rial", "OMR"],
PGK: [2, "PGK", "PGK"],
PYG: [16, "Gs.", "PYG"],
QAR: [2, "Rial", "QR"],
RWF: [0, "RF", "RF"],
SBD: [2, "$", "SI$"],
SCR: [2, "SCR", "SCR"],
SDG: [2, "SDG", "SDG"],
SHP: [2, "\u00a3", "SH\u00a3"],
SLL: [0, "SLL", "SLL"],
SOS: [0, "SOS", "SOS"],
SRD: [2, "$", "SR$"],
SSP: [2, "\u00a3", "SSP"],
STD: [0, "Db", "Db"],
SYP: [0, "\u00a3", "SY\u00a3"],
SZL: [2,
"SZL", "SZL"
],
TJS: [2, "Som", "TJS"],
TND: [3, "din", "DT"],
TOP: [2, "T$", "T$"],
TTD: [2, "$", "TT$"],
UGX: [0, "UGX", "UGX"],
UZS: [0, "so\u02bcm", "UZS"],
VEF: [2, "Bs", "Bs"],
VUV: [0, "VUV", "VUV"],
WST: [2, "WST", "WST"],
XAF: [0, "FCFA", "FCFA"],
XCD: [2, "$", "EC$"],
XOF: [0, "CFA", "CFA"],
XPF: [0, "FCFP", "FCFP"],
ZMW: [0, "ZMW", "ZMW"],
ZWD: [0, "$", "Z$"]
};
var ab = function(a, b, c) {
for (var d in a) b.call(c, a[d], d, a)
},
bb = function(a, b, c) {
for (var d in a)
if (b.call(c, a[d], d, a)) return !0;
return !1
},
cb = function(a) {
var b = [],
c = 0,
d;
for (d in a) b[c++] = a[d];
return b
},
db = function(a) {
var b = [],
c = 0,
d;
for (d in a) b[c++] = d;
return b
},
eb = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),
fb = function(a, b) {
for (var c, d, e = 1; e < arguments.length; e++) {
d = arguments[e];
for (c in d) a[c] = d[c];
for (var f = 0; f < eb.length; f++) c = eb[f], Object.prototype.hasOwnProperty.call(d,
c) && (a[c] = d[c])
}
},
gb = function(a) {
var b = arguments.length;
if (1 == b && m(arguments[0])) return gb.apply(null, arguments[0]);
if (b % 2) throw Error("Uneven number of arguments");
for (var c = {}, d = 0; d < b; d += 2) c[arguments[d]] = arguments[d + 1];
return c
};
var hb = "StopIteration" in aa ? aa.StopIteration : {
message: "StopIteration",
stack: ""
},
ib = function() {};
ib.prototype.next = function() {
throw hb;
};
ib.prototype.Wb = function() {
return this
};
var jb = function(a, b) {
this.I = {};
this.l = [];
this.pa = this.f = 0;
var c = arguments.length;
if (1 < c) {
if (c % 2) throw Error("Uneven number of arguments");
for (var d = 0; d < c; d += 2) this.set(arguments[d], arguments[d + 1])
} else a && this.addAll(a)
};
h = jb.prototype;
h.hb = function() {
return this.f
};
h.K = function() {
kb(this);
for (var a = [], b = 0; b < this.l.length; b++) a.push(this.I[this.l[b]]);
return a
};
h.F = function() {
kb(this);
return this.l.concat()
};
h.ea = function(a) {
return lb(this.I, a)
};
h.equals = function(a, b) {
if (this === a) return !0;
if (this.f != a.hb()) return !1;
var c = b || mb;
kb(this);
for (var d, e = 0; d = this.l[e]; e++)
if (!c(this.get(d), a.get(d))) return !1;
return !0
};
var mb = function(a, b) {
return a === b
};
jb.prototype.La = function() {
return 0 == this.f
};
jb.prototype.clear = function() {
this.I = {};
this.pa = this.f = this.l.length = 0
};
jb.prototype.remove = function(a) {
return lb(this.I, a) ? (delete this.I[a], this.f--, this.pa++, this.l.length > 2 * this.f && kb(this), !0) : !1
};
var kb = function(a) {
if (a.f != a.l.length) {
for (var b = 0, c = 0; b < a.l.length;) {
var d = a.l[b];
lb(a.I, d) && (a.l[c++] = d);
b++
}
a.l.length = c
}
if (a.f != a.l.length) {
for (var e = {}, c = b = 0; b < a.l.length;) d = a.l[b], lb(e, d) || (a.l[c++] = d, e[d] = 1), b++;
a.l.length = c
}
};
h = jb.prototype;
h.get = function(a, b) {
return lb(this.I, a) ? this.I[a] : b
};
h.set = function(a, b) {
lb(this.I, a) || (this.f++, this.l.push(a), this.pa++);
this.I[a] = b
};
h.addAll = function(a) {
var b;
a instanceof jb ? (b = a.F(), a = a.K()) : (b = db(a), a = cb(a));
for (var c = 0; c < b.length; c++) this.set(b[c], a[c])
};
h.forEach = function(a, b) {
for (var c = this.F(), d = 0; d < c.length; d++) {
var e = c[d],
f = this.get(e);
a.call(b, f, e, this)
}
};
h.clone = function() {
return new jb(this)
};
h.toObject = function() {
kb(this);
for (var a = {}, b = 0; b < this.l.length; b++) {
var c = this.l[b];
a[c] = this.I[c]
}
return a
};
h.Wb = function(a) {
kb(this);
var b = 0,
c = this.pa,
d = this,
e = new ib;
e.next = function() {
if (c != d.pa) throw Error("The map has changed since the iterator was created");
if (b >= d.l.length) throw hb;
var e = d.l[b++];
return a ? e : d.I[e]
};
return e
};
var lb = function(a, b) {
return Object.prototype.hasOwnProperty.call(a, b)
};
var nb = function(a) {
if (a.K && "function" == typeof a.K) return a.K();
if (n(a)) return a.split("");
if (da(a)) {
for (var b = [], c = a.length, d = 0; d < c; d++) b.push(a[d]);
return b
}
return cb(a)
},
ob = function(a, b, c) {
if (a.forEach && "function" == typeof a.forEach) a.forEach(b, c);
else if (da(a) || n(a)) Ea(a, b, c);
else {
var d;
if (a.F && "function" == typeof a.F) d = a.F();
else if (a.K && "function" == typeof a.K) d = void 0;
else if (da(a) || n(a)) {
d = [];
for (var e = a.length, f = 0; f < e; f++) d.push(f)
} else d = db(a);
for (var e = nb(a), f = e.length, g = 0; g < f; g++) b.call(c,
e[g], d && d[g], a)
}
};
var pb = /^(?:([^:/?#.]+):)?(?:\/\/(?:([^/?#]*)@)?([^/#?]*?)(?::([0-9]+))?(?=[/#?]|$))?([^?#]+)?(?:\?([^#]*))?(?:#(.*))?$/,
qb = function(a, b) {
if (a)
for (var c = a.split("&"), d = 0; d < c.length; d++) {
var e = c[d].indexOf("="),
f = null,
g = null;
0 <= e ? (f = c[d].substring(0, e), g = c[d].substring(e + 1)) : f = c[d];
b(f, g ? decodeURIComponent(g.replace(/\+/g, " ")) : "")
}
};
var rb = function(a, b) {
this.C = this.ba = this.O = "";
this.fa = null;
this.V = this.g = "";
this.G = this.$b = !1;
var c;
if (a instanceof rb) this.G = k(b) ? b : a.G, sb(this, a.O), c = a.ba, tb(this), this.ba = c, c = a.C, tb(this), this.C = c, ub(this, a.fa), c = a.g, tb(this), this.g = c, vb(this, a.m.clone()), c = a.V, tb(this), this.V = c;
else if (a && (c = String(a).match(pb))) {
this.G = !!b;
sb(this, c[1] || "", !0);
var d = c[2] || "";
tb(this);
this.ba = wb(d);
d = c[3] || "";
tb(this);
this.C = wb(d, !0);
ub(this, c[4]);
d = c[5] || "";
tb(this);
this.g = wb(d, !0);
vb(this, c[6] || "", !0);
c = c[7] ||
"";
tb(this);
this.V = wb(c)
} else this.G = !!b, this.m = new xb(null, 0, this.G)
};
rb.prototype.toString = function() {
var a = [],
b = this.O;
b && a.push(yb(b, zb, !0), ":");
var c = this.C;
if (c || "file" == b) a.push("//"), (b = this.ba) && a.push(yb(b, zb, !0), "@"), a.push(encodeURIComponent(String(c)).replace(/%25([0-9a-fA-F]{2})/g, "%$1")), c = this.fa, null != c && a.push(":", String(c));
if (c = this.g) this.C && "/" != c.charAt(0) && a.push("/"), a.push(yb(c, "/" == c.charAt(0) ? Ab : Bb, !0));
(c = this.m.toString()) && a.push("?", c);
(c = this.V) && a.push("#", yb(c, Cb));
return a.join("")
};
rb.prototype.resolve = function(a) {
var b = this.clone(),
c = !!a.O;
c ? sb(b, a.O) : c = !!a.ba;
if (c) {
var d = a.ba;
tb(b);
b.ba = d
} else c = !!a.C;
c ? (d = a.C, tb(b), b.C = d) : c = null != a.fa;
d = a.g;
if (c) ub(b, a.fa);
else if (c = !!a.g) {
if ("/" != d.charAt(0))
if (this.C && !this.g) d = "/" + d;
else {
var e = b.g.lastIndexOf("/"); - 1 != e && (d = b.g.substr(0, e + 1) + d)
}
e = d;
if (".." == e || "." == e) d = "";
else if (-1 != e.indexOf("./") || -1 != e.indexOf("/.")) {
for (var d = 0 == e.lastIndexOf("/", 0), e = e.split("/"), f = [], g = 0; g < e.length;) {
var l = e[g++];
"." == l ? d && g == e.length && f.push("") :
".." == l ? ((1 < f.length || 1 == f.length && "" != f[0]) && f.pop(), d && g == e.length && f.push("")) : (f.push(l), d = !0)
}
d = f.join("/")
} else d = e
}
c ? (tb(b), b.g = d) : c = "" !== a.m.toString();
c ? vb(b, wb(a.m.toString())) : c = !!a.V;
c && (a = a.V, tb(b), b.V = a);
return b
};
rb.prototype.clone = function() {
return new rb(this)
};
var sb = function(a, b, c) {
tb(a);
a.O = c ? wb(b, !0) : b;
a.O && (a.O = a.O.replace(/:$/, ""))
},
ub = function(a, b) {
tb(a);
if (b) {
b = Number(b);
if (isNaN(b) || 0 > b) throw Error("Bad port number " + b);
a.fa = b
} else a.fa = null
},
Db = function(a) {
return a.g
},
vb = function(a, b, c) {
tb(a);
b instanceof xb ? (a.m = b, a.m.Qa(a.G)) : (c || (b = yb(b, Eb)), a.m = new xb(b, 0, a.G))
},
Fb = function(a) {
return a.m
},
Gb = function(a, b) {
return a.m.get(b)
},
tb = function(a) {
if (a.$b) throw Error("Tried to modify a read-only Uri");
};
rb.prototype.Qa = function(a) {
this.G = a;
this.m && this.m.Qa(a);
return this
};
var v = function(a) {
return a instanceof rb ? a.clone() : new rb(a, void 0)
},
wb = function(a, b) {
return a ? b ? decodeURI(a.replace(/%25/g, "%2525")) : decodeURIComponent(a) : ""
},
yb = function(a, b, c) {
return n(a) ? (a = encodeURI(a).replace(b, Hb), c && (a = a.replace(/%25([0-9a-fA-F]{2})/g, "%$1")), a) : null
},
Hb = function(a) {
a = a.charCodeAt(0);
return "%" + (a >> 4 & 15).toString(16) + (a & 15).toString(16)
},
zb = /[#\/\?@]/g,
Bb = /[\#\?:]/g,
Ab = /[\#\?]/g,
Eb = /[\#\?@]/g,
Cb = /#/g,
xb = function(a, b, c) {
this.f = this.j = null;
this.D = a || null;
this.G = !!c
},
Ib = function(a) {
a.j ||
(a.j = new jb, a.f = 0, a.D && qb(a.D, function(b, c) {
a.add(decodeURIComponent(b.replace(/\+/g, " ")), c)
}))
};
h = xb.prototype;
h.hb = function() {
Ib(this);
return this.f
};
h.add = function(a, b) {
Ib(this);
this.D = null;
a = Jb(this, a);
var c = this.j.get(a);
c || this.j.set(a, c = []);
c.push(b);
this.f = xa(this.f) + 1;
return this
};
h.remove = function(a) {
Ib(this);
a = Jb(this, a);
return this.j.ea(a) ? (this.D = null, this.f = xa(this.f) - this.j.get(a).length, this.j.remove(a)) : !1
};
h.clear = function() {
this.j = this.D = null;
this.f = 0
};
h.La = function() {
Ib(this);
return 0 == this.f
};
h.ea = function(a) {
Ib(this);
a = Jb(this, a);
return this.j.ea(a)
};
h.F = function() {
Ib(this);
for (var a = this.j.K(), b = this.j.F(), c = [], d = 0; d < b.length; d++)
for (var e = a[d], f = 0; f < e.length; f++) c.push(b[d]);
return c
};
h.K = function(a) {
Ib(this);
var b = [];
if (n(a)) this.ea(a) && (b = Ma(b, this.j.get(Jb(this, a))));
else {
a = this.j.K();
for (var c = 0; c < a.length; c++) b = Ma(b, a[c])
}
return b
};
h.set = function(a, b) {
Ib(this);
this.D = null;
a = Jb(this, a);
this.ea(a) && (this.f = xa(this.f) - this.j.get(a).length);
this.j.set(a, [b]);
this.f = xa(this.f) + 1;
return this
};
h.get = function(a, b) {
var c = a ? this.K(a) : [];
return 0 < c.length ? String(c[0]) : b
};
h.toString = function() {
if (this.D) return this.D;
if (!this.j) return "";
for (var a = [], b = this.j.F(), c = 0; c < b.length; c++)
for (var d = b[c], e = encodeURIComponent(String(d)), d = this.K(d), f = 0; f < d.length; f++) {
var g = e;
"" !== d[f] && (g += "=" + encodeURIComponent(String(d[f])));
a.push(g)
}
return this.D = a.join("&")
};
h.clone = function() {
var a = new xb;
a.D = this.D;
this.j && (a.j = this.j.clone(), a.f = this.f);
return a
};
var Jb = function(a, b) {
var c = String(b);
a.G && (c = c.toLowerCase());
return c
};
xb.prototype.Qa = function(a) {
a && !this.G && (Ib(this), this.D = null, this.j.forEach(function(a, c) {
var d = c.toLowerCase();
c != d && (this.remove(c), this.remove(d), 0 < a.length && (this.D = null, this.j.set(Jb(this, d), Na(a)), this.f = xa(this.f) + a.length))
}, this));
this.G = a
};
xb.prototype.extend = function(a) {
for (var b = 0; b < arguments.length; b++) ob(arguments[b], function(a, b) {
this.add(b, a)
}, this)
};
var Kb = function(a, b, c, d, e) {
this.reset(a, b, c, d, e)
};
Kb.prototype.Ga = null;
var Lb = 0;
Kb.prototype.reset = function(a, b, c, d, e) {
"number" == typeof e || Lb++;
this.zb = d || ka();
this.Y = a;
this.bc = b;
this.nb = c;
delete this.Ga
};
Kb.prototype.Ka = function() {
return this.Y
};
Kb.prototype.tb = function(a) {
this.Y = a
};
Kb.prototype.getMessage = function() {
return this.bc
};
var Mb = function(a) {
this.qb = a;
this.ma = this.Ea = this.Y = this.va = null
},
Nb = function(a, b) {
this.name = a;
this.value = b
};
Nb.prototype.toString = function() {
return this.name
};
var Ob = new Nb("SHOUT", 1200),
Pb = new Nb("SEVERE", 1E3),
Qb = new Nb("WARNING", 900),
Rb = new Nb("INFO", 800),
Sb = new Nb("CONFIG", 700);
h = Mb.prototype;
h.getName = function() {
return this.qb
};
h.getParent = function() {
return this.va
};
h.getChildren = function() {
this.Ea || (this.Ea = {});
return this.Ea
};
h.tb = function(a) {
this.Y = a
};
h.Ka = function() {
return this.Y
};
var Tb = function(a) {
if (a.Y) return a.Y;
if (a.va) return Tb(a.va);
wa("Root logger has no level set.");
return null
};
Mb.prototype.log = function(a, b, c) {
if (a.value >= Tb(this).value)
for (fa(b) && (b = b()), a = new Kb(a, String(b), this.qb), c && (a.Ga = c), c = "log:" + a.getMessage(), aa.console && (aa.console.timeStamp ? aa.console.timeStamp(c) : aa.console.markTimeline && aa.console.markTimeline(c)), aa.msWriteProfilerMark && aa.msWriteProfilerMark(c), c = this; c;) {
b = c;
var d = a;
if (b.ma)
for (var e = 0, f = void 0; f = b.ma[e]; e++) f(d);
c = c.getParent()
}
};
Mb.prototype.info = function(a, b) {
this.log(Rb, a, b)
};
Mb.prototype.config = function(a, b) {
this.log(Sb, a, b)
};
var Ub = {},
Vb = null,
Wb = function() {
Vb || (Vb = new Mb(""), Ub[""] = Vb, Vb.tb(Sb))
},
Xb = function(a) {
Wb();
var b;
if (!(b = Ub[a])) {
b = new Mb(a);
var c = a.lastIndexOf("."),
d = a.substr(c + 1),
c = Xb(a.substr(0, c));
c.getChildren()[d] = b;
b.va = c;
Ub[a] = b
}
return b
};
var Yb = function() {
this.sb = ka()
},
Zb = new Yb;
Yb.prototype.set = function(a) {
this.sb = a
};
Yb.prototype.reset = function() {
this.set(ka())
};
Yb.prototype.get = function() {
return this.sb
};
var $b = function(a) {
this.cc = a || "";
this.ic = Zb
};
h = $b.prototype;
h.ab = !0;
h.ub = !0;
h.gc = !0;
h.fc = !0;
h.vb = !1;
h.hc = !1;
var ac = function(a) {
return 10 > a ? "0" + a : String(a)
},
bc = function(a, b) {
var c = (a.zb - b) / 1E3,
d = c.toFixed(3),
e = 0;
if (1 > c) e = 2;
else
for (; 100 > c;) e++, c *= 10;
for (; 0 < e--;) d = " " + d;
return d
},
cc = function(a) {
$b.call(this, a)
};
q(cc, $b);
var dc = function() {
this.dc = ja(this.Xb, this);
this.ta = new cc;
this.ta.ub = !1;
this.ta.vb = !1;
this.lb = this.ta.ab = !1;
this.mb = "";
this.Zb = {}
};
dc.prototype.Xb = function(a) {
if (!this.Zb[a.nb]) {
var b;
b = this.ta;
var c = [];
c.push(b.cc, " ");
if (b.ub) {
var d = new Date(a.zb);
c.push("[", ac(d.getFullYear() - 2E3) + ac(d.getMonth() + 1) + ac(d.getDate()) + " " + ac(d.getHours()) + ":" + ac(d.getMinutes()) + ":" + ac(d.getSeconds()) + "." + ac(Math.floor(d.getMilliseconds() / 10)), "] ")
}
b.gc && c.push("[", bc(a, b.ic.get()), "s] ");
b.fc && c.push("[", a.nb, "] ");
b.hc && c.push("[", a.Ka().name, "] ");
c.push(a.getMessage());
b.vb && (d = a.Ga) && c.push("\n", d instanceof Error ? d.message : d.toString());
b.ab && c.push("\n");
b = c.join("");
if (c = ec) switch (a.Ka()) {
case Ob:
fc(c, "info", b);
break;
case Pb:
fc(c, "error", b);
break;
case Qb:
fc(c, "warn", b);
break;
default:
fc(c, "debug", b)
} else this.mb += b
}
};
var ec = aa.console,
fc = function(a, b, c) {
if (a[b]) a[b](c);
else a.log(c)
};
var hc = function(a) {
var b = gc;
b && b.info(a, void 0)
};
var _gaq = _gaq || [];
var gc = null,
jc = function(a, b) {
var c = [];
do {
var d = ic(a.exec, a, b);
d && (d.shift(), Oa(c, d))
} while (0 < a.lastIndex);
return c
},
ic = function(a, b, c) {
if (c) {
if (gc) var d = (new Date).getTime();
a = a.call(b, c);
gc && (d = (new Date).getTime() - d, 1 < d && hc("Dur: " + d + " Text Length: " + c.length + " Matched: " + !!a + " Pattern:" + b));
return a
}
},
kc = function(a) {
try {
return decodeURIComponent(a)
} catch (b) {
return a
}
},
lc = function(a) {
return "true" == a || "1" == a || "!0" == a
},
w = function(a, b) {
return ic(a.exec, a, b)
},
oc = function(a, b) {
if (gc) var c = (new Date).getTime();
var d;
try {
var e = b.replace(/([=+-])\s*\n\s*/g, "$1 "),
f = mc(e),
g = nc(f, [";", ",", "\n"], !0),
l = Ja(g, function(b) {
return d = x(new RegExp("^(?:var |(?:\\w*\\.)*)" + a + "\\s*="), b)
});
return l && (d = y(/[^=]*(?:=\s*[a-zA-Z_$][a-zA-Z0-9_$]*)*\s*=\s*(.*)/, l.replace(/\s*\n\s*/g, " ")), n(d)) ? d : !1
} finally {
gc && (c = (new Date).getTime() - c, 1 < c && hc("Extract var " + a + "Dur: " + c + " Text Length: " + b.length + "result: " + d))
}
},
pc = function(a) {
a = a.replace(/\\\\/g, "").replace(/\\'/g, "").replace(/\\"/g, "").replace(/"[^"]*"/g, "_").replace(/'[^'']*'/g,
"_").replace(/^s*[{]\s*(.*)}\s*$/, "$1");
var b = jc(/[{]([^}]*)[}]/g, a);
a = a.replace(/[{][^}]*[}]/g, "_").replace(/\[[^\]]*\]/g, "_");
if (b.some(pc)) return !0;
for (; x(/[{].*[}]/, a);) a = a.replace(/[{][^}]*[}]/g, "__");
return a.split(/\s*,\s*/).some(p(x, /^\s*[_a-zA-Z][_a-zA-Z0-9]*\s*=.*/g))
},
rc = function(a) {
return qc(a).some(function(a) {
return x(/['"]\[.*\]['"]/, a.split(/\s*:\s*/)[1])
})
},
sc = function(a) {
a = a.replace(/\\\\/g, "").replace(/\\'/g, "").replace(/\\"/g, "").replace(/"[^"]*"/g, "_").replace(/'[^'']*'/g, "_").replace(/^s*[{]\s*(.*)}\s*$/,
"$1");
var b = jc(/[{]([^}]*)[}]/g, a);
a = a.replace(/[{][^}]*[}]/g, "_").replace(/\[[^\]]*\]/g, "_");
if (b = b.some(sc)) return !0;
for (; x(/[{].*[}]/, a);) a = a.replace(/[{][^}]*[}]/g, "__");
return b || (a.match(/:/g) || []).length - 1 > (a.match(/,/g) || []).length
},
tc = function(a) {
return !qc(a).every(function(a) {
return -1 != a.indexOf(",") ? (a = (a = w(/\[(.*)\]/, a)) && 1 < a.length ? a[1] : null) ? qc(a).every(function(a) {
return -1 == a.indexOf(",")
}) : !1 : !0
})
},
y = function(a, b, c) {
c = k(c) ? c : 1;
return (a = ic(a.exec, a, b)) ? a.length > c ? a[c] : !0 : !1
},
uc = function(a,
b) {
for (var c, d = 0, e = a.length; d < e; d++) {
var f = y(a[d], b);
if (n(f)) k(c) || (c = f);
else if (!n(f) && !f) return !1
}
return k(c) ? c : !0
},
vc = function(a, b) {
for (var c = 0, d = a.length; c < d; c++) {
var e = y(a[c], b);
if (n(e) || e) return e
}
return !1
},
A = function(a, b) {
return y(a, b.url)
},
wc = function(a, b) {
b || (b = {
lastIndex: -1,
xb: nc(a, [";", ",", "\n"], !0),
text: ""
});
b.lastIndex++;
return b.lastIndex < b.xb.length ? (b.text = b.xb[b.lastIndex], b) : null
},
xc = function(a, b) {
return !a.every(function(a) {
return x(a, b)
})
},
nc = function(a, b, c) {
var d = b || [";", ","];
b = b ? 0 : 1;
var e = {
"(": ")",
"{": "}",
"[": "]"
},
f = void 0,
g = !1,
l = [],
z = [],
C = 0;
a = pa(yc(a));
for (var R = 0, ra = a.length; R < ra; R++) {
var V = a.charAt(R);
g ? g = !1 : "\\" == V ? g = !0 : f ? V == f && (f = void 0) : '"' == V || "'" == V ? f = V : "(" == V || "{" == V || "[" == V ? l.push(e[V]) : l.length ? V == l[l.length - 1] && l.pop() : Ka(d, V) ? (C = pa(a.substring(C, R + b)), !C && c || z.push(C.replace(" *\n *", "")), C = R + 1) : R == C && B[a.charCodeAt(R)] && (C = R + 1)
}
C = pa(a.substring(C, R));
!C && c || z.push(C.replace(" *\n *", ""));
return z
},
zc = function(a) {
a = y(/\{(.*)\}/, a) || a;
return qc(a).map(function(a) {
a =
a.split(":");
var c = a.shift(),
c = y(/"(.*)"/, c) || c,
c = y(/'(.*)'/, c) || c;
return {
key: c,
value: a.join(":")
}
})
},
yc = function(a, b) {
for (var c = void 0, d = !1, e = -1, f = b || 0, g = f, l = a.length; g < l; g++) {
var z = a.charAt(g),
C = g + 1 < l ? a.charAt(g + 1) : "";
if (d) d = !1;
else if (0 <= e) {
if ("*" == z && "/" == C) return a.substring(f, e) + yc(a, g + 2)
} else if ("\\" == z) d = !0;
else if (c) z == c && (c = void 0);
else if ("/" == z) {
if ("/" == C) return c = a.indexOf("\n", g), -1 == c ? a.substring(f, g) : a.substring(f, g) + yc(a, c);
"*" == C && (e = g++)
} else if ('"' == z || "'" == z) c = z
}
return a.substring(f)
},
mc = function(a) {
a = a.replace(/\t/g, " ").replace(/^ *\n+/, "").split("\n");
for (var b = 20, c = 0, d = a.length; c < d && 0 < b; c++)
if (a[c].replace(/[ ]+(\n?)/, "$1"), a[c] && 0 != a[c].indexOf("...")) var e = /^([ ]*)/.exec(a[c]),
e = e ? e[1].length : 0,
b = b < e ? b : e;
if (0 < b)
for (c = 0, d = a.length; c < d; c++) 0 != a[c].indexOf("...") && (a[c] = a[c].substring(b));
return a.join("\n")
},
qc = function(a) {
return nc(a, [","])
},
Bc = function() {
if (Ac("PatternProfiling") && !gc) {
gc = Xb("patterns");
var a = new dc;
if (1 != a.lb) {
Wb();
var b = Vb,
c = a.dc;
b.ma || (b.ma = []);
b.ma.push(c);
a.lb = !0
}
} else gc = null
},
Cc = function(a, b) {
var c = a.split("%s");
if (1 == c.length) return a;
for (var d = "", e = Array.prototype.slice.call(arguments, 1); e.length && 1 < c.length;) d += c.shift() + e.shift();
return d + c.join("%s")
},
x = function(a, b) {
return ic(a.test, a, b)
},
Dc = p(x, /^[-+]?(?:\d*\.)?\d+$/),
Ec = p(x, /^[0-9]{2}:[0-9]{2}:[0-9]{2}$/),
Fc = function(a, b) {
return x(a, b.url)
},
B = [];
B[9] = !0;
B[10] = !0;
B[11] = !0;
B[12] = !0;
B[13] = !0;
B[32] = !0;
B[133] = !0;
B[160] = !0;
B[5760] = !0;
B[6158] = !0;
B[8192] = !0;
B[8193] = !0;
B[8194] = !0;
B[8195] = !0;
B[8196] = !0;
B[8197] = !0;
B[8198] = !0;
B[8199] = !0;
B[8200] = !0;
B[8201] = !0;
B[8202] = !0;
B[8203] = !0;
B[8232] = !0;
B[8233] = !0;
B[8239] = !0;
B[8287] = !0;
B[12288] = !0;
var D = {},
Gc = {},
Hc = {},
Ic = {
kc: "AutoOpenRecordings",
lc: "categories",
mc: "CheckPermissionsLater",
oc: "DefaultLevelOfDetail",
nc: "DebugIssues",
pc: "IgnoreExternalScripts",
qc: "FollowLinks",
rc: "gaDebug",
sc: "GtaPage",
tc: "hideRecordingSuggestion",
uc: "IgnoreExternalScripts",
vc: "isInSupportTeam",
wc: "last-checked-for-support-team",
xc: "LoggedIn",
zc: "LogInfoTemplate",
Ac: "LogSources",
yc: "LoggingEnabled",
Bc: "ManualChecks",
Cc: "ManualScriptParsing",
Fc: "PatternProfiling",
Gc: "RecordingTab",
Hc: "GooglePublisherConsole",
Ic: "ShowIgnoredIssues",
Jc: "ShowWelcomeScreen",
Nc: "WhiteListedDomains",
Lc: "ValidateAllPages"
},
Jc = {
PROD: "https://analytics.google.com/tagrecordings/",
PREPROD: "https://analytics-traffic-analysis-preprod.corp.google.com/tagrecordings/",
INTEGRATION: "https://analytics-traffic-analysis-integration.corp.google.com/tagrecordings/",
PROTOTYPE: "http://fk3.irv.corp.google.com:10010/"
},
Nc = function(a, b) {
Hc = {};
k(chrome) && k(chrome.storage) ? chrome.storage.local.get(null, function(c) {
Kc(c);
Lc(a, b)
}) : D["Options initialized to default values."] ||
(console.log("No chrome storage available."), Mc(), a())
},
Lc = function(a, b) {
k(chrome) && k(chrome.storage) && (chrome.storage.sync.get(null, function(b) {
Kc(b);
b["Options initialized to default values."] || Mc();
a()
}), Oc(b))
},
Ac = function(a) {
a = D[a];
k(a) && Aa(a);
return !!a
},
Pc = function(a, b) {
var c = D[a];
k(c) && Aa(n(c));
c = null == c ? "" : c + "";
return "" != c ? c : b || ""
},
Oc = function(a) {
fa(a) && chrome.storage.onChanged.addListener(function(b) {
for (var c in b) D[c] = b[c].newValue;
fa(a) && a()
})
},
Rc = function() {
var a = {};
ab(Ic, function(b) {
k(D[b]) &&
(a[b] = D[b])
});
Mc();
Qc(a)
},
Mc = function() {
var a = D.categories;
k(chrome) && k(chrome.storage) && (chrome.storage.local.clear(), chrome.storage.sync.clear());
D = {};
var b = {
gaDebug: "off"
};
b.categories = a;
b.GtaPage = "PROD";
b.ManualChecks = !0;
b.ShowWelcomeScreen = !0;
b["Options initialized to default values."] = !0;
b.LogInfoTemplate = "%timestamp|[TabId: %tabid]|[%source]|[%url]";
k(chrome) && k(chrome.storage) && chrome.storage.local.set(b);
Qc(b)
},
Sc = function(a, b, c) {
ab(b, function(a, b) {
null != a && (Gc[b] ? va(typeof a == Gc[b], "Unexpected type " +
typeof a + " expected " + Gc[b]) : Gc[b] = typeof a)
});
Kc(b);
a.set(b, function() {
chrome.runtime && chrome.runtime.lastError ? (Rc(), a.set(b, function() {
console.log("Failed to store values")
})) : c && c()
})
},
Kc = function(a, b) {
a && fb(D, a);
b && b()
},
Tc = k(chrome) && k(chrome.storage) ? p(Sc, chrome.storage.local) : Kc,
Qc = k(chrome) && k(chrome.storage) ? p(Sc, chrome.storage.sync) : Kc,
Uc = function() {
return Pc("GtaPage", "PROD")
};
la("tvt.Settings.getGataPageVersion", Uc);
la("tvt.Settings.setGataPageVersion", function(a) {
a = a || "PROD";
delete Hc.GtaPage;
Qc(gb("GtaPage", a), void 0)
});
var Vc = function() {
var a = Uc();
return Jc[a]
};
la("tvt.Settings.getGataRedirectUrl", Vc);
var Wc = function() {
return Vc() + "internal/"
};
la("tvt.Settings.getGataInternalRedirectUrl", Wc);
la("tvt.Settings.getGataLoginCheckUrl", function() {
return Vc() + "logincheck"
});
la("tvt.Settings.getGataInternalLoginUrl", function() {
return Wc() + "login"
});
la("tvt.Settings.getGataLoginUrl", function() {
return Vc() + "login"
});
la("tvt.Settings.toggleGaDebugSettings", function() {
var a = {};
switch (D.gaDebug) {
case "on":
a.gaDebug = "auto";
break;
case "auto":
a.gaDebug = "off";
break;
case "off":
a.gaDebug = "on";
break;
default:
a.gaDebug = "off"
}
Tc(a)
});
var Xc = function(a, b) {
this.name = a;
this.url = b
};
ab({
"Critical Issues": ["Error"],
"Minor Issues": ["Warning"],
Suggestions: ["Suggestion"],
Working: ["Info", "Fine", "Debug"]
}, function(a) {
for (var b = 0; a[b]; b++);
});
var $c = function(a, b, c, d) {
this.issueClass = b.issueClass;
this.type = b.type;
this.buckets = [];
this.category = b.category;
this.label = d || c || b.label || "";
this.text = Cc(b.text || "", c || this.label);
this.infoLink = n(b.infoLink) ? Cc(b.infoLink, this.label) : void 0;
this.value = b.value || void 0;
this.valueFormat = b.format || b.valueFormat || "";
this.relatedIssues = [];
c = b.relatedIssues || [];
d = 0;
for (var e; e = c[d]; d++) Yc(this, e);
this.view = b.view || a.view;
this.hint = b.hint || null;
this.otherRelatedIssues = [];
this.template = b.template || b;
this.templateMarker =
b.templateMarker || b.text;
this.parent = a;
this.deduped = !!b.deduped;
this.deleted = b.deleted || null;
this.ignored = !!b.ignored;
this.id = b.id;
null != a.relatedIssues && (Zc(this, a.relatedIssues.length), a.relatedIssues.push(this))
};
la("$jscomp.scope.Issue", $c);
var ad = ["Error", "Warning", "Suggestion"],
bd = {
type: "Hidden",
category: "NULL",
text: "NULL",
view: "Metadata"
},
dd = function(a, b) {
var c = Yc(bd, b),
d = {};
cd(d, a, !0);
cd(d, c, !0);
Yc(a, c)
},
fd = function(a, b) {
for (var c = 0, d; d = b[c]; c++) {
var e = ed(a, d.text, d.label);
e ? fd(e, d.relatedIssues) : dd(a, d)
}
},
Yc = function(a, b, c, d) {
return new $c(a, b, c, d)
},
gd = function(a, b, c) {
if (b = E(b, a))
if (a = E(c, a)) a.label = b.label
},
cd = function(a, b, c) {
if (!b.deleted && !b.deduped && "Bucket" != b.type) {
if ("Tag" != b.type) {
var d = a[b.type];
d || (d = {}, a[b.type] = d);
var e =
d[b.text];
e || (e = {}, d[b.text] = e);
(d = e[b.label]) ? c && (b.deduped = !0, fd(d, b.relatedIssues)): e[b.label] = b
}
for (e = 0; d = b.relatedIssues[e]; e++) cd(a, d, c)
}
},
id = function(a, b, c) {
var d = !1;
Fa(a, function(e) {
e.text == b ? (d = !0, hd(a, e, "Deleted because of text match.")) : c || (d = id(e.relatedIssues, b) || d)
});
return d
},
jd = function(a, b) {
var c = !1;
Fa(a, function(d) {
0 <= b.indexOf(d.text) ? (c = !0, hd(a, d, "Deleted because of text match.")) : c = jd(d.relatedIssues, b) || c
});
return c
},
kd = function(a, b, c) {
var d = !1;
Fa(a.relatedIssues, function(e) {
e.text ==
b && e.label == c ? (d = !0, hd(a.relatedIssues, e, "Deleted because of text and label match.")) : d = kd(e, b, c) || d
});
return d
},
ld = function(a, b) {
var c = !1;
Fa(a.relatedIssues, function(d) {
0 <= d.text.indexOf(b) ? (c = !0, hd(a.relatedIssues, d, "Deleted because of text prefix match" + b)) : c = ld(d, b) || c
});
return c
},
nd = function(a, b, c) {
if (m(a))
for (var d = 0, e = 0, f; f = a[e]; e++) {
var g = (c ? c + "." : "") + d++;
console.log(g + " " + f.type + "[" + f.view + "]: " + f.issueClass + ": " + f.text + (f.label && " -- " + qa(f.label.replace("\n", ""), 25)) + (f.deleted ? " deleted:" +
f.deleted : "") + (f.deduped ? " deduped" : "") + (f.ignored ? " ignored:" : "") + (f.parent ? "" : " noparent"));
f.relatedIssues.length && nd(f.relatedIssues, b, g)
} else nd(a.relatedIssues, b, c)
};
$c.dump = nd;
var od = function(a, b) {
return a.filter(function(a) {
return !a.deleted && !a.deduped && Ka(b, a.category)
})
},
pd = function(a, b) {
return a.filter(function(a) {
return !a.deleted && !a.deduped && b == a.category
})
},
qd = function(a, b, c) {
return c && !m(c) ? qd(a, b, [c]) : m(a) ? a.filter(function(a) {
return a.deleted ? !1 : c ? rd(a.relatedIssues, b, c) : sd(a.relatedIssues, b)
}) : qd(a.relatedIssues, b, c)
},
td = function(a) {
return a.filter(function(a) {
return !a.deleted && !a.deduped && 4 == a.issueClass
})
},
ud = function(a, b, c) {
return c && !m(c) ? ud(a, b, [c]) : m(a) ?
a.filter(function(a) {
if (a.deleted) return !1;
a = E(a.relatedIssues, b);
return !!a && !a.deleted && !a.deduped && (!k(c) || 0 <= c.indexOf(a.label))
}) : ud(a.relatedIssues, b, c)
},
vd = function(a, b) {
return n(b) ? vd(a, [b]) : m(a) ? a.filter(function(a) {
return !a.deleted && !a.deduped && 0 <= b.indexOf(a.label)
}) : vd(a.relatedIssues, b)
},
wd = function(a, b) {
return n(b) ? wd(a, [b]) : m(a) ? a.filter(function(a) {
return !a.deleted && !a.deduped && 0 <= b.indexOf(a.text)
}) : wd(a.relatedIssues, b)
},
yd = function(a) {
return a.filter(function(a) {
return !a.deleted &&
!a.deduped && "Tag" == a.type && !0 && xd(a.category)
})
},
zd = function(a, b) {
n(b) && (b = [b]);
return a.filter(function(a) {
return !a.deleted && !a.deduped && "Tag" == a.type && -1 != b.indexOf(a.category)
})
},
Ad = function(a, b, c) {
for (var d = [], e = 0, f; f = a[e]; e++) f.deleted || f.deduped || (b(f) ? d.push(f) : f.type != c && (f = Ad(f.relatedIssues, b, c), 0 == d.length ? d = f : Oa(d, f)));
return d
},
Bd = function(a, b) {
return Ad(m(a) ? a : a.relatedIssues, function(a) {
return b == a.text
})
},
Cd = function(a) {
return Bd(a, "HTTP response code indicates tag failed to fire: Status 404").filter(function(a) {
return "404" ==
a.label
})
},
Dd = function(a, b) {
return Ad(m(a) ? a : a.relatedIssues, function(a) {
return b == a.type
}, void 0)
},
Ed = function(a) {
return Ad(m(a) ? a : a.relatedIssues, function(a) {
return Ka(ad, a.type)
}, "Bucket")
},
Gd = function(a) {
return Fd(m(a) ? a : a.relatedIssues, function(a) {
return "Remarketing Tag" == a.category
})
},
Hd = function(a, b) {
return Fd(m(a) ? a : a.relatedIssues, function(a) {
return b == a.issueClass
})
},
Id = function(a, b) {
return Fd(m(a) ? a : a.relatedIssues, function(a) {
return b == a.label
})
},
E = function(a, b) {
return Fd(m(a) ? a : a.relatedIssues,
function(a) {
return b == a.text
}, void 0)
},
ed = function(a, b, c) {
a = Bd(a, b);
c = vd(a, c);
return 0 < c.length ? c[0] : null
},
Jd = function(a, b) {
if (m(a)) {
var c = Ja(a, function(a) {
return !a.deleted && !a.deduped && 0 <= a.text.indexOf(b)
});
c || a.some(function(a) {
c = !a.deleted && !a.deduped && Jd(a.relatedIssues, b);
return !!c
});
return c
}
return Jd(a.relatedIssues, b)
},
Kd = function(a) {
return Fd(m(a) ? a : a.relatedIssues, function(a) {
return "Bucket" == a.type
})
},
Fd = function(a, b, c) {
for (var d = 0, e; e = a[d]; d++)
if (!e.deleted && (!e.deduped || c) && (b(e) || (e =
Fd(e.relatedIssues, b, c)))) return e;
return null
},
Ld = function(a, b, c) {
for (var d = 0, e; e = a[d]; d++) !e.deleted && !e.deduped && 0 <= b.indexOf(e.category || "") && c(e)
},
Md = function(a, b, c) {
for (var d = 0, e; e = a[d]; d++) e.deleted || e.deduped || b != e.category || c(e)
},
Zc = function(a, b) {
if (a && a && a.category != bd.category) {
var c = "";
switch (a.type) {
case "Bucket":
c = [a.parent.id, a.text].join("-");
break;
case "Tag":
"Bucket" != a.parent.type && (c = [(a.category || "").substring(0, 10), (a.label || "").substring(0, 64)].join("-"));
default:
c = c || [a.parent.id,
b + 1
].join("-")
}
a.id = c.replace(/\s/g, "");
a.relatedIssues.forEach(Zc)
}
},
rd = function(a, b, c) {
return a.some(function(a) {
return !a.deleted && !a.deduped && b == a.text && 0 <= c.indexOf(a.label)
})
},
sd = function(a, b) {
return a.some(function(a) {
return !a.deleted && !a.deduped && b == a.text
})
},
Od = function(a) {
return Nd(a) ? a : Od(a.parent)
},
Pd = function(a) {
return a.some(function(b) {
return 1 < vd(a, b.label).length
})
},
Qd = function(a, b, c) {
return a.some(function(a) {
if (!a.deleted && !a.deduped) {
if (!(a.type != b || c && a.ignored)) return !0;
if (a.relatedIssues.length) return Qd(a.relatedIssues,
b, c)
}
return !1
})
},
xd = function(a) {
return null == a || "Hidden" != Rd(a) && "Off" != Rd(a)
},
Nd = function(a) {
a.parent ? (a = a.parent, a = !a || a.category == bd.category) : a = !0;
return a
},
Rd = function(a) {
a = D[a];
return k(a) && "Default" != a ? a + "" : D.DefaultLevelOfDetail ? Pc("DefaultLevelOfDetail") : "Fine"
},
hd = function(a, b, c) {
La(a, b);
b.deleted || (b.deleted = c);
b.relatedIssues = []
},
Sd = function(a) {
for (var b = 0, c; c = a[b]; b++) c.template = void 0, c.parent = bd, Sd(c.relatedIssues);
return a
},
Td = function(a) {
for (var b = 0, c; c = a[b]; b++) Td(c.relatedIssues),
Fa(c.relatedIssues, function(a, b) {
if (a.deduped && 0 == a.relatedIssues.length || a.deleted) {
var f = c.relatedIssues;
va(null != f.length);
Array.prototype.splice.call(f, b, 1)
}
});
return a
};
var Ud = function(a) {
a = String(a);
if (/^\s*$/.test(a) ? 0 : /^[\],:{}\s\u2028\u2029]*$/.test(a.replace(/\\["\\\/bfnrtu]/g, "@").replace(/(?:"[^"\\\n\r\u2028\u2029\x00-\x08\x0a-\x1f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)[\s\u2028\u2029]*(?=:|,|]|}|$)/g, "]").replace(/(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g, ""))) try {
return eval("(" + a + ")")
} catch (b) {}
throw Error("Invalid JSON string: " + a);
};
var Vd;
Vd = {
Gb: ["BC", "AD"],
Fb: ["Before Christ", "Anno Domini"],
Ib: "JFMAMJJASOND".split(""),
Pb: "JFMAMJJASOND".split(""),
Hb: "January February March April May June July August September October November December".split(" "),
Ob: "January February March April May June July August September October November December".split(" "),
Kb: "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),
Rb: "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),
Ub: "Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),
Tb: "Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),
Mb: "Sun Mon Tue Wed Thu Fri Sat".split(" "),
Sb: "Sun Mon Tue Wed Thu Fri Sat".split(" "),
Dc: "SMTWTFS".split(""),
Qb: "SMTWTFS".split(""),
Lb: ["Q1", "Q2", "Q3", "Q4"],
Jb: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"],
Bb: ["AM", "PM"],
Va: ["EEEE, MMMM d, y", "MMMM d, y", "MMM d, y", "M/d/yy"],
Za: ["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"],
Db: ["{1} 'at' {0}", "{1} 'at' {0}", "{1}, {0}", "{1}, {0}"],
Wa: 6,
Mc: [5, 6],
Xa: 5
};
var Yd = function(a, b, c) {
ea(a) ? (this.date = Wd(a, b || 0, c || 1), Xd(this, c || 1)) : (b = typeof a, "object" == b && null != a || "function" == b ? (this.date = Wd(a.getFullYear(), a.getMonth(), a.getDate()), Xd(this, a.getDate())) : (this.date = new Date(ka()), a = this.date.getDate(), this.date.setHours(0), this.date.setMinutes(0), this.date.setSeconds(0), this.date.setMilliseconds(0), Xd(this, a)))
},
Wd = function(a, b, c) {
b = new Date(a, b, c);
0 <= a && 100 > a && b.setFullYear(b.getFullYear() - 1900);
return b
};
h = Yd.prototype;
h.ra = Vd.Wa;
h.sa = Vd.Xa;
h.clone = function() {
var a = new Yd(this.date);
a.ra = this.ra;
a.sa = this.sa;
return a
};
h.getFullYear = function() {
return this.date.getFullYear()
};
h.getYear = function() {
return this.getFullYear()
};
h.getMonth = function() {
return this.date.getMonth()
};
h.getDate = function() {
return this.date.getDate()
};
h.getTime = function() {
return this.date.getTime()
};
h.getDay = function() {
return this.date.getDay()
};
h.getUTCFullYear = function() {
return this.date.getUTCFullYear()
};
h.getUTCMonth = function() {
return this.date.getUTCMonth()
};
h.getUTCDate = function() {
return this.date.getUTCDate()
};
h.getUTCDay = function() {
return this.date.getDay()
};
h.getUTCHours = function() {
return this.date.getUTCHours()
};
h.getUTCMinutes = function() {
return this.date.getUTCMinutes()
};
h.getTimezoneOffset = function() {
return this.date.getTimezoneOffset()
};
var Zd = function(a) {
a = a.getTimezoneOffset();
if (0 == a) a = "Z";
else {
var b = Math.abs(a) / 60,
c = Math.floor(b),
b = 60 * (b - c);
a = (0 < a ? "-" : "+") + t(c, 2) + ":" + t(b, 2)
}
return a
};
h = Yd.prototype;
h.set = function(a) {
this.date = new Date(a.getFullYear(), a.getMonth(), a.getDate())
};
h.setFullYear = function(a) {
this.date.setFullYear(a)
};
h.setYear = function(a) {
this.setFullYear(a)
};
h.setMonth = function(a) {
this.date.setMonth(a)
};
h.setDate = function(a) {
this.date.setDate(a)
};
h.setTime = function(a) {
this.date.setTime(a)
};
h.setUTCFullYear = function(a) {
this.date.setUTCFullYear(a)
};
h.setUTCMonth = function(a) {
this.date.setUTCMonth(a)
};
h.setUTCDate = function(a) {
this.date.setUTCDate(a)
};
h.add = function(a) {
if (a.years || a.months) {
var b = this.getMonth() + a.months + 12 * a.years,
c = this.getYear() + Math.floor(b / 12),
b = b % 12;
0 > b && (b += 12);
var d;
a: {
switch (b) {
case 1:
d = 0 != c % 4 || 0 == c % 100 && 0 != c % 400 ? 28 : 29;
break a;
case 5:
case 8:
case 10:
case 3:
d = 30;
break a
}
d = 31
}
d = Math.min(d, this.getDate());
this.setDate(1);
this.setFullYear(c);
this.setMonth(b);
this.setDate(d)
}
a.days && (a = new Date((new Date(this.getYear(), this.getMonth(), this.getDate(), 12)).getTime() + 864E5 * a.days), this.setDate(1), this.setFullYear(a.getFullYear()),
this.setMonth(a.getMonth()), this.setDate(a.getDate()), Xd(this, a.getDate()))
};
h.ya = function(a, b) {
return [this.getFullYear(), t(this.getMonth() + 1, 2), t(this.getDate(), 2)].join(a ? "-" : "") + (b ? Zd(this) : "")
};
h.equals = function(a) {
return !(!a || this.getYear() != a.getYear() || this.getMonth() != a.getMonth() || this.getDate() != a.getDate())
};
h.toString = function() {
return this.ya()
};
var Xd = function(a, b) {
a.getDate() != b && a.date.setUTCHours(a.date.getUTCHours() + (a.getDate() < b ? 1 : -1))
};
Yd.prototype.valueOf = function() {
return this.date.valueOf()
};
var $d = function(a, b, c, d, e, f, g) {
this.date = ea(a) ? new Date(a, b || 0, c || 1, d || 0, e || 0, f || 0, g || 0) : new Date(a && a.getTime ? a.getTime() : ka())
};
q($d, Yd);
h = $d.prototype;
h.getHours = function() {
return this.date.getHours()
};
h.getMinutes = function() {
return this.date.getMinutes()
};
h.getSeconds = function() {
return this.date.getSeconds()
};
h.getMilliseconds = function() {
return this.date.getMilliseconds()
};
h.getUTCDay = function() {
return this.date.getUTCDay()
};
h.getUTCHours = function() {
return this.date.getUTCHours()
};
h.getUTCMinutes = function() {
return this.date.getUTCMinutes()
};
h.getUTCSeconds = function() {
return this.date.getUTCSeconds()
};
h.getUTCMilliseconds = function() {
return this.date.getUTCMilliseconds()
};
h.setHours = function(a) {
this.date.setHours(a)
};
h.setMinutes = function(a) {
this.date.setMinutes(a)
};
h.setSeconds = function(a) {
this.date.setSeconds(a)
};
h.setMilliseconds = function(a) {
this.date.setMilliseconds(a)
};
h.setUTCHours = function(a) {
this.date.setUTCHours(a)
};
h.setUTCMinutes = function(a) {
this.date.setUTCMinutes(a)
};
h.setUTCSeconds = function(a) {
this.date.setUTCSeconds(a)
};
h.setUTCMilliseconds = function(a) {
this.date.setUTCMilliseconds(a)
};
h.add = function(a) {
Yd.prototype.add.call(this, a);
a.hours && this.setUTCHours(this.date.getUTCHours() + a.hours);
a.minutes && this.setUTCMinutes(this.date.getUTCMinutes() + a.minutes);
a.seconds && this.setUTCSeconds(this.date.getUTCSeconds() + a.seconds)
};
h.ya = function(a, b) {
var c = Yd.prototype.ya.call(this, a);
return a ? c + " " + t(this.getHours(), 2) + ":" + t(this.getMinutes(), 2) + ":" + t(this.getSeconds(), 2) + (b ? Zd(this) : "") : c + "T" + t(this.getHours(), 2) + t(this.getMinutes(), 2) + t(this.getSeconds(), 2) + (b ? Zd(this) : "")
};
h.equals = function(a) {
return this.getTime() == a.getTime()
};
h.toString = function() {
return this.ya()
};
h.clone = function() {
var a = new $d(this.date);
a.ra = this.ra;
a.sa = this.sa;
return a
};
var ae = function() {},
ce = function(a) {
if ("number" == typeof a) {
var b = new ae;
b.xa = a;
var c;
c = a;
if (0 == c) c = "Etc/GMT";
else {
var d = ["Etc/GMT", 0 > c ? "-" : "+"];
c = Math.abs(c);
d.push(Math.floor(c / 60) % 100);
c %= 60;
0 != c && d.push(":", t(c, 2));
c = d.join("")
}
b.Ra = c;
c = a;
0 == c ? c = "UTC" : (d = ["UTC", 0 > c ? "+" : "-"], c = Math.abs(c), d.push(Math.floor(c / 60) % 100), c %= 60, 0 != c && d.push(":", c), c = d.join(""));
a = be(a);
b.Sa = [c, c];
b.aa = {
Kc: a,
Ya: a
};
b.za = [];
return b
}
b = new ae;
b.Ra = a.id;
b.xa = -a.std_offset;
b.Sa = a.names;
b.aa = a.names_ext;
b.za = a.transitions;
return b
},
be = function(a) {
var b = ["GMT"];
b.push(0 >= a ? "+" : "-");
a = Math.abs(a);
b.push(t(Math.floor(a / 60) % 100, 2), ":", t(a % 60, 2));
return b.join("")
},
de = function(a, b) {
for (var c = Date.UTC(b.getUTCFullYear(), b.getUTCMonth(), b.getUTCDate(), b.getUTCHours(), b.getUTCMinutes()) / 36E5, d = 0; d < a.za.length && c >= a.za[d];) d += 2;
return 0 == d ? 0 : a.za[d - 1]
};
var ge = function(a, b) {
va(k(a), "Pattern must be defined");
va(k(b) || k(Vd), "goog.i18n.DateTimeSymbols or explicit symbols must be defined");
this.wa = [];
this.h = b || Vd;
"number" == typeof a ? ee(this, a) : fe(this, a)
},
he = [/^\'(?:[^\']|\'\')*\'/, /^(?:G+|y+|M+|k+|S+|E+|a+|h+|K+|H+|c+|L+|Q+|d+|m+|s+|v+|V+|w+|z+|Z+)/, /^[^\'GyMkSEahKHcLQdmsvVwzZ]+/],
ie = function(a) {
return a.getHours ? a.getHours() : 0
},
fe = function(a, b) {
for (je && (b = b.replace(/\u200f/g, "")); b;)
for (var c = 0; c < he.length; ++c) {
var d = b.match(he[c]);
if (d) {
d = d[0];
b =
b.substring(d.length);
0 == c && ("''" == d ? d = "'" : (d = d.substring(1, d.length - 1), d = d.replace(/\'\'/, "'")));
a.wa.push({
text: d,
type: c
});
break
}
}
};
ge.prototype.format = function(a, b) {
if (!a) throw Error("The date to format must be non-null.");
var c = b ? 6E4 * (a.getTimezoneOffset() - (b.xa - de(b, a))) : 0,
d = c ? new Date(a.getTime() + c) : a,
e = d;
b && d.getTimezoneOffset() != a.getTimezoneOffset() && (d = new Date(d.getTime() + 6E4 * (d.getTimezoneOffset() - a.getTimezoneOffset())), e = new Date(a.getTime() + (c + (0 < c ? -864E5 : 864E5))));
for (var c = [], f = 0; f < this.wa.length; ++f) {
var g = this.wa[f].text;
1 == this.wa[f].type ? c.push(ke(this, g, a, d, e, b)) : c.push(g)
}
return c.join("")
};
var ee = function(a, b) {
var c;
if (4 > b) c = a.h.Va[b];
else if (8 > b) c = a.h.Za[b - 4];
else if (12 > b) c = a.h.Db[b - 8], c = c.replace("{1}", a.h.Va[b - 8]), c = c.replace("{0}", a.h.Za[b - 8]);
else {
ee(a, 10);
return
}
fe(a, c)
},
le = function(a, b) {
var c;
c = String(b);
var d = a.h || Vd;
if (void 0 !== d.Vb) {
for (var e = [], f = 0; f < c.length; f++) {
var g = c.charCodeAt(f);
e.push(48 <= g && 57 >= g ? String.fromCharCode(d.Vb + g - 48) : c.charAt(f))
}
c = e.join("")
}
return c
},
je = !1,
me = function(a) {
if (!(a.getHours && a.getSeconds && a.getMinutes)) throw Error("The date to format has no time (probably a goog.date.Date). Use Date or goog.date.DateTime, or use a pattern without time fields.");
},
ke = function(a, b, c, d, e, f) {
var g = b.length;
switch (b.charAt(0)) {
case "G":
return c = 0 < d.getFullYear() ? 1 : 0, 4 <= g ? a.h.Fb[c] : a.h.Gb[c];
case "y":
return c = d.getFullYear(), 0 > c && (c = -c), 2 == g && (c %= 100), le(a, t(c, g));
case "M":
a: switch (c = d.getMonth(), g) {
case 5:
g = a.h.Ib[c];
break a;
case 4:
g = a.h.Hb[c];
break a;
case 3:
g = a.h.Kb[c];
break a;
default:
g = le(a, t(c + 1, g))
}
return g;
case "k":
return me(e), le(a, t(ie(e) || 24, g));
case "S":
return le(a, (e.getTime() % 1E3 / 1E3).toFixed(Math.min(3, g)).substr(2) + (3 < g ? t(0, g - 3) : ""));
case "E":
return c =
d.getDay(), 4 <= g ? a.h.Ub[c] : a.h.Mb[c];
case "a":
return me(e), g = ie(e), a.h.Bb[12 <= g && 24 > g ? 1 : 0];
case "h":
return me(e), le(a, t(ie(e) % 12 || 12, g));
case "K":
return me(e), le(a, t(ie(e) % 12, g));
case "H":
return me(e), le(a, t(ie(e), g));
case "c":
a: switch (c = d.getDay(), g) {
case 5:
g = a.h.Qb[c];
break a;
case 4:
g = a.h.Tb[c];
break a;
case 3:
g = a.h.Sb[c];
break a;
default:
g = le(a, t(c, 1))
}
return g;
case "L":
a: switch (c = d.getMonth(), g) {
case 5:
g = a.h.Pb[c];
break a;
case 4:
g = a.h.Ob[c];
break a;
case 3:
g = a.h.Rb[c];
break a;
default:
g = le(a, t(c + 1,
g))
}
return g;
case "Q":
return c = Math.floor(d.getMonth() / 3), 4 > g ? a.h.Lb[c] : a.h.Jb[c];
case "d":
return le(a, t(d.getDate(), g));
case "m":
return me(e), le(a, t(e.getMinutes(), g));
case "s":
return me(e), le(a, t(e.getSeconds(), g));
case "v":
return g = f || ce(c.getTimezoneOffset()), g.Ra;
case "V":
return a = f || ce(c.getTimezoneOffset()), 2 >= g ? a.Ra : 0 < de(a, c) ? k(a.aa.Eb) ? a.aa.Eb : a.aa.DST_GENERIC_LOCATION : k(a.aa.Ya) ? a.aa.Ya : a.aa.STD_GENERIC_LOCATION;
case "w":
return c = a.h.Xa, e = new Date(e.getFullYear(), e.getMonth(), e.getDate()),
b = a.h.Wa || 0, c = e.valueOf() + 864E5 * (((k(c) ? c : 3) - b + 7) % 7 - ((e.getDay() + 6) % 7 - b + 7) % 7), le(a, t(Math.floor(Math.round((c - (new Date((new Date(c)).getFullYear(), 0, 1)).valueOf()) / 864E5) / 7) + 1, g));
case "z":
return a = f || ce(c.getTimezoneOffset()), 4 > g ? a.Sa[0 < de(a, c) ? 2 : 0] : a.Sa[0 < de(a, c) ? 3 : 1];
case "Z":
return e = f || ce(c.getTimezoneOffset()), 4 > g ? (g = -(e.xa - de(e, c)), a = [0 > g ? "-" : "+"], g = Math.abs(g), a.push(t(Math.floor(g / 60) % 100, 2), t(g % 60, 2)), g = a.join("")) : g = le(a, be(e.xa - de(e, c))), g;
default:
return ""
}
};
var ne = function() {
this.yb = "%timestamp|[TabId: %tabid]|[%source]|[%url]";
this.eb = [];
this.jb = []
};
ba(ne);
var oe = new ge("dd-MM-yyyy HH:mm:ss.SSS"),
pe = {
id: "content-script",
name: "Content Script"
},
qe = {
id: "issues",
name: "Issue processing"
},
re = {
id: "recording-page",
name: "Recording Page"
},
se = function(a, b, c, d, e) {
if (Ka(ne.R().eb, a.id)) {
var f = {
timestamp: oe.format(new $d),
source: a.name,
Pc: b
};
fb(f, c || {});
var g = [],
l = [];
Ea(ne.R().jb, function(a) {
var b = a.match(/%(\w+)/i)[1];
null !== f && b in f && (g.push(a.replace(b, "s")), l.push(f[b]))
});
g.push(d);
var z = g.join(" ");
Oa(l, Array.prototype.slice.call(arguments).slice(4));
l.unshift(z);
console.log.apply(console, l)
}
},
te = Ac("LoggingEnabled") ? se : Wa,
ue = function() {
var a = ne.R();
a.yb = Pc("LogInfoTemplate") || "%timestamp|[TabId: %tabid]|[%source]|[%url]";
a.jb = a.yb.split("|");
var b = D.LogSources;
k(b) && za(b);
a.eb = b || [];
te = Ac("LoggingEnabled") ? se : Wa
};
Nc(ue, ue);
var ve = function(a) {
this.Ba = a;
this.index = -1
},
we = function(a) {
a.index++;
return a.index < a.Ba.length ? a : null
};
ve.prototype.current = function() {
va(0 <= this.index);
return this.index < this.Ba.length ? this.Ba[this.index] : null
};
var xe = function(a) {
ve.call(this, Object.keys(a));
this.object = a
};
q(xe, ve);
var F = function(a, b, c, d, e, f, g) {
this.type = a;
this.category = b;
this.text = c;
this.infoLink = d;
this.format = f || "";
this.Z = ye(e);
this.issueClass = 0;
this.N = g || [];
this.b = !1;
this.view = this.hint = this.M = null;
this.context = {}
},
ye = function(a) {
return a ? function(b, c) {
return a.call(this, c)
} : u
},
ze = function(a) {
return a.map(function(a) {
return a.clone()
})
},
Ae = function(a, b, c, d, e, f) {
return new F(a, b, c, void 0, d, e, f)
},
Be = p(Ae, "Debug", null),
G = p(Ae, "Error", null),
Ce = p(Ae, "Fine", null),
De = p(Ae, "Hidden", null),
H = p(Ae, "Info", null),
Ee = p(Ae,
"Suggestion", null),
Fe = p(Ae, "Warning", null),
Ge = H("Implemented in %s");
H("Includes %s");
var He = function(a) {
return G(a, function(a) {
return !Dc(a.label)
})
},
Ie = function(a, b, c) {
b = Ca(c || b, $c);
return a == b.label
},
Je = function(a, b, c) {
b = Ca(c || b, $c);
return y(a, b.label)
},
Le = function(a) {
var b = "${" + a.text + "}",
c = "not set" == a.label ? "" : a.label;
Nd(a) || Ke(Ca(a.parent, $c), b, c);
a.relatedIssues && a.relatedIssues.forEach(function(a) {
Le(a)
})
},
Ke = function(a, b, c) {
a.label = a.label.replace(b, c);
a.text = a.text.replace(b, c);
Nd(a) || Ke(Ca(a.parent, $c), b, c)
},
Me = function(a) {
return p(function(b) {
return a(b.label)
})
};
F.prototype.La = function(a) {
return 0 == a.label.length
};
F.prototype.c = function(a) {
for (var b = 0; b < arguments.length; b++) Oa(this.N, arguments[b]);
return this
};
var Oe = function(a, b, c) {
b.category != a.category && (b.text = k(void 0) ? r(a.text, void 0) : a.text, b.category = a.category, b.type = a.type, b.infoLink = a.infoLink, b.relatedIssues && (a = Ca(b, $c), Le(a), Yc(a, Ne, c, void 0)))
};
F.prototype.bb = function(a) {
a.category = this.category;
a.infoLink = this.infoLink;
return a
};
F.prototype.Ca = function() {
return !0
};
F.prototype.clear = function() {
this.P = null;
this.context = {};
this.b = !1
};
F.prototype.clone = function() {
var a = {},
b;
for (b in this) a[b] = this[b];
a.N.length && (a.N = ze(this.N));
return a
};
var Pe = function(a, b, c) {
return Yc(b, a, c, void 0)
};
F.prototype.B = function(a, b) {
var c = b.template ? Qe(this, b.template, a) : a;
va(this.Ca(c), "Parameter mismatch for " + this.text);
try {
do {
var d = this.Z(c, b),
e;
e = n(d) || d ? Pe(this, b, n(d) ? d : "") : void 0;
e ? (this.N.forEach(function(a) {
a.B(c, e)
}, this), Le(e)) : this.M && (m(this.M) ? this.M.forEach(function(c) {
c.B(a, b)
}) : this.M.B(a, b))
} while (this.b)
} catch (f) {
te(qe, null, this, "Failed finding isues for " + this.text + ": " + f + "\n" + f.stack), aa.fail && aa.fail(this.text + ": " + f)
}
this.clear()
};
var Qe = function(a, b, c) {
var d = c;
b.issueClass != a.issueClass && (1 == a.issueClass ? d = c && c.node || c : 2 == a.issueClass && (d = b.P ? b.P : c));
return d
};
F.prototype.otherwise = function(a) {
this.M = a;
return this
};
F.prototype.setClass = function(a) {
this.issueClass = a;
this.N.forEach(function(b) {
b.setClass(a)
});
return this
};
var I = function(a, b) {
a.format = b;
return a
},
Re = function(a, b) {
a.Z = b;
return a
},
J = function(a, b) {
a.hint = b;
return a
},
K = function(a, b) {
a.infoLink = b;
return a
},
Se = function(a, b) {
a.infoLink = "#" + b;
return a
},
L = function(a, b) {
a.N = b;
return a
},
Te = function(a, b) {
a.type = b;
return a
},
M = function(a, b) {
a.view = b;
return a
},
Ue = function(a, b) {
b && !a.b && (a.b = new xe(b));
a.b && (a.b = we(a.b));
return a.b
},
Ne = Be("__altered");
var Ve = function(a, b, c, d, e, f, g, l) {
F.call(this, a, b, d, e, void 0, g, l);
this.issueClass = 2;
this.Ta = n(c) ? [c] : c;
this.Z = f || u
};
q(Ve, F);
var We = function(a, b, c, d, e, f) {
return new Ve(a, b, void 0, c, void 0, d, e, f)
},
Xe = p(We, "Tag", null),
Ye = p(We, "Bucket", null),
Ze = p(We, "Debug", null),
$e = p(We, "Error", null),
af = p(We, "Fine", null),
bf = p(We, "Hidden", null),
N = p(We, "Info", null),
cf = p(We, "Warning", null),
df = p(We, "Suggestion", null),
ef = J($e("An error occured while the tag was fired: %s", function(a) {
return a.error
}), "The response from the server contained an error message."),
ff = M(J(Ee("Non-standard implementation"), "This suggestion is raised if Tag Assistant cannot find the Google Analytics Snippet on the page. This may happen if you have altered the script or are using a tag manager library."),
""),
gf = J($e("HTTP response code indicates tag failed to fire: Status %s", function(a) {
a = a.statusCode;
return k(a) && 400 <= a ? a + "" : !1
}, "value"), "The HTTP response status code indicates tag failed to fire"),
jf = J(df("Using non-secure code on secure page", function(a) {
var b = O(a),
c = hf(a);
return "http" == b.O && "https" == c.O ? a.documentUrl : !1
}), "The page is using the secure HTTPS protocol, but the request is using the not secured HTTP protocol."),
P = function(a, b, c, d, e, f) {
var g = c || u;
c = function(a, b) {
return b.label
};
try {
fa(e) &&
(c = e)
} catch (l) {
console.log("Error while creating buckets " + a)
}
return L(I(Re(Ye(a), function(a, b) {
return g.call(this, a, b) && "{$GROUP_CHILD_COUNT}_"
}), "value_status"), [I(L(Re(Xe(b), "boolean" == typeof e && e ? g : c), d || []), k(f) ? f : "group_status")])
},
Q = function(a, b, c, d, e, f, g) {
return new Ve("Tag", a, b, c, d, e, f, g)
},
kf = function(a, b) {
return af(a, function(a) {
return Fb(v(a.url)).get(b)
})
},
lf = function(a, b) {
return N(a, function(a) {
a = Fb(O(a)).get(b);
return n(a) ? a : !1
})
},
nf = function(a, b) {
return M(N("URL", function(c) {
try {
var d =
Fb(O(c)).F();
if (a && !mf(d, a) || b && mf(d, b)) return !1
} catch (e) {}
this.text = c.redirectedFrom ? "Redirected URL" : "URL";
return c.url
}, "link_expandable", [I(N("Post Data", function(a) {
return a.postData
}), "value"), jf, Se(J(G("URL Encoding Error", function(a) {
return -1 != a.label.indexOf("&amp;")
}), 'The URL contains the sequence "&amp;", which probably doesn\'t do what you intended to do.'), "url_encoding"), gf, ef, $e("Error while sending request: %s", function(a) {
return k(a.error) ? a.error : !1
}), bf("Redirected to", function(a) {
return a.redirectUrl
}),
bf("redirectedFrom", function(a) {
return a.redirectedFrom
}), Ze("requestId", function(a) {
return a.requestId
}), $e("URL is not parsable.", function(a) {
if (0 < a.url.indexOf("tiba=")) return !1;
try {
return !Fb(v(a.url)).F()
} catch (b) {
return !0
}
})
]), "URLs")
},
mf = function(a, b) {
var c = b + ".";
return !(!b || !Ja(a, function(a) {
return b == a || 0 == a.indexOf(c)
}))
},
S = nf();
Ve.prototype.Ca = function(a) {
return k(a) && k(a.url)
};
Ve.prototype.B = function(a, b) {
(!this.Ta || a && of(this, a.url)) && Ve.ha.B.call(this, a, b)
};
var of = function(a, b) {
return Array.isArray(a.Ta) ? a.Ta.some(function(a) {
return x(new RegExp(a), b)
}) : !0
},
hf = function(a) {
var b = a.documentUri;
b || (b = v(a.documentUrl), a.documentUri = b);
return b
},
O = function(a) {
var b = a.uri;
if (!b) {
b = v(encodeURI(a.url));
if (a.postData) try {
vb(b, a.postData, !0)
} catch (c) {}
a.uri = b
}
return b
};
for (var pf = 0; 10 > pf; pf++);
var qf = function(a) {
var b = a.m;
if (a = b.get("data")) try {
a = decodeURIComponent(a)
} catch (d) {}
var c = (a ? a.toString().split(";") : []).filter(function(a) {
return 0 < a.length
});
b.F().forEach(function(a) {
0 == a.indexOf("data.") && c.push(a.substring(5) + "=" + escape(b.get(a) + ""))
});
return c.join(";")
};
var rf = function(a, b, c, d, e, f) {
F.call(this, a, b, c, d, void 0, f);
this.Z = e || u;
this.issueClass = 3
};
q(rf, F);
var sf = function(a, b, c, d, e) {
return new rf(a, b, c, d, e)
},
tf = function(a, b) {
return new rf("Hidden", a, "Check only", void 0, b, void 0)
},
uf = p(sf, "Error", null),
vf = function(a, b) {
return tf(a, function(a, d) {
b.call(this, a, d);
return !1
})
},
wf = function(a, b) {
for (var c = [], d = 1, e = arguments.length; d < e; d++) c.push(vf(a, arguments[d]));
return c
},
xf = p(sf, "Warning", null);
var yf = function(a, b, c, d, e, f, g, l) {
F.call(this, a, b, c, d, void 0, g, l);
this.ca = e || null;
this.Z = f || u;
this.issueClass = 1
};
q(yf, F);
var zf = function(a, b, c, d, e, f) {
return new yf(a, b, c, void 0, void 0, d, e, f)
},
Af = p(zf, "Tag", null),
Bf = p(zf, "Bucket", null),
T = p(zf, "Error", null),
Cf = p(zf, "Fine", null),
Df = p(zf, "Group", null),
Ef = p(zf, "Hidden", null),
Ff = p(zf, "Info", null),
Gf = p(zf, "Warning", null),
Hf = p(zf, "Suggestion", null),
If = L(M(Hf("Tag is included in an iframe", function() {
return self !== top
}), "Code Snippet"), [M(Ff("IFrame", function() {
return self.location.href
}, "linked"), "IFrame")]),
Jf = Hf("Tag is included in an external script file", function(a) {
return a.externalScript
}),
Kf = M(Cf("Script source", function(a) {
return a.externalScript && a.getAttribute ? a.getAttribute("src") : !1
}, "linked"), "Code Snippet"),
Mf = function() {
return M(Cf("HTML Snippet", function(a) {
return Lf(this, a)
}, "snippet_html"), "Code Snippet").c(Cf("Included in an iframe", function() {
try {
return window.self != window.top
} catch (a) {
return !0
}
}))
},
Lf = function(a, b) {
a.infoLink = "/view_source.html?url=" + encodeURIComponent(document.location.href);
return b && b.outerHTML ? qa(b.outerHTML, 1E3) : ""
},
Nf = function(a, b, c) {
var d = "",
e =
document.location.href;
c.externalScript && (d = "&line=" + c.textContent.substring(0, b).split("\n").length - 1, c.getAttribute && (e = c.getAttribute("src")));
a.infoLink = "/view_source.html?url=" + encodeURIComponent(e) + d;
d = c.textContent;
a = k(500) ? 500 : 400;
c = k(100) ? 100 : 0;
e = b - c;
b = d;
0 < e && (b = d.substring(e), d = b.indexOf("\n"), 0 <= d && d < c && (b = b.substring(d)), b = "..." + b, a += 3);
b.length > a && (b = b.substring(0, a), d = b.lastIndexOf("\n"), 10 < d && (b = b.substring(0, d + 1)), b += "...");
return mc(b)
},
Of = K(M(J(G("No HTTP response detected"), "This may be raised when your implementation has errors, but also if you are offline or if an extension is blocking traffic to the server."),
""), "https://support.google.com/tagassistant/answer/3059154#http_response"),
Pf = function(a, b) {
return b.label
},
Qf = function(a, b, c, d) {
return L(I(Re(Bf(a), function(a, b) {
return !u || u.call(this, a, b) && "{$GROUP_CHILD_COUNT}_"
}), "value_status"), [L(Re(I(Af(b), "group_status"), d || Pf), c || [])])
},
Rf = function(a, b, c, d, e) {
return new yf("Tag", a, b, c, d, e, void 0, void 0)
};
yf.prototype.Ca = function(a) {
return ea(a) || k(a) && k(a.nodeName)
};
yf.prototype.B = function(a, b) {
var c = ea(a) ? document : a;
if (c.externalScript) {
if (!this.ca || 0 == this.ca.indexOf("//script")) return yf.ha.B.call(this, c, b)
} else if (this.ca) {
var d = fa(this.ca) ? this.ca(c, b) : this.ca;
if ("//body" == d) yf.ha.B.call(this, document.body, b);
else {
d = document.evaluate(d, document, null, XPathResult.ANY_TYPE, null);
if (d.resultType == XPathResult.NUMBER_TYPE) return yf.ha.B.call(this, d.numberValue, b);
if (d.resultType == XPathResult.UNORDERED_NODE_ITERATOR_TYPE || d.resultType == XPathResult) try {
for (; c = d.iterateNext();) yf.ha.B.call(this,
c, b)
} catch (e) {}
}
} else yf.ha.B.call(this, c, b)
};
var Sf = function(a, b) {
a.ca = b;
return a
};
var Tf = function(a, b) {
var c = ["No Google Analytics HTTP responses because opted out code detected."];
E(b, "URL") && b.forEach(function(b) {
(4 == b.issueClass || c && 0 <= c.indexOf(b.text)) && La(a, b)
})
};
var Uf = function(a, b, c, d, e, f) {
F.call(this, a, b, c, d, void 0, f);
this.Z = e || this.Yb;
this.issueClass = 8
};
q(Uf, F);
Uf.prototype.Yb = function(a) {
if (a[this.text]) {
try {
this.context = Ud(a[this.text])
} catch (b) {}
return a[this.text]
}
this.context = null;
return !1
};
var Vf = function(a) {
this.missingError = a
},
Wf = function(a, b) {
return new Vf(new Uf("Error", b, "Required variable %s not found. Please check the developer console for errors.", a.infoLink))
};
var U = function(a, b) {
this.priority = b;
this.J = this.Ha = this.Fa = this.qa = null
};
h = U.prototype;
h.Ia = function(a) {
this.Fa || (this.Fa = this.s());
this.Fa.forEach(function(b) {
var c = Yc(bd, bd);
b.B(document, c);
c.relatedIssues.length && c.relatedIssues.forEach(function(b) {
if (Kd(b)) var c = yd(a).filter(function(a) {
return this.Ma(a, b)
}, this);
c && c.length ? c.forEach(function(a) {
Xf(this, a, b)
}, this) : a.push(b)
}, this)
}, this)
};
h.Ja = function(a, b) {
this.Ha || (this.Ha = this.ib());
var c = Yc(bd, bd),
d = {
nodeName: "SCRIPT",
textContent: a,
externalScript: !0,
getAttribute: function(a) {
return "src" == a ? b : void 0
}
};
this.Ha.forEach(function(a) {
a.B(d, c)
}, this);
return c.relatedIssues
};
h.fb = function() {
return []
};
h.gb = function() {
if (null === this.qa) {
var a = {};
this.qa = this.s().filter(function(b) {
return a[b.category] ? !1 : a[b.category] = !0
}).map(function(a) {
var c = ya(a.category);
a = ya(a.infoLink);
return new Xc(c, a)
})
}
return this.qa
};
h.W = function() {
return []
};
h.la = function() {
return []
};
h.ib = function() {
return this.s()
};
h.H = function() {
return this.gb().some(function(a) {
return xd(a.name)
})
};
h.list = function(a) {
a = a || [];
Oa(a, this.s(), this.A(), this.W(), this.fb());
return a
};
h.Ma = function(a, b) {
return a.text == b.text && a.label == b.label
};
var Xf = function(a, b, c) {
var d = Dd(b, "Bucket");
return 0 < d.length ? (c = Dd(c, "Bucket"), c.forEach(function(a) {
var c = Ja(d, function(b) {
return a.text == b.text
});
c ? a.relatedIssues.forEach(function(a) {
var b = c.relatedIssues.filter(function(b) {
return this.Ma(b, a)
}, this);
0 < b.length ? dd(b[0], a) : Yc(c, a)
}, this) : Yc(b, a)
}, a), 0 < c.length) : !1
};
U.prototype.Na = function(a, b) {
7 == b.issueClass ? b.relatedIssues.forEach(ja(this.Na, this, a)) : (id(b.relatedIssues, ff.text), id(a.relatedIssues, Of.text), Xf(this, a, b) || dd(a, b))
};
U.prototype.X = function() {
var a = [];
this.la().forEach(function(b) {
Oa(a, b.text)
});
return a
};
var Yf = function(a, b, c) {
ab(a.X(), function(a, e) {
null == c[e] && null != a.missingError && Yc(b, a.missingError, e, void 0)
})
},
Zf = function(a, b, c) {
a.la().forEach(function(a) {
a.B(c, b)
});
Yf(a, b, c)
};
var $f = function() {
this.ia = [];
this.qa = null;
this.Ab = !1
};
ba($f);
var ag = "chrome-extension: .cloudfront.net .facebook.com .facebook.net .googleapis.com .twitter.com com.atlassian. mail.google.com img-cdn.mediaplex.com jquery sitecatalyst.js ssl.gstatic.com/ui/ //talkgadget.google.com //www.google.com/tagmanager/web/s/ .yahoo.co.jp/pagead/conversion.js .yimg.jp/images/listing/tool/cv/conversion.js".split(" "),
bg = {
"ad.doubleclick.net": !0,
"apis.google.com": !0,
"csi.gstatic.com": !0,
"pagead.googlesyndication.com": !0,
"pagead2.googlesyndication.com": !0,
"stats.g.doubleclick.net": !0,
"survey.g.doubleclick.net": !0,
"www.google-analytics.com": !0,
"www.googleadservices.com": !0
};
L(I(H("Script", function(a) {
if (null == this.b) this.b = 0;
else if (this.b++, this.b == document.scripts.length) return this.b = null, !1;
var b = document.scripts[this.b];
this.infoLink = b.src;
return k(b.src) && "" != b.src && !Id(a.relatedIssues, b.src) && !cg($f.R(), b.src)
}), "link_expandable_with_path"), [Ee("Found <script> tag with empty src attribute.", function(a) {
return a.label == document.location.href
})]);
var dg = function(a, b) {
try {
var c = new XMLHttpRequest;
c.open("GET", a, !0);
var d = !1;
c.onreadystatechange = function() {
if (!d && 4 == c.readyState) {
var e;
a: switch (c.status) {
case 200:
case 201:
case 202:
case 204:
case 206:
case 304:
case 1223:
e = !0;
break a;
default:
e = !1
}
e ? (d = !0, b(c)) : 4 == c.readyState && te(pe, null, null, "Ignored failed script " + a + " Status: " + c.status)
}
};
c.send()
} catch (e) {
te(pe, null, null, "Ignored unreadable script " + a + " Reason:" + e)
}
},
fg = function(a) {
eg($f.R(), a)
},
eg = function(a, b) {
Sa(a.ia, b, function(a, b) {
return a.priority >
b.priority ? 1 : -1
})
};
$f.prototype.X = function() {
for (var a = {}, b = 0, c; c = this.ia[b]; b++) c.H() && fb(a, c.X());
return a
};
$f.prototype.Ia = function() {
var a = [];
if (!cg(this, document.URL))
for (var b = 0, c; c = this.ia[b]; b++) c.H() && c.Ia(a);
return D.DebugIssues ? a : Td(a)
};
$f.prototype.Ja = function(a, b) {
var c = {};
Ea(document.scripts, function(d) {
!d.src || "" == d.src || c[d.src] || cg(this, d.src) || d.src == a || (c[d.src] = !0, dg(d.src, function(a) {
$f.R().ia.forEach(function(c) {
c.H() && (c = c.Ja(a.responseText, d.src), c.length && b(c, d.src))
})
}))
}, this)
};
var gg = function(a, b) {
for (var c = Yc(bd, bd), d = 0, e; e = a.ia[d]; d++) e.H() && Zf(e, c, b);
return c.relatedIssues
},
hg = function(a) {
return ag.some(function(b) {
return 0 <= a.indexOf(b)
})
},
ig = function(a) {
return D.ManualScriptParsing && (D.IgnoreExternalScripts || "").split("\n").some(function(b) {
return 0 < b.length && 0 <= a.indexOf(b)
})
},
cg = function(a, b) {
var c;
(c = hg(b)) || (c = v(b), c = !!bg[c.C]);
return c || ig(b) || jg(a, b)
},
jg = function(a, b) {
return a.ia.some(function(a) {
return a.J && a.H() ? a.J.some(function(a) {
return x(new RegExp(a),
b)
}) : !1
})
},
lg = function(a) {
if (!a.Ab && (a.Ab = !0, a = a.X(), a = Object.keys(a).map(function(a) {
return "'" + a + "': window['" + a + "']"
}), 0 < a.length && (!aa.tvt || !aa.tvt.captureVariables))) {
var b = document.createElement("script");
b.textContent = "var tvt = tvt || {}; tvt.captureVariables = " + kg + ";window.setTimeout(function() {tvt.captureVariables({" + a.join(",") + "})}, 2000);";
(document.head || document.documentElement).appendChild(b)
}
},
kg = function(a) {
for (var b = new Date, c = {}, d = Object.keys(a || {}), e = 0, f; f = d[e]; e++)
if (a.hasOwnProperty(f) &&
"undefined" != typeof a[f]) try {
var g = [];
c[f] = JSON.stringify(a[f], function(a, b) {
try {
if ("function" !== typeof b) {
if ("object" === typeof b && null !== b) {
if (b instanceof HTMLElement || b instanceof Node || -1 != g.indexOf(b)) return;
g.push(b)
}
return b
}
} catch (c) {}
})
} catch (l) {}
a = document.createEvent("CustomEvent");
a.initCustomEvent("TvtRetrievedVariablesEvent", !0, !0, {
variables: c,
date: b
});
window.dispatchEvent(a)
};
var mg = function() {
U.call(this, 0, 1)
},
ng;
q(mg, U);
var og = {
Cb: "AdWords Conversion Tracking",
Nb: "Remarketing Tag"
},
pg = r("%s ${%s}", "AdWords Conversion Tracking", "Conversion ID"),
qg = r("%s ${%s}", "Remarketing Tag", "Conversion ID"),
rg = new F("Tag", "AdWords Conversion Tracking", pg, "https://support.google.com/tagassistant/answer/2947038", void 0, void 0, void 0),
sg = new F("Tag", "Remarketing Tag", qg, "https://support.google.com/tagassistant/answer/2978937", void 0, void 0, void 0),
tg = {
Cb: rg,
Nb: sg
},
ug = {},
vg = {
edu_pid: {
type: 3,
required: !0
},
edu_plocid: {
type: 3
},
edu_pagetype: {
type: 12,
values: "home searchresults program lead complete other".split(" "),
o: !0
},
edu_totalvalue: {
type: 2,
o: !0
},
flight_destid: {
type: 3,
required: !0
},
flight_originid: {
type: 3
},
flight_pagetype: {
type: 12,
values: "home searchresults offerdetail cart purchase cancel other".split(" "),
o: !0
},
flight_startdate: {
type: 11,
o: !0
},
flight_enddate: {
type: 11
},
flight_totalvalue: {
type: 2,
o: !0
},
hotel_hotel_id: {
type: 3,
required: !0
},
hotel_pagetype: {
type: 12,
values: "home searchresults property cart purchase cancel other".split(" "),
o: !0
},
hotel_checkindate: {
type: 11
},
hotel_checkoutdate: {
type: 11
},
hotel_totalvalue: {
type: 2,
o: !0
},
hrental_id: {
type: 3
},
hrental_pagetype: {
type: 12,
values: "home searchresults offerdetail conversionintent conversion other".split(" "),
o: !0
},
hrental_startdate: {
type: 11
},
hrental_enddate: {
type: 11
},
hrental_totalvalue: {
type: 2,
o: !0
},
job_id: {
type: 1,
required: !0
},
job_locid: {
type: 3
},
job_pagetype: {
type: 12,
values: "home searchresults offerdetail conversionintent conversion other".split(" "),
o: !0
},
job_totalvalue: {
type: 2,
o: !0
},
local_id: {
type: 3,
required: !0
},
local_pagetype: {
type: 12,
values: "home searchresults offerdetail conversionintent conversion other".split(" "),
o: !0
},
local_totalvalue: {
type: 2,
o: !0
},
listing_id: {
type: 3,
required: !0
},
listing_pagetype: {
type: 12,
values: "home searchresults offerdetail conversionintent conversion other".split(" "),
o: !0
},
listing_totalvalue: {
type: 2
},
ecomm_prodid: {
type: 19,
required: !0
},
ecomm_category: {
type: 1
},
ecomm_pagetype: {
type: 12,
values: "home searchresults category product cart puchase other".split(" "),
o: !0
},
ecomm_totalvalue: {
type: 2,
o: !0
},
travel_destid: {
type: 3,
required: !0
},
travel_originid: {
type: 3
},
travel_pagetype: {
type: 12,
values: "home searchresults offerdetail cart purchase cancel other".split(" "),
o: !0
},
travel_startdate: {
type: 11
},
travel_enddate: {
type: 11
},
travel_totalvalue: {
type: 2,
o: !0
},
dynx_itemid: {
type: 3,
required: !0
},
dynx_itemid2: {
type: 3
},
dynx_pagetype: {
type: 12,
values: "home searchresults offerdetail conversionintent conversion other".split(" "),
o: !0
},
dynx_totalvalue: {
type: 2,
o: !0
}
},
wg = [];
ab(vg, function(a, b) {
wg.push(b.toLowerCase())
});
mg.prototype.gb = function() {
ng || (ng = [], ab(tg, function(a) {
ng.push(new Xc(a.category, a.infoLink))
}));
return ng
};
var xg = r("<%s> tag found.", "iframe"),
yg = r("<%s> tag found.", "img"),
zg = r("<%s> tag found.", "noscript"),
Ag = r("<%s> tag found.", "script"),
Bg = {
iframe: xg,
img: yg,
noscript: zg,
script: Ag
},
Cg = r(" in the <%s> tag", "iframe"),
Dg = r(" in the <%s> tag", "img"),
Eg = r(" in the <%s> tag", "noscript"),
Fg = r(" in the <%s> tag", "script"),
Gg = {
iframe: Cg,
img: Dg,
noscript: Eg,
script: Fg
},
Hg = function(a) {
var b = uc([/(?:viewthrough)?conversion\/([^/?]*)/, /^((?![?]ai=)(.|\n))*$/], a);
return n(b) ? (0 == b.length && (b = "undefined"), a = y(/[&?;#]label=([^&?#]*)/,
a), n(a) ? b + ";" + a : b) : b
},
Ig = function(a) {
a = a.label.split(";")[0];
this.format = "copyable";
return "undefined" == a ? "not set" : a
},
Jg = function(a) {
a = y(/[^;]*;(.*)/, a.label);
return "boolean" == typeof a || "undefined" == a ? "not set" : a
},
Kg = xf("Conversion value missing in <noscript> tag."),
Lg = G("Mismatch of conversion ID in <script> tag and <%s> tag."),
Mg = G("Mismatch of conversion label in <script> tag and <%s> tag."),
Ng = M(uf("Missing <noscript> tag."), "Code Snippet"),
Og = function(a) {
try {
var b = O(a),
c = b.m.ea("data");
c || (c =
b.m.F().some(function(a) {
return 0 == a.indexOf("data.")
}));
return c
} catch (d) {
return !1
}
};
mg.prototype.A = function() {
return [Q("Remarketing Tag", ["www.google.[a-z]*/ads/user-lists/"], qg, sg.infoLink || "", function(a) {
var b = O(a);
return (a = y(/\/ads\/user-lists\/(\d*)\//, b.g)) ? (b = Gb(b, "label"), k(b) ? a + ";" + b : a) : !1
}, "", [K(H("Conversion ID", Ig), void 0), I(H("Conversion Label", Jg), "copyable"), bf("Troubleshoot", function(a) {
return (a = a.redirectedFrom) && 0 <= a.indexOf("googleads.g.doubleclick.net/pagead/") ? (a = a.concat("&deb=c2&srr=n"), a.hasOwnProperty("fmt") || (a = a.concat("&fmt=1")), this.infoLink = a = a.replace("script=0",
"script=1"), "redirect url") : !1
}), S]), Q("AdWords Conversion Tracking", ["www.google.[a-z]*/ads/conversion/"], pg, rg.infoLink || "", function(a) {
var b = O(a);
return (a = y(/\/ads\/conversion\/(\d*)\//, b.g)) ? (b = Gb(b, "label"), k(b) ? a + ";" + b : a) : !1
}, "", [K(H("Conversion ID", Ig), void 0), I(H("Conversion Label", Jg), "copyable"), S]), Q("AdWords Conversion Tracking", ["googleadservices.com/pagead/", "googleads.g.doubleclick.net/pagead/"], pg, rg.infoLink || "", function(a) {
Oe(rg, this, "Reset.");
if (Og(a)) Oe(sg, this, "URL detected as smart pixel.");
else {
var b = O(a);
if (na(b.g, "wcm")) return !1
}
return Hg(a.url)
}, "", [K(H("Conversion ID", Ig), void 0), I(H("Conversion Label", Jg), "copyable"), bf("validation anchor", function(a) {
a = O(a);
return !!qf(a)
}).c(Pg()), L(lf("Conversion Value", "value"), [Se(Ee("Conversion Value should be prefixed with standard currency.", function(a) {
$a();
return !(a.label.substring(0, 3) in Za)
}), "value_not_set")]), L(lf("Conversion Currency", "currency_code"), [Se(Ee("Conversion Currency should be exactly 3 characters.", function(a) {
return 3 !==
a.label.length
}), "value_not_set"), Se(Ee("Conversion Currency should consists of only letters.", function(a) {
return !y(/\w{3}/, a.label)
}), "value_not_set"), Se(Ee("Conversion Currency is not a standard currency.", function(a) {
$a();
return !(a.label in Za)
}), "value_not_set")]), M(cf("Ref/URL GET param did not match with actual URL.", function(a) {
var b = O(a);
a = hf(a);
if (!k(a)) return !1;
a = a.C;
var c = Gb(b, "url"),
d;
if (d = k(c)) d = v(decodeURIComponent(c)), d = a == d.C;
if (d) return !1;
b = Gb(b, "ref");
if (d = k(b)) d = v(decodeURIComponent(b)),
d = a == d.C;
return d ? !1 : k(c) || k(b)
}), "URLs"), N("Implemented in Teracent.", function(a) {
return (a = a.redirectedFrom) && 0 <= a.indexOf(".teracent.") ? a : !1
}, "link_expandable").otherwise(ff), nf(null, "data")]), L(Q("Website Call Metrics", ["www.gstatic.com/wcm/loader.js"], "Website Call Metrics", "http://www.google.com/ads/innovations/callmetrics.html", function(a) {
return !!a.url
}), [H("Script loaded."), G("Could not find _googWcmGet call.")]), L(Q("Website Call Metrics", ["googleadservices.com/pagead/"], "Website Call Metrics",
"http://www.google.com/ads/innovations/callmetrics.html",
function(a) {
a = O(a);
return na(a.g, "wcm")
}), [P("Requests", "Request", u, [L(N("Conversion ID", p(A, /pagead\/conversion\/([^/]*)\/wcm/)), [G("Conversion ID malformed", function(a) {
return !x(/^\d+$/, a.label)
})]), lf("Conversion Label", "cl").c(G("Conversion label not set", function(a) {
return "100" == a.label
})), lf("Conversion Value", "cv"), lf("Fallback", "fb"), S])])]
};
var Pg = function() {
var a = L(N("Data", function(a) {
a = O(a);
return qf(a)
}, "map"), [G("Multiple product IDs need to be stored in an array.", function(a) {
return x(/prodid=[^;]*\\,/, a.label)
})]);
return P("Requests", "Request", function(a) {
a = O(a);
return !!qf(a)
}, [a, nf("data").c(bf("data anchor"))])
};
mg.prototype.Ma = function(a, b) {
return a.label == b.label && (a.category == rg.category || a.category == sg.category || "Website Call Metrics" == a.category)
};
var Qg = function(a, b) {
return [L(K(H("Conversion ID", Ig), void 0), [Se(G("Conversion ID not set" + a + ".", function(a) {
return a && "not set" == a.label ? "not set" : !a || "1234567890" != a.label && 0 != a.label ? !1 : "invalid"
}), "id_not_set").otherwise(G("Conversion ID should not have quotations around it.", function(a) {
var b = a.parent.label.split(";"),
e = y(/['"](\d*)['"]/, b[0]);
return n(e) ? (b[0] = e, a.label = e, a.parent.label = b.join(";"), !0) : !1
}).otherwise(G("Conversion ID malformed" + a + ": %s.", function(a) {
var b = a.parent.label.split(";"),
e = y(/[^0-9]*([0-9]*)/, b[0]);
if (b[0] != e) {
var f = b[0];
b[0] = n(e) && "" != e ? e : "undefined";
a.parent.label = b.join(";");
return f
}
return !1
})))]), L(I(H("Conversion Label", Jg), "copyable"), [Se(G("Conversion label not set" + a + ".", function(a) {
return !a || "not set" != a.label && "null" != a.label ? !1 : "not set"
}), "label_not_set")]), L(Ff("Conversion Value" + a, function(a, d) {
return b && "AdWords Conversion Tracking" == d.category ? b.call(this, a, d) || "not set" : !1
}), [Se(Ee("Conversion value not set" + a + ".", function(a) {
return "not set" == a.label
}),
"value_not_set").otherwise(Se(G("Dynamic conversion value in wrong format" + a + ".", function(a) {
return !Dc(a.label)
}), "dynamic_value"))]), Of]
},
Rg = function(a) {
var b = "noscript" == a ? "text()" : "@src";
return L(Rf("AdWords Conversion Tracking", pg, rg.infoLink || "", r('//%s[contains(%s, "%s") or contains(%s, "%s")]', a, b, "googleadservices.com/pagead/", b, "googleads.g.doubleclick.net/pagead/"), function(a) {
Oe(rg, this, "Default");
a = a.getAttribute("src") || a.textContent;
x(/[?&]data(?:\.[a-zA-Z0-9_]+)?=/, a) && Oe(sg, this, "data param in DOM src");
return Hg(a)
}), Qg(Gg[a], function(a) {
a = a.getAttribute("src") || a.textContent;
return y(/[&?;#]value=([^&?#]*)/, a)
})).c([M(Ff(Bg[a], function(a) {
return Lf(this, a)
}, "snippet_html"), "Code Snippet"), M(Hf("Update to script based tracking.", function() {
return "i" == a[0]
}), "Code Snippet")])
},
Sg = function() {
var a = /google_conversion_id\s*=\s*(?:[a-zA-Z._]*\s*=\s*)?([^;,]*)/g,
b = L(Rf("AdWords Conversion Tracking", pg, rg.infoLink || "", "//script", function(b) {
var d = x(/google_conversion/i, b.textContent) && w(a, b.textContent);
this.b = a.lastIndex;
if (!d) return !1;
var e = "" == d[1] ? "undefined" : d[1],
f;
b = b.textContent.substring(d.index);
if (gc) var g = (new Date).getTime();
f = f || "";
var l = b.replace(/\\\\/g, "__TA_BACKSLASH__").replace(/\\'/g, "__TA_SINGLE_QUOTE__").replace(/\\"/g, "__TA_DOUBLE_QUOTE__"),
d = y(RegExp("(?:^|[; \\t\\n])(?:\\w*\\.)*google_conversion_label\\s*=\\s*\\'([^\\']*)\\'\\s*(?:[;,\n]|$)", f), l);
n(d) || (d = y(RegExp('(?:^|[;, \\t\\n])(?:\\w*\\.)*google_conversion_label\\s*=\\s*"([^"]*)"\\s*(?:[;,\n]|$)', f), l));
d = d && d.replace(/__TA_BACKSLASH__/g,
"\\\\").replace(/__TA_SINGLE_QUOTE__/g, "\\'").replace(/__TA_DOUBLE_QUOTE__/g, '\\"');
gc && (f = (new Date).getTime() - g, 1 < f && hc("Extract string google_conversion_labelDur: " + f + " Text Length: " + b.length + "result: " + d));
f = d;
n(f) && (e = e + ";" + f);
return e
}), Qg("", function(a, b) {
var e = b.label.split(";"),
e = 1 < e.length ? e[1] : "";
"not set" == e && (e = "");
return vc([new RegExp(e + "(?:[^}])*google_conversion_value\\s*=\\s*([^;,}\\s]*)"), new RegExp("google_conversion_value\\s*=\\s*([^;,}\\s]*)(?:.|\\n)*?" + b.label.split(";")[1])],
a.textContent)
}));
b.c([M(Ef("Remarketing Only Flag", function(a, b) {
var e = y(/google_remarketing_only\s*=\s*([a-z01!]+)/, a.textContent);
n(e) && lc(e) ? Oe(sg, b, "google_remarketing_only") : e && Oe(rg, b, "no remarketing marker in script");
return e
}), "Code Snippet"), M(Cf("Code Template", function(a) {
return 0 < a.textContent.indexOf("goog_report_conversion") ? "Call on-site" : !1
}), "Code Snippet"), M(T("Missing conversion.js script.", function() {
return !Ha(document.scripts, function(a) {
return a.src && x(/[/]conversion(_async)?.js/,
a.src)
})
}), "Code Snippet"), M(Se(T("Missing closing \x3c/script> tag.", function(a) {
return !a.externalScript && uc([/\/\*\s*<!\[CDATA\[\s*\*\//, /\/\*\s*]]\x3e\s*\*\//, /<script.*>/], a.textContent)
}), "missing_closing"), "Code Snippet"), M(Se(T("Incorrect script attribute.", function(a) {
return !!a.getAttribute("language")
}), "script_attribute"), "Code Snippet"), M(Se(Gf("Missing CDATA comments.", function(a) {
return xc([/\/\*\s*<!\[CDATA\[\s*\*\//, /\/\*\s*]]\x3e\s*\*\//], a.textContent) && xc([/\/\/\s*<!\[CDATA\[/, /\/\/\s*]]\x3e/],
a.textContent)
}), "cdata_comments"), "Code Snippet"), M(Se(Hf("Missing line breaks may cause issues.", function(a) {
a = a.textContent.replace(/[\t ]+/g, " ").replace(/\s*\n\s*/g, "\n").trim();
return n(a) && 100 < a.length && a.split("\n").length < (-1 != a.indexOf("CDATA") ? 5 : 3)
}), "line_break"), "Code Snippet"), M(Se(T("Code found outside of <body> tag.", function(a) {
if (!a.externalScript) {
for (; a = a.parentNode;)
if ("BODY" == a.tagName) return !1;
return !0
}
return !1
}), "body_tags"), "Code Snippet").otherwise(M(Se(Hf("Code should be placed directly above the closing <body> tag.",
function(a) {
return !a.externalScript && "BODY" != a.parentNode.tagName
}), "body_tags"), "Code Snippet")), M(Ff(Ag, function(a) {
var b = w(/google_conversion_id\s*=\s*([^;,]*)/mi, a.textContent);
return Nf(this, b.index, a)
}, "snippet_js"), "Code Snippet"), K(Ef("Custom parameter name", function(a) {
a = oc("google_custom_params", a.textContent);
return n(a) && (a = y(/(?:window\.)([a-zA-Z_$][a-zA-Z_$0-9]*)/, a), n(a)) ? (ug[a] = "google_tag_params" == a ? new Vf : Wf(this, "Remarketing Tag"), Sf(this.N[0], '//script[contains(text(), "var ' +
a + '")]'), a) : !1
}), "https://developers.google.com/adwords-remarketing-tag/parameters").c(L(Ef("Custom Parameters Snippet", function(a) {
return !!Ue(this, ug) && oc(this.b.current(), a.textContent)
}), [G("Conversion tag parameters object not correctly formed.", Me(function(a) {
a = a.replace(/\s*\n\s*/g, "");
return !(x(/\{(?:.|\n)*\}$/, a) || x(/[a-zA-Z_$][a-zA-Z_$0-9.]*$/, a))
})), G("Keys and values must be separated using colons.", Me(pc)), G("Missing commas in between key-value element pairs.", Me(sc)), L(I(H("Conversion tag parameters",
function(a) {
a = a.label.replace(/\s*\n\s*/g, "");
return y(/^\s*\{?(.+?)\}?\s*$/m, a)
}), "esc_json"), [Ee("Pass multiple values in an array.", Me(tc)), G("Value passed as array has misplaced quotes.", Me(rc)), Fe("Tag Paramater object could not be parsed."), G("Attribute key contains space or non-ASCII characters.", function(a) {
return qc(a.label).some(function(a) {
a = a.split(":");
return 1 < a.length && !y(/^["|']?\s*[a-zA-Z0-9_]+\s*["|']?$/g, a[0])
})
})])])), Ef("Report Conversion", function(a) {
return y(/goog_report_conversion/,
a.textContent)
}), If, Jf, Kf]);
return b
};
mg.prototype.s = function() {
return [Sg(), Rg("img"), Rg("iframe"), Rg("noscript"), Rf("Website Call Metrics", "Website Call Metrics", "http://www.google.com/ads/innovations/callmetrics.html", "//body", function(a) {
return x(/_googWcmGet/, a.getAttribute("onload"))
}).c(Ff("Initialized onload."), M(Cf("Script", function(a) {
return Lf(this, a.cloneNode(!1))
}, "snippet_js"), "Code Snippet"), M(Fe("WCM loader script not detected."), "Code Snippet"), Tg, Ug), Rf("Website Call Metrics", "Website Call Metrics", "http://www.google.com/ads/innovations/callmetrics.html",
"//script",
function(a) {
return "" != a.src ? x(/https?:\/\/www.gstatic.com\/wcm\/loader.js/, a.src) : x(/(_googWcmGet\s*\()/, a.textContent)
}).c(Cf("Script loaded.", function(a) {
return "" != a.src
}).otherwise(Fe("WCM loader script not detected.")), M(Cf("Script", function(a) {
var b = w(/(_googWcmGet\s*\()/, a.textContent);
return !!b && Nf(this, b.index, a)
}, "snippet_js"), "Code Snippet"), Tg, Ug)]
};
var Ug = L(I(M(Ce("gwcm", function() {
for (var a = document.cookie.split(/; */), b = 0, c = a.length; b < c; b++) {
var d = a[b].split("=");
if ("gwcm" == d[0]) return d[1]
}
return !1
}), "Cookies"), "esc_json"), [M(H("Conversion Number", function(a) {
a = zc(unescape(a.label));
return (a = Ja(a, function(a) {
return "number" == a.key
})) ? (this.text = "null" == a.value ? "Conversion number not set." : "Conversion Number", "null" == a.value ? "" : a.value) : !1
}), "Metadata"), M(H("Conversion Label", function(a) {
a = zc(unescape(a.label));
a = Ja(a, function(a) {
return "clabel" ==
a.key
});
return null != a ? y(/"(.*)"/, a.value) || a.value : !1
}), "Metadata").c(G("Conversion label not set", function(a) {
return "100" == a.label
})), M(H("Conversion Value", function(a) {
a = zc(unescape(a.label));
a = Ja(a, function(a) {
return "cvalue" == a.key
});
return null != a ? y(/"(.*)"/, a.value) || a.value : !1
}), "Metadata")]).otherwise(Ce("No Cookie information for Web Call Metrics.")),
Tg = Ff("Element ID or class name", function(a) {
a = a.getAttribute("onload") || a.textContent;
return y(/_googWcmGet\s*\(\s*'([^']*)'/, a) || y(/_googWcmGet\s*\(\s*"([^"]*)"/,
a)
}).c(Fe("WCM Number element should not contain markup.", function(a) {
if (document.getElementById(a.label)) {
a.text = "Element ID";
var b = document.getElementById(a.label).children;
a = 0;
for (var c; c = b[a]; a++)
if (c.nodeType == Node.ELEMENT_NODE) return !0
} else if (document.getElementsByClassName(a.label).length) {
a.text = "Class name";
b = document.getElementsByClassName(a.label);
a = 0;
for (var d; d = b[a]; a++)
for (var e = 0; c = d.children[e]; e++)
if (c.nodeType == Node.ELEMENT_NODE) return !0
} else a.text = "Element ID or class name";
return !1
}),
G("Element ID or class name contains illegal character.", function(a) {
return y(/w/, a.label)
}).otherwise(G("Element ID or class name not matched in the DOM.", function(a) {
return document.getElementById(a.label) || document.getElementsByClassName(a.label).length ? !1 : !0
})), G("Element ID used for multiple elements. Use the class name instead.", function(a) {
return 1 < document.querySelectorAll("#" + a.label).length
})),
Wg = function(a) {
var b = od(a, ["Website Call Metrics"]);
if (1 < b.length) {
var c = b.shift();
b.forEach(function(b) {
La(a,
b);
fd(c, b.relatedIssues)
})
}
var d = od(a, cb(og)),
e = d.filter(function(a) {
return 0 == wd(a, [yg, zg])
});
["iframe", "img", "noscript"].forEach(function(b) {
var c = qd(d, Bg[b]);
c.length && e.forEach(function(d) {
vd(c, [d.label]).forEach(function(c) {
var e = Nd(d);
if ("Tag" == c.type && d != c && e) {
e = E(c, "Conversion Value" + Gg[b]);
if (null != e) {
var g = E(d, "Conversion Value");
if (null != g && g.label != e.label) {
var ra = parseFloat(g.label),
V = parseFloat(e.label);
"not set" == g.label || !isNaN(ra) || isNaN(V) || x(/^\s*[$\u20ac\u00a2\u00a3]?\s*[0-9.]+/,
g.label) ? ra == V || isNaN(ra) || isNaN(V) || (ra = r("Conversion value mismatch between <script> and <%s> tag.", b), Pe(G(ra), e, e.label).otherRelatedIssues = [g.id]) : (g.label = e.label, ld(g, "Dynamic conversion value in wrong format"))
} else kd(c, e.text, e.label)
}
jd(c.relatedIssues, [Of.text, "Update to script based tracking.", "Requests"]);
La(a, c);
Vg(d, c)
}
})
})
})
},
Vg = function(a, b) {
["Conversion ID malformed", "Conversion ID not set", "Conversion label not set", "Conversion value missing in <noscript> tag.", "Dynamic conversion value in wrong format"].forEach(function(c) {
Jd(a,
c) && ld(b, c)
});
dd(a, b)
};
mg.prototype.ob = function(a, b, c) {
var d = od(c, ["AdWords Conversion Tracking", "Remarketing Tag"]).filter(function(a) {
return 1 == a.issueClass
}),
e = d.filter(function(a) {
return 0 == wd(a, [yg, xg, zg])
});
b = qd(d, b);
for (var e = e.filter(function(a) {
return 0 == ud(a, zg).length
}), d = 0, f; f = e[d]; d++) {
var g = !1;
if (0 < b.length) {
if ("undefined;undefined" == f.label) var l = b.slice(0, 1)[0],
g = !0;
else if (0 == f.label.indexOf("undefined;")) var z = ud(b, "Conversion Label", f.label.split(";")[1]),
g = 0 != z.length;
else if (0 < f.label.indexOf(";undefined") ||
1 == f.label.split(";").length) z = ud(b, "Conversion ID", f.label.split(";")[0]), g = 0 != z.length;
z && 0 < z.length ? l = z[0] : l || d != e.length - b.length || (l = b[0])
}
if (l) {
if (g) f.label = l.label, g = E(f, "Conversion ID"), g.label = f.label.split(";")[0], ld(g, "Conversion ID not set"), E(f, "Conversion Label").label = Jg(f);
else {
var C = l.label.split(";")[0] == f.label.split(";")[0],
g = C ? "Conversion Label" : "Conversion ID",
C = C ? Mg : Lg,
R = E(f, g),
C = Yc(R, C, a, "details"),
g = E(l.relatedIssues, g);
C.otherRelatedIssues.push(g.id)
}(g = Hd(l, 2)) ? (this.Na(f,
g), La(l.relatedIssues, g)) : id(l.relatedIssues, Of.text);
g = Pe(I(Df("<" + a + "> tag"), "group"), bd, "");
Vg(g, l);
Vg(f, g);
La(c, l)
}
}
};
var Xg = function(a) {
Ld(a, ["AdWords Conversion Tracking", "Remarketing Tag"], function(a) {
1 != a.issueClass || ed(a, "Code Template", "Call on-site") || E(a, zg) || E(a, Jf.text) || !E(a, Ag) || Jd(a, r(Ge.text, "")) || Yc(a, Ng, void 0, void 0)
})
};
mg.prototype.ac = function(a) {
var b = od(a, ["AdWords Conversion Tracking", "Remarketing Tag"]),
c = ud(b, ff.text);
0 != c.length && (b = ud(b, Of.text), 0 != b.length && (b.filter(function(b) {
var e = y(/([0-9])+;[^ ]+/, b.label);
return n(e) && (e = ud(c, "Conversion ID", e), 0 < e.length) ? (La(c, e[0]), La(a, e[0]), Yg(this, b, e[0]), !0) : !1
}, this).forEach(p(La, b)), b.forEach(function(b) {
if (!y(/([0-9])+;[^ ]+/, b.label) && 0 < c.length) {
var e = c.pop();
La(a, e);
Yg(this, b, e)
}
}, this)))
};
var Yg = function(a, b, c) {
ld(b, "Conversion ID malformed");
ld(b, "Conversion ID not set");
ld(b, "Conversion label not set");
b.category = c.category;
b.text = c.text;
b.label = c.label;
gd("Conversion ID", c, b);
gd("Conversion Label", c, b);
a.Na(b, c)
},
Zg = function(a) {
Md(a, "AdWords Conversion Tracking", function(a) {
if (!Jd(a, "Dynamic conversion value in wrong format")) {
var c = E(a.relatedIssues, "Remarketing Only Flag");
c && lc(c.label) ? (Oe(sg, a, "Remarketing Only Flag true"), ld(a, "Conversion Value")) : Gd(a.relatedIssues) && (Oe(sg,
a, "AWCT tag does have smart pixel child."), ld(a, "Conversion Value"))
}
})
},
$g = function(a) {
Ld(a, cb(og), function(a) {
"Tag" == a.type && id(a.relatedIssues, "Missing conversion.js script.")
})
},
ah = function(a) {
Md(a, "Remarketing Tag", function(a) {
E(a, "Custom parameter") && (a = Bd(a, "Conversion tag parameters"), 0 < a.length && a.forEach(function(a) {
id(a.relatedIssues, "Tag Paramater object could not be parsed.");
var b;
if (b = !Qd(a.relatedIssues, "Error", !0)) b = !Qd(a.relatedIssues, "Suggestion", !0);
b && (a.deleted = "JS Variable found")
}))
})
},
bh = function(a) {
Md(a, "Remarketing Tag", function(a) {
kd(a, "Conversion Label", "not set");
ld(a, "Conversion Value")
})
},
ch = function(a) {
Md(a, "AdWords Conversion Tracking", function(a) {
id(a.relatedIssues, "Custom parameter name")
})
},
dh = function(a) {
E(a, "Report Conversion") && (a = E(a, "No HTTP response detected")) && (a.type = "Info")
};
mg.prototype.W = function() {
var a = [];
Oa(a, wf("AdWords Conversion Tracking", Wg, ja(this.ob, this, "noscript", zg), ja(this.ob, this, "img", yg), dh, ja(this.ac, this), Zg), wf("Remarketing Tag", ah, bh, eh), wf("AdWords Conversion Tracking", $g, Xg, ch, eh), vf("Website Call Metrics", function(a) {
a = pd(a, "Website Call Metrics");
a.length && E(a, "Script loaded.") && id(a, "WCM loader script not detected.");
a.length && Hd(a, 1) && id(a, "Could not find _googWcmGet call.")
}));
return a
};
var eh = function(a) {
a = od(a, ["AdWords Conversion Tracking", "Remarketing Tag"]);
if (a = E(a, "No HTTP response detected")) "Remarketing Tag" == Od(a).category ? a.infoLink = "https://support.google.com/tagassistant/answer/2978937#http_response" : a.infoLink = "https://support.google.com/tagassistant/answer/2947038#http_response"
};
mg.prototype.fb = function() {
var a = ze([Lg, Mg, Ng, G("Conversion value mismatch between <script> and <noscript> tag."), G("Conversion value mismatch between <script> and <img> tag.")]),
b = ze(a);
a.forEach(rg.bb);
b.forEach(sg.bb);
var c = this.s();
Oa(c, this.A());
var d = ze(c);
d.forEach(function(a) {
Oe(sg, a, "init")
});
Oa(c, a, d, b, Kg);
return c
};
mg.prototype.X = function() {
return ug
};
mg.prototype.la = function() {
return Object.keys(ug).map(function(a) {
return Te(new Uf("Hidden", "Remarketing Tag", "Custom parameter", "https://support.google.com/adwords/answer/3103357", function(b) {
return null == b[a] ? !1 : a
}), "Hidden").c(M(I(new Uf("Info", "Remarketing Tag", a), "json"), "Custom Parameters").c(De("Custom Parameters Value", function(a) {
if (Ue(this, a.template.context)) {
this.text = this.b.current();
a = this.b;
var c = a.current();
this.context = null == c ? null : a.object[c];
return JSON.stringify(this.context)
}
return !1
}).c(G("Custom parameter field name in wrong case: '%s'",
function(a) {
a = a.text;
return !k(vg[a]) && -1 < wg.indexOf(a.toLowerCase()) ? a : !1
}), G("Number field should not be quoted: '%s'", function(a) {
var c = a.text;
return k(vg[c]) && 2 == vg[c].type && n(a.template.context) ? c : !1
}), Ee("Unexpected value for enum: '%s'", function(a) {
var c = a.text;
return k(vg[c]) && 12 == vg[c].type && -1 == vg[c].values.indexOf(a.template.context) ? c : !1
}), G("Date should be formatted like this yyyy-mm-dd: '%s'", function(a) {
var c = a.text;
return k(vg[c]) && 11 == vg[c].type && !/2\d{3}-\d{2}-\d{2}/.test(a.template.context) ?
c : !1
}))))
})
};
fg(new mg);
var fh = function() {
U.call(this, 0, 99);
this.J = ["channelintelligence.com/"];
this.H = u;
this.s = Ua([])
};
q(fh, U);
var gh = I(H("Account ID", function(a) {
return a.label || "not set"
}), "copyable");
fh.prototype.A = function(a) {
return [Q("Channel Intelligence", "channelintelligence.com/", "Channel Intelligence", "http://www.google.com/ads/channelintelligence/", p(A, /.channelintelligence\.com\/([^_]*)_landing.js/), "unchecked", a ? [] : [gh, S])]
};
fg(new fh);
var hh = function() {
U.call(this, 0, 99)
};
q(hh, U);
var ih = L(I(H("Site ID", function(a) {
return a.label || "not set"
}), "copyable"), [G("Site ID should only contain alphanumeric characters.", function(a) {
return !x(/^[_A-Za-z0-9]+$/, a.label)
})]);
hh.prototype.W = function() {
return []
};
hh.prototype.A = function(a) {
return [L(Q("Google Consumer Survey", "survey.g.doubleclick.net/survey", "Google Consumer Survey ${Site ID}", "http://www.google.com/insights/consumersurveys/publishers", function(a) {
return Fb(v(a.url)).get("site")
}), a ? [] : [ih, ff, S]), L(Q("Website Satisfaction Survey", "survey.g.doubleclick.net/async_survey", "Website Satisfaction Survey ${Site ID}", "https://support.google.com/consumersurveys/answer/6220389", function(a) {
return Fb(v(a.url)).get("site")
}), a ? [] : [ih, ff, S])]
};
hh.prototype.s = function() {
return [L(Rf("Google Consumer Survey", "Google Consumer Survey ${Site ID}", "http://www.google.com/insights/consumersurveys/publishers", "//script", function(a) {
var b = a.getAttribute("src");
a = a.textContent;
return !b && 510 > a.length && 0 < a.indexOf("//survey.g.doubleclick.net/survey?site=") && 0 < a.indexOf("document.write") ? y(/survey.g.doubleclick.net\/survey\?site=([^'">]*)/, a) : !1
}), [ih, Of.clone(), M(Cf("HTML Snippet", function(a) {
return Nf(this, 0, a)
}, "snippet_js"), "Code Snippet").c(T("Missing closing \x3c/script> tag.",
function(a) {
return y(/<\/html>(.|\n)*$/m, a.textContent)
}), Gf("Code should be added to <body> tag.", function(a) {
return a.parentNode ? "BODY" != a.parentNode.nodeName : !1
})), J(T("Premimum content section not found.", function() {
return 0 == document.getElementsByClassName("p402_premium").length
}), 'Wrap your premium content. Use a div with a class named "p402_premium".')]), L(Rf("Website Satisfaction Survey", "Website Satisfaction Survey ${Site ID}", "https://support.google.com/consumersurveys/answer/6220389", "//script",
function(a) {
return (a = a.getAttribute("src")) && 0 <= a.indexOf("survey.g.doubleclick.net/async_survey") ? Fb(v(a)).get("site") : !1
}), [ih, Of.clone(), M(Cf("HTML Snippet", function(a) {
return Nf(this, 0, a)
}, "snippet_js"), "Code Snippet").c(T("Missing closing \x3c/script> tag.", function(a) {
return y(/<\/html>(.|\n)*$/m, a.textContent)
}), J(Gf("Code should be loaded asynchronously.", function(a) {
a = a.getAttribute("async");
return null === a || "false" == a
}), "Add 'async=\"\"' to the <script> tag."), Gf("Code found outside of <head> tag.",
function(a) {
return a.parentNode ? "HEAD" != a.parentNode.nodeName : !1
}))])]
};
fg(new hh);
var jh = function() {
U.call(this, 0, 99);
this.J = ["nexus.ensighten.com/"];
this.H = u;
this.s = Ua([])
};
q(jh, U);
jh.prototype.A = function(a) {
return [Q("Ensighten", "nexus.ensighten.com/", "Ensighten", "http://www.ensighten.com/", p(A, /nexus\.ensighten\.com\/([^\/]*)\//), "unchecked", [lf("Client ID", "ClientID"), lf("Page ID", "PageID"), P("Rules", "Rule %s", function(a) {
a = Gb(O(a), "ruleId");
return k(a) ? a : !1
}, a ? [] : [S], void 0, "unchecked"), S])]
};
fg(new jh);
var kh, lh;
kh = /^(?:https?:)?\/\/(\d+)?\.?fls\.doubleclick\.net\/(activity[ij]?)[;&\/]/i;
lh = function(a) {
return new RegExp("[?/&;]" + a + "=([^;&#?]*)")
};
var mh = function() {
U.call(this, 0, 3)
};
q(mh, U);
var nh = {},
oh = /^(?:https?:)?\/\/ad(?:[-.]\w+)?\.doubleclick\.net\/(jump|ad[ijflx]?)\/.*N(\d+)\.([\d\w\.]+)\/B(\d+)/i,
ph = /^(?:https?:)?\/\/ad(?:[-.]\w+)?\.doubleclick\.net\/clk[;&]([^;&]*)[;&]([^;&]*)[;&]/i,
qh = /^(?:https?:)?\/\/ad(?:[-.]\w+)?\.mo\.doubleclick\.net\/dartproxy\/dfa\.(?:click|mobile)\.handler\?k=N(\d+)\.([\d\w\.]+)\/B(\d+)/i,
rh = /^(?:https?:)?\/\/ad(?:[-.]\w+)?\.doubleclick\.net\/N?(\d+)?.*(ad[ijflx]?)\/([^;&]*)[;&].*[;&]tile=/i,
sh = /^(?:https?:)?\/\/ad(?:[-.]\w+)?\.doubleclick\.net(?:\/ddm)?\/(activity[ij]?)[;&\/]/i,
th =
function(a, b, c) {
return y(a, c.url, b)
},
uh = function(a, b) {
var c = b.url,
d = c.split(";");
1 == d.length && (d = c.split("&"));
c = d.slice(1)[a];
try {
return decodeURIComponent(c)
} catch (e) {
return c
}
},
vh = function(a, b, c) {
return N(a, p(th, b, c))
},
xh = function(a, b) {
return bf("URL type", function(c) {
c = th(a, b, c);
return n(c) ? wh(c) : c
})
},
yh = p(vh, "Network"),
zh = function(a, b) {
return K(I(vh("Campaign", a, b), "linked"), "http://advertisers.doubleclick.net/app_pages/campaign/mediaplan.aspx?cid=%s")
},
Ah = K(L(I(H("Advertiser ID", function(a) {
return a.label ||
"not set"
}), "copyable"), [G("Invalid or missing advertiser ID.", function(a) {
return !x(/^[0-9]+$/, a.label || "")
})]), "http://advertisers.doubleclick.net/app_pages/advertisers/spotlightactivities/default.aspx?aid=%s"),
Ch = function(a, b) {
return L(N(a, p(A, lh(b))), [Bh])
},
Dh = function(a, b) {
return L(af("Parameter name (changed from test function)", function(c) {
this.Aa || (this.Aa = /[?/&;,]([^;&#,?/]+)=([^;&#?/]*)/g);
c = O(c);
var d = c.m.toString(),
d = d ? c : c.g;
c = w(this.Aa, d);
this.b = this.Aa.lastIndex;
return !c || -1 != a.indexOf(c[1]) ||
b && vc(b, c[1]) ? !1 : (this.text = c[1], c[2])
}), [Bh])
},
Eh = function(a, b) {
return Gf("HTML tag type must match DoubleClick tag type.", function(c) {
var d = c.src || c.href,
d = d ? th(a, b, {
url: d
}) : null;
return n(d) && c.tagName != wh(d).toUpperCase()
})
},
Fh = function(a, b) {
return Ff("Script Type", function(c) {
c = (c = c ? c.src || c.href : "") ? th(a, b, {
url: c
}) : null;
return n(c) && wh(c)
}).c(M(Ff("IFRAME content", function(a, b) {
return na(b.label, "i") && a.contentDocument && a.contentDocument.body ? qa(a.contentDocument.body.innerHTML, 1E3) : !1
}), "IFrame"))
},
Gh = K(cf('URLs should end with a "?".', function(a) {
return !Fc(/.*[?]$/, a)
}), void 0),
Hh = $e("Potential missing parameter(s), found '%s'.", p(A, /(;;|&&)/)),
Ih = $e("Smart quotes not allowed in tag HREF/SRC.", p(Fc, /%E2%80%9[89]/i)),
Jh = K(G("Question marks must be encoded in site-supplied click strings.", function(a) {
return x(/[?]+/, a.label)
}), void 0),
Bh = Fe('Found "[" or "]" in parameter %s; site may not be passing required information into key value.', function(a) {
return "pc" != a.text && x(/(\[|\])/, a.label) ? a.text :
!1
}),
Lh = G("ord value contains unsupported symbols.", function(a) {
return n(a.label) && !x(/^[-0-9.a-zA-Z\[\]]*$/, a.label)
}).otherwise(cf("ord value not unique enough.", function(a, b) {
return !Kh(a) && 10 > b.label.length && "1" != b.label && 0 < b.label.length
})),
Mh = p(Fc, /[?&;]ord=1[;&#?]/),
Nh = p(Fc, /[?&;]ord=[^;&#?]+/),
Oh = N("ord value needs to be populated with a sales order ID.", function(a) {
return Kh(a) && !Nh(a)
}).otherwise(K($e("ord value needs to be populated with a random value.", function(a) {
return !Kh(a) && !Nh(a)
}),
void 0)),
Ph = function(a) {
var b;
b = O(a);
b.m.toString() ? b = A(lh("ord"), a) : (b = b.g, b = y(lh("ord"), b));
this.type = Kh(a) && "1" != b ? "Info" : "Fine";
return b
},
Qh = L(I(N("ord Parameter", Ph), "copyable"), [Lh, Bh, Oh]).otherwise(Oh),
Rh = L(N("Order ID", function(a) {
return !a.Adapted && Ph(a)
}), [Lh, Bh, Oh]).otherwise(Oh),
Sh = L(Te(Ch("num parameter", "num"), "Fine"), [G("num value needs to be populated with a random value.", function(a) {
return "" == a.label
}), df("num parameter only required if ord=1.", function(a) {
return !Mh(a)
}), G("num value contains unsupported symbols.",
function(a) {
return n(a.label) && !x(/^[-0-9.a-zA-Z\[\]]*$/, a.label)
}), Bh, Fe("num value not unique enough (10 or more characters required).", function(a) {
return 10 > a.label.length
})]).otherwise(df("Missing num parameter.", Mh)),
Th = $e("URL must be terminated by the ord= or num= parameter", function(a) {
if (a = Ja(a.url.split("?"), function(a) {
return 0 < a.indexOf("ord=") || 0 < a.indexOf("num=")
})) {
a = a.split(";");
for (var b = null; k(b) && oa(b = a.pop()););
return !k(b) && !Ka(["ord", "num"], b.split("=")[0])
}
return !0
}),
Kh = function(a) {
return !!vc([lh("qty"),
lh("cost")
], Db(O(a)))
},
Uh = N("Version", function(a) {
return Kh(a) ? "Sales Activity Tag" : "Counter Activity Tag"
}),
wh = function(a) {
return {
activity: "img",
activityi: "iframe",
activityj: "script",
ad: "img",
adf: "flash frame",
adi: "iframe",
adj: "script",
adl: "flash layer",
adx: "flash streaming"
}[a] || ("" == a ? !1 : a)
},
Vh = "1x1 88x31 120x60 120x90 120x240 120x600 125x125 160x600 180x150 234x60 240x400 250x250 300x100 300x250 300x600 336x280 468x60 720x300 728x90 970x250".split(" "),
Wh = L(Ch("Size", "sz"), [Fe("sz= parameter value is not a recognized size.",
function(a) {
return !Ka(Vh, a.label)
})]),
Xh = L(I(N("Click", function(a) {
return y(/[?&;]click=([^?]?[^;&#]*)/, a.url.replace(/\?$/, ""))
}), "link_expandable"), [Jh, Bh]),
Yh = [Qh, Sh, Xh, L(Ch("SP", "sp"), [G("sp= parameter incorrect.", function(a) {
return !x(/\d+x\d+/, a.label)
})]), Dh(["click", "num", "ord", "sp"]), Hh],
Zh = [Ch("Type", "type"), Ch("Category", "cat"), Rh, L(Ch("Quantity", "qty"), [G("Quantity value contains unsupported symbols.", function(a) {
return n(a.label) && !x(/^[0-9]+$/, a.label)
})]).otherwise($e("Sales activity tag must have quantity argument set.",
Kh)), Ch("Creative ID", "cid"), Ch("Ad ID", "aid"), M(bf("studioV2", function(a) {
var b = A(lh("cid"), a);
a = A(lh("aid"), a);
return b && a ? b + "_" + a : !1
}), "studioV2"), Sh, Xh, L(Ch("Cost", "cost"), [G("Cost value contains unsupported symbols.", function(a) {
return !Dc(a.label)
})]).otherwise($e("Sales activity tag must have cost argument set.", Kh)), L(K(M(N("Custom Dimensions", function(a) {
for (var b = /(?:[?&;])(u[0-9]+=[^;&#?]*)/g, c = [], d = O(a); a = w(b, d.g);) c.push(decodeURIComponent(a[1]));
return 0 < c.length ? c.join(";") : !1
}, "map"),
"Custom Dimensions"), "https://support.google.com/ds/answer/6024747"), [Bh, K($e("Custom dimension %s value is empty.", function(a) {
for (var b = /(?:[?&;])(u[0-9]+)=([^;&#?]*)/g, c = O(a); a = w(b, c.g);)
if (0 == a[2].length) return a[1];
return !1
}), "https://support.google.com/ds/answer/4397154")]), Hh, Dh("cat click cost num ord prd qty src type".split(" "), [/^u[0-9]+$/])],
$h = function() {
var a = P("Sizes", r("DFA ${%s} ${%s}", "URL type", "Size"), u, [xh(oh, 1), Wh, Sh, Xh, Dh(["click", "ord", "num", "sz"]), Hh, Gh, Ih, Th]);
return Q("DFA",
oh.source, r("DFA ${%s} N${%s} B${%s}", "URL type", "Network", "Campaign"), "https://support.google.com/ds/answer/2828176", p(th, oh, 3)).c(xh(oh, 1), yh(oh, 2), vh("Site String", oh, 3), zh(oh, 4), Qh, a)
},
ai = function() {
return Q("DFA", ph.source, "DFA Click Tracker", "https://support.google.com/ds/answer/2828176", p(uh, 0)).c(L(K(I(N("Ad", function(a) {
return uh(0, a) || "not set"
}), "linked"), "http://advertisers.doubleclick.net/app_pages/creatives/ad.aspx?id=%s"), [G("Invalid or missing ad ID.", function(a) {
return !x(/^\d+$/,
a.label || "")
})]), L(K(I(N("Placement ID", function(a) {
return uh(1, a) || "not set"
}), "linked"), "http://advertisers.doubleclick.net/app_pages/siteplacements/properties.aspx?id=%s"), [G("Invalid or missing Placement ID.", function(a) {
return !x(/^\d+$/, a.label || "")
})]), xh(ph, 1), L(N("Verifier", function(a) {
return (a = uh(2, a)) && a.split("?")[0] || ""
}), [G("DFA Click Tracker verifier not properly formatted.", function(a) {
return !a.label
}), Bh]), Hh)
},
bi = function() {
return Q("DFA", qh.source, "DFA Mobile", "https://support.google.com/ds/answer/2828176",
p(th, qh, 2)).c(yh(qh, 1), vh("Site String", qh, 2), zh(qh, 3), Yh, Th)
},
ci = function(a) {
var b = [Ch("Tile", "tile").c(K(Fe("Tile number should be between 1 and 16", function(a) {
try {
var b = parseInt(a.label, 10);
return 1 > b || 16 < b
} catch (e) {
return !0
}
}), "http://support.google.com/dfp_premium/bin/answer.py?answer=177207")), Ch("Size", "sz"), Ch("Tag ID", "tagid"), Ch("oba", "oba"), Ch("Keywords", "kw"), Dh("kw oba oe ord sz site tagid tile".split(" ")), Th];
a && Oa(b, a);
return Q("DFP", rh.source, r("DFP ${%s}", "URL type"), "http://support.google.com/dfp/",
p(A, rh)).c(yh(rh, 1), xh(rh, 2), Ch("Site", "site"), Ch("Encoding", "oe"), Qh, P("Ad Slots", r("%s ${%s}", "Ad Slot", "Tile"), u, b))
},
ei = function(a) {
var b = Q("Floodlight", kh.source, r("%s Dynamic ${%s}", "Floodlight", "Advertiser ID"), "https://support.google.com/ds/answer/2828176", function(a) {
return A(kh, a) || y(lh("src"), Db(O(a)))
}).c(Ah, Uh, xh(kh, 2), kf("Customer ID", "cid"), kf("Ad ID", "aid"), Gh, Ih, Th, bf("validation anchor"));
if (0 < arguments.length) {
for (var c = ze(Zh), d = 0; d < arguments.length; d++) Oa(c, arguments[d]);
b.c(P("Requests",
"Request %s", u, c, di))
}
return b
},
fi = function(a) {
var b = Q("Floodlight", sh.source, r("%s Static ${%s}", "Floodlight", "Advertiser ID"), "https://support.google.com/ds/answer/2828176", function(a) {
return y(lh("src"), Db(O(a)))
}).c(Ah, Uh, xh(sh, 1), lf("Customer ID", "cid"), lf("Ad ID", "aid"), Gh, Ih, Th);
if (0 < arguments.length) {
for (var c = ze(Zh), d = 0; d < arguments.length; d++) Oa(c, arguments[d]);
b.c(P("Requests", "Request %s", u, c, di))
}
return b
},
gi = function() {
var a = /m[0-9]+:([^;|]*)/;
return L(H("Merchant Center ID", p(Je, /m[0-9]*:([^;|]*)/)), [G("Merchant Center ID attribute must not contain an index.", function(b) {
return y(a, b.parent.label)
})])
},
hi = function(a, b) {
return H(a, function(a) {
return y(new RegExp(b + a.label + ":([^;|]*)"), a.parent.parent.label)
})
},
ii = function() {
return L(bf("prd", function(a) {
return (a = A(lh("prd"), a)) ? kc(a + "") : !1
}), [gi(), H("Country", p(Je, /c:([^;|]*)/)), H("Language", p(Je, /l:([^;|]*)/)), G('Missing index for cart item "%s".', p(Je, /(?:^|;)([ipq]):[^;|]*/)), P("Products", "Item %s", u, [L(hi("Item ID", "i"), [G("Product Item ID is missing.",
function(a) {
return "" == a.label
}).otherwise(G("Product Item ID contains illegal characters.", p(Je, /[<:?]/)))]).otherwise(G("Product Item ID is missing.")), L(hi("Price per item", "p"), [G("Product Item price is missing.", function(a) {
return "" == a.label
}).otherwise(G("Product Item price should be a number.", p(Je, /[^-.0-9]+/)))]).otherwise(G("Product Item price is missing.")), L(hi("Quantity", "q"), [G("Product Item quantity is missing.", p(Ie, "")).otherwise(G("Product Item quantity should be an integer.", p(Je,
/[^0-9]+/)))]).otherwise(G("Product Item quantity is missing.")), G("Item index should start at 1.", p(Ie, "0")), L(hi("Account ID", "a"), [G("Account ID should be an integer.", function(a) {
return !y(/^[0-9]*/, a.label)
}), G("Account ID should not be empty.", function(a) {
return "" == a.label.trim()
})]), hi("Country", "c"), hi("Language", "l")], function(a, b) {
this.Da || (this.Da = /[ipq]([0-9]+):([^;|]*)[;|]?/g);
var c = y(this.Da, b.parent.label);
this.b = this.Da.lastIndex;
return c && 0 == vd(b, [c + ""]).length ? c : !1
}), G("Item indices should be subsequent order and no index must be skipped.",
function(a) {
if (a = E(a, "Products")) {
if (0 < vd(a, ["", "0"]).length) return !1;
for (var b = 1, c = a.relatedIssues.length + 1; b < c; b++)
if (0 == vd(a, [b + ""]).length) return b + ""
}
return !1
}), G("prd attribute malformed.", function(a) {
return !x(/^([maclipq]([0-9]*):([^;|]*)($|[;|]))+$/, a.label)
}), G("Attribute %s occurs multiple times.", function(a) {
a = jc(/([mclipq][0-9]*):(?:[^;|]*)(?:$|[;|])/g, a.label).sort();
for (var b = 0, c = a.length - 1; b < c; b++)
if (a[b + 1] == a[b]) return a[b];
return !1
})])
},
di = function(a) {
a = Db(O(a));
var b = y(lh("ord"),
a);
return null != b && "1" != b ? "ord=" + b : "num=" + y(lh("num"), a)
},
ji = function(a) {
a = (a = uh(2, a)) ? a.split("?") : [];
return 1 < a.length ? (a.shift(), a.join("?")) : ""
};
mh.prototype.A = function() {
return [$h().c(S, ff), ai().c(P("Tags", "Click Tracker", u, [L(N("Click-through URL", ji), [$e("DFA Click Tracker click-through URL must start with http://, https://, tel://, or mailto://", function(a, b) {
return "ds" == Fb(O(a)).get("u") ? !1 : !x(/^(http|https|mailto|tel):\/\//, b.label)
})]), Bh, K(cf("Replace semicolons in <meta> click-tracker tag with their ASCII equivalent (%3b)", function(a) {
return 302 == a.statusCode && -1 != a.url.indexOf(";")
}), void 0), S, ff], function(a) {
return a.url
})), bi().c(S,
ff), ci(S), ei(S, ii(), ff), fi(S, ii(), ff)]
};
var ki = function(a, b, c) {
var d = new yf(b.type, b.category, b.text, b.infoLink, c, function(a, c) {
this.P = {};
this.P.Adapted = !0;
this.P.node = a;
this.P.url = a ? a.src || a.href : "";
var d = of(b, this.P.url) && b.Z(this.P, c);
d && (this.text = b.text);
return d
}, b.format);
b.view && M(d, b.view);
b.M && (d.M = 2 == b.M.issueClass ? ki(a, b.M) : b.M.clone());
b.N.forEach(function(a) {
d.N.push(2 == a.issueClass ? ki(this, a) : a.clone())
}, a);
return d
};
h = mh.prototype;
h.la = function() {
return []
};
h.X = function() {
return nh
};
h.W = function() {
return []
};
h.s = function() {
return [ki(this, $h(), '//iframe[contains(@src, ".doubleclick.net/")]|//img[contains(@src, ".doubleclick.net/")]|//script[contains(@src, ".doubleclick.net/")]|//a[contains(@href,".doubleclick.net/")]').c(Of, Mf().c(If, T("Jump tag type found in non-anchor HTML tag.", function(a, b) {
var c = E(b.parent, "URL type");
return !(!c || "jump" != c.label || "A" == a.tagName)
}), Fh(oh, 1), Eh(oh, 1))), ki(this, ai(), '//iframe[contains(@src, ".doubleclick.net/")]|//img[contains(@src, ".doubleclick.net/")]|//script[contains(@src, ".doubleclick.net/")]|//a[contains(@href,".doubleclick.net/")]').c(Qf("Tags", "Click Tracker", [Ff("Click-through URL", function(a, b) {
return ji({
url: b.label
})
}), Mf().c(If)], function(a, b) {
return b.parent.template.P.url
})), ki(this, bi(), '//iframe[contains(@src, ".doubleclick.net/")]|//img[contains(@src, ".doubleclick.net/")]|//script[contains(@src, ".doubleclick.net/")]|//a[contains(@href,".doubleclick.net/")]').c(Of, Mf().c(If)), ki(this, ci(), '//iframe[contains(@src, ".doubleclick.net/")]|//img[contains(@src, ".doubleclick.net/")]|//script[contains(@src, ".doubleclick.net/")]|//a[contains(@href,".doubleclick.net/")]').c(Of,
Mf().c(If, Fh(rh, 2), Eh(rh, 2))), ki(this, ei(Of, Mf().c(If, Fh(kh, 2), Eh(kh, 2))), '//iframe[contains(@src, ".doubleclick.net/")]|//img[contains(@src, ".doubleclick.net/")]|//script[contains(@src, ".doubleclick.net/")]|//a[contains(@href,".doubleclick.net/")]'), ki(this, fi(Of, Mf().c(If, Fh(sh, 1), Eh(sh, 1))), '//iframe[contains(@src, ".doubleclick.net/")]|//img[contains(@src, ".doubleclick.net/")]|//script[contains(@src, ".doubleclick.net/")]|//a[contains(@href,".doubleclick.net/")]')]
};
h.ib = Ua([]);
fg(new mh);
var li = function(a) {
return K(G("Unknown method name: '%s'", function(b) {
var c = b.text.toLowerCase();
return !a(c) && !a("_" + c) && b.text
}), "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#unknown_method")
},
mi = function(a, b) {
return G("Wrong case for method name: '%s'", function(c) {
var d = a(c),
e = c.text.toLowerCase();
return !d && b(e) && c.text
})
},
ni = function(a) {
return K(Ee("Deprecated method used: '%s'", function(b) {
var c = a(b);
return !!c && !!c.U && b.text
}), "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#remove_method")
},
oi = function(a) {
return G("Retired method used: '%s'", function(b) {
var c = a(b);
return !!c && !!c.Pa && b.text
})
},
pi = function(a, b, c, d) {
var e = (c.a || []).length;
c.i && (e -= c.i);
var f = d.length;
if (f < e) return a.infoLink = "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#missing_parameter", r("Missing %s required parameter(s) for method '%s'.", e - f, b);
if (f > (c.a || []).length) return c = f - (c.a || []).length, a.infoLink = "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#additional_parameter",
r("Method '%s' has %s additional parameter.", b, c);
for (e = 0; e < f; e++)
if (c.types && c.types[e] && (4 == c.types[e] || 3 == c.types[e] || 5 == c.types[e] || 2 == c.types[e]) && w(/^["'].*["']$/, d[e])) return a.infoLink = "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#parameter_quotes", r("The value for parameter '%s' in method '%s' should not be quoted.", c.a[e], b);
return !1
};
var qi = /^ga[.(]/,
ri = /\(([^;]+)\)/g,
si = /\(([^;]+)\)/g,
ti = /(?:.|\n)*?(?:ga\.|tracker\.)([^;]*?);/g,
vi = /['"]?(?:(.*\.)?)([a-zA-Z0-9_:]*)['"]?/,
wi = {
hitCallback: 7,
sessionControl: 1
},
xi = {
create: {
a: ["trackingId", "auto", "cookieDomain", "name", "opt_configObject"],
types: [1, 11, 11, 11, 5],
i: 4,
w: {
allowAnchor: 4,
allowLinker: 4,
alwaysSendReferrer: 4,
clientId: 1,
cookieDomain: 1,
cookieExpires: 3,
cookieName: 1,
anonymizeIp: 4,
name: 1,
sampleRate: 3,
siteSpeedSampleRate: 2,
storage: 1
},
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/advanced"
},
getByName: {
a: ["name"],
types: [1],
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/advanced"
},
getAll: {
a: [],
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/advanced"
},
require: {
a: ["module", "script"],
i: 1
},
send: {
variations: {
appview: {
a: ["hitType", "appName", "appVersion"],
i: 1,
w: wi
},
event: {
a: ["hitType", "eventCategory", "eventAction", "eventLabel", "eventValue"],
types: [1, 1, 1, 1, 3],
i: 2,
w: wi,
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/events"
},
exception: {
a: ["hitType", "exDescription", "exFatal"],
i: 1,
w: wi,
types: [1, 1, 2]
},
item: {},
pageview: {
a: ["hitType", "page", "title"],
types: [1, 1, 1],
i: 2,
w: wi,
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/pages"
},
social: {
a: ["hitType", "socialNetwork", "socialAction", "socialTarget"],
w: wi,
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/social-interactions"
},
timing: {
a: ["hitType", "timingCategory", "timingVar", "timingValue", "timingLabel"],
types: [1, 1, 1, 3, 1],
w: wi,
i: 1,
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/user-timings"
},
transaction: {}
}
},
set: {
a: ["fieldName", "value"],
types: [1, 12],
w: {
anonymizeIp: 4,
campaignId: 1,
campaignKeyword: 1,
campaignMedium: 1,
campaignName: 1,
campaignSource: 1,
"dimension[0-9]+": 1,
encoding: 1,
flashVersion: 1,
hostname: 1,
javaEnabled: 4,
language: 1,
"metric[0-9]+": 2,
nonInteraction: 4,
page: 1,
referrer: 1,
screenColors: 1,
screenResolution: 1,
title: 1,
viewportSize: 1
},
ua: 1,
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/advanced"
},
get: {
a: ["fieldName"],
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/advanced"
}
},
yi = {
displayfeatures: {},
ecommerce: {
addItem: {
a: "id name sku category price quantity".split(" "),
i: 4,
w: {},
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/ecommerce"
},
addTransaction: {
a: ["id", "affiliation", "revenue", "shipping", "tax"],
i: 4,
w: {},
v: "_gat.GA_EComm_.Transactions_",
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/ecommerce"
},
clear: {
a: [],
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/ecommerce"
},
send: {
a: [],
w: wi,
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/ecommerce"
}
},
ec: {
addProduct: {
a: ["productObject"],
types: [5],
w: {
id: 1,
name: 1,
brand: 1,
category: 1,
variant: 1,
price: 1,
quantity: 3,
coupon: 1,
position: 3
},
ua: 0,
Oa: ["id", "name"],
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce"
},
addPromo: {
a: ["promoObject"],
types: [5],
w: {
id: 1,
name: 1,
promo: 1,
position: 1
},
ua: 0,
Oa: ["id", "name"],
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce"
},
addImpression: {
a: ["impressionObject"],
types: [5],
w: {
id: 1,
name: 1,
list: 1,
brand: 1,
category: 1,
variant: 1,
position: 3,
price: 1
},
ua: 0,
Oa: ["id", "name"],
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce"
},
setAction: {
a: ["action", "actionObject"],
i: 1,
types: [1, 5],
w: {
id: 1,
affiliation: 1,
revenue: 1,
tax: 1,
shipping: 1,
coupon: 1,
list: 1,
step: 3,
option: 1
},
ua: 1,
Oa: ["id"],
v: "_gat.GA_EComm_.Transactions_",
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce"
}
},
inpage_linkid: {},
linker: {
decorate: {
a: ["target"],
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/cross-domain"
},
autoLink: {
a: ["targets", "autolinkAnchor", "autolinkForm"],
i: 2,
types: [6, 4, 4],
link: "//developers.google.com/analytics/devguides/collection/analyticsjs/cross-domain"
}
}
},
zi = [];
ab(xi, function(a, b) {
zi.push(b.toLowerCase())
});
ab(yi, function(a, b) {
var c = b.toLowerCase();
ab(a, function(a, b) {
zi.push(c + ":" + b.toLowerCase())
})
});
var Ai = {},
Bi = function(a) {
var b = a.text;
if ("require" == b) b = a.label.split(","), 1 < b.length && (b = y(/['"]([a-zA-Z0-9]*)['"]/, b[1]), Ai[b] = a.label);
else if (0 < b.indexOf(":")) return a = b.split(":"), a = 2 == a.length && a.shift(), !Ai[a] && a;
return !1
},
Di = function(a) {
var b = xi,
c = a.text,
d = c.split(":"),
e = 2 == d.length && d.shift();
n(e) && (b = yi[e], c = d.join(":"));
return b ? b[c] && b[c].jc ? (a = Ci(a), a.shift(), a = y(/['"]?([^'"]*)['"]?/, a[0]), b[c].jc[a] || b[c]) : b[c] : null
},
Ei = function(a) {
var b = a.split(":"),
b = 2 == b.length && b.shift();
if (n(b)) {
if ("_" ==
b.charAt(0)) return !1;
if (!yi[b]) return !0
}
return Ka(zi, a.toLowerCase())
},
Fi = function(a) {
return Ka(zi, a.toLowerCase())
},
Ci = function(a) {
var b;
x(/^[_:a-zA-Z]+\(/, a.label) ? (b = a.text, a = y(/\s*(?:[^\(]*)\(([^\)]*)\)/, a.label), a = n(a) ? oa(a) ? b : r("%s, %s", b, a) : "", b = qc(a)) : b = qc(a.label);
return b
},
Gi = function() {
return L(Ef("Method", function(a, b) {
var c;
c = b.label;
var d = ri.lastIndex;
if (0 != c.indexOf("ga(function")) {
ri = si;
ri.lastIndex = d;
var e = y(ri, c)
}
n(e) || (ri = ti, ri.lastIndex = d, e = y(ri, c));
c = e;
this.b = ri.lastIndex;
if (n(c) &&
(d = nc(c)))
if (d = w(vi, d[0])) {
var f = d[1],
g = Od(b).label,
e = RegExp;
if (f = f || "") var l = new RegExp(".".replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08"), ""),
f = f.replace(l, "");
g = r("['\"]create['\"]\\s*,\\s*[\"']%s[\"'](?:,\\s{\\s*name:\\s[\"']%s[\"'])?", g, f);
if (!y(new e(g, "im"), a.textContent)) return !1;
d = this.text = d[2];
this.infoLink = xi[d] && xi[d].link || null
} else return !1;
return c
}), [G('Missing require for plugin "%s".', Bi), li(Ei), mi(Di, Fi), ni(Di), oi(Di), L(K(G("%s", function(a) {
var b = Ci(a);
b.shift();
var c = Di(a),
d;
if (d = !!c && !!c.a) a: {
a = a.text;
var e = c.a.length;
c.i && (e -= c.i);
d = b.length;
if (d < e && (0 == d || !c.w || w(/^["'].*["']$/, b[d - 1]))) this.infoLink = "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#missing_parameter", d = r("Missing %s required parameter(s) for method '%s'.", e - d, a);
else if (d > c.a.length) b = d - c.a.length, this.infoLink = "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#additional_parameter", d = r("Method '%s' has %s additional parameter.",
a, b);
else {
for (e = 0; e < d; e++)
if (c.types && c.types[e] && (4 == c.types[e] || 3 == c.types[e] || 5 == c.types[e] || 2 == c.types[e]) && w(/^["'].*["']$/, b[e])) {
this.infoLink = "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#parameter_quotes";
d = r("The value for parameter '%s' in method '%s' should not be quoted.", c.a[e], a);
break a
}
d = !1
}
}
return d
}), "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092"), [Ce("Method call", function(a) {
this.text = "Method call: " + a.parent.text;
return a.parent.label
},
"snippet_js")])])
};
var Hi = [{
link: "http://developers.google.com/analytics/devguides/collection/gat/methods/gaJSApi_gat",
methods: {
_anonymizeIp: {},
_createTracker: {
a: ["opt_account", "opt_name"],
i: 2,
types: [1, 1],
v: 5
},
_forceSSL: {
a: ["forceSSL"],
i: 1,
types: [4]
},
_getTracker: {
a: ["account"],
types: [1],
U: !0,
v: 5
},
_getTrackerByName: {
a: ["opt_name"],
i: 1,
types: [1],
v: 5
},
_getTrackers: {
v: 6
}
}
}],
Ii = {};
Hi.forEach(function(a) {
fb(Ii, a.methods)
});
var Ji = [];
ab(Ii, function(a, b) {
Ji.push(b.toLowerCase())
});
var Ki = function(a) {
return Ii[a.text]
},
Li = function(a) {
return Ka(Ji, a.toLowerCase())
},
Mi = function() {
return L(De("Method", function(a) {
return (a = w(/([_.a-zA-Z]*)\((.*)\)/, a.label)) ? (this.text = a[1], a[2]) : !1
}), [G("Missing leading '_' in method name: '%s'", function(a) {
return Li("_" + a.text) && a.text
}), li(Li), mi(Ki, Li), ni(Ki), oi(Ki), G("%s", function(a) {
var b = a.label.length ? a.label.split(",") : [],
c = Ki(a);
return !!c && pi(this, a.text, c, b)
})])
},
Ni = function() {
return K(L(Ef("_gat", function(a) {
var b = /_gat\.([_a-zA-Z.]*\([^)]*\))/g;
b.lastIndex = this.b;
a = y(b, a.textContent);
this.b = b.lastIndex;
return a ? a : !1
}), [Mi()]), "http://developers.google.com/analytics/devguides/collection/gat/methods/")
};
var Oi = function(a, b, c) {
this.oa = a;
this.na = b;
this.rb = c
},
Pi = {};
Pi.async = new Oi(p(r, "['\"]%s_setAccount['\"]\\s*,\\s*['\"]%s['\"]"), {
wb: /^_gaq\.push/,
method: /\s*(\[(?:(?!\]\s*,).|\n)*\])\s*(?:,|\))\s*/g,
oa: /['"](?:(.*\.)?)([a-zA-Z0-9_]*)['"]/
}, function(a) {
a = y(/^\s*\[\s*((.|\n)*?)\s*\]\s*$/, a);
return qc(n(a) ? a : "")
});
Pi.sync = new Oi(p(r, "_gat.%s_getTracker\\(['\"]%s['\"]\\)"), {
wb: /^pageTracker\./,
method: /\s*([^\)]*\)\s*$)/g,
oa: /(?:(.*\.)?)\.([a-zA-Z0-9_]*)/
}, function(a, b) {
var c = y(/\s*(?:[^\(]*)\(([^\)]*)\)/, a),
c = n(c) ? oa(c) ? b : r("%s, %s", b, c) : "";
return qc(c)
});
var Qi = [{
link: "http://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiBasicConfiguration",
methods: {
_deleteCustomVar: {
a: ["index"],
types: [2]
},
_getName: {
a: [],
v: 1
},
_getAccount: {
a: [],
v: 1
},
_getVersion: {
a: [],
v: 1
},
_getVisitorCustomVar: {
a: ["index"],
types: [2],
v: 1
},
_initData: {
a: [],
types: [],
U: !0
},
_setAccount: {
a: ["accountID"]
},
_setCookiePersistence: {
a: ["milliseconds"],
types: [3],
U: !0
},
_setCustomVar: {
a: ["index", "name", "value", "opt_scope"],
types: [2, 1, 1, 2],
i: 1
},
_setSampleRate: {
a: ["newRate"],
types: [10]
},
_setSessionTimeout: {
a: ["newTimeout"],
types: [10],
U: !0
},
_setSessionCookieTimeout: {
a: ["cookieTimeoutMillis"],
types: [3]
},
_setSiteSpeedSampleRate: {
a: ["sampleRate"],
types: [3]
},
_setVar: {
a: ["newVar"],
U: !0
},
_setVisitorCookieTimeout: {
a: ["cookieTimeoutMillis"],
types: [3]
},
_trackPageLoadTime: {
a: [],
U: !0,
link: "http://support.google.com/analytics/bin/answer.py?answer=1205784"
},
_trackPageview: {
a: ["opt_pageURL"],
i: 1
}
}
}, {
link: "http://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiCampaignTracking",
methods: {
_setAllowAnchor: {
a: ["bool"],
types: [4]
},
_setCampContentKey: {
a: ["newCampContentKey"]
},
_setCampMediumKey: {
a: ["newCampMedKey"]
},
_setCampNameKey: {
a: ["newCampNameKey"]
},
_setCampNOKey: {
a: ["newCampNOKey"]
},
_setCampSourceKey: {
a: ["newCampSrcKey"]
},
_setCampTermKey: {
a: ["newCampTermKey"]
},
_setCampaignCookieTimeout: {
a: ["cookieTimeoutMillis"],
types: [3]
},
_setCampaignTrack: {
a: ["bool"],
types: [4]
},
_setCookieTimeout: {
a: ["newDefaultTimeout"],
types: [3],
Qc: [1],
U: !0
},
_setReferrerOverride: {
a: ["newReferrerUrl"]
}
}
}, {
link: "http://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiDomainDirectory",
methods: {
_cookiePathCopy: {
a: ["newPath"]
},
_getLinkerUrl: {
a: ["targetUrl", "useHash"],
v: 1
},
_link: {
a: ["targetUrl", "useHash"]
},
_linkByPost: {
a: ["formObject", "useHash"]
},
_setAllowHash: {
a: ["bool"],
types: [4],
U: !0
},
_setAllowLinker: {
a: ["bool"],
types: [4]
},
_setCookiePath: {
a: ["newCookiePath"]
},
_setDomainName: {
a: ["newDomainName"]
}
}
}, {
link: "http://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiEcommerce",
methods: {
_addItem: {
a: "orderId sku name category price quantity".split(" ")
},
_addTrans: {
a: "orderId affiliation total tax shipping city state country".split(" "),
v: "_gat.GA_EComm_.Transactions_"
},
_trackTrans: {
a: []
}
}
}, {
link: "http://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiEventTracking?",
methods: {
_trackEvent: {
a: ["category", "action", "opt_label", "opt_value", "opt_noninteraction"],
types: [1, 1, 1, 2, 4],
i: 3
}
}
}, {
link: "http://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiSearchEngines",
methods: {
_addIgnoredOrganic: {
a: ["newIgnoredOrganicKeyword"]
},
_addIgnoredRef: {
a: ["newIgnoredReferrer"]
},
_addOrganic: {
a: ["newOrganicEngine", "newOrganicKeyword", "opt_prepend", "opt_displayName", "opt_urlPattern"],
types: [1, 1, 4, 1, 1],
i: 3
},
_clearIgnoredOrganic: {
a: []
},
_clearIgnoredRef: {
a: []
},
_clearOrganic: {
a: []
}
}
}, {
link: "http://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiSocialTracking",
methods: {
_trackSocial: {
a: ["network", "socialAction", "opt_target", "opt_pagePath"],
i: 2
}
}
}, {
link: "http://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiWebClient",
methods: {
_getClientInfo: {
a: [],
v: 4
},
_getDetectFlash: {
a: [],
v: 4
},
_getDetectTitle: {
a: [],
v: 4
},
_setClientInfo: {
a: ["bool"],
types: [4]
},
_setDetectFlash: {
a: ["bool"],
types: [4]
},
_setDetectTitle: {
a: ["bool"],
types: [4]
}
}
}, {
link: "http://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiUrchin",
methods: {
_getLocalGifPath: {
a: [],
v: 1
},
_getServiceMode: {
a: [],
v: 3
},
_setLocalGifPath: {
a: ["newLocalGifPath"]
},
_setLocalRemoteServerMode: {
a: []
},
_setLocalServerMode: {
a: []
},
_setRemoteServerMode: {
a: []
}
}
}, {
link: "http://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiUserTiming",
methods: {
_trackTiming: {
a: ["category", "variable", "time", "opt_label", "opt_sampleRate"],
types: [1, 1, 3, 1],
i: 2
}
}
}, {
link: "http://support.google.com/analytics/bin/answer.py?answer=2558867",
methods: {
_require: {
a: ["inpage_linkid", "pluginUrl"]
}
}
}, {
link: null,
methods: {
_addDevId: {
a: ["devId"],
types: [1]
},
_anonymizeIp: {
a: []
},
_clearTrans: {
a: []
},
_clearXKey: {
a: ["projectId"],
types: [2]
},
_clearXValue: {
a: ["projectId"],
types: [2]
},
_createEventTracker: {
a: ["name"],
types: [1]
},
_get: {
a: ["key"],
types: [1]
},
_getPlugin: {
a: ["name"],
types: [1]
},
_getXKey: {
a: ["projectId", "num"],
types: [3, 3]
},
_getXValue: {
a: ["projectId", "num"],
types: [3, 3]
},
_sendXEvent: {
a: []
},
_set: {
a: ["key", "value"],
types: [1, 1]
},
_setAutoTrackOutbound: {
a: [],
types: [],
Pa: !0
},
_setTrackOutboundSubdomains: {
a: [],
types: [],
Pa: !0
},
_setHrefExamineLimit: {
a: [],
types: [],
Pa: !0
},
_setMaxCustomVariables: {
a: ["maxCustomVars"],
types: [2]
},
_setPageGroup: {
a: ["index", "value"],
types: [3, 1]
},
_setTransactionDelim: {
a: ["delim"],
types: [1]
},
_setXKey: {
a: ["key"],
types: [1]
},
_setXValue: {
a: ["value"],
types: [1]
},
_visitCode: {
a: []
}
}
}],
Ri = {};
Qi.forEach(function(a) {
fb(Ri, a.methods);
Hi.forEach(function(a) {
ab(a, function(a, b) {
Ri["gat." + b] = a
})
})
});
var Si = [];
ab(Ri, function(a, b) {
Si.push(b.toLowerCase())
});
var Ti = function(a) {
return Ri[a.text]
},
Ui = function(a) {
return Ka(Si, a.toLowerCase())
},
Vi = function(a) {
var b = Ja(Qi, function(b) {
return k(b.methods[a])
});
return b ? b.methods[a].link || b.link : null
},
Xi = function(a) {
var b = Pi[a];
return K(L(Ef("Statements", function(a) {
return b.na && (this.b = a = wc(a.textContent, this.b)) && y(b.na.wb, a.text) ? a.text : !1
}), [Wi(b)]), "https://developers.google.com/analytics/resources/articles/gaTrackingTroubleshooting#commonTrackingErrors")
},
Wi = function(a) {
return L(Ef("Method", function(b,
c) {
var d = y(a.na.method, c.label);
this.b = a.na.method.lastIndex;
if (n(d)) {
var e = nc(d);
if (0 < e.length)
if (e = w(a.na.oa, e[0])) {
var f = e[1],
g = Od(c).label;
if (!y(new RegExp(a.oa(f || "", g), "im"), b.textContent)) return !1;
this.text = e[2];
this.infoLink = Vi(this.text)
} else return !1
}
return d
}), [K(G("Missing leading '_' in method name: '%s'", function(a) {
return Ui("_" + a.text) && a.text
}), "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#missing_underscore"), li(Ui), mi(Ti, Ui), ni(Ti), oi(Ti), L(K(G("%s",
function(b) {
if (a.oa && a.rb) {
var c = a.rb(b.label, b.text);
c.shift();
var d = Ti(b);
return !!d && pi(this, b.text, d, c)
}
return !1
}), "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092"), [Ce("Method call", function(a) {
this.text = "Method call: " + a.parent.text;
return a.parent.label
}, "snippet_js")])])
};
var Yi = function() {
U.call(this, 0, 99);
this.J = ["googletagmanager.com/"]
};
q(Yi, U);
var Zi = ["AdWords Conversion Tracking", "Remarketing Tag (old)", "Remarketing Tag (new)", "Google Analytics", "Floodlight"],
$i = {
dataLayer: new Vf
},
aj = {
pageTitle: {
type: 1
},
pageCategory: {
type: 19
},
pageSubCategory: {
type: 19
},
pageVersion: {
type: 2
},
pageTestVariation: {
type: 19
},
pageValue: {
type: 2
},
pageAttributes: {
type: 20
},
visitorId: {
type: 1
},
visitorLoginState: {
type: 1
},
visitorType: {
type: 1
},
visitorDemographicInfo: {
type: 20
},
visitorSocialConnections: {
type: 20
},
visitorLifetimeValue: {
type: 2
},
visitorExistingCustomer: {
type: 1
},
conversionDate: {
type: Date
},
conversionValue: {
type: 2
},
conversionType: {
type: 1
},
conversionId: {
type: 1
},
conversionAttributes: {
type: 20
},
transactionId: {
type: 1
},
transactionDate: {
type: Date
},
transactionType: {
type: 1
},
transactionAffiliation: {
type: 1
},
transactionTotal: {
type: 2
},
transactionShipping: {
type: 2
},
transactionTax: {
type: 2
},
transactionPaymentType: {
type: 1
},
transactionCurrency: {
type: 1
},
transactionShippingMethod: {
type: 1
},
transactionPromoCode: {
type: 1
},
transactionProducts: {
type: 20
},
siteSearchTerm: {
type: 1
},
siteSearchFrom: {
type: 1
},
siteSearchCategory: {
type: 1
},
siteSearchResults: {
type: 2
}
},
bj = [];
ab(aj, function(a, b) {
bj.push(b.toLowerCase())
});
Yi.prototype.X = function() {
return $i
};
Yi.prototype.la = function() {
return Object.keys($i).map(function(a) {
return Te(new Uf("Hidden", "Google Tag Manager", "Data Layer", "https://developers.google.com/tag-manager/android/v3/reference/com/google/tagmanager/DataLayer", function(b) {
return null == b[a] ? !1 : a
}), "Hidden").c(M(I(new Uf("Info", "Google Tag Manager", a), "json"), "Data Layer").c(De("datalayer parameters", function(a) {
return m(a.template.context) && ((a = a.template.context) && !this.b && (this.b = new ve(a)), this.b && (this.b = we(this.b)), a = this.b) ? (this.context =
a.current(), JSON.stringify(this.context)) : !1
}).c(De("datalayer parameter", function(a) {
var c = Ue(this, a.template.context);
return c ? (this.text = c.current(), this.context = a.template.context[this.text], JSON.stringify(this.context)) : !1
}).c(K(G("Data layer variable name in wrong case: '%s'", function(a) {
a = a.text;
return !k(aj[a]) && -1 < bj.indexOf(a.toLowerCase()) ? a : !1
}), "https://support.google.com/tagassistant/answer/3207128?ref_topic=2947092#dl_conversion"), G("Number field should not be quoted: '%s'", function(a) {
var c =
a.text;
return k(aj[c]) && 2 == aj[c].type && n(a.template.context) ? c : !1
})))))
})
};
var cj = L(K(I(H("Account ID", function(a) {
this.format = "";
return a.label || "not set"
}), "copyable"), ""), [K(G("Invalid or missing account ID", function(a) {
return !x(/^GTM-[0-9A-Z]{4,6}$/, a.label)
}), "https://support.google.com/tagassistant/answer/3207128?ref_topic=2947092#multiple_tags")]);
Yi.prototype.A = function(a) {
return [L(Q("Google Tag Manager", "googletagmanager.com/", r("%s ${%s}", "Google Tag Manager", "Account ID"), "http://support.google.com/tagmanager/answer/2574370", function(a) {
return Fb(v(a.url)).get("id")
}), a ? [] : [cj, K(ff, "https://support.google.com/tagassistant/answer/3207128?ref_topic=2947092#nonstandard"), Te(nf(), "Fine")])]
};
Yi.prototype.s = function() {
return [Rf("Google Tag Manager", r("%s ${%s}", "Google Tag Manager", "Account ID"), "http://support.google.com/tagmanager/answer/2574370", '//script[contains(@src, "www.googletagmanager.com/gtm.js?id=")]', function(a) {
return y(/gtm.js[?]id=([^=&]*)/, a.getAttribute("src"))
}).c(cj, Mf().c(T("Missing closing \x3c/script> tag.", function(a) {
return !a.externalScript && y(/<\/html>\s*$/m, a.textContent)
}), L(Sf(Ff("Data Layer Variable", function(a, b) {
var c = y(new RegExp("\\(window,\\s*document\\s*,\\s*['\"]script['\"]\\s*,\\s*['\"]([^'\"]*)['\"]\\s*,\\s*['\"]" +
b.parent.label + "['\"]\\)", "m"), a.textContent);
n(c) && ($i[c] = Wf(this, "Google Tag Manager"), this.type = "dataLayer" == c ? "Hidden" : "Info");
return c
}), '//script[contains(text(),"www.googletagmanager.com/gtm.js")]'), [Sf(K(T("Data layer needs to be above the container snippet", function(a, b) {
return y(new RegExp(b.label + "\\s*=\\s*\\[\\s*[{]([^;]*)[}]\\s*\\]\\s*;", "im"), a.textContent)
}), "https://support.google.com/tagassistant/answer/3207128?ref_topic=2947092#dl_snippet"), function(a, b) {
var c = b.parent.parent.label,
d = b.label;
return '//script[contains(translate(text(), " &#13;&#10;", ""), "\'' + d + "','" + c + '\'") or contains(translate(text(), " &#13;&#10;", ""), \'"' + d + '","' + c + '"\')]/following::script[contains(text(), "dataLayer")]'
}), K(Hf("Code found outside of <body> tag", function(a) {
return a.parentNode ? "HEAD" == a.parentNode.nodeName : !1
}), "https://support.google.com/tagassistant/answer/3207128?ref_topic=2947092#body_tag"), K(T("<script> tag must not be included in a <%s>", function(a) {
return a.parentNode ? "HEAD" != a.parentNode.nodeName &&
"BODY" != a.parentNode.nodeName && a.parentNode.nodeName.toLowerCase() : !1
}), "https://support.google.com/tagassistant/answer/3207128?ref_topic=2947092#script_flow")]), De("Script", function(a) {
return "http://www.googletagmanager.com/gtm.js?id=" + a.label
}), K(If, "https://support.google.com/tagassistant/answer/3207128?ref_topic=2947092#iframe"), Jf, Kf))]
};
var dj = function(a) {
wd(a, ["HTTP response code indicates tag failed to fire"]).forEach(function(a) {
a.infoLink = "https://support.google.com/tagassistant/answer/3207128?ref_topic=2947092#http_response"
})
},
ej = function(a) {
a = Cd(a);
a.length && a.forEach(function(a) {
a.type = "Warning";
a.text += ". This could be due to an empty or un-published container"
})
};
Yi.prototype.W = function() {
return [vf("Google Tag Manager", function(a) {
a = zd(a, ["Google Tag Manager"]);
dj(a);
ej(a)
}), sf("Suggestion", "Google Tag Manager", "Multiple installations of Google Tag Manager detected", "https://support.google.com/tagassistant/answer/3207128?ref_topic=2947092#multiple_tags", function(a) {
return 1 < zd(a, ["Google Tag Manager"]).length
}), K(sf("Suggestion", "Google Tag Manager", "Consolidate your tags with Google Tag Manager.", "http://support.google.com/tagmanager/", function(a) {
if (!pd(a,
"Google Tag Manager").length) {
var b = [];
Ld(a, Zi, function(a) {
"Tag" == a.type && -1 == b.indexOf(a.category) && b.push(a.category)
});
return 1 < b.length
}
return !1
}), "https://support.google.com/tagassistant/answer/3207128?ref_topic=2947092#consolidate_gtm")]
};
fg(new Yi);
var fj = function() {
U.call(this, 0, 2)
};
q(fj, U);
var gj = /\/collect$/,
hj = /\/__utm.gif/,
ij = [];
ij[5] = ["Category", "Action", "Label", "Value"];
ij[14] = ["Category", "Variable", "Time", "Label", "Sample Rate"];
var jj = [];
jj[5] = /(?:\d*\([^)]*\))*5\(([^)]*)\)(?:\(([^)]*)\))*/;
jj[14] = /(?:\d*\([^)]*\))*14\((?:[0-9]*!)?([^)]*)\)/;
var kj = [];
kj[5] = "Event";
kj[14] = "Page Load";
var lj = {
1: " (visitor)",
2: " (session)",
3: " (page)"
},
mj = r("%s ${%s}", "Google Analytics", "Web Property ID"),
nj = ["utmac", "tid"],
oj = ["utme"],
pj = [" N/A ", "an"],
qj = [" N/A ", "aid"],
rj = [" N/A ", "aiid"],
sj = [" N/A ", "av"],
tj = ["utmtci"],
uj = ["utmtco"],
vj = ["utmtrg"],
wj = ["utmcct", "cc"],
xj = [" N/A ", "ci"],
yj = ["utmctr", "ck"],
zj = ["utmcmd", "cm"],
Aj = ["utmccn", "cn"],
Bj = ["utmcsr", "cns"],
Cj = ["utmiva", "iv"],
Dj = [" N/A ", "cu"],
Ej = [" N/A ", "dl"],
Fj = [" N/A ", "ea"],
Gj = [" N/A ", "ec"],
Hj = [" N/A ", "el"],
Ij = [" N/A ", "ev"],
Jj = [" N/A ",
"exd"
],
Kj = [" N/A ", "exf"],
Lj = [" N/A ", "xid"],
Mj = [" N/A ", "xvar"],
Nj = ["utmt", "t"],
Oj = ["utmip", "uip"],
Pj = [" N/A ", "linkid"],
Qj = ["utmipc", "ic"],
Rj = ["utmipn", "in"],
Sj = ["utmipr", "ip"],
Tj = ["utmiqt", "iq"],
Uj = ["utmn", "z"],
Vj = ["utmr", "dr"],
Wj = [" N/A ", "cd"],
Xj = ["utmsa", "sa"],
Yj = ["utmsn", "sn"],
Zj = ["utmsid", "st"],
ak = ["utmtsp", "ts"],
bk = ["utmtst", "ta"],
ck = ["utmttx", "tt"],
dk = ["utmdt", "dt"],
ek = [" N/A ", "utc"],
fk = [" N/A ", "utl"],
gk = [" N/A ", "utt"],
hk = [" N/A ", "utv"],
ik = [" N/A ", "dns"],
jk = [" N/A ", "pdt"],
kk = [" N/A ",
"rrt"
],
lk = [" N/A ", "tcp"],
mk = [" N/A ", "srt"],
nk = ["utmtto", "tr"],
ok = ["utmp", "dp"],
pk = ["utmtid", "ti"],
qk = [" N/A ", "tf"],
rk = [" N/A ", "ua"],
sk = ["utmvid", "uid"],
tk = ["utmwv", "v"],
uk = function(a) {
return (D["Google Analytics-" + a] || {}).level || "STANDARD"
},
vk = function(a, b) {
var c = W(oj, b),
d = w(jj[a], c);
if (0 < d.length) {
var c = d[1].split("*"),
e = ij[a].slice(0, c.length),
d = d[2];
k(d) && (c.push(d), d = ij[a], e.push(d[d.length - 1]));
d = this.b ? this.b : 0;
if (d < c.length) return this.b = d + 1, this.text = kc(e[d]), kc(c[d])
}
return this.b = !1
},
wk = function(a, b) {
var c = a.b ? a.b : 0,
d = O(b),
e = y(/utme=(?:\d*\([^)]*\))*11\(([^)]*)\)/, d.m.toString()),
f = {};
e && Ea(e.split("*"), function(a) {
a = a.split("!");
2 == a.length && (f[a[0]] = a[1])
});
if ((e = w(/utme=(?:\d*\([^)]*\))*8\(([^)]*)\)9\(([^)]*)\)/, d.m.toString())) && 3 == e.length) {
for (var d = e[1].split("*"), e = e[2].split("*"), g = [], l = 0, z = 0; z < d.length; z++) {
l++;
if (z < e.length) {
var C = y(/([0-9]{1,2})!/, d[z]),
R = y(/([0-9]{1,2})!/, e[z]);
C && C == R && (l = parseInt(C, 10), d[z] = d[z].substring(C.length + 1), e[z] = e[z].substring(R.length +
1))
}
g.push(l)
}
if (c < d.length) return a.b = c + 1, a.text = "Custom Variable " + g[c], kc(d[c]) + ": " + kc(e[c]) + (f[g[c]] ? lj[f[g[c]]] : "")
}
return a.b = !1
},
xk = function(a, b, c, d) {
d = O(d);
var e = w(b, d.m.toString());
c.b = b.lastIndex;
return e ? (c.text = a + " " + e[2], a = Gb(d, e[1]), k(a) ? a : !1) : !1
},
W = function(a, b) {
var c = O(b),
c = a[x(hj, c.g) ? 0 : 1],
c = Gb(O(b), c),
c = k(c) ? c : !1;
try {
if (n(c)) return decodeURIComponent(c)
} catch (d) {}
return c
},
yk = K(L(M(bf("Custom Variables", function(a) {
a = W(oj, a);
a = (a = w(/(?:\d+\([^)]*\))*8\(([^)]*)\)9\(([^)]*)\)/, a)) &&
3 == a.length ? a[1].split("*").length : 0;
return 0 < a ? "" + a : !1
}), "Custom Variables"), [L(N("Custom Variable", function(a) {
return wk(this, a)
}), [Fe("The total combined length of any custom variable name and value may not exceed 128 characters.", function(a) {
return 130 < a.label.length
})]), J(Fe("More than 5 custom variables are used.", function(a) {
return "STANDARD" == uk(Od(a).label) && 5 < parseInt(a.label, 10)
}), "Google Analytics Premium accounts have 50 custom variables available.")]), "https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingCustomVariables"),
zk = {},
X = function(a) {
var b = zk[a];
b || (b = K(Fe("Parameter for %s is too long (max %s).", function(b) {
for (var d = b.label, e = [], f = 0; f < d.length; ++f) e.push(d.charCodeAt(f));
return e.length > a ? (this.text = r("Parameter for %s is too long (max %s).", b.text, a), !0) : !1
}), "https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters"), zk[a] = b);
return b
},
Ak = function() {
var a = /(cd(\d+))=/g,
b = /(cm(\d+))=/g;
return K(L(M(bf("Custom Metrics", function(a) {
a = Fb(O(a)).F().filter(p(x, /cd\d+/)).length;
return 0 <
a ? "" + a : !1
}), "Custom Metrics"), [L(N("Custom Dimension", function(b) {
return xk("Custom Dimension", a, this, b)
}), [X(150)]), L(N("Custom Metric", function(a) {
return xk("Custom Metric", b, this, a)
}), [G("%s must be a number.", function(a) {
return Dc(a.label) || Ec(a.label) ? !1 : a.text
})]), Fe("More than 20 custom variables are used.", function(a) {
return "STANDARD" == uk(Od(a).label) && 20 < parseInt(a.label, 10)
})]), "https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingCustomVariables")
},
Bk = L(H("Web Property ID",
function(a) {
D["Google Analytics-" + a.label] ? (this.infoLink = D["Google Analytics-" + a.label].url, this.valueFormat = "linked") : this.valueFormat = "copyable";
return a.label || "not set"
}), [K(G("Leading or trailing whitespace in ID", function(a) {
var b = k(a.label) ? vc([/^\s+[^ ]/, /[^ ]\s+$/], a.label) : !0;
b && (a.parent.label = pa(a.label));
return b
}), "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#whitespace"), K(G("Invalid or missing web property ID", function(a) {
return k(a.label) ? !x(/^\s*(?:UA|YT|MO)-\d{4,10}-\d+\s*$/,
a.label) : !0
}), "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#missing_property")]),
Ck = function(a, b) {
return Te(Y(a, b, void 0), "Fine")
},
Y = function(a, b, c) {
a = N(a, p(W, b));
c && M(a, c);
return a
},
Dk = function(a) {
a = Fb(hf(a)).get("gclid");
return k(a) ? a + "" : !1
},
Pk = function(a, b, c) {
var d = c ? [] : [Y("Element ID", Pj), yk, Ak(), S, L(Y("Title", dk), [X(1500)]), L(Te(I(Y("Document location URL", Ej), "link_expandable"), "Hidden"), [X(2048)]), I(L(Y("Tracked page", ok), [X(2048)]), "link_expandable")];
return L(Q("Google Analytics", [b], mj, "https://support.google.com/analytics/answer/1008080", function(a) {
var b = O(a);
return (x(gj, b.g) || x(hj, b.g)) && (W(nj, a) || "")
}), c ? [] : [Bk, N("Pixel Version/Syntax", function() {
return Z.T.u == a && a
}), N("Code Version/Syntax", function(a, b) {
return A(/google-analytics.com\/(?:.*\/)?collect/, a) ? Z.da.u : A(/stats.g.doubleclick.net\/(?:.*\/)?__utm.gif/, a) ? Z.T.u : A(/google-analytics.com\/(?:.*\/)?__utm.gif/, a) && E(b, "Protocol version number") && y(/1\.*/, E(b, "Protocol version number").label) ? Z.$a.u : !1
}), bf("Found GTM parameter in tracking url",
function(a) {
return a.uri.m.get("gtm") || !1
}), L(N("Adwords auto-tagging detected", Dk), [K(Fe("Auto-tagging detected is not set up correctly", F.prototype.La), "https://support.google.com/analytics/answer/2938246").otherwise(J(K($e("Adwords auto-tagging mismatch", function(a, b) {
var c = a.redirects;
if (c)
for (var d = b.label, z = 1, C; C = c[z]; z++)
if ((C = Fb(v(C)).get("gclid")) && C != d) return !0;
return !1
}), "https://support.google.com/analytics/answer/2938246"), "The gclid from initial request does not match the gclid in the final URL."))]).otherwise(J(K($e("Adwords auto-tagging missing",
function(a) {
if (a = a.redirects)
for (; a = a[1];) return (a = Fb(v(a)).get("gclid")) ? a + "" : !1;
return !1
}), "https://support.google.com/analytics/answer/2938246"), "The initial request had a gclid parameter, but it is not detected in the final URL.")), M(N("Campaign Data", function(a) {
a = W(ok, a);
a = !!a && a.match(/(utm_\w+\=[\w|\d]*)/g) || [];
return 0 < a.length ? a.join(";") : !1
}, "map"), "Campaign Data"), L(I(Ck("Referral", Vj), "link_expandable"), [X(2048)]), L(Ck("Protocol version number", tk), [X(100)]), L(Y("Screen name / content description",
Wj), [X(2048)]), Ck("User ID", sk), L(Y("Experiment ID", Lj), [X(40)]), Y("Experiment Variant", Mj), Ck("User Agent override", rk), Ck("IP Address override", Oj), M(L(Y("Campaign Data", Aj), [X(100)]), "Campaign Data"), M(L(Y("Campaign Data", Bj), [X(100)]), "Campaign Data"), M(L(Y("Campaign Medium", zj), [X(50)]), "Campaign Data"), M(L(Y("Campaign Keyword", yj), [X(500)]), "Campaign Data"), M(L(Y("Campaign Content", wj), [X(500)]), "Campaign Data"), M(L(Y("Campaign ID", xj), [X(100)]), "Campaign Data"), Ek("Page Load", "Time ${bucketIndex}: ${Category} - ${Variable}",
14, d).otherwise(Ek("Events", "Event ${bucketIndex}: ${Category} - ${Action}", 5, d).otherwise(Fk(d).otherwise(Gk(d).otherwise(Hk(d).otherwise(Ik(d).otherwise(Jk(d).otherwise(Kk(d).otherwise(Lk(d).otherwise(Mk(d).otherwise(Nk(d).otherwise(Ok(d)))))))))))), K(ff, "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#non_standard")])
},
Lk = function(a) {
return P("App / Screen Tracking", r("${%s}", "App name"), function(a) {
return "screenview" == W(Nj, a) ? W(qj, a) || "" : !1
}, [L(Y("App name", pj), [X(100)]),
L(Y("App ID", qj), [X(150)]), L(Y("App installer ID", rj), [X(150)]), L(Y("App Version", sj), [X(100)])
].concat(a))
},
Fk = function(a) {
return P("Events", r("Event ${bucketIndex} ${%s} - ${%s}", "Category", "Action"), function(a) {
var c = O(a);
M(this, "Event");
return x(gj, c.g) && "event" == W(Nj, a) ? "" + W(Gj, a) + W(Fj, a) + (W(Hj, a) || "") : !1
}, [L(Y("Category", Gj), [X(150)]), L(Y("Action", Fj), [X(500)]), L(Y("Label", Hj), [X(500)]), Y("Value", Ij)].concat(a))
},
Gk = function(a) {
return P("Exceptions", "Exception ${bucketIndex}", function(a) {
return "exception" ==
W(Nj, a)
}, [L(Y("Description", Jj), [X(150), $e("Tracked a fatal exception", function(a) {
return "1" == W(Kj, a)
}).otherwise(cf("Tracked a non-fatal exception"))]), Y("Is Fatal", Kj)].concat(a))
},
Ik = function(a) {
return P("Pageview Requests", "Pageview ${bucketIndex}", function(a) {
a = W(Nj, a);
return "pageview" == a || !a
}, a, function(a) {
return W(Uj, a) || !0
})
},
Ok = function(a) {
return P("Other Requests", "Other Requests ${bucketIndex}", function(a) {
return W(Nj, a)
}, [L(Y("Hit Type", Nj), a)])
},
Jk = function(a) {
return P("Social", r("${%s}: ${%s}",
"Action", "Network"), function(a) {
return "social" == W(Nj, a) && W(Zj, a)
}, [L(Y("Action", Xj), [X(50)]), L(Y("Network", Yj), [X(50)]), L(Y("Target", Zj), [X(2048)])].concat(a))
},
Kk = function(a) {
return P("Timings", r("${%s}: ${%s}", "Category", "Variable"), function(a) {
return "timing" == W(Nj, a) ? W(gk, a) : !1
}, [L(Y("Category", ek), [X(150)]), L(Y("Variable", hk), [X(500)]), Y("Time", gk), L(Y("Label", fk), [X(500)]), Y("DNS load time", ik), Y("Page download time", jk), Y("Redirect time", kk), Y("TCP connect time", lk), Y("Server response time",
mk)].concat(a))
},
Hk = function(a) {
return P("Keep Alive", "Keep Alive ${bucketIndex}", function(a) {
return "dc" == W(Nj, a)
}, a)
},
Mk = function(a) {
return L(I(Re(Ye("Transaction %s"), function(a) {
var c = v(a.url),
d = W(Nj, a);
return !x(hj, c.g) || "tran" != d && "transaction" != d ? !1 : W(pk, a)
}), "group_status"), [L(I(Re(Xe("Total"), p(W, nk)), "value_status"), [L(Y("Transaction ID", pk), [X(500)]), L(Y("Affiliation", qk), [X(500)]), Y("Affiliation or Store name", bk), Y("Total", nk).otherwise(G("Missing total amount.")), Y("Tax", ck), Y("Shipping cost",
ak), Y("Billing City", tj), Y("Billing region", vj), Y("Billing Country", uj)].concat(a))])
},
Nk = function(a) {
return L(I(Re(Ye("Transaction %s"), function(a) {
var c = v(a.url);
return x(hj, c.g) && "item" == W(Nj, a) ? W(pk, a) : !1
}), "group_status"), [L(I(Re(Xe("Item %s"), function(a) {
this.text = "Item " + W(Qj, a);
return W(Sj, a)
}), "value_status"), [Y("Affiliation or Store name", bk), L(Y("SKU / Code", Qj), [X(500)]).otherwise(G("Missing SKU/code.")), Y("Product Name", Rj), L(Y("Category or variation", Cj), [X(500)]), Y("Unit price", Sj).otherwise(G("Missing unit price.")),
Y("Quantity", Tj).otherwise(G("Missing quantity.")), L(Y("Currency Code", Dj), [X(10)])
].concat(a))])
},
Ek = function(a, b, c, d) {
return P(a, b, function(a) {
M(this, kj[c]);
var b = O(a);
return x(hj, b.g) && "event" == W(Nj, a) && x(jj[c], W(oj, a) || "")
}, [M(N("Parameter", p(vk, c)), kj[c])].concat(d))
};
fj.prototype.A = function(a) {
return [Pk("Any", "google-analytics.com/", !!a), Pk(Z.T.u, "stats.g.doubleclick.net/", !!a), Q("Google Analytics", "google-analytics.com/", "Google Analytics Script", "https://support.google.com/analytics/answer/1008080", function(a) {
return !!A(/((?:ga|dc|analytics)(?:_debug)?.js)/, a)
}, "", [M(N("GA Detected", function(a) {
return !!A(/((?:ga|dc|analytics).js)/, a)
}), "URLs").c(S), M(N("GA Debug Detected", function(a) {
return !!A(/((?:ga|dc|analytics)(?:_debug).js)/, a)
}), "URLs").c(S)])]
};
var Qk = K(Ae("Suggestion", "Google Analytics", "Consider update to the async version"), "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#update_async"),
Z = {
da: {
u: "Universal",
cb: function(a) {
return uc([/create/i, /displayfeatures/i, new RegExp(Z.da.S[1].source + /(?:[^;\n]*[;\n])+[a-zA-Z_0-9. ]+/.source + /\(\s*["']require["']\s*,\s*["']displayfeatures["']/.source, "gi")], a.textContent) ? "Universal with Display Features" : uc([/create/i, /adfeatures/i, new RegExp(Z.da.S[1].source + /(?:[^;\n]*[;\n])+[a-zA-Z_0-9. ]+/.source +
/\(\s*["']require["']\s*,\s*["']adfeatures["']/.source, "gi")], a.textContent) ? "Universal with Ad Features" : Z.da.u
},
link: "https://developers.google.com/analytics/devguides/collection/analyticsjs/",
L: "google-analytics.com/analytics.js",
ka: [],
S: [/create/i, /["'](?:[a-zA-Z_0-9]*\.)*create["'],\s*["'](UA-[^"']*)["']/gi],
ja: function() {
return K(L(Ef("Universal analytics statements", function(a) {
return (this.b = a = wc(a.textContent, this.b)) && y(qi, a.text) ? a.text : !1
}), [Gi()]), "https://developers.google.com/analytics/resources/articles/gaTrackingTroubleshooting#commonTrackingErrors")
}
},
Ua: {
u: "Asynchronous",
link: "https://support.google.com/analytics/answer/1008080",
L: "google-analytics.com/ga.js",
ka: [],
S: [/setAccount/i, /\[\s*["'](?:[a-zA-Z_0-9]*\.)?_?setAccount["']\s*,\s*["']([^"']*)["']/gi],
pb: ["stats.g.doubleclick.net/dc.js", ".wysistat.com"],
ja: p(Xi, "async")
},
Ec: {
u: "Synchronous",
link: "https://support.google.com/analytics/answer/1012283",
L: "google-analytics.com/ga.js",
S: [/_getTracker/i, /_gat._getTracker\(["']([^\"']*)["']\)/gi],
ka: [Qk],
ja: p(Xi, "sync")
},
$a: {
u: "Urchin",
link: "https://support.google.com/analytics/answer/1008080",
L: "google-analytics.com/urchin.js",
S: [/(?:^|window.| )_uacct/gim, /_uacct = ["']([^\"']*)["'];/gim],
ka: [Qk],
ja: function() {
return H("Statements", Va)
}
},
T: {
u: "Remarketing",
link: "https://support.google.com/analytics/answer/2444872",
L: "stats.g.doubleclick.net/dc.js",
ka: [],
S: [/_setAccount/i, /["'](?:[a-zA-Z_0-9]*\.)*_setAccount["'],\s*["']([^"']*)["']/gi, /stats\.g\.doubleclick\.net\/dc\.js/],
ja: p(Xi, "async")
}
},
Rk = function(a) {
var b = [Bk, L(Cf("Code Version/Syntax", fa(a.cb) ? a.cb : Ua(a.u)), a.ka), H("Level", function(a) {
return (D["Google Analytics-" +
a.label] || {}).label || !1
}), Of.clone(), M(Cf("Code Snippet", function(b) {
return Nf(this, a.S[1].lastIndex, b)
}, "snippet_js"), "Code Snippet").c(K(If, "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#iframe"), K(T("Missing closing \x3c/script> tag.", function(a) {
return y(/<\/html>(.|\n)*$/m, a.textContent)
}), "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#missing_closing"), K(Sf(K(T("Missing %s script", function(b) {
return 0 === b ? a.L.substring(a.L.indexOf("/") + 1) :
!1
}), "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#missing_ga"), 'count(//script[contains(@src, "' + a.L + '")])'), "https://support.google.com/analytics/answer/1008083"), K(Hf("Code found outside of <head> tag", function(a) {
return !!a.parentNode && "HEAD" != a.parentNode.nodeName
}), "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#move_head"), a.ja(), K(Jf, "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#external_file"), Kf), M(Ce("Cookies",
function(a) {
a = (a = E(a, "Code Version/Syntax")) && 0 == a.label.indexOf("Universal") ? "_ga" : "__utm";
this.b || (this.b = document.cookie.split(/; */));
if (0 == this.b.length) return this.b = null, !1;
var b = this.b.pop().split("=");
return 0 == b[0].indexOf(a) ? (this.text = b[0], b[1]) : !1
}), "Cookies")];
return L(Rf("Google Analytics", mj, a.link, "//script", function(b) {
var d = uc(a.S, b.textContent);
this.b = b.textContent.length && a.S[1].lastIndex;
return "_setCustomVar" == d || d && a.pb && Ha(a.pb, function(a) {
return 0 <= b.textContent.indexOf(a)
}) ?
!1 : d
}), b)
},
Sk = function(a) {
var b = wd(a.relatedIssues, ["Code Version/Syntax"]);
b.length && yd(a.relatedIssues).forEach(function(a) {
kd(a, "Code Version/Syntax", b[0].label)
})
},
Tk = function(a) {
ud(a, "Pixel Version/Syntax").forEach(function(b) {
var c = E(b, "Pixel Version/Syntax"),
d = ed(b, "Code Version/Syntax", ["Universal with Ad Features", "Universal with Display Features"]);
if (c && c.label == Z.T.u && !d && (c = Id(a, b.label)) && "Google Analytics" == c.category) {
if (d = E(c, "Code Version/Syntax")) d.label = Z.T.u, c.infoLink = "https://support.google.com/analytics/answer/2444872";
id(b.relatedIssues, "Pixel Version/Syntax");
id(c.relatedIssues, "Missing ga.js script")
}
})
},
Uk = function(a) {
wd(a, ["_gat global object"]).forEach(function(b) {
var c = E(b, "_getTracker") || E(b, "_createTracker");
c && (c = y(/["']*([^"',]+)/, c.label), n(c) && (c = vd(a, c), c.length && (La(a, b), Yc(c[0], b))))
})
};
fj.prototype.W = function() {
return [vf("Google Analytics", function(a) {
var b = pd(a, "Google Analytics");
b.forEach(function(a) {
"Tag" == a.type && (ed(a, "Code Version/Syntax", ["Universal with Ad Features", "Universal with Display Features"]) && (kd(a, "Code Version/Syntax", Z.da.u), kd(a, "Code Version/Syntax", Z.T.u)), Sk(a), Hd(a, 2) && jd(a.relatedIssues, ["Missing ga.js script", "Missing dc.js script", "Missing urchin.js script"]))
});
var c = b.filter(function(a) {
return "Google Analytics Script" != a.text
});
Tf(a, c);
td(c).length &&
id(a, "No Google Analytics HTTP responses because opted out code detected.", !0);
Tk(b);
Uk(a);
wd(b, ["Google Analytics Script"]).forEach(function(b) {
0 < Ed(b.relatedIssues).length || hd(a, b, "Nothing to report")
})
}), sf("Suggestion", "Google Analytics", "Multiple Google Analytics tags detected", "https://support.google.com/analytics/answer/1032400", function(a) {
var b = zd(a, ["Google Analytics"]),
c = b.length,
d = wd(b, ["Google Analytics Script"]),
e = ud(b, "Code Version/Syntax", Z.T.u),
f = ud(b, "Code Version/Syntax", Z.da.u),
g = ud(b, "Code Version/Syntax", "Universal with Display Features"),
l = ud(b, "Code Version/Syntax", "Universal with Ad Features"),
c = c - d.length,
c = c - f.length,
c = c - l.length,
c = c - g.length,
c = c - e.length;
(a = E(a, "Detected more than one script containing _gaq and _gat variables.")) && a.label == c && (a.deduped = !0);
return Pd(b) ? !1 : 1 < f.length || 1 < l.length || 1 < g.length || 1 < e.length || 1 < c
}), sf("Warning", "Google Analytics", "Same web property ID is tracked twice.", "https://developers.google.com/analytics/devguides/collection/gajs/asyncMigrationExamples",
function(a) {
a = zd(a, ["Google Analytics"]);
a = Ta(a, function(a) {
return a.label
});
return bb(a, function(a) {
return Ha(a, function(a) {
var b = {},
e = E(a, "Pageview Requests");
if (e)
for (var e = Dd([e], "Tag"), f = 0, g; g = e[f]; f++) {
var l = E(g, "requestId");
l && !b[l.label] && (b[l.label] = [a, g])
}
e = Object.keys(b);
if (1 < e.length) {
e.sort();
for (var l = g = f = null, z = [], C = 0, R; R = e[C]; C++) {
a = b[R][0];
var ra = b[R][1],
V = E(ra, "Document location URL");
R = V ? V.label : "";
ra = (V = E(ra, "Tracked page")) ? V.label : "";
if (R == g && ra == l)
if (f == a) - 1 == z.indexOf(a) &&
(z.push(a), Yc(a, this));
else return !0;
g = R;
l = ra;
f = a
}
}
return !1
}, this)
}, this)
}), K(sf("Suggestion", "Google Analytics", "Add Google Analytics", "https://support.google.com/analytics/answer/1008080", function(a) {
return 0 == zd(a, ["Google Analytics", "Google Tag Manager"])
}), "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#add_ga"), J(sf("Warning", "Google Analytics", "Tag not fired through GTM", "https://support.google.com/tagmanager/answer/6103683", function(a) {
a = zd(a, ["Google Analytics"]);
Ea(a, function(a) {
var c = !!E(a, "Implemented in Google Tag Manager"),
d = !!E(a, "Found GTM parameter in tracking url");
c && !d && Yc(a, this)
}, this);
return !1
}), "Although it seems that the tag is included in GTM, this request was originated from a differnet snippet. Please check your code.")]
};
fj.prototype.s = function() {
var a = [];
ab(Z, function(b) {
a.push(Rk(b))
}, this);
Oa(a, [K(new yf("Warning", "Google Analytics", "No Google Analytics HTTP responses because opted out code detected.", "https://chrome.google.com/webstore/detail/google-analytics-opt-out/fllaojicojecljbmefodhfapmkghcbnh", "//script", function(a) {
return self === top && !a.externalScript && 'window["_gaUserPrefs"] = { ioo : function() { return true; } }' == a.textContent
}), "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#opted_out"),
K(new yf("Error", "Google Analytics", "Detected both ga.js and dc.js scripts which will make tracking ambiguous.", "https://support.google.com/analytics/answer/1008080", void 0, function(a) {
if (a.scripts) {
var c = Ga(a.scripts, function(a) {
return a.src && 0 < a.src.indexOf(Z.Ua.L)
});
a = Ga(a.scripts, function(a) {
return a.src && 0 < a.src.indexOf(Z.T.L)
});
return 0 < c.length && 0 < a.length
}
return !1
}), "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#ga_dc"), K(new yf("Error", "Google Analytics", "Detected both ga.js and urchin.js scripts which can cause reporting errors.",
"https://support.google.com/analytics/answer/1008080", void 0,
function(a) {
if (a.scripts) {
var c = Ga(a.scripts, function(a) {
return a.src && 0 < a.src.indexOf(Z.Ua.L)
});
a = Ga(a.scripts, function(a) {
return a.src && 0 < a.src.indexOf(Z.$a.L)
});
return 0 < c.length && 0 < a.length
}
return !1
}), "https://support.google.com/tagassistant/answer/3059154?ref_topic=2947092#ga_urchin"), new yf("Warning", "Google Analytics", "Detected more than one script containing _gaq and _gat variables.", "https://support.google.com/analytics/answer/1009683",
void 0,
function(a) {
return a.scripts ? (a = Ia(a.scripts, function(a) {
var b = a.textContent && a.textContent.match(/(?:$|[. \t])_ga[qt]\s*=/);
this.infoLink = a.src;
return b
}, this), 1 < a ? a.toString() : !1) : !1
}), L(M(new yf("Hidden", "Google Analytics", "_gat global object", "https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApi_gat", "//script", function(a) {
return y(/(?:^|[ ,;]|window\.)_gat\./g, a.textContent)
}), "_gat global object"), [Kf, Cf("Code Snippet", function(a) {
return Nf(this, a.textContent.indexOf("_gat"),
a)
}, "snippet_js").c(Ni())])
]);
return a
};
fg(new fj);
var Wk = function(a) {
var b = document,
c = null;
return (c = b.getElementsByClassName ? b.getElementsByClassName(a)[0] : b.querySelectorAll && b.querySelector ? b.querySelector("." + a) : Vk("*", a)[0]) || null
},
Vk = function(a, b) {
var c = document,
d = a && "*" != a ? a.toUpperCase() : "";
if (c.querySelectorAll && c.querySelector && (d || b)) return c.querySelectorAll(d + (b ? "." + b : ""));
if (b && c.getElementsByClassName) {
c = c.getElementsByClassName(b);
if (d) {
for (var e = {}, f = 0, g = 0, l; l = c[g]; g++) d == l.nodeName && (e[f++] = l);
e.length = f;
return e
}
return c
}
c = c.getElementsByTagName(d ||
"*");
if (b) {
e = {};
for (g = f = 0; l = c[g]; g++) d = l.className, "function" == typeof d.split && Ka(d.split(/\s+/), b) && (e[f++] = l);
e.length = f;
return e
}
return c
},
Xk = function(a, b) {
a = a.parentNode;
for (var c = 0; a;) {
va("parentNode" != a.name);
if (b(a)) return a;
a = a.parentNode;
c++
}
return null
};
var Yk = function() {
U.call(this, 0, 100);
this.J = ["pubads.g.doubleclick.net/"]
};
q(Yk, U);
var Zk = /googletag.(define(?:OutOfPage)?Slot\(.*?\))/g,
al = function() {
var a = [H("Document ID", p(Je, /(['"]div[^)]+['"]?)[)]/)), H("Accepted sizes", p(Je, /,\s*(\[?(?:\[\s*\d+\s*,\s*\d+\s*\]\s*,?\s*)+\]?)\s*,/)), H("Out of page", p(Je, /defineOutOfPageSlot/))];
return Qf("Ad Slots", r("AdSlot ${%s}", "Document ID"), a, $k)
},
bl = I(H("Network ID", function(a) {
var b;
b = D.GooglePublisherConsole;
for (var c = Vk("DIV", void 0), d = 0, e; e = c[d]; d++) y(/google_pubconsole/, e.id) && (e.style.display = b ? "block" : "none");
return a.label || "not set"
}),
"copyable"),
$k = function(a) {
a = y(Zk, a.textContent);
this.b = Zk.lastIndex;
return a
};
Yk.prototype.s = function() {
return [L(Rf("Google Publisher Tag", r("%s ${%s}", "Google Publisher Tag", "Network ID"), "https://support.google.com/dfp_premium/topic/28788?ref_topic=28149", '//script[contains(text(), "googletag")]', function(a) {
return !!a.textContent && y(/googletag\s*.\s*define(?:OutOfPage)?Slot\(\s*["']\/(\d+)\//g, a.textContent)
}), [bl, Mf(), al()])]
};
Yk.prototype.A = function(a) {
return [I(Q("Google Publisher Tag", "pubads.g.doubleclick.net/", r("%s ${%s}", "Google Publisher Tag", "Network ID"), "https://support.google.com/dfp_premium/topic/28788?ref_topic=28149", function(a) {
var c = Gb(O(a), "iu_parts");
return !!c && A(/pubads.g.doubleclick.net\/gampad\/ads/, a) && y(/(\d+)/, c)
}, "", a ? [] : [bl, S]), "unchecked")]
};
fg(new Yk);
var cl = function() {
U.call(this, 0, 99);
this.J = ["cdn.krxd.net/"];
this.H = u;
this.s = Ua([])
};
q(cl, U);
var dl = I(H("Configuration ID", function(a) {
return a.label || "not set"
}), "copyable");
cl.prototype.A = function(a) {
return [Q("Krux SuperTag", "cdn.krxd.net/", "Krux SuperTag", "http://www.krux.com/", function(a) {
return (a = Fb(v(a.url)).get("confid")) ? a + "" : !1
}, "unchecked", a ? [] : [dl, S])]
};
fg(new cl);
var el = function() {
U.call(this, 0, 99);
this.J = ["cloudfront.net/"];
this.H = u;
this.s = Ua([])
};
q(el, U);
var fl = I(H("Account ID", function(a) {
return a.label || "not set"
}), "copyable");
el.prototype.A = function(a) {
return [Q("Opentag", "cloudfront.net/", "Opentag", "http://www.opentag.com/", p(A, /(opentag-[^.]*)\.js/i), "unchecked", a ? [] : [fl, S])]
};
fg(new el);
var gl = function() {
U.call(this, 0, 99);
this.J = ["cdn.tagcommander.com"];
this.H = u;
this.s = Ua([])
};
q(gl, U);
var hl = I(H("Account ID", function(a) {
return a.label || "not set"
}), "copyable");
gl.prototype.A = function(a) {
return [Q("Tagcommander", "cdn.tagcommander.com", "Tagcommander", "http://www.tagcommander.com/", function(a) {
return Db(v(a.url))
}, "unchecked", a ? [] : [hl, S])]
};
fg(new gl);
var il = function() {
U.call(this, 0, 99);
this.J = ["levexis.com/"];
this.H = u;
this.s = Ua([])
};
q(il, U);
var jl = H("Account", function(a) {
return a.label || "not set"
});
il.prototype.A = function(a) {
return [Q("TagMan", "levexis.com/", "TagMan", "http://www.tagman.com/", p(A, /levexis\.com\/([^\/]*)\/tman.cgi/), "unchecked", a ? [] : [jl, S])]
};
fg(new il);
var kl = function() {
U.call(this, 0, 99);
this.J = ["tiqcdn.com/"];
this.H = u;
this.s = Ua([])
};
q(kl, U);
var ll = I(H("Account", function(a) {
return a.label || "not set"
}), "copyable");
kl.prototype.A = function(a) {
return [Q("Tealium", "tiqcdn.com/", "Tealium", "http://www.tealium.com/", p(A, /utag\/([^\/]+)\//i), "unchecked", a ? [] : [ll, S])]
};
fg(new kl);
var ml = function() {
U.call(this, 0, 99)
};
q(ml, U);
var nl = "gts-i-name gts-i-price gts-i-quantity gts-i-prodsearch-id gts-i-prodsearch-store-id gts-i-prodsearch-country gts-i-prodsearch-language".split(" "),
ol = function(a, b, c) {
return (c ? Cf : Ff)(a, function(a) {
return y(new RegExp("\\.push\\s*\\(\\s*(?:\\[[^\\]]*\\]\\s*,\\s*)*\\[\\s*[\"']?" + b + "[\"']?\\s*,\\s*[\"']?([^'\")]+)[\"']?\\s*\\]", "g"), a.textContent)
})
},
pl = L(I(H("Google Shopping ID", function(a) {
return a.label || "not set"
}), "copyable"), [K(He("Invalid or missing account ID"), "https://support.google.com/tagassistant/answer/3203009?ref_topic=2947092#invalid_id")]),
ql = I(H("gts-order-id", function(a) {
return a.label || "not set"
}), "copyable"),
rl = function(a) {
var b = "Remove the elements below:\n";
a.forEach(function(a) {
b = b + a + "\n"
});
return b
},
sl = function(a, b, c) {
c = c ? "class" : "id";
a = a.getElementsByTagName("SPAN");
for (var d = 0; d < a.length; d++) {
var e = a[d].getAttribute(c);
if (e && e === b) return a[d]
}
},
tl = function(a, b, c, d, e, f, g, l) {
f = k(f) ? f : "is incorrect";
g = k(g) ? g : "";
l = k(l) ? l : "";
return J(K(T(r('%s is missing in the order confirmation module: "%s"', a, b), function(a) {
a = sl(a, b, e);
return !k(a)
}),
"https://support.google.com/tagassistant/answer/3203009?ref_topic=2947092#" + g), r('Provide the Merchant Order %s in the "%s" field of the Google Trusted Stores Order Confirmation JavaScript code.', a, b)).otherwise(K(J(T(r('"%s" %s', b, f), function(a) {
a = sl(a, b, e);
return !x(c, a.textContent)
}), r('Follow the required format when providing the %s associated with the order in the "%s" field of the Google Trusted Stores Order Confirmation JavaScript code.\n%s', a, b, d)), "https://support.google.com/tagassistant/answer/3203009?ref_topic=2947092#" +
l))
},
ul = function(a, b, c, d, e, f) {
var g = k(void 0) ? void 0 : "is incorrect";
e = k(e) ? e : "";
f = k(f) ? f : "";
return J(K(Hf(r('%s is missing in the order confirmation module: "%s"', a, b), function(a) {
a = sl(a, b, !0);
return !k(a)
}), "https://support.google.com/tagassistant/answer/3203009?ref_topic=2947092#" + e), r('Provide the language associated with the account used to submit product data feeds to Google Shopping, in the "%s" field.\nThis is a recommended but optional field. This field does not affect core functionality, and leaving this warning unresolved will not prevent you from entering the monitoring period. However, merchants using Google Shopping should correct these errors to ensure proper integration. This integration will allow Google to more easily correlate specific products to data that you have provided in connection with Google Trusted Stores. If you have chosen to leave out this field, you may disregard this warning.',
b)).otherwise(K(J(T(r('"%s" %s', b, g), function(a) {
a = sl(a, b, !0);
return !x(c, a.textContent)
}), r('Follow the required format when providing the %s associated with the order in the "%s" field of the Google Trusted Stores Order Confirmation JavaScript code.\n%s', a, b, d)), "https://support.google.com/tagassistant/answer/3203009?ref_topic=2947092#" + f))
},
vl = p(y, /(?:^| )(gts\-[^ ]*)/);
ml.prototype.W = function() {
return [J(sf("Error", "Google Trusted Stores", "Order confirmation page is not in https", "http://support.google.com/trustedstoresmerchant/bin/answer.py?answer=2609894", function(a) {
var b = E(a, jf.text);
a = E(a, "gts-order-id");
return b && a ? (b.type = "Hidden", !0) : !1
}), "Implement the order confirmation page in https.\nMerchants must provide a secure way for customers to purchase products online. Thus, merchants must use https when transmitting customer information or financial data, including on order confirmation, order history and order status pages.")]
};
ml.prototype.A = function(a) {
return [L(Q("Google Trusted Stores", "googlecommerce.com/trustedstores/", "Google Trusted Stores ${Google Shopping ID}", "http://support.google.com/trustedstoresmerchant/bin/answer.py?answer=2609894", function(a) {
return Fb(v(a.url)).get("id")
}), a ? [] : [pl, lf("Google Shopping Account ID", "base_sid"), ff, S, bf("file check response issue handle", function(a) {
a = a.documentUrl;
return k(a) ? a : !1
})])]
};
ml.prototype.s = function() {
return [L(Rf("Google Trusted Stores", "Google Trusted Stores ${Google Shopping ID}", "http://support.google.com/trustedstoresmerchant/bin/answer.py?answer=2609894", '//script[contains(text(), "google_base")]', function(a) {
return y(/gts\.push\s*\(\s*\[\s*['"]?id['"]?\s*,\s*['"]?([^'"\]]*)/g, a.textContent)
}), [pl, J(Sf(K(T("Class name conflicts for class %s", function(a) {
var b = a.getAttribute("class");
return Xk(a, function(a) {
var b = a.getAttribute ? a.getAttribute("class") : "";
return a.id &&
Ka(["gtrust_badges", "gts-f-w", "gts-order"], a.id) || vl(b)
}) ? !1 : vl(b)
}), "https://support.google.com/tagassistant/answer/3203009?ref_topic=2947092#class_conflict"), '//*[contains(@class, "gts-")]'), 'Remove the "gts-" for any class names defined for CSS styles. The "gts-" prefix is used by Google Trusted Stores, and such class names in the page may cause conflicts with the Google Trusted Stores JavaScript code. Please update your CSS to use another name. You must avoid using "gts-" for any class names defined for CSS styles in the page.'),
L(I(ol("Google Shopping Item ID", "google_base_offer_id"), "copyable"), [G("Google Shopping Item ID should be an alphanumeric.", function(a) {
return !x(/^\w[\s\w]+$/, a.label)
})]).otherwise(J(Ee("Google Shopping Item ID is missing."), 'Provide the Google Shopping Item ID in the "google_base_offer_id" field of the Google Trusted Stores JavaScript code.')), L(I(ol("Google Shopping Account ID", "google_base_subaccount_id"), "copyable"), [J(He('Incorrect format: "google_base_subaccount_id"'), 'Update the Google Shopping Account ID in the "google_base_subaccount_id" field of the Google Trusted Stores JavaScript code. The Google Shopping Account ID typically follows this format: "[0-9]+". The Google Shopping Account ID provided appears to not match this format.')]).otherwise(J(G("Google Shopping Account ID is missing.",
function(a) {
this.type = E(a, "Google Shopping Item ID") ? "Error" : "Suggestion";
return !0
}), 'Provide the Google Shopping Account ID in the "google_base_subaccount_id" field of the Google Trusted Stores JavaScript code.')), ol("Google Base Country", "google_base_country", !0), ol("Google Base Language", "google_base_language", !0), ol("Container", "gtsContainer", !0), M(T("Missing closing \x3c/script> tag.", function(a) {
return y(/<\/html>\s*$/m, a.textContent)
}), "Code Snippet"), Ff("Old script found.", function() {
return !!Ja(document.scripts,
function(a) {
return a.src && 0 < a.src.indexOf("googlecommerce.com/trustedstores/gtmp_compiled.js")
})
}), M(Ff("Script found.", function() {
return !!Ja(document.scripts, function(a) {
return a.src && 0 < a.src.indexOf("googlecommerce.com/trustedstores/api/js")
})
}), "Code Snippet"), M(T("Missing script", function() {
return !Ja(document.scripts, function(a) {
return a.src && (0 < a.src.indexOf("googlecommerce.com/trustedstores/gtmp_compiled.js") || 0 < a.src.indexOf("googlecommerce.com/trustedstores/api/js"))
})
}), "Code Snippet"), M(J(K(Sf(T("JavaScript is implemented more than once on the page.",
function(a) {
return 1 < a
}), 'count(//script[contains(@src, "googlecommerce.com/trustedstores/")])'), "https://support.google.com/tagassistant/answer/3203009?ref_topic=2947092#js_page"), "The Trusted Stores JavaScript code must be implemented exactly once on each page. Remove all but one of the implementations of the Trusted Stores JavaScript code on this page."), "Code Snippet"), M(K(Hf("Code found outside of <body> tag", function(a) {
return a.parentNode ? "HEAD" == a.parentNode.nodeName : !1
}), "https://support.google.com/tagassistant/answer/3203009?ref_topic=2947092#outside_body"),
"Code Snippet"), M(K(T("<script> tag must not be included in a <%s>", function(a) {
return a.parentNode ? "HEAD" != a.parentNode.nodeName && "BODY" != a.parentNode.nodeName && a.parentNode.nodeName.toLowerCase() : !1
}), "https://support.google.com/tagassistant/answer/3203009?ref_topic=2947092#script_html"), "Code Snippet"), If, Jf, Kf, J(M(K(T("Missing DOCTYPE on the page.", function(a) {
return self === top && !a.externalScript && "html" != document.childNodes[0].name
}), "https://support.google.com/tagassistant/answer/3203009?ref_topic=2947092#missing_doctype"),
"Code Snippet"), 'Set the DOCTYPE of each HTML page to "<! DOCTYPE html>". An incorrect DOCTYPE may cause some browsers to render the page in quirks mode, which isn\u2019t supported by Google Trusted Stores.').otherwise(M(J(K(T("Incorrect DOCTYPE on the page.", function(a) {
return self === top && !a.externalScript && "" != document.childNodes[0].publicId && "" == document.childNodes[0].systemId
}), "https://support.google.com/tagassistant/answer/3203009?ref_topic=2947092#incorrect_doctype"), 'Set the DOCTYPE of each HTML page to "<! DOCTYPE html>". An incorrect DOCTYPE may cause some browsers to render the page in quirks mode, which isn\u2019t supported by Google Trusted Stores.'),
"Code Snippet")), Ef("robots.txt file check dom issue handle"), Of
]), L(Rf("Google Trusted Stores", "Google Trusted Stores ${Google Shopping ID}", "http://support.google.com/trustedstoresmerchant/bin/answer.py?answer=2609894", '//div[contains(@id, "gts-order")]'), [ql, K(J(T("Item level details of the order confirmation module are missing", function(a) {
a = sl(a, "gts-item", !0);
return !k(a)
}), 'Provide the item level details associated with the order in the "gts-item" fields of the Google Trusted Stores Order Confirmation JavaScript code. The gts-item fields include: gts-i-name; gts-i-price; gts-i-quantity; gts-i-prodsearch-id; gts-i-prodsearch-store-id; gts-i-prodsearch-country; gts-i-prodsearch-language; etc'),
"https://support.google.com/tagassistant/answer/3203009?ref_topic=2947092#item_details"), L(Sf(Ef("Google Trusted Stores"), '//span[contains(@class, "gts-item")]'), [ql, K(T("Unknown fields specified in the item level details of the order confirmation module", function(a) {
var b = [];
a = a.getElementsByTagName("span");
for (var c = 0, d; d = a[c]; c++)(d = d.getAttribute("class")) && !Ka(nl, d) && b.push(d);
J(this, rl(b));
return 0 != b.length
}), "https://support.google.com/trustedstoresmerchant/bin/answer.py?answer=2609894&topic=2609888&ctx=topic"),
tl("Item name", "gts-i-name", /\w+.*/, "", !0), tl("Item price", "gts-i-price", /^\d+(\.\d+)?$/, 'Required format: "123.45"', !0, void 0, "", "gts_price"), tl("Item quantity", "gts-i-quantity", /^\d+$/, 'Required format: "123"', !0, void 0, "", "gts_quantity"), ul("Google Shopping Item ID", "gts-i-prodsearch-id", /\w+.*/, "", "shopping_item", "gts_prodsearch_id"), ul("Google Shopping Account ID", "gts-i-prodsearch-store-id", /^\d+$/, 'Required format: "123"', "shopping_account", "gts_prodsearch_store"), ul("Google Shopping Country ID",
"gts-i-prodsearch-country", /^[A-Z]{2}$/, 'Required format: "US" (ISO3166', "shopping_country", "gts_prodsearch_country"), ul("Google Shopping Language ID", "gts-i-prodsearch-language", /^[a-z]{2}$/, 'Required format: "en" (ISO639-1)', "shopping_language", "gts_prodsearch_language"), L(Sf(Ef("Google Trusted Stores", function(a) {
a = sl(a, "gts-i-prodsearch-id", !0);
return k(a)
}), '//span[contains(@class, "gts-item")]'), [tl("Google Shopping Account ID", "gts-i-prodsearch-store-id", /^\d+$/, 'Required format: "123"', !0)])
]),
J(K(Sf(T("Order confirmation module is implemented more than once", function(a) {
return 1 < a
}), 'count(//div[contains(@id, "gts-order")])'), "https://support.google.com/tagassistant/answer/3203009?ref_topic=2947092#order_more"), "The Trusted Stores Order Confirmation Javascript code must be implemented exactly once on the order confirmation page. Remove any duplicate implementations of the code."), tl("Domain", "gts-o-domain", /^([\w\d]+\.)+\w+$/, 'Required format: "www.mystore.com"', void 0, void 0, "", "gts_domain"),
tl("Customer email", "gts-o-email", /^([\w]+\.?)+@\w+\.\w+$/, 'Required format: "user@email.com"', void 0, void 0, "", "gts_email"), tl("Customer country", "gts-o-country", /^[A-Z]{2}$/, 'Required format: ISO3166 (example: "US")', void 0, void 0, "", "gts_country"), tl("Currency", "gts-o-currency", /^[A-Z]{3}$/, 'Required format: ISO4217 (example: "USD")'), tl("Total", "gts-o-total", /^\d+(\.\d+)?$/, 'Required format: "123.45"'), tl("Discounts", "gts-o-discounts", /^\-?\d+(\.\d+)?$/, 'Required format: "-123.45"'), tl("Shipping total",
"gts-o-shipping-total", /^\d+(\.\d+)?$/, 'Required format: "123.45"'), tl("Tax total", "gts-o-tax-total", /^\d+(\.\d+)?$/, 'Required format: "123.45"', void 0, void 0, "", "gts_tax"), tl("Estimated shipping date", "gts-o-est-ship-date", /^\d{4}-\d{2}-\d{2}$/, 'Required format: "YYYY-MM-DD"'), tl("Preorder", "gts-o-has-preorder", /^[YN]$/, 'Required format: "Y" or "N"'), tl("Digital", "gts-o-has-digital", /^[YN]$/, 'Required format: "Y" or "N"'), tl("ID", "gts-o-id", /^[\w-]+$/, "", !1, "should be alphanumeric")
])]
};
fg(new ml);
var wl = function(a, b) {
this.message = a;
this.url = b;
this.timings = {}
},
xl = function(a, b, c) {
wl.call(this, a, b);
this.issues = Sd(c)
};
q(xl, wl);
var yl = {},
zl = {},
Al = function(a, b, c) {
if (0 < c.length || b == document.URL) a = new xl(a, b, c), chrome.extension.sendMessage(a)
},
Cl = function() {
chrome.extension.onMessage.addListener(Bl)
},
Dl = function() {
var a = $f.R().Ia();
Al("DomTags", document.URL, a)
},
Bl = function(a) {
var b = $f.R();
Bc();
var c = a.message,
d = a.tabId,
e = a.url;
switch (c) {
case "DomTags":
if (hg(e) || document.location.href.match(Vc()) || jg(b, e)) break;
Dl();
case "JsVariables":
lg(b);
break;
case "ExternalScriptTags":
e != document.location.href || yl[a.url] || (yl[a.url] = !0,
b.Ja(a.url, function(a, b) {
Al(c, b, a)
}));
break;
case "InjectHar":
var f = Wk("gta-target-textarea");
f && a.har ? (te(re, d, null, "HAR injected"), f.value = a.har, f.dispatchEvent(new Event("change")), (a = Wk("gta-target-submit")) ? (te(re, d, null, "Submitting Har to GA"), a.dispatchEvent(new Event("click"))) : te(re, d, null, "Could not find an option to Submit the HAR")) : te(re, d, null, "Found textarea %s to inject the HAR: %s", !!f, a.har);
break;
case "RecordingReachedThreshold":
a["continue"] = window.confirm('Tag Assistant: Your recording has been reached its threshold. Click "OK" to continue and "Cancel" to disable the further recording.');
te(re, d, null, "ContentScript: Recording reached it threshold. Continue? %s", a["continue"] ? "Yes" : "No");
chrome.extension.sendMessage(a);
break;
case "RecordingMaxQuota":
window.alert("Tag Assistant: Recording quota has reached its max limit and no further visits will be recorded.");
a["continue"] = !1;
te(re, d, null, "ContentScript: Recording reached its max limit. Stop further recording");
chrome.extension.sendMessage(a);
break;
case "Timings":
if (!document.location.href.match(Vc())) {
for (f in a.timings)(d = window.performance.getEntriesByName(f)) &&
(a.timings[f] = d);
chrome.extension.sendMessage(a)
}
break;
case "GetRecordedIssues":
case "GtaAnalyze":
break;
default:
te(pe, d, null, "Unknown method received on content script: %s", c)
}
},
El = function(a) {
a = a.detail.variables || {};
var b = !1;
ab(a, function(a, d) {
for (var e, f = e = 0; f < a.length; ++f) e = 31 * e + a.charCodeAt(f) >>> 0;
e != zl[d] && (zl[d] = e, b = !0)
});
b && (a = gg($f.R(), a), Al("JsVariables", document.URL, a))
};
hg(document.URL) || (Nc(Cl), window.addEventListener("TvtRetrievedVariablesEvent", El));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment